From 1420f2151bb1bcad67ff10a39fc6ee6f8a22a3ea Mon Sep 17 00:00:00 2001 From: Richard Burkhardt Date: Sun, 6 Jan 2019 11:28:18 +0100 Subject: [PATCH 1/5] add possibility to use two instances in parallel --- dist/secure-ls.d.ts | 2 +- dist/secure-ls.js | 18 +++++++---- dist/secure-ls.js.map | 2 +- dist/secure-ls.min.js | 4 +-- dist/secure-ls.min.js.map | 2 +- example/aes-compressed-realm.js | 23 ++++++++++++++ example/index.html | 1 + src/index.js | 17 ++++++---- test/library.spec.js | 2 +- test/ls-data-enc-dec.spec.js | 55 ++++++++++++++++++++++++++++++--- 10 files changed, 103 insertions(+), 23 deletions(-) create mode 100644 example/aes-compressed-realm.js diff --git a/dist/secure-ls.d.ts b/dist/secure-ls.d.ts index b1083df..cf8a7d2 100644 --- a/dist/secure-ls.d.ts +++ b/dist/secure-ls.d.ts @@ -1,5 +1,5 @@ export interface SecureLS { - new(config?: { isCompression: boolean, encodingType: string, encryptionSecret: string }): SecureLS; + new(config?: { isCompression: boolean, encodingType: string, encryptionSecret: string , encryptionRealm: string }): SecureLS; getEncryptionSecret(): string; get(key: string, isAllKeysData?: boolean): any; getDataFromLocalStorage(key: string): string | null; diff --git a/dist/secure-ls.js b/dist/secure-ls.js index e396d97..61091ac 100644 --- a/dist/secure-ls.js +++ b/dist/secure-ls.js @@ -120,11 +120,12 @@ return /******/ (function(modules) { // webpackBootstrap this.config = { isCompression: true, - encodingType: _constants2.default.EncrytionTypes.BASE64 + encodingType: _constants2.default.EncrytionTypes.BASE64, + encryptionSecret: config.encryptionSecret, + encryptionRealm: config.encryptionRealm }; this.config.isCompression = typeof config.isCompression !== 'undefined' ? config.isCompression : true; this.config.encodingType = typeof config.encodingType !== 'undefined' || config.encodingType === '' ? config.encodingType.toLowerCase() : _constants2.default.EncrytionTypes.BASE64; - this.config.encryptionSecret = config.encryptionSecret; this.ls = localStorage; this.init(); @@ -133,7 +134,7 @@ return /******/ (function(modules) { // webpackBootstrap _createClass(SecureLS, [{ key: 'init', value: function init() { - var metaData = this.getMetaData() || {}; + var metaData = this.getMetaData(); this.WarningEnum = this.constants.WarningEnum; this.WarningTypes = this.constants.WarningTypes; @@ -182,7 +183,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: 'getEncryptionSecret', value: function getEncryptionSecret(key) { - var metaData = this.getMetaData() || {}; + var metaData = this.getMetaData(); var obj = this.utils.getObjectFromKey(metaData.keys, key); if (!obj) { @@ -395,12 +396,17 @@ return /******/ (function(modules) { // webpackBootstrap }, true); // Store the data to localStorage - this.setDataToLocalStorage(this.utils.metaKey, dataToStore); + this.setDataToLocalStorage(this.getMetaKey(), dataToStore); } }, { key: 'getMetaData', value: function getMetaData() { - return this.get(this.utils.metaKey, true); + return this.get(this.getMetaKey(), true) || {}; + } + }, { + key: 'getMetaKey', + value: function getMetaKey() { + return this.utils.metaKey + (this.config.encryptionRealm ? '__' + this.config.encryptionRealm : ''); } }]); diff --git a/dist/secure-ls.js.map b/dist/secure-ls.js.map index cd00b4f..4a218db 100644 --- a/dist/secure-ls.js.map +++ b/dist/secure-ls.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap a91862ff4a5ebce8a996","webpack:///./src/index.js","webpack:///./src/utils.js","webpack:///./src/constants.js","webpack:///./src/WordArray.js","webpack:///./~/crypto-js/pbkdf2.js","webpack:///./~/crypto-js/core.js","webpack:///./~/crypto-js/sha1.js","webpack:///./~/crypto-js/hmac.js","webpack:///./src/enc-utf8.js","webpack:///./src/Base64.js","webpack:///./~/lz-string/libs/lz-string.js","webpack:///./~/crypto-js/aes.js","webpack:///./~/crypto-js/enc-base64.js","webpack:///./~/crypto-js/md5.js","webpack:///./~/crypto-js/evpkdf.js","webpack:///./~/crypto-js/cipher-core.js","webpack:///./~/crypto-js/tripledes.js","webpack:///./~/crypto-js/rabbit.js","webpack:///./~/crypto-js/rc4.js"],"names":["SecureLS","config","_name","utils","constants","Base64","LZString","AES","DES","RABBIT","RC4","enc","isCompression","encodingType","EncrytionTypes","BASE64","toLowerCase","encryptionSecret","ls","localStorage","init","metaData","getMetaData","WarningEnum","WarningTypes","_isBase64","_isBase64EncryptionType","_isAES","_isAESEncryptionType","_isDES","_isDESEncryptionType","_isRabbit","_isRabbitEncryptionType","_isRC4","_isRC4EncryptionType","_isCompression","_isDataCompressionEnabled","allKeys","keys","resetAllKeys","key","obj","getObjectFromKey","s","generateSecretKey","setMetaData","isAllKeysData","decodedData","jsonData","deCompressedData","bytes","data","is","warn","KEY_NOT_PROVIDED","getDataFromLocalStorage","decompressFromUTF16","decode","getEncryptionSecret","decrypt","toString","_Utf8","JSON","parse","e","Error","getItem","extractKeyNames","dataToStore","String","metaKey","isKeyPresent","addToKeysList","processData","setDataToLocalStorage","setItem","getAllKeys","length","META_KEY_REMOVE","removeFromKeysList","removeItem","i","clear","undefined","encodedData","compressedData","stringify","encode","encrypt","compressToUTF16","get","secretPhrase","reason","DEFAULT_TEXT","console","salt","CryptoJSWordArray","random","key128Bits","keySize","k","map","keyData","isKeyAlreadyPresent","push","index","splice","module","exports","nBytes","words","r","mw","mz","mask","result","Math","rcache","_r","Set","sigBytes","Latin1","wordArray","latin1Chars","bite","fromCharCode","join","decodeURIComponent","escape","_keyStr","t","n","o","u","a","f","_utf8Encode","charCodeAt","isNaN","charAt","replace","indexOf","_utf8Decode","c2","c3"],"mappings":"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iBZ,iBAAjB,C;;;;;;AC9CA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,wBAAuB,OAAO;AAC9B,wBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA,wDAAuD,aAAa;AACpE,wDAAuD,+BAA+B;AACtF;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iCAAgC,gBAAgB;AAChD;AACA;;AAEA;AACA;;AAEA;AACA,qCAAoC,sBAAsB;AAC1D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC,iBAAgB,iBAAiB;AACjC,iBAAgB,OAAO;AACvB;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,aAAa;AACpE,wDAAuD,+BAA+B;AACtF;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;AChJD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,yBAAwB,OAAO;AAC/B;AACA,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,eAAc;;AAEd;AACA;AACA;AACA;AACA,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,eAAc;;AAEd;AACA;AACA;AACA,yBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;;AAEd;AACA;AACA;AACA,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA,oBAAmB,MAAM;AACzB,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,qBAAoB,MAAM;AAC1B,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,QAAQ;AAC5B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iCAAgC,kBAAkB;AAClD;AACA;AACA;AACA,eAAc;AACd;AACA,iCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;;AAEd,qCAAoC,YAAY;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,cAAc;AAC1C;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,kBAAkB;AAC9C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,cAAc;AAC1C;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,qBAAqB;AACjD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,qBAAoB,QAAQ;AAC5B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sCAAqC,sBAAsB;AAC3D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA,OAAM;;AAEN;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAU;;AAEV;;AAEA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACvvBD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA,mBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB;AAClB;AACA,mBAAkB;AAClB;AACA,mBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC,iBAAgB,iBAAiB;AACjC;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACrJD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,KAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAM;AACN,GAAE;;;AAGF,EAAC,G;;;;;;;;AC9ID;;;;;;AAMA,KAAIrF,MAAM,EAAV;;AAEAA,KAAI8G,MAAJ,GAAa;AACXnC,cAAW,mBAACoC,SAAD,EAAe;AACxB;AACA,SAAIZ,QAAQY,UAAUZ,KAAtB;AACA,SAAIU,WAAWE,UAAUF,QAAzB;AACA,SAAIG,cAAc,EAAlB;AAAA,SAAsB1C,UAAtB;AAAA,SAAyB2C,aAAzB;;AAEA;AACA,UAAK3C,IAAI,CAAT,EAAYA,IAAIuC,QAAhB,EAA0BvC,GAA1B,EAA+B;AAC7B2C,cA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B;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,uBAAsB,oBAAoB;AAC1C;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,uBAAsB,MAAM;AAC5B;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,uBAAsB,oBAAoB;AAC1C;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,uBAAsB,OAAO;AAC7B;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,qBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,qBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,mBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc,oBAAoB;AAClC;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,4EAA2E,qCAAqC,EAAE;AAClH,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;;AAEhB,gBAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA,kDAAsB,iBAAiB,EAAE;AACzC,EAAC;AACD;AACA;;;;;;;ACpfA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAwB,SAAS;AACjC;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iCAAgC,gBAAgB;AAChD;AACA;AACA,mBAAkB;AAClB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oCAAmC,mBAAmB;AACtD;;AAEA;AACA;AACA,mBAAkB;AAClB;AACA;;AAEA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACvOD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,6BAA4B,cAAc;AAC1C;AACA;AACA;;AAEA;;AAEA,iCAAgC,sCAAsC;AACtE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qCAAoC,gBAAgB;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,WAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,uBAAsB,qBAAqB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACtID,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,yBAAwB,QAAQ;AAChC;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6BAA4B,OAAO;AACnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC,iBAAgB,iBAAiB;AACjC;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;AC3QD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,wBAAuB,OAAO;AAC9B,wBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA,wDAAuD,aAAa;AACpE,wDAAuD,+BAA+B;AACtF;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,gBAAgB;AAChD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC,iBAAgB,iBAAiB;AACjC,iBAAgB,OAAO;AACvB;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,aAAa;AACpE,wDAAuD,+BAA+B;AACtF;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACnID,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,wBAAuB,UAAU;AACjC;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA,+EAA8E,kBAAkB;AAChG;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA,+EAA8E,kBAAkB;AAChG;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA,yGAAwG,kBAAkB;AAC1H;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAU;;AAEV;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,OAAM;;AAEN;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,yBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,yBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA,6BAA4B,eAAe;AAC3C;AACA;AACA;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,6BAA4B,mBAAmB;AAC/C;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,wBAAuB,KAAK;AAC5B,wBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc;AACd;;AAEA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA,OAAM;;AAEN;AACA;AACA;AACA,oBAAmB,UAAU;AAC7B,oBAAmB,UAAU;AAC7B,oBAAmB,UAAU;AAC7B,oBAAmB,UAAU;AAC7B,oBAAmB,OAAO;AAC1B,oBAAmB,KAAK;AACxB,oBAAmB,QAAQ;AAC3B,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,aAAa;AACjC;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAAyC,qCAAqC;AAC9E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,UAAU;AACjC;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,iBAAiB;AACrC,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,kHAAiH,SAAS;AAC1H,kHAAiH,0CAA0C;AAC3J;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,oBAAoB;AACxC,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA,uHAAsH,0CAA0C;AAChK,oHAAmH,0CAA0C;AAC7J;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,qBAAoB,oBAAoB;AACxC,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,OAAO;AAC3B,qBAAoB,OAAO;AAC3B,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAsC,4BAA4B;;AAElE;AACA;AACA;;AAEA;AACA,0CAAyC,+BAA+B;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,IAAI;AAC3B;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,iBAAiB;AACrC,qBAAoB,OAAO;AAC3B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,0HAAyH,kCAAkC;AAC3J;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,oBAAoB;AACxC,qBAAoB,OAAO;AAC3B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA,+HAA8H,kCAAkC;AAChK,4HAA2H,kCAAkC;AAC7J;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAM;AACN,GAAE;;;AAGF,EAAC,G;;;;;;AC12BD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA;;AAEA;AACA;AACA,mCAAkC,cAAc;AAChD;AACA;;AAEA;AACA;;AAEA;AACA,iCAAgC,QAAQ;AACxC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAgC,OAAO;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,YAAY;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAgC,OAAO;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;;AAEA;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,WAAU;;AAEV;;AAEA;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACjwBD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B,OAAO;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,6BAA4B,OAAO;AACnC;AACA;;AAEA;AACA,6BAA4B,OAAO;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,OAAO;AACvC;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAA4B,OAAO;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA,yBAAwB,OAAO;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAwB,OAAO;AAC/B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;AC/LD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,SAAS;AACrC;AACA;;AAEA;AACA,oCAAmC,SAAS;AAC5C;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAwB,OAAO;AAC/B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B;AACA;AACA;AACA,WAAU;;AAEV;AACA;;AAEA;AACA,yCAAwC,OAAO;AAC/C;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G","file":"secure-ls.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SecureLS\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SecureLS\"] = factory();\n\telse\n\t\troot[\"SecureLS\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap a91862ff4a5ebce8a996\n **/","import utils from './utils';\r\nimport constants from './constants';\r\nimport enc from './enc-utf8';\r\n\r\nimport Base64 from './Base64';\r\nimport LZString from 'lz-string/libs/lz-string';\r\nimport AES from 'crypto-js/aes';\r\nimport DES from 'crypto-js/tripledes';\r\nimport RABBIT from 'crypto-js/rabbit';\r\nimport RC4 from 'crypto-js/rc4';\r\n\r\nexport default class SecureLS {\r\n constructor(config) {\r\n config = config || {};\r\n this._name = 'secure-ls';\r\n this.utils = utils;\r\n this.constants = constants;\r\n this.Base64 = Base64;\r\n this.LZString = LZString;\r\n this.AES = AES;\r\n this.DES = DES;\r\n this.RABBIT = RABBIT;\r\n this.RC4 = RC4;\r\n this.enc = enc;\r\n\r\n this.config = {\r\n isCompression: true,\r\n encodingType: constants.EncrytionTypes.BASE64\r\n };\r\n this.config.isCompression = typeof config.isCompression !== 'undefined' ?\r\n config.isCompression :\r\n true;\r\n this.config.encodingType = (typeof config.encodingType !== 'undefined' || config.encodingType === '') ?\r\n config.encodingType.toLowerCase() :\r\n constants.EncrytionTypes.BASE64;\r\n this.config.encryptionSecret = config.encryptionSecret;\r\n\r\n this.ls = localStorage;\r\n this.init();\r\n };\r\n\r\n init() {\r\n let metaData = this.getMetaData() || {};\r\n\r\n this.WarningEnum = this.constants.WarningEnum;\r\n this.WarningTypes = this.constants.WarningTypes;\r\n this.EncrytionTypes = this.constants.EncrytionTypes;\r\n\r\n this._isBase64 = this._isBase64EncryptionType();\r\n this._isAES = this._isAESEncryptionType();\r\n this._isDES = this._isDESEncryptionType();\r\n this._isRabbit = this._isRabbitEncryptionType();\r\n this._isRC4 = this._isRC4EncryptionType();\r\n this._isCompression = this._isDataCompressionEnabled();\r\n\r\n // fill the already present keys to the list of keys being used by secure-ls\r\n this.utils.allKeys = metaData.keys || this.resetAllKeys();\r\n };\r\n\r\n _isBase64EncryptionType() {\r\n return Base64 &&\r\n (typeof this.config.encodingType === 'undefined' ||\r\n this.config.encodingType === this.constants.EncrytionTypes.BASE64);\r\n };\r\n\r\n _isAESEncryptionType() {\r\n return AES &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.AES);\r\n };\r\n\r\n _isDESEncryptionType() {\r\n return DES &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.DES);\r\n };\r\n\r\n _isRabbitEncryptionType() {\r\n return RABBIT &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.RABBIT);\r\n };\r\n\r\n _isRC4EncryptionType() {\r\n return RC4 &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.RC4);\r\n };\r\n\r\n _isDataCompressionEnabled() {\r\n return this.config.isCompression;\r\n }\r\n\r\n getEncryptionSecret(key) {\r\n let metaData = this.getMetaData() || {};\r\n let obj = this.utils.getObjectFromKey(metaData.keys, key);\r\n\r\n if (!obj) {\r\n return;\r\n }\r\n\r\n if (this._isAES ||\r\n this._isDES ||\r\n this._isRabbit ||\r\n this._isRC4\r\n ) {\r\n if (typeof this.config.encryptionSecret === 'undefined') {\r\n this.utils.encryptionSecret = obj.s;\r\n\r\n if (!this.utils.encryptionSecret) {\r\n this.utils.encryptionSecret = this.utils.generateSecretKey();\r\n this.setMetaData();\r\n }\r\n } else {\r\n this.utils.encryptionSecret = this.config.encryptionSecret || obj.s || '';\r\n }\r\n }\r\n }\r\n\r\n get(key, isAllKeysData) {\r\n let decodedData = '',\r\n jsonData = '',\r\n deCompressedData,\r\n bytes,\r\n data;\r\n\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return jsonData;\r\n }\r\n\r\n data = this.getDataFromLocalStorage(key);\r\n\r\n if (!data) {\r\n return jsonData;\r\n }\r\n\r\n deCompressedData = data; // saves else\r\n if (this._isCompression || isAllKeysData) { // meta data always compressed\r\n deCompressedData = LZString.decompressFromUTF16(data);\r\n }\r\n\r\n decodedData = deCompressedData; // saves else\r\n if (this._isBase64 || isAllKeysData) { // meta data always Base64\r\n decodedData = Base64.decode(deCompressedData);\r\n } else {\r\n this.getEncryptionSecret(key);\r\n if (this._isAES) {\r\n bytes = AES.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isDES) {\r\n bytes = DES.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isRabbit) {\r\n bytes = RABBIT.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isRC4) {\r\n bytes = RC4.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n }\r\n\r\n if (bytes) {\r\n decodedData = bytes.toString(enc._Utf8);\r\n }\r\n }\r\n\r\n try {\r\n jsonData = JSON.parse(decodedData);\r\n } catch (e) {\r\n throw new Error('Could not parse JSON');\r\n }\r\n\r\n return jsonData;\r\n };\r\n\r\n getDataFromLocalStorage(key) {\r\n return this.ls.getItem(key, true);\r\n };\r\n\r\n getAllKeys() {\r\n let data = this.getMetaData();\r\n\r\n return this.utils.extractKeyNames(data) || [];\r\n };\r\n\r\n set(key, data) {\r\n let dataToStore = '';\r\n\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return;\r\n }\r\n\r\n this.getEncryptionSecret(key);\r\n\r\n // add key(s) to Array if not already added, only for keys other than meta key\r\n if (!(String(key) === String(this.utils.metaKey))) {\r\n if (!this.utils.isKeyPresent(key)) {\r\n this.utils.addToKeysList(key);\r\n this.setMetaData();\r\n }\r\n }\r\n\r\n dataToStore = this.processData(data);\r\n // Store the data to localStorage\r\n this.setDataToLocalStorage(key, dataToStore);\r\n };\r\n\r\n setDataToLocalStorage(key, data) {\r\n this.ls.setItem(key, data);\r\n };\r\n\r\n remove(key) {\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return;\r\n }\r\n\r\n if (key === this.utils.metaKey && this.getAllKeys().length) {\r\n this.utils.warn(this.WarningEnum.META_KEY_REMOVE);\r\n return;\r\n }\r\n\r\n if (this.utils.isKeyPresent(key)) {\r\n this.utils.removeFromKeysList(key);\r\n this.setMetaData();\r\n }\r\n this.ls.removeItem(key);\r\n };\r\n\r\n removeAll() {\r\n let keys, i;\r\n\r\n keys = this.getAllKeys();\r\n for (i = 0; i < keys.length; i++) {\r\n this.ls.removeItem(keys[i]);\r\n }\r\n this.ls.removeItem(this.utils.metaKey);\r\n\r\n this.resetAllKeys();\r\n };\r\n\r\n clear() {\r\n this.ls.clear();\r\n this.resetAllKeys();\r\n };\r\n\r\n resetAllKeys() {\r\n this.utils.allKeys = [];\r\n return [];\r\n }\r\n\r\n processData(data, isAllKeysData) {\r\n if (data === null || data === undefined || data === '') {\r\n return '';\r\n }\r\n\r\n let jsonData, encodedData, compressedData;\r\n\r\n try {\r\n jsonData = JSON.stringify(data);\r\n } catch (e) {\r\n throw new Error('Could not stringify data.');\r\n }\r\n\r\n // Encode Based on encoding type\r\n // If not set, default to Base64 for securing data\r\n encodedData = jsonData;\r\n if (this._isBase64 || isAllKeysData) {\r\n encodedData = Base64.encode(jsonData);\r\n } else {\r\n if (this._isAES) {\r\n encodedData = AES.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isDES) {\r\n encodedData = DES.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isRabbit) {\r\n encodedData = RABBIT.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isRC4) {\r\n encodedData = RC4.encrypt(jsonData, this.utils.encryptionSecret);\r\n }\r\n\r\n encodedData = encodedData && encodedData.toString();\r\n }\r\n\r\n // Compress data if set to true\r\n compressedData = encodedData;\r\n if (this._isCompression || isAllKeysData) {\r\n compressedData = LZString.compressToUTF16(encodedData);\r\n }\r\n\r\n return compressedData;\r\n };\r\n\r\n setMetaData() {\r\n let dataToStore = this.processData({\r\n keys: this.utils.allKeys\r\n }, true);\r\n\r\n // Store the data to localStorage\r\n this.setDataToLocalStorage(this.utils.metaKey, dataToStore);\r\n };\r\n\r\n getMetaData() {\r\n return this.get(this.utils.metaKey, true);\r\n };\r\n\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/index.js\n **/","import constants from './constants';\r\nimport CryptoJSWordArray from './WordArray';\r\nimport PBKDF2 from 'crypto-js/pbkdf2';\r\n\r\nlet utils = {\r\n metaKey: '_secure__ls__metadata',\r\n encryptionSecret: '',\r\n secretPhrase: 's3cr3t$#@135^&*246',\r\n allKeys: [],\r\n is: function (key) {\r\n if (key) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n warn: function (reason) {\r\n reason = reason ? reason : constants.WarningEnum.DEFAULT_TEXT;\r\n console.warn(constants.WarningTypes[reason]);\r\n },\r\n generateSecretKey: function () {\r\n let salt = CryptoJSWordArray.random(128 / 8);\r\n let key128Bits = PBKDF2(this.secretPhrase, salt, {keySize: 128 / 32 });\r\n\r\n return key128Bits && key128Bits.toString();\r\n },\r\n getObjectFromKey: function (data, key) {\r\n if (!data || !data.length) {\r\n return {};\r\n }\r\n\r\n let i, obj = {};\r\n\r\n for (i = 0; i < data.length; i++) {\r\n if (data[i].k === key) {\r\n obj = data[i];\r\n break;\r\n }\r\n }\r\n\r\n return obj;\r\n },\r\n extractKeyNames: function (data) {\r\n if (!data || !data.keys || !data.keys.length) {\r\n return [];\r\n }\r\n\r\n return data.keys.map(keyData => {\r\n return keyData.k;\r\n });\r\n },\r\n getAllKeys: function () {\r\n return this.allKeys;\r\n },\r\n isKeyPresent: function (key) {\r\n let isKeyAlreadyPresent = false;\r\n\r\n for (let i = 0; i < this.allKeys.length; i++) {\r\n if (String(this.allKeys[i].k) === String(key)) {\r\n isKeyAlreadyPresent = true; // found\r\n break;\r\n }\r\n }\r\n\r\n return isKeyAlreadyPresent;\r\n },\r\n addToKeysList: function (key) {\r\n this.allKeys.push({\r\n k: key,\r\n s: this.encryptionSecret\r\n });\r\n },\r\n removeFromKeysList: function (key) {\r\n let i, index = -1;\r\n\r\n for (i = 0; i < this.allKeys.length; i++) {\r\n if (this.allKeys[i].k === key) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n if (index !== -1) {\r\n this.allKeys.splice(index, 1);\r\n }\r\n return index;\r\n }\r\n};\r\n\r\nmodule.exports = utils;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/utils.js\n **/","let WarningEnum = {\r\n KEY_NOT_PROVIDED: 'keyNotProvided',\r\n META_KEY_REMOVE: 'metaKeyRemove',\r\n DEFAULT_TEXT: 'defaultText'\r\n};\r\n\r\nlet WarningTypes = {};\r\n\r\nWarningTypes[WarningEnum.KEY_NOT_PROVIDED] = 'Secure LS: Key not provided. Aborting operation!';\r\nWarningTypes[WarningEnum.META_KEY_REMOVE] = `Secure LS: Meta key can not be removed\r\nunless all keys created by Secure LS are removed!`;\r\nWarningTypes[WarningEnum.DEFAULT_TEXT] = `Unexpected output`;\r\n\r\nlet constants = {\r\n WarningEnum: WarningEnum,\r\n WarningTypes: WarningTypes,\r\n EncrytionTypes: {\r\n BASE64: 'base64',\r\n AES: 'aes',\r\n DES: 'des',\r\n RABBIT: 'rabbit',\r\n RC4: 'rc4'\r\n }\r\n};\r\n\r\nmodule.exports = constants;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/constants.js\n **/","/*\r\n ES6 compatible port of CryptoJS - WordArray for PBKDF2 password key generation\r\n\r\n Source: https://github.com/brix/crypto-js\r\n LICENSE: MIT\r\n */\r\n\r\nlet CryptoJSWordArray = {};\r\n\r\nCryptoJSWordArray.random = function (nBytes) {\r\n let words = [];\r\n let r = (function (mw) {\r\n let mz = 0x3ade68b1;\r\n let mask = 0xffffffff;\r\n\r\n return function () {\r\n mz = (0x9069 * (mz & 0xFFFF) + (mz >> 0x10)) & mask;\r\n mw = (0x4650 * (mw & 0xFFFF) + (mw >> 0x10)) & mask;\r\n let result = ((mz << 0x10) + mw) & mask;\r\n\r\n result /= 0x100000000;\r\n result += 0.5;\r\n return result * (Math.random() > 0.5 ? 1 : -1);\r\n };\r\n });\r\n\r\n for (let i = 0, rcache; i < nBytes; i += 4) {\r\n let _r = r((rcache || Math.random()) * 0x100000000);\r\n\r\n rcache = _r() * 0x3ade67b7;\r\n words.push((_r() * 0x100000000) | 0);\r\n }\r\n\r\n return new this.Set(words, nBytes);\r\n};\r\n\r\nCryptoJSWordArray.Set = function (words, sigBytes) {\r\n words = this.words = words || [];\r\n\r\n if (sigBytes !== undefined) {\r\n this.sigBytes = sigBytes;\r\n } else {\r\n this.sigBytes = words.length * 8;\r\n }\r\n};\r\n\r\nmodule.exports = CryptoJSWordArray;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/WordArray.js\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/pbkdf2.js\n ** module id = 4\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t /*\n\t * Local polyfil of Object.create\n\t */\n\t var create = Object.create || (function () {\n\t function F() {};\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }())\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var i = 0; i < thatSigBytes; i += 4) {\n\t thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t var r = (function (m_w) {\n\t var m_w = m_w;\n\t var m_z = 0x3ade68b1;\n\t var mask = 0xffffffff;\n\n\t return function () {\n\t m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t var result = ((m_z << 0x10) + m_w) & mask;\n\t result /= 0x100000000;\n\t result += 0.5;\n\t return result * (Math.random() > .5 ? 1 : -1);\n\t }\n\t });\n\n\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t var _r = r((rcache || Math.random()) * 0x100000000);\n\n\t rcache = _r() * 0x3ade67b7;\n\t words.push((_r() * 0x100000000) | 0);\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t var processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/core.js\n ** module id = 5\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/sha1.js\n ** module id = 6\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/hmac.js\n ** module id = 7\n ** module chunks = 0\n **/","/*\r\n ES6 compatible port of CryptoJS - encoding\r\n\r\n Source: https://github.com/brix/crypto-js\r\n LICENSE: MIT\r\n */\r\nlet enc = {};\r\n\r\nenc.Latin1 = {\r\n stringify: (wordArray) => {\r\n // Shortcuts\r\n let words = wordArray.words;\r\n let sigBytes = wordArray.sigBytes;\r\n let latin1Chars = [], i, bite;\r\n\r\n // Convert\r\n for (i = 0; i < sigBytes; i++) {\r\n bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n latin1Chars.push(String.fromCharCode(bite));\r\n }\r\n\r\n return latin1Chars.join('');\r\n }\r\n};\r\n\r\nenc._Utf8 = {\r\n stringify: (wordArray) => {\r\n try {\r\n return decodeURIComponent(escape(enc.Latin1.stringify(wordArray)));\r\n } catch (e) {\r\n throw new Error('Malformed UTF-8 data');\r\n }\r\n }\r\n};\r\n\r\nmodule.exports = enc;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/enc-utf8.js\n **/","let Base64 = {\r\n _keyStr: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\r\n encode: function (e) {\r\n let t = '';\r\n let n, r, i, s, o, u, a;\r\n let f = 0;\r\n\r\n e = Base64._utf8Encode(e);\r\n while (f < e.length) {\r\n n = e.charCodeAt(f++);\r\n r = e.charCodeAt(f++);\r\n i = e.charCodeAt(f++);\r\n s = n >> 2;\r\n o = (n & 3) << 4 | r >> 4;\r\n u = (r & 15) << 2 | i >> 6;\r\n a = i & 63;\r\n if (isNaN(r)) {\r\n u = a = 64;\r\n } else if (isNaN(i)) {\r\n a = 64;\r\n }\r\n t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a);\r\n }\r\n return t;\r\n },\r\n decode: function (e) {\r\n let t = '';\r\n let n, r, i;\r\n let s, o, u, a;\r\n let f = 0;\r\n\r\n e = e.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\r\n while (f < e.length) {\r\n s = this._keyStr.indexOf(e.charAt(f++));\r\n o = this._keyStr.indexOf(e.charAt(f++));\r\n u = this._keyStr.indexOf(e.charAt(f++));\r\n a = this._keyStr.indexOf(e.charAt(f++));\r\n n = s << 2 | o >> 4;\r\n r = (o & 15) << 4 | u >> 2;\r\n i = (u & 3) << 6 | a;\r\n t = t + String.fromCharCode(n);\r\n if (u !== 64) {\r\n t = t + String.fromCharCode(r);\r\n }\r\n if (a !== 64) {\r\n t = t + String.fromCharCode(i);\r\n }\r\n }\r\n t = Base64._utf8Decode(t);\r\n return t;\r\n },\r\n _utf8Encode: function (e) {\r\n e = e.replace(/\\r\\n/g, '\\n');\r\n let t = '';\r\n\r\n for (let n = 0; n < e.length; n++) {\r\n let r = e.charCodeAt(n);\r\n\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n } else if (r > 127 && r < 2048) {\r\n t += String.fromCharCode(r >> 6 | 192);\r\n t += String.fromCharCode(r & 63 | 128);\r\n } else {\r\n t += String.fromCharCode(r >> 12 | 224);\r\n t += String.fromCharCode(r >> 6 & 63 | 128);\r\n t += String.fromCharCode(r & 63 | 128);\r\n }\r\n }\r\n return t;\r\n },\r\n _utf8Decode: function (e) {\r\n let t = '';\r\n let n = 0;\r\n let r, c2, c3;\r\n\r\n r = c2 = 0;\r\n while (n < e.length) {\r\n r = e.charCodeAt(n);\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n n++;\r\n } else if (r > 191 && r < 224) {\r\n c2 = e.charCodeAt(n + 1);\r\n t += String.fromCharCode((r & 31) << 6 | c2 & 63);\r\n n += 2;\r\n } else {\r\n c2 = e.charCodeAt(n + 1);\r\n c3 = e.charCodeAt(n + 2);\r\n t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\r\n n += 3;\r\n }\r\n }\r\n return t;\r\n }\r\n};\r\n\r\nmodule.exports = Base64;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/Base64.js\n **/","// Copyright (c) 2013 Pieroxy \n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lz-string/libs/lz-string.js\n ** module id = 10\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/aes.js\n ** module id = 11\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/enc-base64.js\n ** module id = 12\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/md5.js\n ** module id = 13\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t var block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/evpkdf.js\n ** module id = 14\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t var block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t var block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t var modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t var modeCreator = mode.createDecryptor;\n\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t var wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t var salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/cipher-core.js\n ** module id = 15\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));\n\t this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));\n\t this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/tripledes.js\n ** module id = 16\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/rabbit.js\n ** module id = 17\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/rc4.js\n ** module id = 18\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 8ad1579ae007ab8ea3e4","webpack:///./src/index.js","webpack:///./src/utils.js","webpack:///./src/constants.js","webpack:///./src/WordArray.js","webpack:///./~/crypto-js/pbkdf2.js","webpack:///./~/crypto-js/core.js","webpack:///./~/crypto-js/sha1.js","webpack:///./~/crypto-js/hmac.js","webpack:///./src/enc-utf8.js","webpack:///./src/Base64.js","webpack:///./~/lz-string/libs/lz-string.js","webpack:///./~/crypto-js/aes.js","webpack:///./~/crypto-js/enc-base64.js","webpack:///./~/crypto-js/md5.js","webpack:///./~/crypto-js/evpkdf.js","webpack:///./~/crypto-js/cipher-core.js","webpack:///./~/crypto-js/tripledes.js","webpack:///./~/crypto-js/rabbit.js","webpack:///./~/crypto-js/rc4.js"],"names":["SecureLS","config","_name","utils","constants","Base64","LZString","AES","DES","RABBIT","RC4","enc","isCompression","encodingType","EncrytionTypes","BASE64","encryptionSecret","encryptionRealm","toLowerCase","ls","localStorage","init","metaData","getMetaData","WarningEnum","WarningTypes","_isBase64","_isBase64EncryptionType","_isAES","_isAESEncryptionType","_isDES","_isDESEncryptionType","_isRabbit","_isRabbitEncryptionType","_isRC4","_isRC4EncryptionType","_isCompression","_isDataCompressionEnabled","allKeys","keys","resetAllKeys","key","obj","getObjectFromKey","s","generateSecretKey","setMetaData","isAllKeysData","decodedData","jsonData","deCompressedData","bytes","data","is","warn","KEY_NOT_PROVIDED","getDataFromLocalStorage","decompressFromUTF16","decode","getEncryptionSecret","decrypt","toString","_Utf8","JSON","parse","e","Error","getItem","extractKeyNames","dataToStore","String","metaKey","isKeyPresent","addToKeysList","processData","setDataToLocalStorage","setItem","getAllKeys","length","META_KEY_REMOVE","removeFromKeysList","removeItem","i","clear","undefined","encodedData","compressedData","stringify","encode","encrypt","compressToUTF16","getMetaKey","get","secretPhrase","reason","DEFAULT_TEXT","console","salt","CryptoJSWordArray","random","key128Bits","keySize","k","map","keyData","isKeyAlreadyPresent","push","index","splice","module","exports","nBytes","words","r","mw","mz","mask","result","Math","rcache","_r","Set","sigBytes","Latin1","wordArray","latin1Chars","bite","fromCharCode","join","decodeURIComponent","escape","_keyStr","t","n","o","u","a","f","_utf8Encode","charCodeAt","isNaN","charAt","replace","indexOf","_utf8Decode","c2","c3"],"mappings":"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GAAgBA,QAAhB;AACD,IAFD,MAEO;AACL,UAAKA,QAAL,GAAgBV,MAAMlC,MAAN,GAAe,CAA/B;AACD;AACF,EARD;;AAUA+B,QAAOC,OAAP,GAAiBZ,iBAAjB,C;;;;;;AC9CA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,wBAAuB,OAAO;AAC9B,wBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA,wDAAuD,aAAa;AACpE,wDAAuD,+BAA+B;AACtF;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iCAAgC,gBAAgB;AAChD;AACA;;AAEA;AACA;;AAEA;AACA,qCAAoC,sBAAsB;AAC1D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC,iBAAgB,iBAAiB;AACjC,iBAAgB,OAAO;AACvB;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,aAAa;AACpE,wDAAuD,+BAA+B;AACtF;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;AChJD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,yBAAwB,OAAO;AAC/B;AACA,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,eAAc;;AAEd;AACA;AACA;AACA;AACA,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,eAAc;;AAEd;AACA;AACA;AACA,yBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;;AAEd;AACA;AACA;AACA,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA,oBAAmB,MAAM;AACzB,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,qBAAoB,MAAM;AAC1B,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,QAAQ;AAC5B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iCAAgC,kBAAkB;AAClD;AACA;AACA;AACA,eAAc;AACd;AACA,iCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;;AAEd,qCAAoC,YAAY;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,cAAc;AAC1C;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,kBAAkB;AAC9C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,cAAc;AAC1C;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,qBAAqB;AACjD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,qBAAoB,QAAQ;AAC5B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sCAAqC,sBAAsB;AAC3D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA,OAAM;;AAEN;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAU;;AAEV;;AAEA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACvvBD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA,mBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB;AAClB;AACA,mBAAkB;AAClB;AACA,mBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC,iBAAgB,iBAAiB;AACjC;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACrJD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,KAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAM;AACN,GAAE;;;AAGF,EAAC,G;;;;;;;;AC9ID;;;;;;AAMA,KAAIvF,MAAM,EAAV;;AAEAA,KAAIgH,MAAJ,GAAa;AACXpC,cAAW,mBAACqC,SAAD,EAAe;AACxB;AACA,SAAIZ,QAAQY,UAAUZ,KAAtB;AACA,SAAIU,WAAWE,UAAUF,QAAzB;AACA,SAAIG,cAAc,EAAlB;AAAA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G;AACH;AACA;AACA;AACA,+BAA8B;AAC9B,uCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAgB,0BAA0B;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,uBAAsB,oBAAoB;AAC1C;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,uBAAsB,MAAM;AAC5B;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,uBAAsB,oBAAoB;AAC1C;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,uBAAsB,OAAO;AAC7B;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,qBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,qBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,mBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc,oBAAoB;AAClC;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,4EAA2E,qCAAqC,EAAE;AAClH,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;;AAEhB,gBAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA,kDAAsB,iBAAiB,EAAE;AACzC,EAAC;AACD;AACA;;;;;;;ACpfA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAwB,SAAS;AACjC;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iCAAgC,gBAAgB;AAChD;AACA;AACA,mBAAkB;AAClB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oCAAmC,mBAAmB;AACtD;;AAEA;AACA;AACA,mBAAkB;AAClB;AACA;;AAEA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACvOD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,6BAA4B,cAAc;AAC1C;AACA;AACA;;AAEA;;AAEA,iCAAgC,sCAAsC;AACtE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qCAAoC,gBAAgB;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,WAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,uBAAsB,qBAAqB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACtID,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,yBAAwB,QAAQ;AAChC;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6BAA4B,OAAO;AACnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC,iBAAgB,iBAAiB;AACjC;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;AC3QD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,wBAAuB,OAAO;AAC9B,wBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA,wDAAuD,aAAa;AACpE,wDAAuD,+BAA+B;AACtF;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,gBAAgB;AAChD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC,iBAAgB,iBAAiB;AACjC,iBAAgB,OAAO;AACvB;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,aAAa;AACpE,wDAAuD,+BAA+B;AACtF;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACnID,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,wBAAuB,UAAU;AACjC;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA,+EAA8E,kBAAkB;AAChG;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA,+EAA8E,kBAAkB;AAChG;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA,yGAAwG,kBAAkB;AAC1H;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAU;;AAEV;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,OAAM;;AAEN;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,yBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,yBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA,6BAA4B,eAAe;AAC3C;AACA;AACA;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,6BAA4B,mBAAmB;AAC/C;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,wBAAuB,KAAK;AAC5B,wBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc;AACd;;AAEA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA,OAAM;;AAEN;AACA;AACA;AACA,oBAAmB,UAAU;AAC7B,oBAAmB,UAAU;AAC7B,oBAAmB,UAAU;AAC7B,oBAAmB,UAAU;AAC7B,oBAAmB,OAAO;AAC1B,oBAAmB,KAAK;AACxB,oBAAmB,QAAQ;AAC3B,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,aAAa;AACjC;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAAyC,qCAAqC;AAC9E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,UAAU;AACjC;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,iBAAiB;AACrC,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,kHAAiH,SAAS;AAC1H,kHAAiH,0CAA0C;AAC3J;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,oBAAoB;AACxC,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA,uHAAsH,0CAA0C;AAChK,oHAAmH,0CAA0C;AAC7J;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,qBAAoB,oBAAoB;AACxC,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,OAAO;AAC3B,qBAAoB,OAAO;AAC3B,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAsC,4BAA4B;;AAElE;AACA;AACA;;AAEA;AACA,0CAAyC,+BAA+B;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,IAAI;AAC3B;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,iBAAiB;AACrC,qBAAoB,OAAO;AAC3B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,0HAAyH,kCAAkC;AAC3J;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,oBAAoB;AACxC,qBAAoB,OAAO;AAC3B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA,+HAA8H,kCAAkC;AAChK,4HAA2H,kCAAkC;AAC7J;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAM;AACN,GAAE;;;AAGF,EAAC,G;;;;;;AC12BD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA;;AAEA;AACA;AACA,mCAAkC,cAAc;AAChD;AACA;;AAEA;AACA;;AAEA;AACA,iCAAgC,QAAQ;AACxC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAgC,OAAO;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,YAAY;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAgC,OAAO;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;;AAEA;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,WAAU;;AAEV;;AAEA;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACjwBD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B,OAAO;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,6BAA4B,OAAO;AACnC;AACA;;AAEA;AACA,6BAA4B,OAAO;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,OAAO;AACvC;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAA4B,OAAO;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA,yBAAwB,OAAO;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAwB,OAAO;AAC/B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;AC/LD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,SAAS;AACrC;AACA;;AAEA;AACA,oCAAmC,SAAS;AAC5C;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAwB,OAAO;AAC/B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B;AACA;AACA;AACA,WAAU;;AAEV;AACA;;AAEA;AACA,yCAAwC,OAAO;AAC/C;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G","file":"secure-ls.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SecureLS\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SecureLS\"] = factory();\n\telse\n\t\troot[\"SecureLS\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 8ad1579ae007ab8ea3e4\n **/","import utils from './utils';\r\nimport constants from './constants';\r\nimport enc from './enc-utf8';\r\n\r\nimport Base64 from './Base64';\r\nimport LZString from 'lz-string/libs/lz-string';\r\nimport AES from 'crypto-js/aes';\r\nimport DES from 'crypto-js/tripledes';\r\nimport RABBIT from 'crypto-js/rabbit';\r\nimport RC4 from 'crypto-js/rc4';\r\n\r\nexport default class SecureLS {\r\n constructor(config) {\r\n config = config || {};\r\n this._name = 'secure-ls';\r\n this.utils = utils;\r\n this.constants = constants;\r\n this.Base64 = Base64;\r\n this.LZString = LZString;\r\n this.AES = AES;\r\n this.DES = DES;\r\n this.RABBIT = RABBIT;\r\n this.RC4 = RC4;\r\n this.enc = enc;\r\n\r\n this.config = {\r\n isCompression: true,\r\n encodingType: constants.EncrytionTypes.BASE64,\r\n encryptionSecret: config.encryptionSecret,\r\n encryptionRealm: config.encryptionRealm\r\n };\r\n this.config.isCompression = typeof config.isCompression !== 'undefined' ?\r\n config.isCompression :\r\n true;\r\n this.config.encodingType = (typeof config.encodingType !== 'undefined' || config.encodingType === '') ?\r\n config.encodingType.toLowerCase() :\r\n constants.EncrytionTypes.BASE64;\r\n\r\n this.ls = localStorage;\r\n this.init();\r\n };\r\n\r\n init() {\r\n let metaData = this.getMetaData();\r\n\r\n this.WarningEnum = this.constants.WarningEnum;\r\n this.WarningTypes = this.constants.WarningTypes;\r\n this.EncrytionTypes = this.constants.EncrytionTypes;\r\n\r\n this._isBase64 = this._isBase64EncryptionType();\r\n this._isAES = this._isAESEncryptionType();\r\n this._isDES = this._isDESEncryptionType();\r\n this._isRabbit = this._isRabbitEncryptionType();\r\n this._isRC4 = this._isRC4EncryptionType();\r\n this._isCompression = this._isDataCompressionEnabled();\r\n\r\n // fill the already present keys to the list of keys being used by secure-ls\r\n this.utils.allKeys = metaData.keys || this.resetAllKeys();\r\n };\r\n\r\n _isBase64EncryptionType() {\r\n return Base64 &&\r\n (typeof this.config.encodingType === 'undefined' ||\r\n this.config.encodingType === this.constants.EncrytionTypes.BASE64);\r\n };\r\n\r\n _isAESEncryptionType() {\r\n return AES &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.AES);\r\n };\r\n\r\n _isDESEncryptionType() {\r\n return DES &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.DES);\r\n };\r\n\r\n _isRabbitEncryptionType() {\r\n return RABBIT &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.RABBIT);\r\n };\r\n\r\n _isRC4EncryptionType() {\r\n return RC4 &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.RC4);\r\n };\r\n\r\n _isDataCompressionEnabled() {\r\n return this.config.isCompression;\r\n }\r\n\r\n getEncryptionSecret(key) {\r\n let metaData = this.getMetaData();\r\n let obj = this.utils.getObjectFromKey(metaData.keys, key);\r\n\r\n if (!obj) {\r\n return;\r\n }\r\n\r\n if (this._isAES ||\r\n this._isDES ||\r\n this._isRabbit ||\r\n this._isRC4\r\n ) {\r\n if (typeof this.config.encryptionSecret === 'undefined') {\r\n this.utils.encryptionSecret = obj.s;\r\n\r\n if (!this.utils.encryptionSecret) {\r\n this.utils.encryptionSecret = this.utils.generateSecretKey();\r\n this.setMetaData();\r\n }\r\n } else {\r\n this.utils.encryptionSecret = this.config.encryptionSecret || obj.s || '';\r\n }\r\n }\r\n }\r\n\r\n get(key, isAllKeysData) {\r\n let decodedData = '',\r\n jsonData = '',\r\n deCompressedData,\r\n bytes,\r\n data;\r\n\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return jsonData;\r\n }\r\n\r\n data = this.getDataFromLocalStorage(key);\r\n\r\n if (!data) {\r\n return jsonData;\r\n }\r\n\r\n deCompressedData = data; // saves else\r\n if (this._isCompression || isAllKeysData) { // meta data always compressed\r\n deCompressedData = LZString.decompressFromUTF16(data);\r\n }\r\n\r\n decodedData = deCompressedData; // saves else\r\n if (this._isBase64 || isAllKeysData) { // meta data always Base64\r\n decodedData = Base64.decode(deCompressedData);\r\n } else {\r\n this.getEncryptionSecret(key);\r\n if (this._isAES) {\r\n bytes = AES.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isDES) {\r\n bytes = DES.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isRabbit) {\r\n bytes = RABBIT.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isRC4) {\r\n bytes = RC4.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n }\r\n\r\n if (bytes) {\r\n decodedData = bytes.toString(enc._Utf8);\r\n }\r\n }\r\n\r\n try {\r\n jsonData = JSON.parse(decodedData);\r\n } catch (e) {\r\n throw new Error('Could not parse JSON');\r\n }\r\n\r\n return jsonData;\r\n };\r\n\r\n getDataFromLocalStorage(key) {\r\n return this.ls.getItem(key, true);\r\n };\r\n\r\n getAllKeys() {\r\n let data = this.getMetaData();\r\n\r\n return this.utils.extractKeyNames(data) || [];\r\n };\r\n\r\n set(key, data) {\r\n let dataToStore = '';\r\n\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return;\r\n }\r\n\r\n this.getEncryptionSecret(key);\r\n\r\n // add key(s) to Array if not already added, only for keys other than meta key\r\n if (!(String(key) === String(this.utils.metaKey))) {\r\n if (!this.utils.isKeyPresent(key)) {\r\n this.utils.addToKeysList(key);\r\n this.setMetaData();\r\n }\r\n }\r\n\r\n dataToStore = this.processData(data);\r\n // Store the data to localStorage\r\n this.setDataToLocalStorage(key, dataToStore);\r\n };\r\n\r\n setDataToLocalStorage(key, data) {\r\n this.ls.setItem(key, data);\r\n };\r\n\r\n remove(key) {\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return;\r\n }\r\n\r\n if (key === this.utils.metaKey && this.getAllKeys().length) {\r\n this.utils.warn(this.WarningEnum.META_KEY_REMOVE);\r\n return;\r\n }\r\n\r\n if (this.utils.isKeyPresent(key)) {\r\n this.utils.removeFromKeysList(key);\r\n this.setMetaData();\r\n }\r\n this.ls.removeItem(key);\r\n };\r\n\r\n removeAll() {\r\n let keys, i;\r\n\r\n keys = this.getAllKeys();\r\n for (i = 0; i < keys.length; i++) {\r\n this.ls.removeItem(keys[i]);\r\n }\r\n this.ls.removeItem(this.utils.metaKey);\r\n\r\n this.resetAllKeys();\r\n };\r\n\r\n clear() {\r\n this.ls.clear();\r\n this.resetAllKeys();\r\n };\r\n\r\n resetAllKeys() {\r\n this.utils.allKeys = [];\r\n return [];\r\n }\r\n\r\n processData(data, isAllKeysData) {\r\n if (data === null || data === undefined || data === '') {\r\n return '';\r\n }\r\n\r\n let jsonData, encodedData, compressedData;\r\n\r\n try {\r\n jsonData = JSON.stringify(data);\r\n } catch (e) {\r\n throw new Error('Could not stringify data.');\r\n }\r\n\r\n // Encode Based on encoding type\r\n // If not set, default to Base64 for securing data\r\n encodedData = jsonData;\r\n if (this._isBase64 || isAllKeysData) {\r\n encodedData = Base64.encode(jsonData);\r\n } else {\r\n if (this._isAES) {\r\n encodedData = AES.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isDES) {\r\n encodedData = DES.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isRabbit) {\r\n encodedData = RABBIT.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isRC4) {\r\n encodedData = RC4.encrypt(jsonData, this.utils.encryptionSecret);\r\n }\r\n\r\n encodedData = encodedData && encodedData.toString();\r\n }\r\n\r\n // Compress data if set to true\r\n compressedData = encodedData;\r\n if (this._isCompression || isAllKeysData) {\r\n compressedData = LZString.compressToUTF16(encodedData);\r\n }\r\n\r\n return compressedData;\r\n };\r\n\r\n setMetaData() {\r\n let dataToStore = this.processData({\r\n keys: this.utils.allKeys\r\n }, true);\r\n\r\n // Store the data to localStorage\r\n this.setDataToLocalStorage(this.getMetaKey(), dataToStore);\r\n };\r\n\r\n getMetaData() {\r\n return this.get(this.getMetaKey(), true) || {};\r\n };\r\n\r\n getMetaKey() {\r\n return this.utils.metaKey + (this.config.encryptionRealm ? '__' + this.config.encryptionRealm : '');\r\n }\r\n\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/index.js\n **/","import constants from './constants';\r\nimport CryptoJSWordArray from './WordArray';\r\nimport PBKDF2 from 'crypto-js/pbkdf2';\r\n\r\nlet utils = {\r\n metaKey: '_secure__ls__metadata',\r\n encryptionSecret: '',\r\n secretPhrase: 's3cr3t$#@135^&*246',\r\n allKeys: [],\r\n is: function (key) {\r\n if (key) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n warn: function (reason) {\r\n reason = reason ? reason : constants.WarningEnum.DEFAULT_TEXT;\r\n console.warn(constants.WarningTypes[reason]);\r\n },\r\n generateSecretKey: function () {\r\n let salt = CryptoJSWordArray.random(128 / 8);\r\n let key128Bits = PBKDF2(this.secretPhrase, salt, {keySize: 128 / 32 });\r\n\r\n return key128Bits && key128Bits.toString();\r\n },\r\n getObjectFromKey: function (data, key) {\r\n if (!data || !data.length) {\r\n return {};\r\n }\r\n\r\n let i, obj = {};\r\n\r\n for (i = 0; i < data.length; i++) {\r\n if (data[i].k === key) {\r\n obj = data[i];\r\n break;\r\n }\r\n }\r\n\r\n return obj;\r\n },\r\n extractKeyNames: function (data) {\r\n if (!data || !data.keys || !data.keys.length) {\r\n return [];\r\n }\r\n\r\n return data.keys.map(keyData => {\r\n return keyData.k;\r\n });\r\n },\r\n getAllKeys: function () {\r\n return this.allKeys;\r\n },\r\n isKeyPresent: function (key) {\r\n let isKeyAlreadyPresent = false;\r\n\r\n for (let i = 0; i < this.allKeys.length; i++) {\r\n if (String(this.allKeys[i].k) === String(key)) {\r\n isKeyAlreadyPresent = true; // found\r\n break;\r\n }\r\n }\r\n\r\n return isKeyAlreadyPresent;\r\n },\r\n addToKeysList: function (key) {\r\n this.allKeys.push({\r\n k: key,\r\n s: this.encryptionSecret\r\n });\r\n },\r\n removeFromKeysList: function (key) {\r\n let i, index = -1;\r\n\r\n for (i = 0; i < this.allKeys.length; i++) {\r\n if (this.allKeys[i].k === key) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n if (index !== -1) {\r\n this.allKeys.splice(index, 1);\r\n }\r\n return index;\r\n }\r\n};\r\n\r\nmodule.exports = utils;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/utils.js\n **/","let WarningEnum = {\r\n KEY_NOT_PROVIDED: 'keyNotProvided',\r\n META_KEY_REMOVE: 'metaKeyRemove',\r\n DEFAULT_TEXT: 'defaultText'\r\n};\r\n\r\nlet WarningTypes = {};\r\n\r\nWarningTypes[WarningEnum.KEY_NOT_PROVIDED] = 'Secure LS: Key not provided. Aborting operation!';\r\nWarningTypes[WarningEnum.META_KEY_REMOVE] = `Secure LS: Meta key can not be removed\r\nunless all keys created by Secure LS are removed!`;\r\nWarningTypes[WarningEnum.DEFAULT_TEXT] = `Unexpected output`;\r\n\r\nlet constants = {\r\n WarningEnum: WarningEnum,\r\n WarningTypes: WarningTypes,\r\n EncrytionTypes: {\r\n BASE64: 'base64',\r\n AES: 'aes',\r\n DES: 'des',\r\n RABBIT: 'rabbit',\r\n RC4: 'rc4'\r\n }\r\n};\r\n\r\nmodule.exports = constants;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/constants.js\n **/","/*\r\n ES6 compatible port of CryptoJS - WordArray for PBKDF2 password key generation\r\n\r\n Source: https://github.com/brix/crypto-js\r\n LICENSE: MIT\r\n */\r\n\r\nlet CryptoJSWordArray = {};\r\n\r\nCryptoJSWordArray.random = function (nBytes) {\r\n let words = [];\r\n let r = (function (mw) {\r\n let mz = 0x3ade68b1;\r\n let mask = 0xffffffff;\r\n\r\n return function () {\r\n mz = (0x9069 * (mz & 0xFFFF) + (mz >> 0x10)) & mask;\r\n mw = (0x4650 * (mw & 0xFFFF) + (mw >> 0x10)) & mask;\r\n let result = ((mz << 0x10) + mw) & mask;\r\n\r\n result /= 0x100000000;\r\n result += 0.5;\r\n return result * (Math.random() > 0.5 ? 1 : -1);\r\n };\r\n });\r\n\r\n for (let i = 0, rcache; i < nBytes; i += 4) {\r\n let _r = r((rcache || Math.random()) * 0x100000000);\r\n\r\n rcache = _r() * 0x3ade67b7;\r\n words.push((_r() * 0x100000000) | 0);\r\n }\r\n\r\n return new this.Set(words, nBytes);\r\n};\r\n\r\nCryptoJSWordArray.Set = function (words, sigBytes) {\r\n words = this.words = words || [];\r\n\r\n if (sigBytes !== undefined) {\r\n this.sigBytes = sigBytes;\r\n } else {\r\n this.sigBytes = words.length * 8;\r\n }\r\n};\r\n\r\nmodule.exports = CryptoJSWordArray;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/WordArray.js\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/pbkdf2.js\n ** module id = 4\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t /*\n\t * Local polyfil of Object.create\n\t */\n\t var create = Object.create || (function () {\n\t function F() {};\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }())\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var i = 0; i < thatSigBytes; i += 4) {\n\t thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t var r = (function (m_w) {\n\t var m_w = m_w;\n\t var m_z = 0x3ade68b1;\n\t var mask = 0xffffffff;\n\n\t return function () {\n\t m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t var result = ((m_z << 0x10) + m_w) & mask;\n\t result /= 0x100000000;\n\t result += 0.5;\n\t return result * (Math.random() > .5 ? 1 : -1);\n\t }\n\t });\n\n\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t var _r = r((rcache || Math.random()) * 0x100000000);\n\n\t rcache = _r() * 0x3ade67b7;\n\t words.push((_r() * 0x100000000) | 0);\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t var processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/core.js\n ** module id = 5\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/sha1.js\n ** module id = 6\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/hmac.js\n ** module id = 7\n ** module chunks = 0\n **/","/*\r\n ES6 compatible port of CryptoJS - encoding\r\n\r\n Source: https://github.com/brix/crypto-js\r\n LICENSE: MIT\r\n */\r\nlet enc = {};\r\n\r\nenc.Latin1 = {\r\n stringify: (wordArray) => {\r\n // Shortcuts\r\n let words = wordArray.words;\r\n let sigBytes = wordArray.sigBytes;\r\n let latin1Chars = [], i, bite;\r\n\r\n // Convert\r\n for (i = 0; i < sigBytes; i++) {\r\n bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n latin1Chars.push(String.fromCharCode(bite));\r\n }\r\n\r\n return latin1Chars.join('');\r\n }\r\n};\r\n\r\nenc._Utf8 = {\r\n stringify: (wordArray) => {\r\n try {\r\n return decodeURIComponent(escape(enc.Latin1.stringify(wordArray)));\r\n } catch (e) {\r\n throw new Error('Malformed UTF-8 data');\r\n }\r\n }\r\n};\r\n\r\nmodule.exports = enc;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/enc-utf8.js\n **/","let Base64 = {\r\n _keyStr: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\r\n encode: function (e) {\r\n let t = '';\r\n let n, r, i, s, o, u, a;\r\n let f = 0;\r\n\r\n e = Base64._utf8Encode(e);\r\n while (f < e.length) {\r\n n = e.charCodeAt(f++);\r\n r = e.charCodeAt(f++);\r\n i = e.charCodeAt(f++);\r\n s = n >> 2;\r\n o = (n & 3) << 4 | r >> 4;\r\n u = (r & 15) << 2 | i >> 6;\r\n a = i & 63;\r\n if (isNaN(r)) {\r\n u = a = 64;\r\n } else if (isNaN(i)) {\r\n a = 64;\r\n }\r\n t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a);\r\n }\r\n return t;\r\n },\r\n decode: function (e) {\r\n let t = '';\r\n let n, r, i;\r\n let s, o, u, a;\r\n let f = 0;\r\n\r\n e = e.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\r\n while (f < e.length) {\r\n s = this._keyStr.indexOf(e.charAt(f++));\r\n o = this._keyStr.indexOf(e.charAt(f++));\r\n u = this._keyStr.indexOf(e.charAt(f++));\r\n a = this._keyStr.indexOf(e.charAt(f++));\r\n n = s << 2 | o >> 4;\r\n r = (o & 15) << 4 | u >> 2;\r\n i = (u & 3) << 6 | a;\r\n t = t + String.fromCharCode(n);\r\n if (u !== 64) {\r\n t = t + String.fromCharCode(r);\r\n }\r\n if (a !== 64) {\r\n t = t + String.fromCharCode(i);\r\n }\r\n }\r\n t = Base64._utf8Decode(t);\r\n return t;\r\n },\r\n _utf8Encode: function (e) {\r\n e = e.replace(/\\r\\n/g, '\\n');\r\n let t = '';\r\n\r\n for (let n = 0; n < e.length; n++) {\r\n let r = e.charCodeAt(n);\r\n\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n } else if (r > 127 && r < 2048) {\r\n t += String.fromCharCode(r >> 6 | 192);\r\n t += String.fromCharCode(r & 63 | 128);\r\n } else {\r\n t += String.fromCharCode(r >> 12 | 224);\r\n t += String.fromCharCode(r >> 6 & 63 | 128);\r\n t += String.fromCharCode(r & 63 | 128);\r\n }\r\n }\r\n return t;\r\n },\r\n _utf8Decode: function (e) {\r\n let t = '';\r\n let n = 0;\r\n let r, c2, c3;\r\n\r\n r = c2 = 0;\r\n while (n < e.length) {\r\n r = e.charCodeAt(n);\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n n++;\r\n } else if (r > 191 && r < 224) {\r\n c2 = e.charCodeAt(n + 1);\r\n t += String.fromCharCode((r & 31) << 6 | c2 & 63);\r\n n += 2;\r\n } else {\r\n c2 = e.charCodeAt(n + 1);\r\n c3 = e.charCodeAt(n + 2);\r\n t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\r\n n += 3;\r\n }\r\n }\r\n return t;\r\n }\r\n};\r\n\r\nmodule.exports = Base64;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/Base64.js\n **/","// Copyright (c) 2013 Pieroxy \n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lz-string/libs/lz-string.js\n ** module id = 10\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/aes.js\n ** module id = 11\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/enc-base64.js\n ** module id = 12\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/md5.js\n ** module id = 13\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t var block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/evpkdf.js\n ** module id = 14\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t var block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t var block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t var modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t var modeCreator = mode.createDecryptor;\n\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t var wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t var salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/cipher-core.js\n ** module id = 15\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));\n\t this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));\n\t this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/tripledes.js\n ** module id = 16\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/rabbit.js\n ** module id = 17\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/rc4.js\n ** module id = 18\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/secure-ls.min.js b/dist/secure-ls.min.js index b3da7df..9148dc3 100644 --- a/dist/secure-ls.min.js +++ b/dist/secure-ls.min.js @@ -1,3 +1,3 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("SecureLS",[],e):"object"==typeof exports?exports.SecureLS=e():t.SecureLS=e()}(this,function(){return function(t){function e(i){if(r[i])return r[i].exports;var n=r[i]={exports:{},id:i,loaded:!1};return t[i].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var r={};return e.m=t,e.c=r,e.p="",e(0)}([function(t,e,r){"use strict";function i(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var r=0;r>16)&r,t=18e3*(65535&t)+(t>>16)&r;var i=(e<<16)+t&r;return i/=4294967296,i+=.5,i*(Math.random()>.5?1:-1)}},n=0;n>>2]>>>24-o%4*8&255;e[i+o>>>2]|=s<<24-(i+o)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=n,this},clamp:function(){var e=this.words,r=this.sigBytes;e[r>>>2]&=4294967295<<32-r%4*8,e.length=t.ceil(r/4)},clone:function(){var t=o.clone.call(this);return t.words=this.words.slice(0),t},random:function(e){for(var r,i=[],n=function(e){var e=e,r=987654321,i=4294967295;return function(){r=36969*(65535&r)+(r>>16)&i,e=18e3*(65535&e)+(e>>16)&i;var n=(r<<16)+e&i;return n/=4294967296,n+=.5,n*(t.random()>.5?1:-1)}},o=0;o>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new s.init(r,e/2)}},u=a.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(o))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new s.init(r,e)}},h=a.Utf8={stringify:function(t){try{return decodeURIComponent(escape(u.stringify(t)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(t){return u.parse(unescape(encodeURIComponent(t)))}},f=n.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new s.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=h.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var r=this._data,i=r.words,n=r.sigBytes,o=this.blockSize,a=4*o,c=n/a;c=e?t.ceil(c):t.max((0|c)-this._minBufferSize,0);var u=c*o,h=t.min(4*u,n);if(u){for(var f=0;f>>31}var f=(i<<5|i>>>27)+c+s[u];f+=u<20?(n&o|~n&a)+1518500249:u<40?(n^o^a)+1859775393:u<60?(n&o|n&a|o&a)-1894007588:(n^o^a)-899497514,c=a,a=o,o=n<<30|n>>>2,n=i,i=f}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+a|0,r[4]=r[4]+c|0},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return e[i>>>5]|=128<<24-i%32,e[(i+64>>>9<<4)+14]=Math.floor(r/4294967296),e[(i+64>>>9<<4)+15]=r,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA1=n._createHelper(a),e.HmacSHA1=n._createHmacHelper(a)}(),t.SHA1})},function(t,e,r){!function(i,n){t.exports=e=n(r(5))}(this,function(t){!function(){var e=t,r=e.lib,i=r.Base,n=e.enc,o=n.Utf8,s=e.algo;s.HMAC=i.extend({init:function(t,e){t=this._hasher=new t.init,"string"==typeof e&&(e=o.parse(e));var r=t.blockSize,i=4*r;e.sigBytes>i&&(e=t.finalize(e)),e.clamp();for(var n=this._oKey=e.clone(),s=this._iKey=e.clone(),a=n.words,c=s.words,u=0;u>>2]>>>24-n%4*8&255,i.push(String.fromCharCode(o));return i.join("")}},r._Utf8={stringify:function(t){try{return decodeURIComponent(escape(r.Latin1.stringify(t)))}catch(e){throw new Error("Malformed UTF-8 data")}}},t.exports=r},function(t,e){"use strict";var r={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(t){var e="",i=void 0,n=void 0,o=void 0,s=void 0,a=void 0,c=void 0,u=void 0,h=0;for(t=r._utf8Encode(t);h>2,a=(3&i)<<4|n>>4,c=(15&n)<<2|o>>6,u=63&o,isNaN(n)?c=u=64:isNaN(o)&&(u=64),e=e+this._keyStr.charAt(s)+this._keyStr.charAt(a)+this._keyStr.charAt(c)+this._keyStr.charAt(u);return e},decode:function(t){var e="",i=void 0,n=void 0,o=void 0,s=void 0,a=void 0,c=void 0,u=void 0,h=0;for(t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"");h>4,n=(15&a)<<4|c>>2,o=(3&c)<<6|u,e+=String.fromCharCode(i),64!==c&&(e+=String.fromCharCode(n)),64!==u&&(e+=String.fromCharCode(o));return e=r._utf8Decode(e)},_utf8Encode:function(t){t=t.replace(/\r\n/g,"\n");for(var e="",r=0;r127&&i<2048?(e+=String.fromCharCode(i>>6|192),e+=String.fromCharCode(63&i|128)):(e+=String.fromCharCode(i>>12|224),e+=String.fromCharCode(i>>6&63|128),e+=String.fromCharCode(63&i|128))}return e},_utf8Decode:function(t){var e="",r=0,i=void 0,n=void 0,o=void 0;for(i=n=0;r191&&i<224?(n=t.charCodeAt(r+1),e+=String.fromCharCode((31&i)<<6|63&n),r+=2):(n=t.charCodeAt(r+1),o=t.charCodeAt(r+2),e+=String.fromCharCode((15&i)<<12|(63&n)<<6|63&o),r+=3);return e}};t.exports=r},function(t,e,r){var i,n=function(){function t(t,e){if(!n[t]){n[t]={};for(var r=0;r>>8,r[2*i+1]=s%256}return r},decompressFromUint8Array:function(t){if(null===t||void 0===t)return o.decompress(t);for(var r=new Array(t.length/2),i=0,n=r.length;i>=1}else{for(n=1,i=0;i>=1}f--,0==f&&(f=Math.pow(2,p),p++),delete a[h]}else for(n=s[h],i=0;i>=1;f--,0==f&&(f=Math.pow(2,p),p++),s[u]=l++,h=String(c)}if(""!==h){if(Object.prototype.hasOwnProperty.call(a,h)){if(h.charCodeAt(0)<256){for(i=0;i>=1}else{for(n=1,i=0;i>=1}f--,0==f&&(f=Math.pow(2,p),p++),delete a[h]}else for(n=s[h],i=0;i>=1;f--,0==f&&(f=Math.pow(2,p),p++)}for(n=2,i=0;i>=1;for(;;){if(y<<=1,v==e-1){d.push(r(y));break}v++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:o._decompress(t.length,32768,function(e){return t.charCodeAt(e)})},_decompress:function(t,r,i){var n,o,s,a,c,u,h,f,l=[],p=4,d=4,y=3,v="",_=[],g={val:i(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,u=Math.pow(2,2),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;switch(n=a){case 0:for(a=0,u=Math.pow(2,8),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;f=e(a);break;case 1:for(a=0,u=Math.pow(2,16),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;f=e(a);break;case 2:return""}for(l[3]=f,s=f,_.push(f);;){if(g.index>t)return"";for(a=0,u=Math.pow(2,y),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;switch(f=a){case 0:for(a=0,u=Math.pow(2,8),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;l[d++]=e(a),f=d-1,p--;break;case 1:for(a=0,u=Math.pow(2,16),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;l[d++]=e(a),f=d-1,p--;break;case 2:return _.join("")}if(0==p&&(p=Math.pow(2,y),y++),l[f])v=l[f];else{if(f!==d)return null;v=s+s.charAt(0)}_.push(v),l[d++]=s+v.charAt(0),p--,s=v,0==p&&(p=Math.pow(2,y),y++)}}};return o}();i=function(){return n}.call(e,r,e,t),!(void 0!==i&&(t.exports=i))},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(12),r(13),r(14),r(15))}(this,function(t){return function(){var e=t,r=e.lib,i=r.BlockCipher,n=e.algo,o=[],s=[],a=[],c=[],u=[],h=[],f=[],l=[],p=[],d=[];!function(){for(var t=[],e=0;e<256;e++)e<128?t[e]=e<<1:t[e]=e<<1^283;for(var r=0,i=0,e=0;e<256;e++){var n=i^i<<1^i<<2^i<<3^i<<4;n=n>>>8^255&n^99,o[r]=n,s[n]=r;var y=t[r],v=t[y],_=t[v],g=257*t[n]^16843008*n;a[r]=g<<24|g>>>8,c[r]=g<<16|g>>>16,u[r]=g<<8|g>>>24,h[r]=g;var g=16843009*_^65537*v^257*y^16843008*r;f[n]=g<<24|g>>>8,l[n]=g<<16|g>>>16,p[n]=g<<8|g>>>24,d[n]=g,r?(r=y^t[t[t[_^y]]],i^=t[t[i]]):r=i=1}}();var y=[0,1,2,4,8,16,32,64,128,27,54],v=n.AES=i.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var t=this._keyPriorReset=this._key,e=t.words,r=t.sigBytes/4,i=this._nRounds=r+6,n=4*(i+1),s=this._keySchedule=[],a=0;a6&&a%r==4&&(c=o[c>>>24]<<24|o[c>>>16&255]<<16|o[c>>>8&255]<<8|o[255&c]):(c=c<<8|c>>>24,c=o[c>>>24]<<24|o[c>>>16&255]<<16|o[c>>>8&255]<<8|o[255&c],c^=y[a/r|0]<<24),s[a]=s[a-r]^c}for(var u=this._invKeySchedule=[],h=0;h>>24]]^l[o[c>>>16&255]]^p[o[c>>>8&255]]^d[o[255&c]]}}},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._keySchedule,a,c,u,h,o)},decryptBlock:function(t,e){var r=t[e+1];t[e+1]=t[e+3],t[e+3]=r,this._doCryptBlock(t,e,this._invKeySchedule,f,l,p,d,s);var r=t[e+1];t[e+1]=t[e+3],t[e+3]=r},_doCryptBlock:function(t,e,r,i,n,o,s,a){for(var c=this._nRounds,u=t[e]^r[0],h=t[e+1]^r[1],f=t[e+2]^r[2],l=t[e+3]^r[3],p=4,d=1;d>>24]^n[h>>>16&255]^o[f>>>8&255]^s[255&l]^r[p++],v=i[h>>>24]^n[f>>>16&255]^o[l>>>8&255]^s[255&u]^r[p++],_=i[f>>>24]^n[l>>>16&255]^o[u>>>8&255]^s[255&h]^r[p++],g=i[l>>>24]^n[u>>>16&255]^o[h>>>8&255]^s[255&f]^r[p++];u=y,h=v,f=_,l=g}var y=(a[u>>>24]<<24|a[h>>>16&255]<<16|a[f>>>8&255]<<8|a[255&l])^r[p++],v=(a[h>>>24]<<24|a[f>>>16&255]<<16|a[l>>>8&255]<<8|a[255&u])^r[p++],_=(a[f>>>24]<<24|a[l>>>16&255]<<16|a[u>>>8&255]<<8|a[255&h])^r[p++],g=(a[l>>>24]<<24|a[u>>>16&255]<<16|a[h>>>8&255]<<8|a[255&f])^r[p++];t[e]=y,t[e+1]=v,t[e+2]=_,t[e+3]=g},keySize:8});e.AES=i._createHelper(v)}(),t.AES})},function(t,e,r){!function(i,n){t.exports=e=n(r(5))}(this,function(t){return function(){function e(t,e,r){for(var i=[],o=0,s=0;s>>6-s%4*2;i[o>>>2]|=(a|c)<<24-o%4*8,o++}return n.create(i,o)}var r=t,i=r.lib,n=i.WordArray,o=r.enc;o.Base64={stringify:function(t){var e=t.words,r=t.sigBytes,i=this._map;t.clamp();for(var n=[],o=0;o>>2]>>>24-o%4*8&255,a=e[o+1>>>2]>>>24-(o+1)%4*8&255,c=e[o+2>>>2]>>>24-(o+2)%4*8&255,u=s<<16|a<<8|c,h=0;h<4&&o+.75*h>>6*(3-h)&63));var f=i.charAt(64);if(f)for(;n.length%4;)n.push(f);return n.join("")},parse:function(t){var r=t.length,i=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>32-o)+e}function i(t,e,r,i,n,o,s){var a=t+(e&i|r&~i)+n+s;return(a<>>32-o)+e}function n(t,e,r,i,n,o,s){var a=t+(e^r^i)+n+s;return(a<>>32-o)+e}function o(t,e,r,i,n,o,s){var a=t+(r^(e|~i))+n+s;return(a<>>32-o)+e}var s=t,a=s.lib,c=a.WordArray,u=a.Hasher,h=s.algo,f=[];!function(){for(var t=0;t<64;t++)f[t]=4294967296*e.abs(e.sin(t+1))|0}();var l=h.MD5=u.extend({_doReset:function(){this._hash=new c.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(t,e){for(var s=0;s<16;s++){var a=e+s,c=t[a];t[a]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}var u=this._hash.words,h=t[e+0],l=t[e+1],p=t[e+2],d=t[e+3],y=t[e+4],v=t[e+5],_=t[e+6],g=t[e+7],S=t[e+8],m=t[e+9],k=t[e+10],B=t[e+11],E=t[e+12],C=t[e+13],x=t[e+14],A=t[e+15],w=u[0],b=u[1],D=u[2],T=u[3];w=r(w,b,D,T,h,7,f[0]),T=r(T,w,b,D,l,12,f[1]),D=r(D,T,w,b,p,17,f[2]),b=r(b,D,T,w,d,22,f[3]),w=r(w,b,D,T,y,7,f[4]),T=r(T,w,b,D,v,12,f[5]),D=r(D,T,w,b,_,17,f[6]),b=r(b,D,T,w,g,22,f[7]),w=r(w,b,D,T,S,7,f[8]),T=r(T,w,b,D,m,12,f[9]),D=r(D,T,w,b,k,17,f[10]),b=r(b,D,T,w,B,22,f[11]),w=r(w,b,D,T,E,7,f[12]),T=r(T,w,b,D,C,12,f[13]),D=r(D,T,w,b,x,17,f[14]),b=r(b,D,T,w,A,22,f[15]),w=i(w,b,D,T,l,5,f[16]),T=i(T,w,b,D,_,9,f[17]),D=i(D,T,w,b,B,14,f[18]),b=i(b,D,T,w,h,20,f[19]),w=i(w,b,D,T,v,5,f[20]),T=i(T,w,b,D,k,9,f[21]),D=i(D,T,w,b,A,14,f[22]),b=i(b,D,T,w,y,20,f[23]),w=i(w,b,D,T,m,5,f[24]),T=i(T,w,b,D,x,9,f[25]),D=i(D,T,w,b,d,14,f[26]),b=i(b,D,T,w,S,20,f[27]),w=i(w,b,D,T,C,5,f[28]),T=i(T,w,b,D,p,9,f[29]),D=i(D,T,w,b,g,14,f[30]),b=i(b,D,T,w,E,20,f[31]),w=n(w,b,D,T,v,4,f[32]),T=n(T,w,b,D,S,11,f[33]),D=n(D,T,w,b,B,16,f[34]),b=n(b,D,T,w,x,23,f[35]),w=n(w,b,D,T,l,4,f[36]),T=n(T,w,b,D,y,11,f[37]),D=n(D,T,w,b,g,16,f[38]),b=n(b,D,T,w,k,23,f[39]),w=n(w,b,D,T,C,4,f[40]),T=n(T,w,b,D,h,11,f[41]),D=n(D,T,w,b,d,16,f[42]),b=n(b,D,T,w,_,23,f[43]),w=n(w,b,D,T,m,4,f[44]),T=n(T,w,b,D,E,11,f[45]),D=n(D,T,w,b,A,16,f[46]),b=n(b,D,T,w,p,23,f[47]),w=o(w,b,D,T,h,6,f[48]),T=o(T,w,b,D,g,10,f[49]),D=o(D,T,w,b,x,15,f[50]),b=o(b,D,T,w,v,21,f[51]),w=o(w,b,D,T,E,6,f[52]),T=o(T,w,b,D,d,10,f[53]),D=o(D,T,w,b,k,15,f[54]),b=o(b,D,T,w,l,21,f[55]),w=o(w,b,D,T,S,6,f[56]),T=o(T,w,b,D,A,10,f[57]),D=o(D,T,w,b,_,15,f[58]),b=o(b,D,T,w,C,21,f[59]),w=o(w,b,D,T,y,6,f[60]),T=o(T,w,b,D,B,10,f[61]),D=o(D,T,w,b,p,15,f[62]),b=o(b,D,T,w,m,21,f[63]),u[0]=u[0]+w|0,u[1]=u[1]+b|0,u[2]=u[2]+D|0,u[3]=u[3]+T|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var o=e.floor(i/4294967296),s=i;r[(n+64>>>9<<4)+15]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),r[(n+64>>>9<<4)+14]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),t.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,c=a.words,u=0;u<4;u++){var h=c[u];c[u]=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8)}return a},clone:function(){var t=u.clone.call(this);return t._hash=this._hash.clone(),t}});s.MD5=u._createHelper(l),s.HmacMD5=u._createHmacHelper(l)}(Math),t.MD5})},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(6),r(7))}(this,function(t){return function(){var e=t,r=e.lib,i=r.Base,n=r.WordArray,o=e.algo,s=o.MD5,a=o.EvpKDF=i.extend({cfg:i.extend({keySize:4,hasher:s,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){for(var r=this.cfg,i=r.hasher.create(),o=n.create(),s=o.words,a=r.keySize,c=r.iterations;s.length>>2];t.sigBytes-=e}},_=(i.BlockCipher=f.extend({cfg:f.cfg.extend({mode:d,padding:v}),reset:function(){f.reset.call(this);var t=this.cfg,e=t.iv,r=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var i=r.createEncryptor;else{var i=r.createDecryptor;this._minBufferSize=1}this._mode=i.call(r,this,e&&e.words)},_doProcessBlock:function(t,e){this._mode.processBlock(t,e)},_doFinalize:function(){var t=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){t.pad(this._data,this.blockSize);var e=this._process(!0)}else{var e=this._process(!0);t.unpad(e)}return e},blockSize:4}),i.CipherParams=n.extend({init:function(t){this.mixIn(t)},toString:function(t){return(t||this.formatter).stringify(this)}})),g=r.format={},S=g.OpenSSL={stringify:function(t){var e=t.ciphertext,r=t.salt;if(r)var i=o.create([1398893684,1701076831]).concat(r).concat(e);else var i=e;return i.toString(c)},parse:function(t){var e=c.parse(t),r=e.words;if(1398893684==r[0]&&1701076831==r[1]){var i=o.create(r.slice(2,4));r.splice(0,4),e.sigBytes-=16}return _.create({ciphertext:e,salt:i})}},m=i.SerializableCipher=n.extend({cfg:n.extend({format:S}),encrypt:function(t,e,r,i){i=this.cfg.extend(i);var n=t.createEncryptor(r,i),o=n.finalize(e),s=n.cfg;return _.create({ciphertext:o,key:r,iv:s.iv,algorithm:t,mode:s.mode,padding:s.padding,blockSize:t.blockSize,formatter:i.format})},decrypt:function(t,e,r,i){i=this.cfg.extend(i),e=this._parse(e,i.format);var n=t.createDecryptor(r,i).finalize(e.ciphertext);return n},_parse:function(t,e){return"string"==typeof t?e.parse(t,this):t}}),k=r.kdf={},B=k.OpenSSL={execute:function(t,e,r,i){i||(i=o.random(8));var n=h.create({keySize:e+r}).compute(t,i),s=o.create(n.words.slice(e),4*r);return n.sigBytes=4*e,_.create({key:n,iv:s,salt:i})}},E=i.PasswordBasedCipher=m.extend({cfg:m.cfg.extend({kdf:B}),encrypt:function(t,e,r,i){i=this.cfg.extend(i);var n=i.kdf.execute(r,t.keySize,t.ivSize);i.iv=n.iv;var o=m.encrypt.call(this,t,e,n.key,i);return o.mixIn(n),o},decrypt:function(t,e,r,i){i=this.cfg.extend(i), -e=this._parse(e,i.format);var n=i.kdf.execute(r,t.keySize,t.ivSize,e.salt);i.iv=n.iv;var o=m.decrypt.call(this,t,e,n.key,i);return o}})}()})},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(12),r(13),r(14),r(15))}(this,function(t){return function(){function e(t,e){var r=(this._lBlock>>>t^this._rBlock)&e;this._rBlock^=r,this._lBlock^=r<>>t^this._lBlock)&e;this._lBlock^=r,this._rBlock^=r<>>5]>>>31-n%32&1}for(var o=this._subKeys=[],s=0;s<16;s++){for(var a=o[s]=[],f=h[s],i=0;i<24;i++)a[i/6|0]|=r[(u[i]-1+f)%28]<<31-i%6,a[4+(i/6|0)]|=r[28+(u[i+24]-1+f)%28]<<31-i%6;a[0]=a[0]<<1|a[0]>>>31;for(var i=1;i<7;i++)a[i]=a[i]>>>4*(i-1)+3;a[7]=a[7]<<5|a[7]>>>27}for(var l=this._invSubKeys=[],i=0;i<16;i++)l[i]=o[15-i]},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._subKeys)},decryptBlock:function(t,e){this._doCryptBlock(t,e,this._invSubKeys)},_doCryptBlock:function(t,i,n){this._lBlock=t[i],this._rBlock=t[i+1],e.call(this,4,252645135),e.call(this,16,65535),r.call(this,2,858993459),r.call(this,8,16711935),e.call(this,1,1431655765);for(var o=0;o<16;o++){for(var s=n[o],a=this._lBlock,c=this._rBlock,u=0,h=0;h<8;h++)u|=f[h][((c^s[h])&l[h])>>>0];this._lBlock=c,this._rBlock=a^u}var p=this._lBlock;this._lBlock=this._rBlock,this._rBlock=p,e.call(this,1,1431655765),r.call(this,8,16711935),r.call(this,2,858993459),e.call(this,16,65535),e.call(this,4,252645135),t[i]=this._lBlock,t[i+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});i.DES=s._createHelper(p);var d=a.TripleDES=s.extend({_doReset:function(){var t=this._key,e=t.words;this._des1=p.createEncryptor(o.create(e.slice(0,2))),this._des2=p.createEncryptor(o.create(e.slice(2,4))),this._des3=p.createEncryptor(o.create(e.slice(4,6)))},encryptBlock:function(t,e){this._des1.encryptBlock(t,e),this._des2.decryptBlock(t,e),this._des3.encryptBlock(t,e)},decryptBlock:function(t,e){this._des3.decryptBlock(t,e),this._des2.encryptBlock(t,e),this._des1.decryptBlock(t,e)},keySize:6,ivSize:2,blockSize:2});i.TripleDES=s._createHelper(d)}(),t.TripleDES})},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(12),r(13),r(14),r(15))}(this,function(t){return function(){function e(){for(var t=this._X,e=this._C,r=0;r<8;r++)a[r]=e[r];e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0;for(var r=0;r<8;r++){var i=t[r]+e[r],n=65535&i,o=i>>>16,s=((n*n>>>17)+n*o>>>15)+o*o,u=((4294901760&i)*i|0)+((65535&i)*i|0);c[r]=s^u}t[0]=c[0]+(c[7]<<16|c[7]>>>16)+(c[6]<<16|c[6]>>>16)|0,t[1]=c[1]+(c[0]<<8|c[0]>>>24)+c[7]|0,t[2]=c[2]+(c[1]<<16|c[1]>>>16)+(c[0]<<16|c[0]>>>16)|0,t[3]=c[3]+(c[2]<<8|c[2]>>>24)+c[1]|0,t[4]=c[4]+(c[3]<<16|c[3]>>>16)+(c[2]<<16|c[2]>>>16)|0,t[5]=c[5]+(c[4]<<8|c[4]>>>24)+c[3]|0,t[6]=c[6]+(c[5]<<16|c[5]>>>16)+(c[4]<<16|c[4]>>>16)|0,t[7]=c[7]+(c[6]<<8|c[6]>>>24)+c[5]|0}var r=t,i=r.lib,n=i.StreamCipher,o=r.algo,s=[],a=[],c=[],u=o.Rabbit=n.extend({_doReset:function(){for(var t=this._key.words,r=this.cfg.iv,i=0;i<4;i++)t[i]=16711935&(t[i]<<8|t[i]>>>24)|4278255360&(t[i]<<24|t[i]>>>8);var n=this._X=[t[0],t[3]<<16|t[2]>>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],o=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];this._b=0;for(var i=0;i<4;i++)e.call(this);for(var i=0;i<8;i++)o[i]^=n[i+4&7];if(r){var s=r.words,a=s[0],c=s[1],u=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8),f=u>>>16|4294901760&h,l=h<<16|65535&u;o[0]^=u,o[1]^=f,o[2]^=h,o[3]^=l,o[4]^=u,o[5]^=f,o[6]^=h,o[7]^=l;for(var i=0;i<4;i++)e.call(this)}},_doProcessBlock:function(t,r){var i=this._X;e.call(this),s[0]=i[0]^i[5]>>>16^i[3]<<16,s[1]=i[2]^i[7]>>>16^i[5]<<16,s[2]=i[4]^i[1]>>>16^i[7]<<16,s[3]=i[6]^i[3]>>>16^i[1]<<16;for(var n=0;n<4;n++)s[n]=16711935&(s[n]<<8|s[n]>>>24)|4278255360&(s[n]<<24|s[n]>>>8),t[r+n]^=s[n]},blockSize:4,ivSize:2});r.Rabbit=n._createHelper(u)}(),t.Rabbit})},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(12),r(13),r(14),r(15))}(this,function(t){return function(){function e(){for(var t=this._S,e=this._i,r=this._j,i=0,n=0;n<4;n++){e=(e+1)%256,r=(r+t[e])%256;var o=t[e];t[e]=t[r],t[r]=o,i|=t[(t[e]+t[r])%256]<<24-8*n}return this._i=e,this._j=r,i}var r=t,i=r.lib,n=i.StreamCipher,o=r.algo,s=o.RC4=n.extend({_doReset:function(){for(var t=this._key,e=t.words,r=t.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;for(var n=0,o=0;n<256;n++){var s=n%r,a=e[s>>>2]>>>24-s%4*8&255;o=(o+i[n]+a)%256;var c=i[n];i[n]=i[o],i[o]=c}this._i=this._j=0},_doProcessBlock:function(t,r){t[r]^=e.call(this)},keySize:8,ivSize:0});r.RC4=n._createHelper(s);var a=o.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var t=this.cfg.drop;t>0;t--)e.call(this)}});r.RC4Drop=n._createHelper(a)}(),t.RC4})}])}); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("SecureLS",[],e):"object"==typeof exports?exports.SecureLS=e():t.SecureLS=e()}(this,function(){return function(t){function e(i){if(r[i])return r[i].exports;var n=r[i]={exports:{},id:i,loaded:!1};return t[i].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var r={};return e.m=t,e.c=r,e.p="",e(0)}([function(t,e,r){"use strict";function i(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var r=0;r>16)&r,t=18e3*(65535&t)+(t>>16)&r;var i=(e<<16)+t&r;return i/=4294967296,i+=.5,i*(Math.random()>.5?1:-1)}},n=0;n>>2]>>>24-o%4*8&255;e[i+o>>>2]|=s<<24-(i+o)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=n,this},clamp:function(){var e=this.words,r=this.sigBytes;e[r>>>2]&=4294967295<<32-r%4*8,e.length=t.ceil(r/4)},clone:function(){var t=o.clone.call(this);return t.words=this.words.slice(0),t},random:function(e){for(var r,i=[],n=function(e){var e=e,r=987654321,i=4294967295;return function(){r=36969*(65535&r)+(r>>16)&i,e=18e3*(65535&e)+(e>>16)&i;var n=(r<<16)+e&i;return n/=4294967296,n+=.5,n*(t.random()>.5?1:-1)}},o=0;o>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new s.init(r,e/2)}},u=a.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(o))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new s.init(r,e)}},h=a.Utf8={stringify:function(t){try{return decodeURIComponent(escape(u.stringify(t)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(t){return u.parse(unescape(encodeURIComponent(t)))}},f=n.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new s.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=h.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var r=this._data,i=r.words,n=r.sigBytes,o=this.blockSize,a=4*o,c=n/a;c=e?t.ceil(c):t.max((0|c)-this._minBufferSize,0);var u=c*o,h=t.min(4*u,n);if(u){for(var f=0;f>>31}var f=(i<<5|i>>>27)+c+s[u];f+=u<20?(n&o|~n&a)+1518500249:u<40?(n^o^a)+1859775393:u<60?(n&o|n&a|o&a)-1894007588:(n^o^a)-899497514,c=a,a=o,o=n<<30|n>>>2,n=i,i=f}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+a|0,r[4]=r[4]+c|0},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return e[i>>>5]|=128<<24-i%32,e[(i+64>>>9<<4)+14]=Math.floor(r/4294967296),e[(i+64>>>9<<4)+15]=r,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA1=n._createHelper(a),e.HmacSHA1=n._createHmacHelper(a)}(),t.SHA1})},function(t,e,r){!function(i,n){t.exports=e=n(r(5))}(this,function(t){!function(){var e=t,r=e.lib,i=r.Base,n=e.enc,o=n.Utf8,s=e.algo;s.HMAC=i.extend({init:function(t,e){t=this._hasher=new t.init,"string"==typeof e&&(e=o.parse(e));var r=t.blockSize,i=4*r;e.sigBytes>i&&(e=t.finalize(e)),e.clamp();for(var n=this._oKey=e.clone(),s=this._iKey=e.clone(),a=n.words,c=s.words,u=0;u>>2]>>>24-n%4*8&255,i.push(String.fromCharCode(o));return i.join("")}},r._Utf8={stringify:function(t){try{return decodeURIComponent(escape(r.Latin1.stringify(t)))}catch(e){throw new Error("Malformed UTF-8 data")}}},t.exports=r},function(t,e){"use strict";var r={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(t){var e="",i=void 0,n=void 0,o=void 0,s=void 0,a=void 0,c=void 0,u=void 0,h=0;for(t=r._utf8Encode(t);h>2,a=(3&i)<<4|n>>4,c=(15&n)<<2|o>>6,u=63&o,isNaN(n)?c=u=64:isNaN(o)&&(u=64),e=e+this._keyStr.charAt(s)+this._keyStr.charAt(a)+this._keyStr.charAt(c)+this._keyStr.charAt(u);return e},decode:function(t){var e="",i=void 0,n=void 0,o=void 0,s=void 0,a=void 0,c=void 0,u=void 0,h=0;for(t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"");h>4,n=(15&a)<<4|c>>2,o=(3&c)<<6|u,e+=String.fromCharCode(i),64!==c&&(e+=String.fromCharCode(n)),64!==u&&(e+=String.fromCharCode(o));return e=r._utf8Decode(e)},_utf8Encode:function(t){t=t.replace(/\r\n/g,"\n");for(var e="",r=0;r127&&i<2048?(e+=String.fromCharCode(i>>6|192),e+=String.fromCharCode(63&i|128)):(e+=String.fromCharCode(i>>12|224),e+=String.fromCharCode(i>>6&63|128),e+=String.fromCharCode(63&i|128))}return e},_utf8Decode:function(t){var e="",r=0,i=void 0,n=void 0,o=void 0;for(i=n=0;r191&&i<224?(n=t.charCodeAt(r+1),e+=String.fromCharCode((31&i)<<6|63&n),r+=2):(n=t.charCodeAt(r+1),o=t.charCodeAt(r+2),e+=String.fromCharCode((15&i)<<12|(63&n)<<6|63&o),r+=3);return e}};t.exports=r},function(t,e,r){var i,n=function(){function t(t,e){if(!n[t]){n[t]={};for(var r=0;r>>8,r[2*i+1]=s%256}return r},decompressFromUint8Array:function(t){if(null===t||void 0===t)return o.decompress(t);for(var r=new Array(t.length/2),i=0,n=r.length;i>=1}else{for(n=1,i=0;i>=1}f--,0==f&&(f=Math.pow(2,p),p++),delete a[h]}else for(n=s[h],i=0;i>=1;f--,0==f&&(f=Math.pow(2,p),p++),s[u]=l++,h=String(c)}if(""!==h){if(Object.prototype.hasOwnProperty.call(a,h)){if(h.charCodeAt(0)<256){for(i=0;i>=1}else{for(n=1,i=0;i>=1}f--,0==f&&(f=Math.pow(2,p),p++),delete a[h]}else for(n=s[h],i=0;i>=1;f--,0==f&&(f=Math.pow(2,p),p++)}for(n=2,i=0;i>=1;for(;;){if(y<<=1,v==e-1){d.push(r(y));break}v++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:o._decompress(t.length,32768,function(e){return t.charCodeAt(e)})},_decompress:function(t,r,i){var n,o,s,a,c,u,h,f,l=[],p=4,d=4,y=3,v="",_=[],g={val:i(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,u=Math.pow(2,2),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;switch(n=a){case 0:for(a=0,u=Math.pow(2,8),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;f=e(a);break;case 1:for(a=0,u=Math.pow(2,16),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;f=e(a);break;case 2:return""}for(l[3]=f,s=f,_.push(f);;){if(g.index>t)return"";for(a=0,u=Math.pow(2,y),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;switch(f=a){case 0:for(a=0,u=Math.pow(2,8),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;l[d++]=e(a),f=d-1,p--;break;case 1:for(a=0,u=Math.pow(2,16),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;l[d++]=e(a),f=d-1,p--;break;case 2:return _.join("")}if(0==p&&(p=Math.pow(2,y),y++),l[f])v=l[f];else{if(f!==d)return null;v=s+s.charAt(0)}_.push(v),l[d++]=s+v.charAt(0),p--,s=v,0==p&&(p=Math.pow(2,y),y++)}}};return o}();i=function(){return n}.call(e,r,e,t),!(void 0!==i&&(t.exports=i))},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(12),r(13),r(14),r(15))}(this,function(t){return function(){var e=t,r=e.lib,i=r.BlockCipher,n=e.algo,o=[],s=[],a=[],c=[],u=[],h=[],f=[],l=[],p=[],d=[];!function(){for(var t=[],e=0;e<256;e++)e<128?t[e]=e<<1:t[e]=e<<1^283;for(var r=0,i=0,e=0;e<256;e++){var n=i^i<<1^i<<2^i<<3^i<<4;n=n>>>8^255&n^99,o[r]=n,s[n]=r;var y=t[r],v=t[y],_=t[v],g=257*t[n]^16843008*n;a[r]=g<<24|g>>>8,c[r]=g<<16|g>>>16,u[r]=g<<8|g>>>24,h[r]=g;var g=16843009*_^65537*v^257*y^16843008*r;f[n]=g<<24|g>>>8,l[n]=g<<16|g>>>16,p[n]=g<<8|g>>>24,d[n]=g,r?(r=y^t[t[t[_^y]]],i^=t[t[i]]):r=i=1}}();var y=[0,1,2,4,8,16,32,64,128,27,54],v=n.AES=i.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var t=this._keyPriorReset=this._key,e=t.words,r=t.sigBytes/4,i=this._nRounds=r+6,n=4*(i+1),s=this._keySchedule=[],a=0;a6&&a%r==4&&(c=o[c>>>24]<<24|o[c>>>16&255]<<16|o[c>>>8&255]<<8|o[255&c]):(c=c<<8|c>>>24,c=o[c>>>24]<<24|o[c>>>16&255]<<16|o[c>>>8&255]<<8|o[255&c],c^=y[a/r|0]<<24),s[a]=s[a-r]^c}for(var u=this._invKeySchedule=[],h=0;h>>24]]^l[o[c>>>16&255]]^p[o[c>>>8&255]]^d[o[255&c]]}}},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._keySchedule,a,c,u,h,o)},decryptBlock:function(t,e){var r=t[e+1];t[e+1]=t[e+3],t[e+3]=r,this._doCryptBlock(t,e,this._invKeySchedule,f,l,p,d,s);var r=t[e+1];t[e+1]=t[e+3],t[e+3]=r},_doCryptBlock:function(t,e,r,i,n,o,s,a){for(var c=this._nRounds,u=t[e]^r[0],h=t[e+1]^r[1],f=t[e+2]^r[2],l=t[e+3]^r[3],p=4,d=1;d>>24]^n[h>>>16&255]^o[f>>>8&255]^s[255&l]^r[p++],v=i[h>>>24]^n[f>>>16&255]^o[l>>>8&255]^s[255&u]^r[p++],_=i[f>>>24]^n[l>>>16&255]^o[u>>>8&255]^s[255&h]^r[p++],g=i[l>>>24]^n[u>>>16&255]^o[h>>>8&255]^s[255&f]^r[p++];u=y,h=v,f=_,l=g}var y=(a[u>>>24]<<24|a[h>>>16&255]<<16|a[f>>>8&255]<<8|a[255&l])^r[p++],v=(a[h>>>24]<<24|a[f>>>16&255]<<16|a[l>>>8&255]<<8|a[255&u])^r[p++],_=(a[f>>>24]<<24|a[l>>>16&255]<<16|a[u>>>8&255]<<8|a[255&h])^r[p++],g=(a[l>>>24]<<24|a[u>>>16&255]<<16|a[h>>>8&255]<<8|a[255&f])^r[p++];t[e]=y,t[e+1]=v,t[e+2]=_,t[e+3]=g},keySize:8});e.AES=i._createHelper(v)}(),t.AES})},function(t,e,r){!function(i,n){t.exports=e=n(r(5))}(this,function(t){return function(){function e(t,e,r){for(var i=[],o=0,s=0;s>>6-s%4*2;i[o>>>2]|=(a|c)<<24-o%4*8,o++}return n.create(i,o)}var r=t,i=r.lib,n=i.WordArray,o=r.enc;o.Base64={stringify:function(t){var e=t.words,r=t.sigBytes,i=this._map;t.clamp();for(var n=[],o=0;o>>2]>>>24-o%4*8&255,a=e[o+1>>>2]>>>24-(o+1)%4*8&255,c=e[o+2>>>2]>>>24-(o+2)%4*8&255,u=s<<16|a<<8|c,h=0;h<4&&o+.75*h>>6*(3-h)&63));var f=i.charAt(64);if(f)for(;n.length%4;)n.push(f);return n.join("")},parse:function(t){var r=t.length,i=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>32-o)+e}function i(t,e,r,i,n,o,s){var a=t+(e&i|r&~i)+n+s;return(a<>>32-o)+e}function n(t,e,r,i,n,o,s){var a=t+(e^r^i)+n+s;return(a<>>32-o)+e}function o(t,e,r,i,n,o,s){var a=t+(r^(e|~i))+n+s;return(a<>>32-o)+e}var s=t,a=s.lib,c=a.WordArray,u=a.Hasher,h=s.algo,f=[];!function(){for(var t=0;t<64;t++)f[t]=4294967296*e.abs(e.sin(t+1))|0}();var l=h.MD5=u.extend({_doReset:function(){this._hash=new c.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(t,e){for(var s=0;s<16;s++){var a=e+s,c=t[a];t[a]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}var u=this._hash.words,h=t[e+0],l=t[e+1],p=t[e+2],d=t[e+3],y=t[e+4],v=t[e+5],_=t[e+6],g=t[e+7],S=t[e+8],m=t[e+9],k=t[e+10],B=t[e+11],E=t[e+12],C=t[e+13],x=t[e+14],A=t[e+15],w=u[0],b=u[1],D=u[2],T=u[3];w=r(w,b,D,T,h,7,f[0]),T=r(T,w,b,D,l,12,f[1]),D=r(D,T,w,b,p,17,f[2]),b=r(b,D,T,w,d,22,f[3]),w=r(w,b,D,T,y,7,f[4]),T=r(T,w,b,D,v,12,f[5]),D=r(D,T,w,b,_,17,f[6]),b=r(b,D,T,w,g,22,f[7]),w=r(w,b,D,T,S,7,f[8]),T=r(T,w,b,D,m,12,f[9]),D=r(D,T,w,b,k,17,f[10]),b=r(b,D,T,w,B,22,f[11]),w=r(w,b,D,T,E,7,f[12]),T=r(T,w,b,D,C,12,f[13]),D=r(D,T,w,b,x,17,f[14]),b=r(b,D,T,w,A,22,f[15]),w=i(w,b,D,T,l,5,f[16]),T=i(T,w,b,D,_,9,f[17]),D=i(D,T,w,b,B,14,f[18]),b=i(b,D,T,w,h,20,f[19]),w=i(w,b,D,T,v,5,f[20]),T=i(T,w,b,D,k,9,f[21]),D=i(D,T,w,b,A,14,f[22]),b=i(b,D,T,w,y,20,f[23]),w=i(w,b,D,T,m,5,f[24]),T=i(T,w,b,D,x,9,f[25]),D=i(D,T,w,b,d,14,f[26]),b=i(b,D,T,w,S,20,f[27]),w=i(w,b,D,T,C,5,f[28]),T=i(T,w,b,D,p,9,f[29]),D=i(D,T,w,b,g,14,f[30]),b=i(b,D,T,w,E,20,f[31]),w=n(w,b,D,T,v,4,f[32]),T=n(T,w,b,D,S,11,f[33]),D=n(D,T,w,b,B,16,f[34]),b=n(b,D,T,w,x,23,f[35]),w=n(w,b,D,T,l,4,f[36]),T=n(T,w,b,D,y,11,f[37]),D=n(D,T,w,b,g,16,f[38]),b=n(b,D,T,w,k,23,f[39]),w=n(w,b,D,T,C,4,f[40]),T=n(T,w,b,D,h,11,f[41]),D=n(D,T,w,b,d,16,f[42]),b=n(b,D,T,w,_,23,f[43]),w=n(w,b,D,T,m,4,f[44]),T=n(T,w,b,D,E,11,f[45]),D=n(D,T,w,b,A,16,f[46]),b=n(b,D,T,w,p,23,f[47]),w=o(w,b,D,T,h,6,f[48]),T=o(T,w,b,D,g,10,f[49]),D=o(D,T,w,b,x,15,f[50]),b=o(b,D,T,w,v,21,f[51]),w=o(w,b,D,T,E,6,f[52]),T=o(T,w,b,D,d,10,f[53]),D=o(D,T,w,b,k,15,f[54]),b=o(b,D,T,w,l,21,f[55]),w=o(w,b,D,T,S,6,f[56]),T=o(T,w,b,D,A,10,f[57]),D=o(D,T,w,b,_,15,f[58]),b=o(b,D,T,w,C,21,f[59]),w=o(w,b,D,T,y,6,f[60]),T=o(T,w,b,D,B,10,f[61]),D=o(D,T,w,b,p,15,f[62]),b=o(b,D,T,w,m,21,f[63]),u[0]=u[0]+w|0,u[1]=u[1]+b|0,u[2]=u[2]+D|0,u[3]=u[3]+T|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var o=e.floor(i/4294967296),s=i;r[(n+64>>>9<<4)+15]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),r[(n+64>>>9<<4)+14]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),t.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,c=a.words,u=0;u<4;u++){var h=c[u];c[u]=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8)}return a},clone:function(){var t=u.clone.call(this);return t._hash=this._hash.clone(),t}});s.MD5=u._createHelper(l),s.HmacMD5=u._createHmacHelper(l)}(Math),t.MD5})},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(6),r(7))}(this,function(t){return function(){var e=t,r=e.lib,i=r.Base,n=r.WordArray,o=e.algo,s=o.MD5,a=o.EvpKDF=i.extend({cfg:i.extend({keySize:4,hasher:s,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){for(var r=this.cfg,i=r.hasher.create(),o=n.create(),s=o.words,a=r.keySize,c=r.iterations;s.length>>2];t.sigBytes-=e}},_=(i.BlockCipher=f.extend({cfg:f.cfg.extend({mode:d,padding:v}),reset:function(){f.reset.call(this);var t=this.cfg,e=t.iv,r=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var i=r.createEncryptor;else{var i=r.createDecryptor;this._minBufferSize=1}this._mode=i.call(r,this,e&&e.words)},_doProcessBlock:function(t,e){this._mode.processBlock(t,e)},_doFinalize:function(){var t=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){t.pad(this._data,this.blockSize);var e=this._process(!0)}else{var e=this._process(!0);t.unpad(e)}return e},blockSize:4}),i.CipherParams=n.extend({init:function(t){this.mixIn(t)},toString:function(t){return(t||this.formatter).stringify(this)}})),g=r.format={},S=g.OpenSSL={stringify:function(t){var e=t.ciphertext,r=t.salt;if(r)var i=o.create([1398893684,1701076831]).concat(r).concat(e);else var i=e;return i.toString(c)},parse:function(t){var e=c.parse(t),r=e.words;if(1398893684==r[0]&&1701076831==r[1]){var i=o.create(r.slice(2,4));r.splice(0,4),e.sigBytes-=16}return _.create({ciphertext:e,salt:i})}},m=i.SerializableCipher=n.extend({cfg:n.extend({format:S}),encrypt:function(t,e,r,i){i=this.cfg.extend(i);var n=t.createEncryptor(r,i),o=n.finalize(e),s=n.cfg;return _.create({ciphertext:o,key:r,iv:s.iv,algorithm:t,mode:s.mode,padding:s.padding,blockSize:t.blockSize,formatter:i.format})},decrypt:function(t,e,r,i){i=this.cfg.extend(i),e=this._parse(e,i.format);var n=t.createDecryptor(r,i).finalize(e.ciphertext);return n},_parse:function(t,e){return"string"==typeof t?e.parse(t,this):t}}),k=r.kdf={},B=k.OpenSSL={execute:function(t,e,r,i){i||(i=o.random(8));var n=h.create({keySize:e+r}).compute(t,i),s=o.create(n.words.slice(e),4*r);return n.sigBytes=4*e,_.create({key:n,iv:s,salt:i})}},E=i.PasswordBasedCipher=m.extend({cfg:m.cfg.extend({kdf:B}),encrypt:function(t,e,r,i){i=this.cfg.extend(i);var n=i.kdf.execute(r,t.keySize,t.ivSize); +i.iv=n.iv;var o=m.encrypt.call(this,t,e,n.key,i);return o.mixIn(n),o},decrypt:function(t,e,r,i){i=this.cfg.extend(i),e=this._parse(e,i.format);var n=i.kdf.execute(r,t.keySize,t.ivSize,e.salt);i.iv=n.iv;var o=m.decrypt.call(this,t,e,n.key,i);return o}})}()})},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(12),r(13),r(14),r(15))}(this,function(t){return function(){function e(t,e){var r=(this._lBlock>>>t^this._rBlock)&e;this._rBlock^=r,this._lBlock^=r<>>t^this._lBlock)&e;this._lBlock^=r,this._rBlock^=r<>>5]>>>31-n%32&1}for(var o=this._subKeys=[],s=0;s<16;s++){for(var a=o[s]=[],f=h[s],i=0;i<24;i++)a[i/6|0]|=r[(u[i]-1+f)%28]<<31-i%6,a[4+(i/6|0)]|=r[28+(u[i+24]-1+f)%28]<<31-i%6;a[0]=a[0]<<1|a[0]>>>31;for(var i=1;i<7;i++)a[i]=a[i]>>>4*(i-1)+3;a[7]=a[7]<<5|a[7]>>>27}for(var l=this._invSubKeys=[],i=0;i<16;i++)l[i]=o[15-i]},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._subKeys)},decryptBlock:function(t,e){this._doCryptBlock(t,e,this._invSubKeys)},_doCryptBlock:function(t,i,n){this._lBlock=t[i],this._rBlock=t[i+1],e.call(this,4,252645135),e.call(this,16,65535),r.call(this,2,858993459),r.call(this,8,16711935),e.call(this,1,1431655765);for(var o=0;o<16;o++){for(var s=n[o],a=this._lBlock,c=this._rBlock,u=0,h=0;h<8;h++)u|=f[h][((c^s[h])&l[h])>>>0];this._lBlock=c,this._rBlock=a^u}var p=this._lBlock;this._lBlock=this._rBlock,this._rBlock=p,e.call(this,1,1431655765),r.call(this,8,16711935),r.call(this,2,858993459),e.call(this,16,65535),e.call(this,4,252645135),t[i]=this._lBlock,t[i+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});i.DES=s._createHelper(p);var d=a.TripleDES=s.extend({_doReset:function(){var t=this._key,e=t.words;this._des1=p.createEncryptor(o.create(e.slice(0,2))),this._des2=p.createEncryptor(o.create(e.slice(2,4))),this._des3=p.createEncryptor(o.create(e.slice(4,6)))},encryptBlock:function(t,e){this._des1.encryptBlock(t,e),this._des2.decryptBlock(t,e),this._des3.encryptBlock(t,e)},decryptBlock:function(t,e){this._des3.decryptBlock(t,e),this._des2.encryptBlock(t,e),this._des1.decryptBlock(t,e)},keySize:6,ivSize:2,blockSize:2});i.TripleDES=s._createHelper(d)}(),t.TripleDES})},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(12),r(13),r(14),r(15))}(this,function(t){return function(){function e(){for(var t=this._X,e=this._C,r=0;r<8;r++)a[r]=e[r];e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0;for(var r=0;r<8;r++){var i=t[r]+e[r],n=65535&i,o=i>>>16,s=((n*n>>>17)+n*o>>>15)+o*o,u=((4294901760&i)*i|0)+((65535&i)*i|0);c[r]=s^u}t[0]=c[0]+(c[7]<<16|c[7]>>>16)+(c[6]<<16|c[6]>>>16)|0,t[1]=c[1]+(c[0]<<8|c[0]>>>24)+c[7]|0,t[2]=c[2]+(c[1]<<16|c[1]>>>16)+(c[0]<<16|c[0]>>>16)|0,t[3]=c[3]+(c[2]<<8|c[2]>>>24)+c[1]|0,t[4]=c[4]+(c[3]<<16|c[3]>>>16)+(c[2]<<16|c[2]>>>16)|0,t[5]=c[5]+(c[4]<<8|c[4]>>>24)+c[3]|0,t[6]=c[6]+(c[5]<<16|c[5]>>>16)+(c[4]<<16|c[4]>>>16)|0,t[7]=c[7]+(c[6]<<8|c[6]>>>24)+c[5]|0}var r=t,i=r.lib,n=i.StreamCipher,o=r.algo,s=[],a=[],c=[],u=o.Rabbit=n.extend({_doReset:function(){for(var t=this._key.words,r=this.cfg.iv,i=0;i<4;i++)t[i]=16711935&(t[i]<<8|t[i]>>>24)|4278255360&(t[i]<<24|t[i]>>>8);var n=this._X=[t[0],t[3]<<16|t[2]>>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],o=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];this._b=0;for(var i=0;i<4;i++)e.call(this);for(var i=0;i<8;i++)o[i]^=n[i+4&7];if(r){var s=r.words,a=s[0],c=s[1],u=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8),f=u>>>16|4294901760&h,l=h<<16|65535&u;o[0]^=u,o[1]^=f,o[2]^=h,o[3]^=l,o[4]^=u,o[5]^=f,o[6]^=h,o[7]^=l;for(var i=0;i<4;i++)e.call(this)}},_doProcessBlock:function(t,r){var i=this._X;e.call(this),s[0]=i[0]^i[5]>>>16^i[3]<<16,s[1]=i[2]^i[7]>>>16^i[5]<<16,s[2]=i[4]^i[1]>>>16^i[7]<<16,s[3]=i[6]^i[3]>>>16^i[1]<<16;for(var n=0;n<4;n++)s[n]=16711935&(s[n]<<8|s[n]>>>24)|4278255360&(s[n]<<24|s[n]>>>8),t[r+n]^=s[n]},blockSize:4,ivSize:2});r.Rabbit=n._createHelper(u)}(),t.Rabbit})},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(12),r(13),r(14),r(15))}(this,function(t){return function(){function e(){for(var t=this._S,e=this._i,r=this._j,i=0,n=0;n<4;n++){e=(e+1)%256,r=(r+t[e])%256;var o=t[e];t[e]=t[r],t[r]=o,i|=t[(t[e]+t[r])%256]<<24-8*n}return this._i=e,this._j=r,i}var r=t,i=r.lib,n=i.StreamCipher,o=r.algo,s=o.RC4=n.extend({_doReset:function(){for(var t=this._key,e=t.words,r=t.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;for(var n=0,o=0;n<256;n++){var s=n%r,a=e[s>>>2]>>>24-s%4*8&255;o=(o+i[n]+a)%256;var c=i[n];i[n]=i[o],i[o]=c}this._i=this._j=0},_doProcessBlock:function(t,r){t[r]^=e.call(this)},keySize:8,ivSize:0});r.RC4=n._createHelper(s);var a=o.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var t=this.cfg.drop;t>0;t--)e.call(this)}});r.RC4Drop=n._createHelper(a)}(),t.RC4})}])}); //# sourceMappingURL=secure-ls.min.js.map \ No newline at end of file diff --git a/dist/secure-ls.min.js.map b/dist/secure-ls.min.js.map index 1e8889c..1ae3a01 100644 --- a/dist/secure-ls.min.js.map +++ b/dist/secure-ls.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///secure-ls.min.js","webpack:///webpack/bootstrap 245926ca54c49a2a1f31","webpack:///./src/index.js","webpack:///./src/utils.js","webpack:///./src/constants.js","webpack:///./src/WordArray.js","webpack:///./~/crypto-js/pbkdf2.js","webpack:///./~/crypto-js/core.js","webpack:///./~/crypto-js/sha1.js","webpack:///./~/crypto-js/hmac.js","webpack:///./src/enc-utf8.js","webpack:///./src/Base64.js","webpack:///./~/lz-string/libs/lz-string.js","webpack:///./~/crypto-js/aes.js","webpack:///./~/crypto-js/enc-base64.js","webpack:///./~/crypto-js/md5.js","webpack:///./~/crypto-js/evpkdf.js","webpack:///./~/crypto-js/cipher-core.js","webpack:///./~/crypto-js/tripledes.js","webpack:///./~/crypto-js/rabbit.js","webpack:///./~/crypto-js/rc4.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","_classCallCheck","instance","Constructor","TypeError","Object","defineProperty","value","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","key","protoProps","staticProps","prototype","_utils","_utils2","_constants","_constants2","_encUtf","_encUtf2","_Base","_Base2","_lzString","_lzString2","_aes","_aes2","_tripledes","_tripledes2","_rabbit","_rabbit2","_rc","_rc2","SecureLS","config","_name","utils","constants","Base64","LZString","AES","DES","RABBIT","RC4","enc","isCompression","encodingType","EncrytionTypes","BASE64","toLowerCase","encryptionSecret","ls","localStorage","init","metaData","getMetaData","WarningEnum","WarningTypes","_isBase64","_isBase64EncryptionType","_isAES","_isAESEncryptionType","_isDES","_isDESEncryptionType","_isRabbit","_isRabbitEncryptionType","_isRC4","_isRC4EncryptionType","_isCompression","_isDataCompressionEnabled","allKeys","keys","resetAllKeys","getObjectFromKey","s","generateSecretKey","setMetaData","isAllKeysData","decodedData","jsonData","deCompressedData","bytes","data","is","warn","KEY_NOT_PROVIDED","getDataFromLocalStorage","decompressFromUTF16","decode","getEncryptionSecret","decrypt","toString","_Utf8","JSON","parse","e","Error","getItem","extractKeyNames","dataToStore","String","metaKey","isKeyPresent","addToKeysList","processData","setDataToLocalStorage","setItem","getAllKeys","META_KEY_REMOVE","removeFromKeysList","removeItem","clear","undefined","encodedData","compressedData","stringify","encode","encrypt","compressToUTF16","get","_WordArray","_WordArray2","_pbkdf","_pbkdf2","secretPhrase","reason","DEFAULT_TEXT","console","salt","CryptoJSWordArray","random","key128Bits","keySize","k","map","keyData","isKeyAlreadyPresent","push","index","splice","nBytes","rcache","words","r","mw","mz","mask","result","Math","_r","Set","sigBytes","undef","CryptoJS","C","C_lib","lib","Base","WordArray","C_algo","algo","SHA1","HMAC","PBKDF2","extend","cfg","hasher","iterations","compute","password","hmac","create","derivedKey","blockIndex","derivedKeyWords","blockIndexWords","block","update","finalize","reset","blockWords","blockWordsLength","intermediate","intermediateWords","j","concat","F","subtype","overrides","mixIn","hasOwnProperty","$super","apply","arguments","properties","propertyName","clone","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","ceil","slice","m_w","m_z","C_enc","hexChars","bite","join","hexStr","hexStrLength","parseInt","substr","Latin1","latin1Chars","fromCharCode","latin1Str","latin1StrLength","charCodeAt","Utf8","decodeURIComponent","escape","utf8Str","unescape","encodeURIComponent","BufferedBlockAlgorithm","_data","_nDataBytes","_append","_process","doFlush","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","max","_minBufferSize","nWordsReady","nBytesReady","min","offset","_doProcessBlock","processedWords","Hasher","_doReset","messageUpdate","hash","_doFinalize","_createHelper","message","_createHmacHelper","W","_hash","M","H","a","b","d","n","t","nBitsTotal","nBitsLeft","floor","HmacSHA1","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","_keyStr","o","u","f","_utf8Encode","isNaN","charAt","replace","indexOf","_utf8Decode","c2","c3","__WEBPACK_AMD_DEFINE_RESULT__","getBaseValue","alphabet","character","baseReverseDic","keyStrBase64","keyStrUriSafe","compressToBase64","input","res","_compress","decompressFromBase64","_decompress","compressed","compressToUint8Array","uncompressed","compress","buf","Uint8Array","TotalLen","current_value","decompressFromUint8Array","decompress","Array","forEach","compressToEncodedURIComponent","decompressFromEncodedURIComponent","bitsPerChar","getCharFromInt","ii","context_dictionary","context_dictionaryToCreate","context_c","context_wc","context_w","context_enlargeIn","context_dictSize","context_numBits","context_data","context_data_val","context_data_position","pow","resetValue","getNextValue","next","w","bits","resb","maxpower","power","dictionary","enlargeIn","dictSize","numBits","entry","val","position","BlockCipher","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","x","xi","sx","x2","x4","x8","RCON","_nRounds","_keyPriorReset","_key","keyWords","nRounds","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","encryptBlock","_doCryptBlock","decryptBlock","s0","s1","s2","s3","round","t0","t1","t2","t3","parseLoop","base64Str","base64StrLength","reverseMap","bits1","bits2","_map","base64Chars","byte1","byte2","byte3","triplet","paddingChar","_reverseMap","paddingIndex","FF","GG","HH","II","T","abs","sin","MD5","offset_i","M_offset_i","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","nBitsTotalH","nBitsTotalL","H_i","HmacMD5","EvpKDF","Cipher","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","process","dataUpdate","finalProcessedData","ivSize","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","ciphertext","C_mode","StreamCipher","finalProcessedBlocks","mode","BlockCipherMode","iv","Encryptor","Decryptor","_cipher","_iv","CBC","xorBlock","_prevBlock","processBlock","thisBlock","C_pad","pad","Pkcs7","nPaddingBytes","paddingWord","paddingWords","padding","unpad","CipherParams","modeCreator","_mode","cipherParams","formatter","C_format","format","OpenSSLFormatter","OpenSSL","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","plaintext","C_kdf","kdf","OpenSSLKdf","execute","derivedParams","exchangeLR","_lBlock","_rBlock","exchangeRL","PC1","PC2","BIT_SHIFTS","SBOX_P","0","268435456","536870912","805306368","1073741824","1342177280","1610612736","1879048192","2147483648","2415919104","2684354560","2952790016","3221225472","3489660928","3758096384","4026531840","134217728","402653184","671088640","939524096","1207959552","1476395008","1744830464","2013265920","2281701376","2550136832","2818572288","3087007744","3355443200","3623878656","3892314112","4160749568","1","268435457","536870913","805306369","1073741825","1342177281","1610612737","1879048193","2147483649","2415919105","2684354561","2952790017","3221225473","3489660929","3758096385","4026531841","134217729","402653185","671088641","939524097","1207959553","1476395009","1744830465","2013265921","2281701377","2550136833","2818572289","3087007745","3355443201","3623878657","3892314113","4160749569","16777216","33554432","50331648","67108864","83886080","100663296","117440512","150994944","167772160","184549376","201326592","218103808","234881024","251658240","8388608","25165824","41943040","58720256","75497472","92274688","109051904","125829120","142606336","159383552","176160768","192937984","209715200","226492416","243269632","260046848","285212672","301989888","318767104","335544320","352321536","369098752","385875968","419430400","436207616","452984832","469762048","486539264","503316480","520093696","276824064","293601280","310378496","327155712","343932928","360710144","377487360","394264576","411041792","427819008","444596224","461373440","478150656","494927872","511705088","528482304","1048576","2097152","3145728","4194304","5242880","6291456","7340032","9437184","10485760","11534336","12582912","13631488","14680064","15728640","524288","1572864","2621440","3670016","4718592","5767168","6815744","7864320","8912896","9961472","11010048","12058624","13107200","14155776","15204352","16252928","17825792","18874368","19922944","20971520","22020096","23068672","24117248","26214400","27262976","28311552","29360128","30408704","31457280","32505856","17301504","18350080","19398656","20447232","21495808","22544384","23592960","24641536","25690112","26738688","27787264","28835840","29884416","30932992","31981568","33030144","65536","131072","196608","262144","327680","393216","458752","589824","655360","720896","786432","851968","917504","983040","32768","98304","163840","229376","294912","360448","425984","491520","557056","622592","688128","753664","819200","884736","950272","1015808","1114112","1179648","1245184","1310720","1376256","1441792","1507328","1638400","1703936","1769472","1835008","1900544","1966080","2031616","1081344","1146880","1212416","1277952","1343488","1409024","1474560","1540096","1605632","1671168","1736704","1802240","1867776","1933312","1998848","2064384","4096","8192","12288","16384","20480","24576","28672","36864","40960","45056","49152","53248","57344","61440","2048","6144","10240","14336","18432","22528","26624","30720","34816","38912","43008","47104","51200","55296","59392","63488","69632","73728","77824","81920","86016","90112","94208","102400","106496","110592","114688","118784","122880","126976","67584","71680","75776","79872","83968","88064","92160","96256","100352","104448","108544","112640","116736","120832","124928","129024","256","512","768","1024","1280","1536","1792","2304","2560","2816","3072","3328","3584","3840","128","384","640","896","1152","1408","1664","1920","2176","2432","2688","2944","3200","3456","3712","3968","4352","4608","4864","5120","5376","5632","5888","6400","6656","6912","7168","7424","7680","7936","4224","4480","4736","4992","5248","5504","5760","6016","6272","6528","6784","7040","7296","7552","7808","8064","16","32","48","64","80","96","112","144","160","176","192","208","224","240","8","24","40","56","72","88","104","120","136","152","168","184","200","216","232","248","272","288","304","320","336","352","368","400","416","432","448","464","480","496","264","280","296","312","328","344","360","376","392","408","424","440","456","472","488","504","2","3","4","5","6","7","9","10","11","12","13","14","15","2147483650","2147483651","2147483652","2147483653","2147483654","2147483655","2147483656","2147483657","2147483658","2147483659","2147483660","2147483661","2147483662","2147483663","17","18","19","20","21","22","23","25","26","27","28","29","30","31","2147483664","2147483665","2147483666","2147483667","2147483668","2147483669","2147483670","2147483671","2147483672","2147483673","2147483674","2147483675","2147483676","2147483677","2147483678","2147483679","SBOX_MASK","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","lBlock","rBlock","TripleDES","_des1","_des2","_des3","nextState","X","_X","_C","C_","_b","gx","ga","gb","gh","gl","G","S","Rabbit","K","IV","IV_0","IV_1","i0","i2","i1","i3","generateKeystreamWord","_S","_i","_j","keystreamWord","keySigBytes","keyByteIndex","keyByte","RC4Drop","drop"],"mappings":"CAAA,SAAAA,EAAAC,GACA,gBAAAC,UAAA,gBAAAC,QACAA,OAAAD,QAAAD,IACA,kBAAAG,gBAAAC,IACAD,OAAA,cAAAH,GACA,gBAAAC,SACAA,QAAA,SAAAD,IAEAD,EAAA,SAAAC,KACCK,KAAA,WACD,MCAgB,UAAUC,GCN1B,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAP,OAGA,IAAAC,GAAAO,EAAAD,IACAP,WACAS,GAAAF,EACAG,QAAA,EAUA,OANAL,GAAAE,GAAAI,KAAAV,EAAAD,QAAAC,IAAAD,QAAAM,GAGAL,EAAAS,QAAA,EAGAT,EAAAD,QAvBA,GAAAQ,KAqCA,OATAF,GAAAM,EAAAP,EAGAC,EAAAO,EAAAL,EAGAF,EAAAQ,EAAA,GAGAR,EAAA,KDgBM,SAASL,EAAQD,EAASM,GAE/B,YA4CA,SAASS,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GAEvF,QAASG,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIC,WAAU,qCA5ChHC,OAAOC,eAAexB,EAAS,cAC7ByB,OAAO,GAGT,IAAIC,GAAe,WAAc,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAIC,GAAI,EAAGA,EAAID,EAAME,OAAQD,IAAK,CAAE,GAAIE,GAAaH,EAAMC,EAAIE,GAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,SAAWF,KAAYA,EAAWG,UAAW,GAAMZ,OAAOC,eAAeI,EAAQI,EAAWI,IAAKJ,IAAiB,MAAO,UAAUX,EAAagB,EAAYC,GAAiJ,MAA9HD,IAAYV,EAAiBN,EAAYkB,UAAWF,GAAiBC,GAAaX,EAAiBN,EAAaiB,GAAqBjB,ME9DjiBmB,EAAAlC,EAAA,GFkEKmC,EAAU1B,EAAuByB,GEjEtCE,EAAApC,EAAA,GFqEKqC,EAAc5B,EAAuB2B,GEpE1CE,EAAAtC,EAAA,GFwEKuC,EAAW9B,EAAuB6B,GEtEvCE,EAAAxC,EAAA,GF0EKyC,EAAShC,EAAuB+B,GEzErCE,EAAA1C,EAAA,IF6EK2C,EAAalC,EAAuBiC,GE5EzCE,EAAA5C,EAAA,IFgFK6C,EAAQpC,EAAuBmC,GE/EpCE,EAAA9C,EAAA,IFmFK+C,EAActC,EAAuBqC,GElF1CE,EAAAhD,EAAA,IFsFKiD,EAAWxC,EAAuBuC,GErFvCE,EAAAlD,EAAA,IFyFKmD,EAAO1C,EAAuByC,GEvFdE,EF6FL,WE5Fd,QAAAA,GAAYC,GAAQxC,EAAAf,KAAAsD,GAClBC,EAASA,MACTvD,KAAKwD,MAAQ,YACbxD,KAAKyD,MAAQA,aACbzD,KAAK0D,UAAYA,aACjB1D,KAAK2D,OAASA,aACd3D,KAAK4D,SAAWA,aAChB5D,KAAK6D,IAAMA,aACX7D,KAAK8D,IAAMA,aACX9D,KAAK+D,OAASA,aACd/D,KAAKgE,IAAMA,aACXhE,KAAKiE,IAAMA,aAEXjE,KAAKuD,QACHW,eAAe,EACfC,aAAcT,aAAUU,eAAeC,QAEzCrE,KAAKuD,OAAOW,cAAgD,mBAAzBX,GAAOW,eACxCX,EAAOW,cAETlE,KAAKuD,OAAOY,aAA+C,mBAAxBZ,GAAOY,cAAwD,KAAxBZ,EAAOY,aAC/EZ,EAAOY,aAAaG,cACpBZ,aAAUU,eAAeC,OAC3BrE,KAAKuD,OAAOgB,iBAAmBhB,EAAOgB,iBAEtCvE,KAAKwE,GAAKC,aACVzE,KAAK0E,OFgXN,MAlRApD,GAAagC,IACXtB,IAAK,OACLX,MAAO,WE5FR,GAAIsD,GAAW3E,KAAK4E,iBAEpB5E,MAAK6E,YAAc7E,KAAK0D,UAAUmB,YAClC7E,KAAK8E,aAAe9E,KAAK0D,UAAUoB,aACnC9E,KAAKoE,eAAiBpE,KAAK0D,UAAUU,eAErCpE,KAAK+E,UAAY/E,KAAKgF,0BACtBhF,KAAKiF,OAASjF,KAAKkF,uBACnBlF,KAAKmF,OAASnF,KAAKoF,uBACnBpF,KAAKqF,UAAYrF,KAAKsF,0BACtBtF,KAAKuF,OAASvF,KAAKwF,uBACnBxF,KAAKyF,eAAiBzF,KAAK0F,4BAG3B1F,KAAKyD,MAAMkC,QAAUhB,EAASiB,MAAQ5F,KAAK6F,kBFgG1C7D,IAAK,0BACLX,MAAO,WE7FR,MAAOsC,gBACgC,mBAA7B3D,MAAKuD,OAAOY,cACpBnE,KAAKuD,OAAOY,eAAiBnE,KAAK0D,UAAUU,eAAeC,WF+F5DrC,IAAK,uBACLX,MAAO,WE5FR,MAAOwC,eACJ7D,KAAKuD,OAAOY,eAAiBnE,KAAK0D,UAAUU,eAAeP,OF+F7D7B,IAAK,uBACLX,MAAO,WE5FR,MAAOyC,eACJ9D,KAAKuD,OAAOY,eAAiBnE,KAAK0D,UAAUU,eAAeN,OF+F7D9B,IAAK,0BACLX,MAAO,WE5FR,MAAO0C,eACJ/D,KAAKuD,OAAOY,eAAiBnE,KAAK0D,UAAUU,eAAeL,UF+F7D/B,IAAK,uBACLX,MAAO,WE5FR,MAAO2C,eACJhE,KAAKuD,OAAOY,eAAiBnE,KAAK0D,UAAUU,eAAeJ,OF+F7DhC,IAAK,4BACLX,MAAO,WE5FR,MAAOrB,MAAKuD,OAAOW,iBFgGlBlC,IAAK,sBACLX,MAAO,SE9FUW,GAClB,GAAI2C,GAAW3E,KAAK4E,kBAChBhE,EAAMZ,KAAKyD,MAAMqC,iBAAiBnB,EAASiB,KAAM5D,EAEhDpB,KAIDZ,KAAKiF,QACPjF,KAAKmF,QACLnF,KAAKqF,WACLrF,KAAKuF,UAEuC,mBAAjCvF,MAAKuD,OAAOgB,kBACrBvE,KAAKyD,MAAMc,iBAAmB3D,EAAImF,EAE7B/F,KAAKyD,MAAMc,mBACdvE,KAAKyD,MAAMc,iBAAmBvE,KAAKyD,MAAMuC,oBACzChG,KAAKiG,gBAGPjG,KAAKyD,MAAMc,iBAAmBvE,KAAKuD,OAAOgB,kBAAoB3D,EAAImF,GAAK,OF+F1E/D,IAAK,MACLX,MAAO,SE3FNW,EAAKkE,GACP,GAAIC,GAAc,GAChBC,EAAW,GACXC,SACAC,SACAC,QAEF,KAAKvG,KAAKyD,MAAM+C,GAAGxE,GAEjB,MADAhC,MAAKyD,MAAMgD,KAAKzG,KAAK6E,YAAY6B,kBAC1BN,CAKT,IAFAG,EAAOvG,KAAK2G,wBAAwB3E,IAE/BuE,EACH,MAAOH,EAGTC,GAAmBE,GACfvG,KAAKyF,gBAAkBS,KACzBG,EAAmBzC,aAASgD,oBAAoBL,IAGlDJ,EAAcE,EACVrG,KAAK+E,WAAamB,EACpBC,EAAcxC,aAAOkD,OAAOR,IAE5BrG,KAAK8G,oBAAoB9E,GACrBhC,KAAKiF,OACPqB,EAAQzC,aAAIkD,QAAQV,EAAiBW,WAAYhH,KAAKyD,MAAMc,kBACnDvE,KAAKmF,OACdmB,EAAQxC,aAAIiD,QAAQV,EAAiBW,WAAYhH,KAAKyD,MAAMc,kBACnDvE,KAAKqF,UACdiB,EAAQvC,aAAOgD,QAAQV,EAAiBW,WAAYhH,KAAKyD,MAAMc,kBACtDvE,KAAKuF,SACde,EAAQtC,aAAI+C,QAAQV,EAAiBW,WAAYhH,KAAKyD,MAAMc,mBAG1D+B,IACFH,EAAcG,EAAMU,SAAS/C,aAAIgD,QAIrC,KACEb,EAAWc,KAAKC,MAAMhB,GACtB,MAAOiB,GACP,KAAM,IAAIC,OAAM,wBAGlB,MAAOjB,MFgGNpE,IAAK,0BACLX,MAAO,SE9FcW,GACtB,MAAOhC,MAAKwE,GAAG8C,QAAQtF,GAAK,MFiG3BA,IAAK,aACLX,MAAO,WE9FR,GAAIkF,GAAOvG,KAAK4E,aAEhB,OAAO5E,MAAKyD,MAAM8D,gBAAgBhB,UFkGjCvE,IAAK,MACLX,MAAO,SEhGNW,EAAKuE,GACP,GAAIiB,GAAc,EAElB,OAAKxH,MAAKyD,MAAM+C,GAAGxE,IAKnBhC,KAAK8G,oBAAoB9E,GAGnByF,OAAOzF,KAASyF,OAAOzH,KAAKyD,MAAMiE,WACjC1H,KAAKyD,MAAMkE,aAAa3F,KAC3BhC,KAAKyD,MAAMmE,cAAc5F,GACzBhC,KAAKiG,gBAITuB,EAAcxH,KAAK6H,YAAYtB,OAE/BvG,MAAK8H,sBAAsB9F,EAAKwF,QAhB9BxH,MAAKyD,MAAMgD,KAAKzG,KAAK6E,YAAY6B,qBFmHlC1E,IAAK,wBACLX,MAAO,SEjGYW,EAAKuE,GACzBvG,KAAKwE,GAAGuD,QAAQ/F,EAAKuE,MFoGpBvE,IAAK,SACLX,MAAO,SElGHW,GACL,MAAKhC,MAAKyD,MAAM+C,GAAGxE,GAKfA,IAAQhC,KAAKyD,MAAMiE,SAAW1H,KAAKgI,aAAarG,WAClD3B,MAAKyD,MAAMgD,KAAKzG,KAAK6E,YAAYoD,kBAI/BjI,KAAKyD,MAAMkE,aAAa3F,KAC1BhC,KAAKyD,MAAMyE,mBAAmBlG,GAC9BhC,KAAKiG,mBAEPjG,MAAKwE,GAAG2D,WAAWnG,QAbjBhC,MAAKyD,MAAMgD,KAAKzG,KAAK6E,YAAY6B,qBFkHlC1E,IAAK,YACLX,MAAO,WElGR,GAAIuE,UAAMlE,QAGV,KADAkE,EAAO5F,KAAKgI,aACPtG,EAAI,EAAGA,EAAIkE,EAAKjE,OAAQD,IAC3B1B,KAAKwE,GAAG2D,WAAWvC,EAAKlE,GAE1B1B,MAAKwE,GAAG2D,WAAWnI,KAAKyD,MAAMiE,SAE9B1H,KAAK6F,kBFuGJ7D,IAAK,QACLX,MAAO,WEpGRrB,KAAKwE,GAAG4D,QACRpI,KAAK6F,kBFwGJ7D,IAAK,eACLX,MAAO,WEpGR,MADArB,MAAKyD,MAAMkC,iBF0GV3D,IAAK,cACLX,MAAO,SEvGEkF,EAAML,GAChB,GAAa,OAATK,GAA0B8B,SAAT9B,GAA+B,KAATA,EACzC,MAAO,EAGT,IAAIH,UAAUkC,SAAaC,QAE3B,KACEnC,EAAWc,KAAKsB,UAAUjC,GAC1B,MAAOa,GACP,KAAM,IAAIC,OAAM,6BA4BlB,MAvBAiB,GAAclC,EACVpG,KAAK+E,WAAamB,EACpBoC,EAAc3E,aAAO8E,OAAOrC,IAExBpG,KAAKiF,OACPqD,EAAczE,aAAI6E,QAAQtC,EAAUpG,KAAKyD,MAAMc,kBACtCvE,KAAKmF,OACdmD,EAAcxE,aAAI4E,QAAQtC,EAAUpG,KAAKyD,MAAMc,kBACtCvE,KAAKqF,UACdiD,EAAcvE,aAAO2E,QAAQtC,EAAUpG,KAAKyD,MAAMc,kBACzCvE,KAAKuF,SACd+C,EAActE,aAAI0E,QAAQtC,EAAUpG,KAAKyD,MAAMc,mBAGjD+D,EAAcA,GAAeA,EAAYtB,YAI3CuB,EAAiBD,GACbtI,KAAKyF,gBAAkBS,KACzBqC,EAAiB3E,aAAS+E,gBAAgBL,IAGrCC,KF4GNvG,IAAK,cACLX,MAAO,WEzGR,GAAImG,GAAcxH,KAAK6H,aACrBjC,KAAM5F,KAAKyD,MAAMkC,UAChB,EAGH3F,MAAK8H,sBAAsB9H,KAAKyD,MAAMiE,QAASF,MF6G9CxF,IAAK,cACLX,MAAO,WE1GR,MAAOrB,MAAK4I,IAAI5I,KAAKyD,MAAMiE,SAAS,OF+G9BpE,IAGT1D,cE9YoB0D,EFgZpBzD,EAAOD,QAAUA,EAAQ,YAIpB,SAASC,EAAQD,EAASM,GAE/B,YAcA,SAASS,GAAuBC,GAAO,MAAOA,IAAOA,EAAIC,WAAaD,GAAQE,UAASF,GG/axF,GAAA0B,GAAApC,EAAA,GHqaKqC,EAAc5B,EAAuB2B,GGpa1CuG,EAAA3I,EAAA,GHwaK4I,EAAcnI,EAAuBkI,GGva1CE,EAAA7I,EAAA,GH2aK8I,EAAUrI,EAAuBoI,GGzalCtF,GACFiE,QAAS,wBACTnD,iBAAkB,GAClB0E,aAAc,qBACdtD,WACAa,GAAI,SAAUxE,GACZ,QAAIA,GAKNyE,KAAM,SAAUyC,GACdA,EAASA,EAASA,EAASxF,aAAUmB,YAAYsE,aACjDC,QAAQ3C,KAAK/C,aAAUoB,aAAaoE,KAEtClD,kBAAmB,WACjB,GAAIqD,GAAOC,aAAkBC,OAAO,IAChCC,GAAa,EAAAR,cAAOhJ,KAAKiJ,aAAcI,GAAOI,QAAS,GAE3D,OAAOD,IAAcA,EAAWxC,YAElClB,iBAAkB,SAAUS,EAAMvE,GAChC,IAAKuE,IAASA,EAAK5E,OACjB,QAGF,IAAID,UAAGd,IAEP,KAAKc,EAAI,EAAGA,EAAI6E,EAAK5E,OAAQD,IAC3B,GAAI6E,EAAK7E,GAAGgI,IAAM1H,EAAK,CACrBpB,EAAM2F,EAAK7E,EACX,OAIJ,MAAOd,IAET2G,gBAAiB,SAAUhB,GACzB,MAAKA,IAASA,EAAKX,MAASW,EAAKX,KAAKjE,OAI/B4E,EAAKX,KAAK+D,IAAI,SAAAC,GACnB,MAAOA,GAAQF,QAGnB1B,WAAY,WACV,MAAOhI,MAAK2F,SAEdgC,aAAc,SAAU3F,GAGtB,IAAK,GAFD6H,IAAsB,EAEjBnI,EAAI,EAAGA,EAAI1B,KAAK2F,QAAQhE,OAAQD,IACvC,GAAI+F,OAAOzH,KAAK2F,QAAQjE,GAAGgI,KAAOjC,OAAOzF,GAAM,CAC7C6H,GAAsB,CACtB,OAIJ,MAAOA,IAETjC,cAAe,SAAU5F,GACvBhC,KAAK2F,QAAQmE,MACXJ,EAAG1H,EACH+D,EAAG/F,KAAKuE,oBAGZ2D,mBAAoB,SAAUlG,GAC5B,GAAIN,UAAGqI,IAEP,KAAKrI,EAAI,EAAGA,EAAI1B,KAAK2F,QAAQhE,OAAQD,IACnC,GAAI1B,KAAK2F,QAAQjE,GAAGgI,IAAM1H,EAAK,CAC7B+H,EAAQrI,CACR,OAMJ,MAHIqI,SACF/J,KAAK2F,QAAQqE,OAAOD,EAAO,GAEtBA,GAIXlK,GAAOD,QAAU6D,GHmbX,SAAS5D,EAAQD,GAEtB,YI5gBD,IAAIiF,IACF6B,iBAAkB,iBAClBuB,gBAAiB,gBACjBkB,aAAc,eAGZrE,IAEJA,GAAaD,EAAY6B,kBAAoB,mDAC7C5B,EAAaD,EAAYoD,iBAAzB,4FAEAnD,EAAaD,EAAYsE,cAAzB,mBAEA,IAAIzF,IACFmB,YAAaA,EACbC,aAAcA,EACdV,gBACEC,OAAQ,SACRR,IAAK,MACLC,IAAK,MACLC,OAAQ,SACRC,IAAK,OAITnE,GAAOD,QAAU8D,GJihBX,SAAS7D,EAAQD,GAEtB,YKriBD,IAAI0J,KAEJA,GAAkBC,OAAS,SAAUU,GAiBnC,IAAK,GAAWC,GAhBZC,KACAC,EAAK,SAAUC,GACjB,GAAIC,GAAK,UACLC,EAAO,UAEX,OAAO,YACLD,EAAM,OAAe,MAALA,IAAgBA,GAAM,IAASC,EAC/CF,EAAM,MAAe,MAALA,IAAgBA,GAAM,IAASE,CAC/C,IAAIC,IAAWF,GAAM,IAAQD,EAAME,CAInC,OAFAC,IAAU,WACVA,GAAU,GACHA,GAAUC,KAAKlB,SAAW,GAAM,QAIlC7H,EAAI,EAAWA,EAAIuI,EAAQvI,GAAK,EAAG,CAC1C,GAAIgJ,GAAKN,EAA8B,YAA3BF,GAAUO,KAAKlB,UAE3BW,GAAgB,UAAPQ,IACTP,EAAML,KAAa,WAAPY,IAAsB,GAGpC,MAAO,IAAI1K,MAAK2K,IAAIR,EAAOF,IAG7BX,EAAkBqB,IAAM,SAAUR,EAAOS,GACvCT,EAAQnK,KAAKmK,MAAQA,MAEJ9B,SAAbuC,EACF5K,KAAK4K,SAAWA,EAEhB5K,KAAK4K,SAA0B,EAAfT,EAAMxI,QAI1B9B,EAAOD,QAAU0J,GLkjBX,SAASzJ,EAAQD,EAASM,IMhmB/B,SAAAR,EAAAC,EAAAkL,GAGDhL,EAAAD,UAAAD,EAAAO,EAAA,GAAAA,EAAA,GAAAA,EAAA,KAUCF,KAAA,SAAA8K,GAiID,MA/HA,YAEA,GAAAC,GAAAD,EACAE,EAAAD,EAAAE,IACAC,EAAAF,EAAAE,KACAC,EAAAH,EAAAG,UACAC,EAAAL,EAAAM,KACAC,EAAAF,EAAAE,KACAC,EAAAH,EAAAG,KAKAC,EAAAJ,EAAAI,OAAAN,EAAAO,QAQAC,IAAAR,EAAAO,QACAhC,QAAA,EACAkC,OAAAL,EACAM,WAAA,IAcAlH,KAAA,SAAAgH,GACA1L,KAAA0L,IAAA1L,KAAA0L,IAAAD,OAAAC,IAeAG,QAAA,SAAAC,EAAAzC,GAkBA,IAhBA,GAAAqC,GAAA1L,KAAA0L,IAGAK,EAAAR,EAAAS,OAAAN,EAAAC,OAAAG,GAGAG,EAAAd,EAAAa,SACAE,EAAAf,EAAAa,QAAA,IAGAG,EAAAF,EAAA9B,MACAiC,EAAAF,EAAA/B,MACAV,EAAAiC,EAAAjC,QACAmC,EAAAF,EAAAE,WAGAO,EAAAxK,OAAA8H,GAAA,CACA,GAAA4C,GAAAN,EAAAO,OAAAjD,GAAAkD,SAAAL,EACAH,GAAAS,OAQA,QALAC,GAAAJ,EAAAlC,MACAuC,EAAAD,EAAA9K,OAGAgL,EAAAN,EACA3K,EAAA,EAAgCA,EAAAkK,EAAgBlK,IAAA,CAChDiL,EAAAZ,EAAAQ,SAAAI,GACAZ,EAAAS,OAMA,QAHAI,GAAAD,EAAAxC,MAGA0C,EAAA,EAAoCA,EAAAH,EAAsBG,IAC1DJ,EAAAI,IAAAD,EAAAC,GAIAZ,EAAAa,OAAAT,GACAD,EAAA,KAIA,MAFAH,GAAArB,SAAA,EAAAnB,EAEAwC,IAqBAlB,GAAAS,OAAA,SAAAM,EAAAzC,EAAAqC,GACA,MAAAF,GAAAQ,OAAAN,GAAAG,QAAAC,EAAAzC,OAKAyB,EAAAU,UNwmBM,SAAS3L,EAAQD,EAASM,IOtvB/B,SAAAR,EAAAC,GAGDE,EAAAD,UAAAD,KAUCK,KAAA,WAKD,GAAA8K,MAAA,SAAAL,EAAApC,GAIA,GAAA2D,GAAA7K,OAAA6K,QAAA,WACA,QAAAe,MAEA,gBAAAnM,GACA,GAAAoM,EAQA,OANAD,GAAA5K,UAAAvB,EAEAoM,EAAA,GAAAD,GAEAA,EAAA5K,UAAA,KAEA6K,MAOAjC,KAKAC,EAAAD,EAAAE,OAKAC,EAAAF,EAAAE,KAAA,WAGA,OAmBAO,OAAA,SAAAwB,GAEA,GAAAD,GAAAhB,EAAAhM,KAoBA,OAjBAiN,IACAD,EAAAE,MAAAD,GAIAD,EAAAG,eAAA,SAAAnN,KAAA0E,OAAAsI,EAAAtI,OACAsI,EAAAtI,KAAA,WACAsI,EAAAI,OAAA1I,KAAA2I,MAAArN,KAAAsN,aAKAN,EAAAtI,KAAAvC,UAAA6K,EAGAA,EAAAI,OAAApN,KAEAgN,GAeAhB,OAAA,WACA,GAAAhL,GAAAhB,KAAAyL,QAGA,OAFAzK,GAAA0D,KAAA2I,MAAArM,EAAAsM,WAEAtM,GAeA0D,KAAA,aAcAwI,MAAA,SAAAK,GACA,OAAAC,KAAAD,GACAA,EAAAJ,eAAAK,KACAxN,KAAAwN,GAAAD,EAAAC,GAKAD,GAAAJ,eAAA,cACAnN,KAAAgH,SAAAuG,EAAAvG,WAaAyG,MAAA,WACA,MAAAzN,MAAA0E,KAAAvC,UAAAsJ,OAAAzL,WAWAmL,EAAAH,EAAAG,UAAAD,EAAAO,QAaA/G,KAAA,SAAAyF,EAAAS,GACAT,EAAAnK,KAAAmK,YAEAS,GAAAvC,EACArI,KAAA4K,WAEA5K,KAAA4K,SAAA,EAAAT,EAAAxI,QAiBAqF,SAAA,SAAA0G,GACA,OAAAA,GAAAC,GAAAnF,UAAAxI,OAcA8M,OAAA,SAAAc,GAEA,GAAAC,GAAA7N,KAAAmK,MACA2D,EAAAF,EAAAzD,MACA4D,EAAA/N,KAAA4K,SACAoD,EAAAJ,EAAAhD,QAMA,IAHA5K,KAAAiO,QAGAF,EAAA,EAEA,OAAArM,GAAA,EAAgCA,EAAAsM,EAAkBtM,IAAA,CAClD,GAAAwM,GAAAJ,EAAApM,IAAA,QAAAA,EAAA,OACAmM,GAAAE,EAAArM,IAAA,IAAAwM,GAAA,IAAAH,EAAArM,GAAA,QAIA,QAAAA,GAAA,EAAgCA,EAAAsM,EAAkBtM,GAAA,EAClDmM,EAAAE,EAAArM,IAAA,GAAAoM,EAAApM,IAAA,EAMA,OAHA1B,MAAA4K,UAAAoD,EAGAhO,MAUAiO,MAAA,WAEA,GAAA9D,GAAAnK,KAAAmK,MACAS,EAAA5K,KAAA4K,QAGAT,GAAAS,IAAA,mBAAAA,EAAA,IACAT,EAAAxI,OAAA8I,EAAA0D,KAAAvD,EAAA,IAYA6C,MAAA,WACA,GAAAA,GAAAvC,EAAAuC,MAAAlN,KAAAP,KAGA,OAFAyN,GAAAtD,MAAAnK,KAAAmK,MAAAiE,MAAA,GAEAX,GAgBAlE,OAAA,SAAAU,GAkBA,OAAAC,GAjBAC,KAEAC,EAAA,SAAAiE,GACA,GAAAA,KACAC,EAAA,UACA/D,EAAA,UAEA,mBACA+D,EAAA,aAAAA,OAAA,IAAA/D,EACA8D,EAAA,YAAAA,OAAA,IAAA9D,CACA,IAAAC,IAAA8D,GAAA,IAAAD,EAAA9D,CAGA,OAFAC,IAAA,WACAA,GAAA,GACAA,GAAAC,EAAAlB,SAAA,WAIA7H,EAAA,EAAoCA,EAAAuI,EAAYvI,GAAA,GAChD,GAAAgJ,GAAAN,EAAA,YAAAF,GAAAO,EAAAlB,UAEAW,GAAA,UAAAQ,IACAP,EAAAL,KAAA,WAAAY,IAAA,GAGA,UAAAS,GAAAzG,KAAAyF,EAAAF,MAOAsE,EAAAxD,EAAA9G,OAKA0J,EAAAY,EAAAZ,KAcAnF,UAAA,SAAAoF,GAOA,OALAzD,GAAAyD,EAAAzD,MACAS,EAAAgD,EAAAhD,SAGA4D,KACA9M,EAAA,EAA4BA,EAAAkJ,EAAclJ,IAAA,CAC1C,GAAA+M,GAAAtE,EAAAzI,IAAA,QAAAA,EAAA,OACA8M,GAAA1E,MAAA2E,IAAA,GAAAzH,SAAA,KACAwH,EAAA1E,MAAA,GAAA2E,GAAAzH,SAAA,KAGA,MAAAwH,GAAAE,KAAA,KAgBAvH,MAAA,SAAAwH,GAMA,OAJAC,GAAAD,EAAAhN,OAGAwI,KACAzI,EAAA,EAA4BA,EAAAkN,EAAkBlN,GAAA,EAC9CyI,EAAAzI,IAAA,IAAAmN,SAAAF,EAAAG,OAAApN,EAAA,WAAAA,EAAA,GAGA,WAAAyJ,GAAAzG,KAAAyF,EAAAyE,EAAA,KAOAG,EAAAR,EAAAQ,QAcAvG,UAAA,SAAAoF,GAOA,OALAzD,GAAAyD,EAAAzD,MACAS,EAAAgD,EAAAhD,SAGAoE,KACAtN,EAAA,EAA4BA,EAAAkJ,EAAclJ,IAAA,CAC1C,GAAA+M,GAAAtE,EAAAzI,IAAA,QAAAA,EAAA,OACAsN,GAAAlF,KAAArC,OAAAwH,aAAAR,IAGA,MAAAO,GAAAN,KAAA,KAgBAvH,MAAA,SAAA+H,GAMA,OAJAC,GAAAD,EAAAvN,OAGAwI,KACAzI,EAAA,EAA4BA,EAAAyN,EAAqBzN,IACjDyI,EAAAzI,IAAA,SAAAwN,EAAAE,WAAA1N,KAAA,GAAAA,EAAA,GAGA,WAAAyJ,GAAAzG,KAAAyF,EAAAgF,KAOAE,EAAAd,EAAAc,MAcA7G,UAAA,SAAAoF,GACA,IACA,MAAA0B,oBAAAC,OAAAR,EAAAvG,UAAAoF,KACc,MAAAxG,GACd,SAAAC,OAAA,0BAiBAF,MAAA,SAAAqI,GACA,MAAAT,GAAA5H,MAAAsI,SAAAC,mBAAAF,OAWAG,EAAA3E,EAAA2E,uBAAAzE,EAAAO,QAQAe,MAAA,WAEAxM,KAAA4P,MAAA,GAAAzE,GAAAzG,KACA1E,KAAA6P,YAAA,GAaAC,QAAA,SAAAvJ,GAEA,gBAAAA,KACAA,EAAA8I,EAAAlI,MAAAZ,IAIAvG,KAAA4P,MAAA9C,OAAAvG,GACAvG,KAAA6P,aAAAtJ,EAAAqE,UAiBAmF,SAAA,SAAAC,GAEA,GAAAzJ,GAAAvG,KAAA4P,MACAK,EAAA1J,EAAA4D,MACA+F,EAAA3J,EAAAqE,SACAuF,EAAAnQ,KAAAmQ,UACAC,EAAA,EAAAD,EAGAE,EAAAH,EAAAE,CAGAC,GAFAL,EAEAvF,EAAA0D,KAAAkC,GAIA5F,EAAA6F,KAAA,EAAAD,GAAArQ,KAAAuQ,eAAA,EAIA,IAAAC,GAAAH,EAAAF,EAGAM,EAAAhG,EAAAiG,IAAA,EAAAF,EAAAN,EAGA,IAAAM,EAAA,CACA,OAAAG,GAAA,EAAqCA,EAAAH,EAAsBG,GAAAR,EAE3DnQ,KAAA4Q,gBAAAX,EAAAU,EAIA,IAAAE,GAAAZ,EAAAjG,OAAA,EAAAwG,EACAjK,GAAAqE,UAAA6F,EAIA,UAAAtF,GAAAzG,KAAAmM,EAAAJ,IAYAhD,MAAA,WACA,GAAAA,GAAAvC,EAAAuC,MAAAlN,KAAAP,KAGA,OAFAyN,GAAAmC,MAAA5P,KAAA4P,MAAAnC,QAEAA,GAGA8C,eAAA,IA2IAnF,GAnIAJ,EAAA8F,OAAAnB,EAAAlE,QAIAC,IAAAR,EAAAO,SAWA/G,KAAA,SAAAgH,GAEA1L,KAAA0L,IAAA1L,KAAA0L,IAAAD,OAAAC,GAGA1L,KAAAwM,SAUAA,MAAA,WAEAmD,EAAAnD,MAAAjM,KAAAP,MAGAA,KAAA+Q,YAeAzE,OAAA,SAAA0E,GAQA,MANAhR,MAAA8P,QAAAkB,GAGAhR,KAAA+P,WAGA/P,MAiBAuM,SAAA,SAAAyE,GAEAA,GACAhR,KAAA8P,QAAAkB,EAIA,IAAAC,GAAAjR,KAAAkR,aAEA,OAAAD,IAGAd,UAAA,GAeAgB,cAAA,SAAAxF,GACA,gBAAAyF,EAAA1F,GACA,UAAAC,GAAAjH,KAAAgH,GAAAa,SAAA6E,KAiBAC,kBAAA,SAAA1F,GACA,gBAAAyF,EAAApP,GACA,UAAAoJ,GAAAG,KAAA7G,KAAAiH,EAAA3J,GAAAuK,SAAA6E,OAQArG,EAAAM,QAEA,OAAAN,IACEN,KAGF,OAAAK,MP8vBM,SAASjL,EAAQD,EAASM,IQn/C/B,SAAAR,EAAAC,GAGDE,EAAAD,UAAAD,EAAAO,EAAA,KAUCF,KAAA,SAAA8K,GAsID,MApIA,YAEA,GAAAC,GAAAD,EACAE,EAAAD,EAAAE,IACAE,EAAAH,EAAAG,UACA2F,EAAA9F,EAAA8F,OACA1F,EAAAL,EAAAM,KAGAiG,KAKAhG,EAAAF,EAAAE,KAAAwF,EAAArF,QACAsF,SAAA,WACA/Q,KAAAuR,MAAA,GAAApG,GAAAzG,MACA,sBACA,qBACA,cAIAkM,gBAAA,SAAAY,EAAAb,GAYA,OAVAc,GAAAzR,KAAAuR,MAAApH,MAGAuH,EAAAD,EAAA,GACAE,EAAAF,EAAA,GACAhR,EAAAgR,EAAA,GACAG,EAAAH,EAAA,GACArK,EAAAqK,EAAA,GAGA/P,EAAA,EAA4BA,EAAA,GAAQA,IAAA,CACpC,GAAAA,EAAA,GACA4P,EAAA5P,GAAA,EAAA8P,EAAAb,EAAAjP,OACkB,CAClB,GAAAmQ,GAAAP,EAAA5P,EAAA,GAAA4P,EAAA5P,EAAA,GAAA4P,EAAA5P,EAAA,IAAA4P,EAAA5P,EAAA,GACA4P,GAAA5P,GAAAmQ,GAAA,EAAAA,IAAA,GAGA,GAAAC,IAAAJ,GAAA,EAAAA,IAAA,IAAAtK,EAAAkK,EAAA5P,EAEAoQ,IADApQ,EAAA,IACAiQ,EAAAlR,GAAAkR,EAAAC,GAAA,WACkBlQ,EAAA,IAClBiQ,EAAAlR,EAAAmR,GAAA,WACkBlQ,EAAA,IAClBiQ,EAAAlR,EAAAkR,EAAAC,EAAAnR,EAAAmR,GAAA,YAEAD,EAAAlR,EAAAmR,GAAA,UAGAxK,EAAAwK,EACAA,EAAAnR,EACAA,EAAAkR,GAAA,GAAAA,IAAA,EACAA,EAAAD,EACAA,EAAAI,EAIAL,EAAA,GAAAA,EAAA,GAAAC,EAAA,EACAD,EAAA,GAAAA,EAAA,GAAAE,EAAA,EACAF,EAAA,GAAAA,EAAA,GAAAhR,EAAA,EACAgR,EAAA,GAAAA,EAAA,GAAAG,EAAA,EACAH,EAAA,GAAAA,EAAA,GAAArK,EAAA,GAGA8J,YAAA,WAEA,GAAA3K,GAAAvG,KAAA4P,MACAK,EAAA1J,EAAA4D,MAEA4H,EAAA,EAAA/R,KAAA6P,YACAmC,EAAA,EAAAzL,EAAAqE,QAYA,OATAqF,GAAA+B,IAAA,YAAAA,EAAA,GACA/B,GAAA+B,EAAA,eAAAvH,KAAAwH,MAAAF,EAAA,YACA9B,GAAA+B,EAAA,eAAAD,EACAxL,EAAAqE,SAAA,EAAAqF,EAAAtO,OAGA3B,KAAA+P,WAGA/P,KAAAuR,OAGA9D,MAAA,WACA,GAAAA,GAAAqD,EAAArD,MAAAlN,KAAAP,KAGA,OAFAyN,GAAA8D,MAAAvR,KAAAuR,MAAA9D,QAEAA,IAkBA1C,GAAAO,KAAAwF,EAAAK,cAAA7F,GAgBAP,EAAAmH,SAAApB,EAAAO,kBAAA/F,MAIAR,EAAAQ,QR2/CM,SAASzL,EAAQD,EAASM,IS9oD/B,SAAAR,EAAAC,GAGDE,EAAAD,UAAAD,EAAAO,EAAA,KAUCF,KAAA,SAAA8K,IAED,WAEA,GAAAC,GAAAD,EACAE,EAAAD,EAAAE,IACAC,EAAAF,EAAAE,KACAqD,EAAAxD,EAAA9G,IACAoL,EAAAd,EAAAc,KACAjE,EAAAL,EAAAM,IAKAD,GAAAG,KAAAL,EAAAO,QAWA/G,KAAA,SAAAiH,EAAA3J,GAEA2J,EAAA3L,KAAAmS,QAAA,GAAAxG,GAAAjH,KAGA,gBAAA1C,KACAA,EAAAqN,EAAAlI,MAAAnF,GAIA,IAAAoQ,GAAAzG,EAAAwE,UACAkC,EAAA,EAAAD,CAGApQ,GAAA4I,SAAAyH,IACArQ,EAAA2J,EAAAY,SAAAvK,IAIAA,EAAAiM,OAWA,QARAqE,GAAAtS,KAAAuS,MAAAvQ,EAAAyL,QACA+E,EAAAxS,KAAAyS,MAAAzQ,EAAAyL,QAGAiF,EAAAJ,EAAAnI,MACAwI,EAAAH,EAAArI,MAGAzI,EAAA,EAA4BA,EAAA0Q,EAAqB1Q,IACjDgR,EAAAhR,IAAA,WACAiR,EAAAjR,IAAA,SAEA4Q,GAAA1H,SAAA4H,EAAA5H,SAAAyH,EAGArS,KAAAwM,SAUAA,MAAA,WAEA,GAAAb,GAAA3L,KAAAmS,OAGAxG,GAAAa,QACAb,EAAAW,OAAAtM,KAAAyS,QAeAnG,OAAA,SAAA0E,GAIA,MAHAhR,MAAAmS,QAAA7F,OAAA0E,GAGAhR,MAiBAuM,SAAA,SAAAyE,GAEA,GAAArF,GAAA3L,KAAAmS,QAGAS,EAAAjH,EAAAY,SAAAyE,EACArF,GAAAa,OACA,IAAAT,GAAAJ,EAAAY,SAAAvM,KAAAuS,MAAA9E,QAAAX,OAAA8F,GAEA,OAAA7G,YT0pDM,SAASlM,EAAQD,GAEtB,YU9xDD,IAAIqE,KAEJA,GAAI8K,QACFvG,UAAW,SAACoF,GAEV,GAAIzD,GAAQyD,EAAUzD,MAClBS,EAAWgD,EAAUhD,SACrBoE,KAAkBtN,SAAG+M,QAGzB,KAAK/M,EAAI,EAAGA,EAAIkJ,EAAUlJ,IACxB+M,EAAQtE,EAAMzI,IAAM,KAAQ,GAAMA,EAAI,EAAK,EAAM,IACjDsN,EAAYlF,KAAKrC,OAAOwH,aAAaR,GAGvC,OAAOO,GAAYN,KAAK,MAI5BzK,EAAIgD,OACFuB,UAAW,SAACoF,GACV,IACE,MAAO0B,oBAAmBC,OAAOtL,EAAI8K,OAAOvG,UAAUoF,KACtD,MAAOxG,GACP,KAAM,IAAIC,OAAM,2BAKtBxH,EAAOD,QAAUqE,GV4yDX,SAASpE,EAAQD,GAEtB,YWj1DD,IAAI+D,IACFkP,QAAS,oEACTpK,OAAQ,SAAUrB,GAChB,GAAI0K,GAAI,GACJD,SAAGzH,SAAG1I,SAAGqE,SAAG+M,SAAGC,SAAGrB,SAClBsB,EAAI,CAGR,KADA5L,EAAIzD,EAAOsP,YAAY7L,GAChB4L,EAAI5L,EAAEzF,QACXkQ,EAAIzK,EAAEgI,WAAW4D,KACjB5I,EAAIhD,EAAEgI,WAAW4D,KACjBtR,EAAI0F,EAAEgI,WAAW4D,KACjBjN,EAAI8L,GAAK,EACTiB,GAAS,EAAJjB,IAAU,EAAIzH,GAAK,EACxB2I,GAAS,GAAJ3I,IAAW,EAAI1I,GAAK,EACzBgQ,EAAQ,GAAJhQ,EACAwR,MAAM9I,GACR2I,EAAIrB,EAAI,GACCwB,MAAMxR,KACfgQ,EAAI,IAENI,EAAIA,EAAI9R,KAAK6S,QAAQM,OAAOpN,GAAK/F,KAAK6S,QAAQM,OAAOL,GAAK9S,KAAK6S,QAAQM,OAAOJ,GAAK/S,KAAK6S,QAAQM,OAAOzB,EAEzG,OAAOI,IAETjL,OAAQ,SAAUO,GAChB,GAAI0K,GAAI,GACJD,SAAGzH,SAAG1I,SACNqE,SAAG+M,SAAGC,SAAGrB,SACTsB,EAAI,CAGR,KADA5L,EAAIA,EAAEgM,QAAQ,sBAAuB,IAC9BJ,EAAI5L,EAAEzF,QACXoE,EAAI/F,KAAK6S,QAAQQ,QAAQjM,EAAE+L,OAAOH,MAClCF,EAAI9S,KAAK6S,QAAQQ,QAAQjM,EAAE+L,OAAOH,MAClCD,EAAI/S,KAAK6S,QAAQQ,QAAQjM,EAAE+L,OAAOH,MAClCtB,EAAI1R,KAAK6S,QAAQQ,QAAQjM,EAAE+L,OAAOH,MAClCnB,EAAI9L,GAAK,EAAI+M,GAAK,EAClB1I,GAAS,GAAJ0I,IAAW,EAAIC,GAAK,EACzBrR,GAAS,EAAJqR,IAAU,EAAIrB,EACnBI,GAAQrK,OAAOwH,aAAa4C,GAClB,KAANkB,IACFjB,GAAQrK,OAAOwH,aAAa7E,IAEpB,KAANsH,IACFI,GAAQrK,OAAOwH,aAAavN,GAIhC,OADAoQ,GAAInO,EAAO2P,YAAYxB,IAGzBmB,YAAa,SAAU7L,GACrBA,EAAIA,EAAEgM,QAAQ,QAAS,KAGvB,KAAK,GAFDtB,GAAI,GAECD,EAAI,EAAGA,EAAIzK,EAAEzF,OAAQkQ,IAAK,CACjC,GAAIzH,GAAIhD,EAAEgI,WAAWyC,EAEjBzH,GAAI,IACN0H,GAAKrK,OAAOwH,aAAa7E,GAChBA,EAAI,KAAOA,EAAI,MACxB0H,GAAKrK,OAAOwH,aAAa7E,GAAK,EAAI,KAClC0H,GAAKrK,OAAOwH,aAAiB,GAAJ7E,EAAS,OAElC0H,GAAKrK,OAAOwH,aAAa7E,GAAK,GAAK,KACnC0H,GAAKrK,OAAOwH,aAAa7E,GAAK,EAAI,GAAK,KACvC0H,GAAKrK,OAAOwH,aAAiB,GAAJ7E,EAAS,MAGtC,MAAO0H,IAETwB,YAAa,SAAUlM,GACrB,GAAI0K,GAAI,GACJD,EAAI,EACJzH,SAAGmJ,SAAIC,QAGX,KADApJ,EAAImJ,EAAK,EACF1B,EAAIzK,EAAEzF,QACXyI,EAAIhD,EAAEgI,WAAWyC,GACbzH,EAAI,KACN0H,GAAKrK,OAAOwH,aAAa7E,GACzByH,KACSzH,EAAI,KAAOA,EAAI,KACxBmJ,EAAKnM,EAAEgI,WAAWyC,EAAI,GACtBC,GAAKrK,OAAOwH,cAAkB,GAAJ7E,IAAW,EAAS,GAALmJ,GACzC1B,GAAK,IAEL0B,EAAKnM,EAAEgI,WAAWyC,EAAI,GACtB2B,EAAKpM,EAAEgI,WAAWyC,EAAI,GACtBC,GAAKrK,OAAOwH,cAAkB,GAAJ7E,IAAW,IAAW,GAALmJ,IAAY,EAAS,GAALC,GAC3D3B,GAAK,EAGT,OAAOC,IAIXjS,GAAOD,QAAU+D,GXo2DX,SAAS9D,EAAQD,EAASM,GYr8DhC,GAAAuT,GASA7P,EAAA,WAQA,QAAA8P,GAAAC,EAAAC,GACA,IAAAC,EAAAF,GAAA,CACAE,EAAAF,KACA,QAAAjS,GAAA,EAAkBA,EAAAiS,EAAAhS,OAAoBD,IACtCmS,EAAAF,KAAAR,OAAAzR,MAGA,MAAAmS,GAAAF,GAAAC,GAZA,GAAAZ,GAAAvL,OAAAwH,aACA6E,EAAA,oEACAC,EAAA,oEACAF,KAYAjQ,GACAoQ,iBAAA,SAAAC,GACA,SAAAA,EAAA,QACA,IAAAC,GAAAtQ,EAAAuQ,UAAAF,EAAA,WAAAvC,GAAuD,MAAAoC,GAAAX,OAAAzB,IACvD,QAAAwC,EAAAvS,OAAA,GACA,QACA,aAAAuS,EACA,cAAAA,GAAA,KACA,cAAAA,GAAA,IACA,cAAAA,GAAA,MAIAE,qBAAA,SAAAH,GACA,aAAAA,EAAA,GACA,IAAAA,EAAA,KACArQ,EAAAyQ,YAAAJ,EAAAtS,OAAA,YAAAoI,GAAmE,MAAA2J,GAAAI,EAAAG,EAAAd,OAAApJ,OAGnEpB,gBAAA,SAAAsL,GACA,aAAAA,EAAA,GACArQ,EAAAuQ,UAAAF,EAAA,YAAAvC,GAAqD,MAAAsB,GAAAtB,EAAA,MAAgB,KAGrE9K,oBAAA,SAAA0N,GACA,aAAAA,EAAA,GACA,IAAAA,EAAA,KACA1Q,EAAAyQ,YAAAC,EAAA3S,OAAA,eAAAoI,GAA2E,MAAAuK,GAAAlF,WAAArF,GAAA,MAI3EwK,qBAAA,SAAAC,GAIA,OAHAF,GAAA1Q,EAAA6Q,SAAAD,GACAE,EAAA,GAAAC,YAAA,EAAAL,EAAA3S,QAEAD,EAAA,EAAAkT,EAAAN,EAAA3S,OAA6CD,EAAAkT,EAAYlT,IAAA,CACzD,GAAAmT,GAAAP,EAAAlF,WAAA1N,EACAgT,GAAA,EAAAhT,GAAAmT,IAAA,EACAH,EAAA,EAAAhT,EAAA,GAAAmT,EAAA,IAEA,MAAAH,IAIAI,yBAAA,SAAAR,GACA,UAAAA,GAAAjM,SAAAiM,EACA,MAAA1Q,GAAAmR,WAAAT,EAGA,QADAI,GAAA,GAAAM,OAAAV,EAAA3S,OAAA,GACAD,EAAA,EAAAkT,EAAAF,EAAA/S,OAA0CD,EAAAkT,EAAYlT,IACtDgT,EAAAhT,GAAA,IAAA4S,EAAA,EAAA5S,GAAA4S,EAAA,EAAA5S,EAAA,EAGA,IAAA8I,KAIA,OAHAkK,GAAAO,QAAA,SAAAxU,GACA+J,EAAAV,KAAAkJ,EAAAvS,MAEAmD,EAAAmR,WAAAvK,EAAAkE,KAAA,MAQAwG,8BAAA,SAAAjB,GACA,aAAAA,EAAA,GACArQ,EAAAuQ,UAAAF,EAAA,WAAAvC,GAAoD,MAAAqC,GAAAZ,OAAAzB,MAIpDyD,kCAAA,SAAAlB,GACA,aAAAA,EAAA,GACA,IAAAA,EAAA,MACAA,IAAAb,QAAA,UACAxP,EAAAyQ,YAAAJ,EAAAtS,OAAA,YAAAoI,GAAmE,MAAA2J,GAAAK,EAAAE,EAAAd,OAAApJ,QAGnE0K,SAAA,SAAAD,GACA,MAAA5Q,GAAAuQ,UAAAK,EAAA,YAAA9C,GAA4D,MAAAsB,GAAAtB,MAE5DyC,UAAA,SAAAK,EAAAY,EAAAC,GACA,SAAAb,EAAA,QACA,IAAA9S,GAAAL,EAYAiU,EAXAC,KACAC,KACAC,EAAA,GACAC,EAAA,GACAC,EAAA,GACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,KACAC,EAAA,EACAC,EAAA,CAGA,KAAAX,EAAA,EAAgBA,EAAAd,EAAA7S,OAA0B2T,GAAA,EAQ1C,GAPAG,EAAAjB,EAAArB,OAAAmC,GACAnU,OAAAgB,UAAAgL,eAAA5M,KAAAgV,EAAAE,KACAF,EAAAE,GAAAI,IACAL,EAAAC,IAAA,GAGAC,EAAAC,EAAAF,EACAtU,OAAAgB,UAAAgL,eAAA5M,KAAAgV,EAAAG,GACAC,EAAAD,MACO,CACP,GAAAvU,OAAAgB,UAAAgL,eAAA5M,KAAAiV,EAAAG,GAAA,CACA,GAAAA,EAAAvG,WAAA,QACA,IAAA1N,EAAA,EAAsBA,EAAAoU,EAAoBpU,IAC1CsU,IAAA,EACAC,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAAjM,KAAAuL,EAAAW,IACAA,EAAA,GAEAC,GAIA,KADA5U,EAAAsU,EAAAvG,WAAA,GACA1N,EAAA,EAAsBA,EAAA,EAAMA,IAC5BsU,KAAA,IAAA3U,EACA4U,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAAjM,KAAAuL,EAAAW,IACAA,EAAA,GAEAC,IAEA5U,IAAA,MAEW,CAEX,IADAA,EAAA,EACAK,EAAA,EAAsBA,EAAAoU,EAAoBpU,IAC1CsU,KAAA,EAAA3U,EACA4U,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAAjM,KAAAuL,EAAAW,IACAA,EAAA,GAEAC,IAEA5U,EAAA,CAGA,KADAA,EAAAsU,EAAAvG,WAAA,GACA1N,EAAA,EAAsBA,EAAA,GAAOA,IAC7BsU,KAAA,IAAA3U,EACA4U,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAAjM,KAAAuL,EAAAW,IACAA,EAAA,GAEAC,IAEA5U,IAAA,EAGAuU,IACA,GAAAA,IACAA,EAAAnL,KAAAyL,IAAA,EAAAJ,GACAA,WAEAN,GAAAG,OAGA,KADAtU,EAAAkU,EAAAI,GACAjU,EAAA,EAAoBA,EAAAoU,EAAoBpU,IACxCsU,KAAA,IAAA3U,EACA4U,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAAjM,KAAAuL,EAAAW,IACAA,EAAA,GAEAC,IAEA5U,IAAA,CAKAuU,KACA,GAAAA,IACAA,EAAAnL,KAAAyL,IAAA,EAAAJ,GACAA,KAGAP,EAAAG,GAAAG,IACAF,EAAAlO,OAAAgO,GAKA,QAAAE,EAAA,CACA,GAAAxU,OAAAgB,UAAAgL,eAAA5M,KAAAiV,EAAAG,GAAA,CACA,GAAAA,EAAAvG,WAAA,QACA,IAAA1N,EAAA,EAAoBA,EAAAoU,EAAoBpU,IACxCsU,IAAA,EACAC,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAAjM,KAAAuL,EAAAW,IACAA,EAAA,GAEAC,GAIA,KADA5U,EAAAsU,EAAAvG,WAAA,GACA1N,EAAA,EAAoBA,EAAA,EAAMA,IAC1BsU,KAAA,IAAA3U,EACA4U,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAAjM,KAAAuL,EAAAW,IACAA,EAAA,GAEAC,IAEA5U,IAAA,MAES,CAET,IADAA,EAAA,EACAK,EAAA,EAAoBA,EAAAoU,EAAoBpU,IACxCsU,KAAA,EAAA3U,EACA4U,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAAjM,KAAAuL,EAAAW,IACAA,EAAA,GAEAC,IAEA5U,EAAA,CAGA,KADAA,EAAAsU,EAAAvG,WAAA,GACA1N,EAAA,EAAoBA,EAAA,GAAOA,IAC3BsU,KAAA,IAAA3U,EACA4U,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAAjM,KAAAuL,EAAAW,IACAA,EAAA,GAEAC,IAEA5U,IAAA,EAGAuU,IACA,GAAAA,IACAA,EAAAnL,KAAAyL,IAAA,EAAAJ,GACAA,WAEAN,GAAAG,OAGA,KADAtU,EAAAkU,EAAAI,GACAjU,EAAA,EAAkBA,EAAAoU,EAAoBpU,IACtCsU,KAAA,IAAA3U,EACA4U,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAAjM,KAAAuL,EAAAW,IACAA,EAAA,GAEAC,IAEA5U,IAAA,CAKAuU,KACA,GAAAA,IACAA,EAAAnL,KAAAyL,IAAA,EAAAJ,GACAA,KAMA,IADAzU,EAAA,EACAK,EAAA,EAAcA,EAAAoU,EAAoBpU,IAClCsU,KAAA,IAAA3U,EACA4U,GAAAb,EAAA,GACAa,EAAA,EACAF,EAAAjM,KAAAuL,EAAAW,IACAA,EAAA,GAEAC,IAEA5U,IAAA,CAIA,SAEA,GADA2U,IAAA,EACAC,GAAAb,EAAA,GACAW,EAAAjM,KAAAuL,EAAAW,GACA,OAEAC,IAEA,MAAAF,GAAArH,KAAA,KAGAqG,WAAA,SAAAT,GACA,aAAAA,EAAA,GACA,IAAAA,EAAA,KACA1Q,EAAAyQ,YAAAC,EAAA3S,OAAA,eAAAoI,GAA2E,MAAAuK,GAAAlF,WAAArF,MAG3EsK,YAAA,SAAA1S,EAAAwU,EAAAC,GACA,GACAC,GAMA3U,EACA4U,EACAC,EAAAC,EAAAC,EAAAC,EACAjW,EAVAkW,KAEAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,GACAvM,KAKAjE,GAAgByQ,IAAAZ,EAAA,GAAAa,SAAAd,EAAApM,MAAA,EAEhB,KAAArI,EAAA,EAAeA,EAAA,EAAOA,GAAA,EACtBiV,EAAAjV,IAMA,KAHA6U,EAAA,EACAE,EAAAhM,KAAAyL,IAAA,KACAQ,EAAA,EACAA,GAAAD,GACAD,EAAAjQ,EAAAyQ,IAAAzQ,EAAA0Q,SACA1Q,EAAA0Q,WAAA,EACA,GAAA1Q,EAAA0Q,WACA1Q,EAAA0Q,SAAAd,EACA5P,EAAAyQ,IAAAZ,EAAA7P,EAAAwD,UAEAwM,IAAAC,EAAA,OAAAE,EACAA,IAAA,CAGA,QAAAL,EAAAE,GACA,OAIA,IAHAA,EAAA,EACAE,EAAAhM,KAAAyL,IAAA,KACAQ,EAAA,EACAA,GAAAD,GACAD,EAAAjQ,EAAAyQ,IAAAzQ,EAAA0Q,SACA1Q,EAAA0Q,WAAA,EACA,GAAA1Q,EAAA0Q,WACA1Q,EAAA0Q,SAAAd,EACA5P,EAAAyQ,IAAAZ,EAAA7P,EAAAwD,UAEAwM,IAAAC,EAAA,OAAAE,EACAA,IAAA,CAEAjW,GAAAuS,EAAAuD,EACA,MACA,QAIA,IAHAA,EAAA,EACAE,EAAAhM,KAAAyL,IAAA,MACAQ,EAAA,EACAA,GAAAD,GACAD,EAAAjQ,EAAAyQ,IAAAzQ,EAAA0Q,SACA1Q,EAAA0Q,WAAA,EACA,GAAA1Q,EAAA0Q,WACA1Q,EAAA0Q,SAAAd,EACA5P,EAAAyQ,IAAAZ,EAAA7P,EAAAwD,UAEAwM,IAAAC,EAAA,OAAAE,EACAA,IAAA,CAEAjW,GAAAuS,EAAAuD,EACA,MACA,QACA,SAKA,IAHAI,EAAA,GAAAlW,EACA6V,EAAA7V,EACA+J,EAAAV,KAAArJ,KACA,CACA,GAAA8F,EAAAwD,MAAApI,EACA,QAMA,KAHA4U,EAAA,EACAE,EAAAhM,KAAAyL,IAAA,EAAAY,GACAJ,EAAA,EACAA,GAAAD,GACAD,EAAAjQ,EAAAyQ,IAAAzQ,EAAA0Q,SACA1Q,EAAA0Q,WAAA,EACA,GAAA1Q,EAAA0Q,WACA1Q,EAAA0Q,SAAAd,EACA5P,EAAAyQ,IAAAZ,EAAA7P,EAAAwD,UAEAwM,IAAAC,EAAA,OAAAE,EACAA,IAAA,CAGA,QAAAjW,EAAA8V,GACA,OAIA,IAHAA,EAAA,EACAE,EAAAhM,KAAAyL,IAAA,KACAQ,EAAA,EACAA,GAAAD,GACAD,EAAAjQ,EAAAyQ,IAAAzQ,EAAA0Q,SACA1Q,EAAA0Q,WAAA,EACA,GAAA1Q,EAAA0Q,WACA1Q,EAAA0Q,SAAAd,EACA5P,EAAAyQ,IAAAZ,EAAA7P,EAAAwD,UAEAwM,IAAAC,EAAA,OAAAE,EACAA,IAAA,CAGAC,GAAAE,KAAA7D,EAAAuD,GACA9V,EAAAoW,EAAA,EACAD,GACA,MACA,QAIA,IAHAL,EAAA,EACAE,EAAAhM,KAAAyL,IAAA,MACAQ,EAAA,EACAA,GAAAD,GACAD,EAAAjQ,EAAAyQ,IAAAzQ,EAAA0Q,SACA1Q,EAAA0Q,WAAA,EACA,GAAA1Q,EAAA0Q,WACA1Q,EAAA0Q,SAAAd,EACA5P,EAAAyQ,IAAAZ,EAAA7P,EAAAwD,UAEAwM,IAAAC,EAAA,OAAAE,EACAA,IAAA,CAEAC,GAAAE,KAAA7D,EAAAuD,GACA9V,EAAAoW,EAAA,EACAD,GACA,MACA,QACA,MAAApM,GAAAkE,KAAA,IAQA,GALA,GAAAkI,IACAA,EAAAnM,KAAAyL,IAAA,EAAAY,GACAA,KAGAH,EAAAlW,GACAsW,EAAAJ,EAAAlW,OACO,CACP,GAAAA,IAAAoW,EAGA,WAFAE,GAAAT,IAAAnD,OAAA,GAKA3I,EAAAV,KAAAiN,GAGAJ,EAAAE,KAAAP,EAAAS,EAAA5D,OAAA,GACAyD,IAEAN,EAAAS,EAEA,GAAAH,IACAA,EAAAnM,KAAAyL,IAAA,EAAAY,GACAA,OAMA,OAAAlT,KAIA6P,GAAA,WAAsB,MAAA7P,IAAmBrD,KAAAX,EAAAM,EAAAN,EAAAC,KAAAwI,SAAAoL,IAAA5T,EAAAD,QAAA6T,KZ+8DnC,SAAS5T,EAAQD,EAASM,Iah8E/B,SAAAR,EAAAC,EAAAkL,GAGDhL,EAAAD,UAAAD,EAAAO,EAAA,GAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,MAUCF,KAAA,SAAA8K,GAwND,MAtNA,YAEA,GAAAC,GAAAD,EACAE,EAAAD,EAAAE,IACAiM,EAAAlM,EAAAkM,YACA9L,EAAAL,EAAAM,KAGA8L,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MAGA,WAGA,OADAhG,MACAlQ,EAAA,EAAwBA,EAAA,IAASA,IACjCA,EAAA,IACAkQ,EAAAlQ,MAAA,EAEAkQ,EAAAlQ,MAAA,KAOA,QAFAmW,GAAA,EACAC,EAAA,EACApW,EAAA,EAAwBA,EAAA,IAASA,IAAA,CAEjC,GAAAqW,GAAAD,KAAA,EAAAA,GAAA,EAAAA,GAAA,EAAAA,GAAA,CACAC,OAAA,MAAAA,EAAA,GACAZ,EAAAU,GAAAE,EACAX,EAAAW,GAAAF,CAGA,IAAAG,GAAApG,EAAAiG,GACAI,EAAArG,EAAAoG,GACAE,EAAAtG,EAAAqG,GAGAnG,EAAA,IAAAF,EAAAmG,GAAA,SAAAA,CACAV,GAAAQ,GAAA/F,GAAA,GAAAA,IAAA,EACAwF,EAAAO,GAAA/F,GAAA,GAAAA,IAAA,GACAyF,EAAAM,GAAA/F,GAAA,EAAAA,IAAA,GACA0F,EAAAK,GAAA/F,CAGA,IAAAA,GAAA,SAAAoG,EAAA,MAAAD,EAAA,IAAAD,EAAA,SAAAH,CACAJ,GAAAM,GAAAjG,GAAA,GAAAA,IAAA,EACA4F,EAAAK,GAAAjG,GAAA,GAAAA,IAAA,GACA6F,EAAAI,GAAAjG,GAAA,EAAAA,IAAA,GACA8F,EAAAG,GAAAjG,EAGA+F,GAGAA,EAAAG,EAAApG,MAAAsG,EAAAF,KACAF,GAAAlG,IAAAkG,KAHAD,EAAAC,EAAA,KASA,IAAAK,IAAA,8BAKAtU,EAAAuH,EAAAvH,IAAAqT,EAAAzL,QACAsF,SAAA,WAEA,IAAA/Q,KAAAoY,UAAApY,KAAAqY,iBAAArY,KAAAsY,KAAA,CAiBA,OAZAtW,GAAAhC,KAAAqY,eAAArY,KAAAsY,KACAC,EAAAvW,EAAAmI,MACAV,EAAAzH,EAAA4I,SAAA,EAGA4N,EAAAxY,KAAAoY,SAAA3O,EAAA,EAGAgP,EAAA,GAAAD,EAAA,GAGAE,EAAA1Y,KAAA2Y,gBACAC,EAAA,EAAgCA,EAAAH,EAAgBG,IAChD,GAAAA,EAAAnP,EACAiP,EAAAE,GAAAL,EAAAK,OACkB,CAClB,GAAA9G,GAAA4G,EAAAE,EAAA,EAEAA,GAAAnP,EASsBA,EAAA,GAAAmP,EAAAnP,GAAA,IAEtBqI,EAAAqF,EAAArF,IAAA,QAAAqF,EAAArF,IAAA,YAAAqF,EAAArF,IAAA,UAAAqF,EAAA,IAAArF,KATAA,KAAA,EAAAA,IAAA,GAGAA,EAAAqF,EAAArF,IAAA,QAAAqF,EAAArF,IAAA,YAAAqF,EAAArF,IAAA,UAAAqF,EAAA,IAAArF,GAGAA,GAAAqG,EAAAS,EAAAnP,EAAA,QAMAiP,EAAAE,GAAAF,EAAAE,EAAAnP,GAAAqI,EAMA,OADA+G,GAAA7Y,KAAA8Y,mBACAC,EAAA,EAAmCA,EAAAN,EAAmBM,IAAA,CACtD,GAAAH,GAAAH,EAAAM,CAEA,IAAAA,EAAA,EACA,GAAAjH,GAAA4G,EAAAE,OAEA,IAAA9G,GAAA4G,EAAAE,EAAA,EAGAG,GAAA,GAAAH,GAAA,EACAC,EAAAE,GAAAjH,EAEA+G,EAAAE,GAAAtB,EAAAN,EAAArF,IAAA,KAAA4F,EAAAP,EAAArF,IAAA,SACA6F,EAAAR,EAAArF,IAAA,QAAA8F,EAAAT,EAAA,IAAArF,OAKAkH,aAAA,SAAAxH,EAAAb,GACA3Q,KAAAiZ,cAAAzH,EAAAb,EAAA3Q,KAAA2Y,aAAAtB,EAAAC,EAAAC,EAAAC,EAAAL,IAGA+B,aAAA,SAAA1H,EAAAb,GAEA,GAAAmB,GAAAN,EAAAb,EAAA,EACAa,GAAAb,EAAA,GAAAa,EAAAb,EAAA,GACAa,EAAAb,EAAA,GAAAmB,EAEA9R,KAAAiZ,cAAAzH,EAAAb,EAAA3Q,KAAA8Y,gBAAArB,EAAAC,EAAAC,EAAAC,EAAAR,EAGA,IAAAtF,GAAAN,EAAAb,EAAA,EACAa,GAAAb,EAAA,GAAAa,EAAAb,EAAA,GACAa,EAAAb,EAAA,GAAAmB,GAGAmH,cAAA,SAAAzH,EAAAb,EAAA+H,EAAArB,EAAAC,EAAAC,EAAAC,EAAAL,GAcA,OAZAqB,GAAAxY,KAAAoY,SAGAe,EAAA3H,EAAAb,GAAA+H,EAAA,GACAU,EAAA5H,EAAAb,EAAA,GAAA+H,EAAA,GACAW,EAAA7H,EAAAb,EAAA,GAAA+H,EAAA,GACAY,EAAA9H,EAAAb,EAAA,GAAA+H,EAAA,GAGAE,EAAA,EAGAW,EAAA,EAAgCA,EAAAf,EAAiBe,IAAA,CAEjD,GAAAC,GAAAnC,EAAA8B,IAAA,IAAA7B,EAAA8B,IAAA,QAAA7B,EAAA8B,IAAA,OAAA7B,EAAA,IAAA8B,GAAAZ,EAAAE,KACAa,EAAApC,EAAA+B,IAAA,IAAA9B,EAAA+B,IAAA,QAAA9B,EAAA+B,IAAA,OAAA9B,EAAA,IAAA2B,GAAAT,EAAAE,KACAc,EAAArC,EAAAgC,IAAA,IAAA/B,EAAAgC,IAAA,QAAA/B,EAAA4B,IAAA,OAAA3B,EAAA,IAAA4B,GAAAV,EAAAE,KACAe,EAAAtC,EAAAiC,IAAA,IAAAhC,EAAA6B,IAAA,QAAA5B,EAAA6B,IAAA,OAAA5B,EAAA,IAAA6B,GAAAX,EAAAE,IAGAO,GAAAK,EACAJ,EAAAK,EACAJ,EAAAK,EACAJ,EAAAK,EAIA,GAAAH,IAAArC,EAAAgC,IAAA,QAAAhC,EAAAiC,IAAA,YAAAjC,EAAAkC,IAAA,UAAAlC,EAAA,IAAAmC,IAAAZ,EAAAE,KACAa,GAAAtC,EAAAiC,IAAA,QAAAjC,EAAAkC,IAAA,YAAAlC,EAAAmC,IAAA,UAAAnC,EAAA,IAAAgC,IAAAT,EAAAE,KACAc,GAAAvC,EAAAkC,IAAA,QAAAlC,EAAAmC,IAAA,YAAAnC,EAAAgC,IAAA,UAAAhC,EAAA,IAAAiC,IAAAV,EAAAE,KACAe,GAAAxC,EAAAmC,IAAA,QAAAnC,EAAAgC,IAAA,YAAAhC,EAAAiC,IAAA,UAAAjC,EAAA,IAAAkC,IAAAX,EAAAE,IAGApH,GAAAb,GAAA6I,EACAhI,EAAAb,EAAA,GAAA8I,EACAjI,EAAAb,EAAA,GAAA+I,EACAlI,EAAAb,EAAA,GAAAgJ,GAGAlQ,QAAA,GAWAsB,GAAAlH,IAAAqT,EAAA/F,cAAAtN,MAIAiH,EAAAjH,Obw8EM,SAAShE,EAAQD,EAASM,Ic7qF/B,SAAAR,EAAAC,GAGDE,EAAAD,UAAAD,EAAAO,EAAA,KAUCF,KAAA,SAAA8K,GAuHD,MArHA,YAqGA,QAAA8O,GAAAC,EAAAC,EAAAC,GAGA,OAFA5P,MACAF,EAAA,EACAvI,EAAA,EAAsBA,EAAAoY,EAAqBpY,IAC3C,GAAAA,EAAA,GACA,GAAAsY,GAAAD,EAAAF,EAAAzK,WAAA1N,EAAA,KAAAA,EAAA,IACAuY,EAAAF,EAAAF,EAAAzK,WAAA1N,MAAA,EAAAA,EAAA,GACAyI,GAAAF,IAAA,KAAA+P,EAAAC,IAAA,GAAAhQ,EAAA,IACAA,IAGA,MAAAkB,GAAAa,OAAA7B,EAAAF,GA9GA,GAAAc,GAAAD,EACAE,EAAAD,EAAAE,IACAE,EAAAH,EAAAG,UACAoD,EAAAxD,EAAA9G,GAKAsK,GAAA5K,QAcA6E,UAAA,SAAAoF,GAEA,GAAAzD,GAAAyD,EAAAzD,MACAS,EAAAgD,EAAAhD,SACAjB,EAAA3J,KAAAka,IAGAtM,GAAAK,OAIA,QADAkM,MACAzY,EAAA,EAA4BA,EAAAkJ,EAAclJ,GAAA,EAO1C,OANA0Y,GAAAjQ,EAAAzI,IAAA,QAAAA,EAAA,QACA2Y,EAAAlQ,EAAAzI,EAAA,aAAAA,EAAA,WACA4Y,EAAAnQ,EAAAzI,EAAA,aAAAA,EAAA,WAEA6Y,EAAAH,GAAA,GAAAC,GAAA,EAAAC,EAEAzN,EAAA,EAAgCA,EAAA,GAAAnL,EAAA,IAAAmL,EAAAjC,EAAsCiC,IACtEsN,EAAArQ,KAAAH,EAAAwJ,OAAAoH,IAAA,KAAA1N,GAAA,IAKA,IAAA2N,GAAA7Q,EAAAwJ,OAAA,GACA,IAAAqH,EACA,KAAAL,EAAAxY,OAAA,GACAwY,EAAArQ,KAAA0Q,EAIA,OAAAL,GAAAzL,KAAA,KAgBAvH,MAAA,SAAA0S,GAEA,GAAAC,GAAAD,EAAAlY,OACAgI,EAAA3J,KAAAka,KACAH,EAAA/Z,KAAAya,WAEA,KAAAV,EAAA,CACAA,EAAA/Z,KAAAya,cACA,QAAA5N,GAAA,EAAoCA,EAAAlD,EAAAhI,OAAgBkL,IACpDkN,EAAApQ,EAAAyF,WAAAvC,MAKA,GAAA2N,GAAA7Q,EAAAwJ,OAAA,GACA,IAAAqH,EAAA,CACA,GAAAE,GAAAb,EAAAxG,QAAAmH,EACAE,UACAZ,EAAAY,GAKA,MAAAd,GAAAC,EAAAC,EAAAC,IAIAG,KAAA,wEAmBApP,EAAA7G,IAAAN,UdqrFM,SAAS9D,EAAQD,EAASM,IezzF/B,SAAAR,EAAAC,GAGDE,EAAAD,UAAAD,EAAAO,EAAA,KAUCF,KAAA,SAAA8K,GA4PD,MA1PA,UAAAL,GAoMA,QAAAkQ,GAAAjJ,EAAAC,EAAAlR,EAAAmR,EAAAiG,EAAA9R,EAAA+L,GACA,GAAAD,GAAAH,GAAAC,EAAAlR,GAAAkR,EAAAC,GAAAiG,EAAA/F,CACA,QAAAD,GAAA9L,EAAA8L,IAAA,GAAA9L,GAAA4L,EAGA,QAAAiJ,GAAAlJ,EAAAC,EAAAlR,EAAAmR,EAAAiG,EAAA9R,EAAA+L,GACA,GAAAD,GAAAH,GAAAC,EAAAC,EAAAnR,GAAAmR,GAAAiG,EAAA/F,CACA,QAAAD,GAAA9L,EAAA8L,IAAA,GAAA9L,GAAA4L,EAGA,QAAAkJ,GAAAnJ,EAAAC,EAAAlR,EAAAmR,EAAAiG,EAAA9R,EAAA+L,GACA,GAAAD,GAAAH,GAAAC,EAAAlR,EAAAmR,GAAAiG,EAAA/F,CACA,QAAAD,GAAA9L,EAAA8L,IAAA,GAAA9L,GAAA4L,EAGA,QAAAmJ,GAAApJ,EAAAC,EAAAlR,EAAAmR,EAAAiG,EAAA9R,EAAA+L,GACA,GAAAD,GAAAH,GAAAjR,GAAAkR,GAAAC,IAAAiG,EAAA/F,CACA,QAAAD,GAAA9L,EAAA8L,IAAA,GAAA9L,GAAA4L,EAnNA,GAAA5G,GAAAD,EACAE,EAAAD,EAAAE,IACAE,EAAAH,EAAAG,UACA2F,EAAA9F,EAAA8F,OACA1F,EAAAL,EAAAM,KAGA0P,MAGA,WACA,OAAArZ,GAAA,EAAwBA,EAAA,GAAQA,IAChCqZ,EAAArZ,GAAA,WAAA+I,EAAAuQ,IAAAvQ,EAAAwQ,IAAAvZ,EAAA,QAOA,IAAAwZ,GAAA9P,EAAA8P,IAAApK,EAAArF,QACAsF,SAAA,WACA/Q,KAAAuR,MAAA,GAAApG,GAAAzG,MACA,sBACA,wBAIAkM,gBAAA,SAAAY,EAAAb,GAEA,OAAAjP,GAAA,EAA4BA,EAAA,GAAQA,IAAA,CAEpC,GAAAyZ,GAAAxK,EAAAjP,EACA0Z,EAAA5J,EAAA2J,EAEA3J,GAAA2J,GACA,UAAAC,GAAA,EAAAA,IAAA,IACA,YAAAA,GAAA,GAAAA,IAAA,GAKA,GAAA3J,GAAAzR,KAAAuR,MAAApH,MAEAkR,EAAA7J,EAAAb,EAAA,GACA2K,EAAA9J,EAAAb,EAAA,GACA4K,EAAA/J,EAAAb,EAAA,GACA6K,EAAAhK,EAAAb,EAAA,GACA8K,EAAAjK,EAAAb,EAAA,GACA+K,EAAAlK,EAAAb,EAAA,GACAgL,EAAAnK,EAAAb,EAAA,GACAiL,EAAApK,EAAAb,EAAA,GACAkL,EAAArK,EAAAb,EAAA,GACAmL,EAAAtK,EAAAb,EAAA,GACAoL,EAAAvK,EAAAb,EAAA,IACAqL,EAAAxK,EAAAb,EAAA,IACAsL,EAAAzK,EAAAb,EAAA,IACAuL,EAAA1K,EAAAb,EAAA,IACAwL,EAAA3K,EAAAb,EAAA,IACAyL,EAAA5K,EAAAb,EAAA,IAGAe,EAAAD,EAAA,GACAE,EAAAF,EAAA,GACAhR,EAAAgR,EAAA,GACAG,EAAAH,EAAA,EAGAC,GAAAiJ,EAAAjJ,EAAAC,EAAAlR,EAAAmR,EAAAyJ,EAAA,EAAAN,EAAA,IACAnJ,EAAA+I,EAAA/I,EAAAF,EAAAC,EAAAlR,EAAA6a,EAAA,GAAAP,EAAA,IACAta,EAAAka,EAAAla,EAAAmR,EAAAF,EAAAC,EAAA4J,EAAA,GAAAR,EAAA,IACApJ,EAAAgJ,EAAAhJ,EAAAlR,EAAAmR,EAAAF,EAAA8J,EAAA,GAAAT,EAAA,IACArJ,EAAAiJ,EAAAjJ,EAAAC,EAAAlR,EAAAmR,EAAA6J,EAAA,EAAAV,EAAA,IACAnJ,EAAA+I,EAAA/I,EAAAF,EAAAC,EAAAlR,EAAAib,EAAA,GAAAX,EAAA,IACAta,EAAAka,EAAAla,EAAAmR,EAAAF,EAAAC,EAAAgK,EAAA,GAAAZ,EAAA,IACApJ,EAAAgJ,EAAAhJ,EAAAlR,EAAAmR,EAAAF,EAAAkK,EAAA,GAAAb,EAAA,IACArJ,EAAAiJ,EAAAjJ,EAAAC,EAAAlR,EAAAmR,EAAAiK,EAAA,EAAAd,EAAA,IACAnJ,EAAA+I,EAAA/I,EAAAF,EAAAC,EAAAlR,EAAAqb,EAAA,GAAAf,EAAA,IACAta,EAAAka,EAAAla,EAAAmR,EAAAF,EAAAC,EAAAoK,EAAA,GAAAhB,EAAA,KACApJ,EAAAgJ,EAAAhJ,EAAAlR,EAAAmR,EAAAF,EAAAsK,EAAA,GAAAjB,EAAA,KACArJ,EAAAiJ,EAAAjJ,EAAAC,EAAAlR,EAAAmR,EAAAqK,EAAA,EAAAlB,EAAA,KACAnJ,EAAA+I,EAAA/I,EAAAF,EAAAC,EAAAlR,EAAAyb,EAAA,GAAAnB,EAAA,KACAta,EAAAka,EAAAla,EAAAmR,EAAAF,EAAAC,EAAAwK,EAAA,GAAApB,EAAA,KACApJ,EAAAgJ,EAAAhJ,EAAAlR,EAAAmR,EAAAF,EAAA0K,EAAA,GAAArB,EAAA,KAEArJ,EAAAkJ,EAAAlJ,EAAAC,EAAAlR,EAAAmR,EAAA0J,EAAA,EAAAP,EAAA,KACAnJ,EAAAgJ,EAAAhJ,EAAAF,EAAAC,EAAAlR,EAAAkb,EAAA,EAAAZ,EAAA,KACAta,EAAAma,EAAAna,EAAAmR,EAAAF,EAAAC,EAAAqK,EAAA,GAAAjB,EAAA,KACApJ,EAAAiJ,EAAAjJ,EAAAlR,EAAAmR,EAAAF,EAAA2J,EAAA,GAAAN,EAAA,KACArJ,EAAAkJ,EAAAlJ,EAAAC,EAAAlR,EAAAmR,EAAA8J,EAAA,EAAAX,EAAA,KACAnJ,EAAAgJ,EAAAhJ,EAAAF,EAAAC,EAAAlR,EAAAsb,EAAA,EAAAhB,EAAA,KACAta,EAAAma,EAAAna,EAAAmR,EAAAF,EAAAC,EAAAyK,EAAA,GAAArB,EAAA,KACApJ,EAAAiJ,EAAAjJ,EAAAlR,EAAAmR,EAAAF,EAAA+J,EAAA,GAAAV,EAAA,KACArJ,EAAAkJ,EAAAlJ,EAAAC,EAAAlR,EAAAmR,EAAAkK,EAAA,EAAAf,EAAA,KACAnJ,EAAAgJ,EAAAhJ,EAAAF,EAAAC,EAAAlR,EAAA0b,EAAA,EAAApB,EAAA,KACAta,EAAAma,EAAAna,EAAAmR,EAAAF,EAAAC,EAAA6J,EAAA,GAAAT,EAAA,KACApJ,EAAAiJ,EAAAjJ,EAAAlR,EAAAmR,EAAAF,EAAAmK,EAAA,GAAAd,EAAA,KACArJ,EAAAkJ,EAAAlJ,EAAAC,EAAAlR,EAAAmR,EAAAsK,EAAA,EAAAnB,EAAA,KACAnJ,EAAAgJ,EAAAhJ,EAAAF,EAAAC,EAAAlR,EAAA8a,EAAA,EAAAR,EAAA,KACAta,EAAAma,EAAAna,EAAAmR,EAAAF,EAAAC,EAAAiK,EAAA,GAAAb,EAAA,KACApJ,EAAAiJ,EAAAjJ,EAAAlR,EAAAmR,EAAAF,EAAAuK,EAAA,GAAAlB,EAAA,KAEArJ,EAAAmJ,EAAAnJ,EAAAC,EAAAlR,EAAAmR,EAAA8J,EAAA,EAAAX,EAAA,KACAnJ,EAAAiJ,EAAAjJ,EAAAF,EAAAC,EAAAlR,EAAAob,EAAA,GAAAd,EAAA,KACAta,EAAAoa,EAAApa,EAAAmR,EAAAF,EAAAC,EAAAqK,EAAA,GAAAjB,EAAA,KACApJ,EAAAkJ,EAAAlJ,EAAAlR,EAAAmR,EAAAF,EAAAyK,EAAA,GAAApB,EAAA,KACArJ,EAAAmJ,EAAAnJ,EAAAC,EAAAlR,EAAAmR,EAAA0J,EAAA,EAAAP,EAAA,KACAnJ,EAAAiJ,EAAAjJ,EAAAF,EAAAC,EAAAlR,EAAAgb,EAAA,GAAAV,EAAA,KACAta,EAAAoa,EAAApa,EAAAmR,EAAAF,EAAAC,EAAAiK,EAAA,GAAAb,EAAA,KACApJ,EAAAkJ,EAAAlJ,EAAAlR,EAAAmR,EAAAF,EAAAqK,EAAA,GAAAhB,EAAA,KACArJ,EAAAmJ,EAAAnJ,EAAAC,EAAAlR,EAAAmR,EAAAsK,EAAA,EAAAnB,EAAA,KACAnJ,EAAAiJ,EAAAjJ,EAAAF,EAAAC,EAAAlR,EAAA4a,EAAA,GAAAN,EAAA,KACAta,EAAAoa,EAAApa,EAAAmR,EAAAF,EAAAC,EAAA6J,EAAA,GAAAT,EAAA,KACApJ,EAAAkJ,EAAAlJ,EAAAlR,EAAAmR,EAAAF,EAAAiK,EAAA,GAAAZ,EAAA,KACArJ,EAAAmJ,EAAAnJ,EAAAC,EAAAlR,EAAAmR,EAAAkK,EAAA,EAAAf,EAAA,KACAnJ,EAAAiJ,EAAAjJ,EAAAF,EAAAC,EAAAlR,EAAAwb,EAAA,GAAAlB,EAAA,KACAta,EAAAoa,EAAApa,EAAAmR,EAAAF,EAAAC,EAAAyK,EAAA,GAAArB,EAAA,KACApJ,EAAAkJ,EAAAlJ,EAAAlR,EAAAmR,EAAAF,EAAA6J,EAAA,GAAAR,EAAA,KAEArJ,EAAAoJ,EAAApJ,EAAAC,EAAAlR,EAAAmR,EAAAyJ,EAAA,EAAAN,EAAA,KACAnJ,EAAAkJ,EAAAlJ,EAAAF,EAAAC,EAAAlR,EAAAmb,EAAA,GAAAb,EAAA,KACAta,EAAAqa,EAAAra,EAAAmR,EAAAF,EAAAC,EAAAwK,EAAA,GAAApB,EAAA,KACApJ,EAAAmJ,EAAAnJ,EAAAlR,EAAAmR,EAAAF,EAAAgK,EAAA,GAAAX,EAAA,KACArJ,EAAAoJ,EAAApJ,EAAAC,EAAAlR,EAAAmR,EAAAqK,EAAA,EAAAlB,EAAA,KACAnJ,EAAAkJ,EAAAlJ,EAAAF,EAAAC,EAAAlR,EAAA+a,EAAA,GAAAT,EAAA,KACAta,EAAAqa,EAAAra,EAAAmR,EAAAF,EAAAC,EAAAoK,EAAA,GAAAhB,EAAA,KACApJ,EAAAmJ,EAAAnJ,EAAAlR,EAAAmR,EAAAF,EAAA4J,EAAA,GAAAP,EAAA,KACArJ,EAAAoJ,EAAApJ,EAAAC,EAAAlR,EAAAmR,EAAAiK,EAAA,EAAAd,EAAA,KACAnJ,EAAAkJ,EAAAlJ,EAAAF,EAAAC,EAAAlR,EAAA2b,EAAA,GAAArB,EAAA,KACAta,EAAAqa,EAAAra,EAAAmR,EAAAF,EAAAC,EAAAgK,EAAA,GAAAZ,EAAA,KACApJ,EAAAmJ,EAAAnJ,EAAAlR,EAAAmR,EAAAF,EAAAwK,EAAA,GAAAnB,EAAA,KACArJ,EAAAoJ,EAAApJ,EAAAC,EAAAlR,EAAAmR,EAAA6J,EAAA,EAAAV,EAAA,KACAnJ,EAAAkJ,EAAAlJ,EAAAF,EAAAC,EAAAlR,EAAAub,EAAA,GAAAjB,EAAA,KACAta,EAAAqa,EAAAra,EAAAmR,EAAAF,EAAAC,EAAA4J,EAAA,GAAAR,EAAA,KACApJ,EAAAmJ,EAAAnJ,EAAAlR,EAAAmR,EAAAF,EAAAoK,EAAA,GAAAf,EAAA,KAGAtJ,EAAA,GAAAA,EAAA,GAAAC,EAAA,EACAD,EAAA,GAAAA,EAAA,GAAAE,EAAA,EACAF,EAAA,GAAAA,EAAA,GAAAhR,EAAA,EACAgR,EAAA,GAAAA,EAAA,GAAAG,EAAA,GAGAV,YAAA,WAEA,GAAA3K,GAAAvG,KAAA4P,MACAK,EAAA1J,EAAA4D,MAEA4H,EAAA,EAAA/R,KAAA6P,YACAmC,EAAA,EAAAzL,EAAAqE,QAGAqF,GAAA+B,IAAA,YAAAA,EAAA,EAEA,IAAAqK,GAAA5R,EAAAwH,MAAAF,EAAA,YACAuK,EAAAvK,CACA9B,IAAA+B,EAAA,eACA,UAAAqK,GAAA,EAAAA,IAAA,IACA,YAAAA,GAAA,GAAAA,IAAA,GAEApM,GAAA+B,EAAA,eACA,UAAAsK,GAAA,EAAAA,IAAA,IACA,YAAAA,GAAA,GAAAA,IAAA,GAGA/V,EAAAqE,SAAA,GAAAqF,EAAAtO,OAAA,GAGA3B,KAAA+P,UAOA,QAJAkB,GAAAjR,KAAAuR,MACAE,EAAAR,EAAA9G,MAGAzI,EAAA,EAA4BA,EAAA,EAAOA,IAAA,CAEnC,GAAA6a,GAAA9K,EAAA/P,EAEA+P,GAAA/P,GAAA,UAAA6a,GAAA,EAAAA,IAAA,IACA,YAAAA,GAAA,GAAAA,IAAA,GAIA,MAAAtL,IAGAxD,MAAA,WACA,GAAAA,GAAAqD,EAAArD,MAAAlN,KAAAP,KAGA,OAFAyN,GAAA8D,MAAAvR,KAAAuR,MAAA9D,QAEAA,IAsCA1C,GAAAmQ,IAAApK,EAAAK,cAAA+J,GAgBAnQ,EAAAyR,QAAA1L,EAAAO,kBAAA6J,IACEzQ,MAGFK,EAAAoQ,Ofi0FM,SAASrb,EAAQD,EAASM,IgB1kG/B,SAAAR,EAAAC,EAAAkL,GAGDhL,EAAAD,UAAAD,EAAAO,EAAA,GAAAA,EAAA,GAAAA,EAAA,KAUCF,KAAA,SAAA8K,GAoHD,MAlHA,YAEA,GAAAC,GAAAD,EACAE,EAAAD,EAAAE,IACAC,EAAAF,EAAAE,KACAC,EAAAH,EAAAG,UACAC,EAAAL,EAAAM,KACA6P,EAAA9P,EAAA8P,IAMAuB,EAAArR,EAAAqR,OAAAvR,EAAAO,QAQAC,IAAAR,EAAAO,QACAhC,QAAA,EACAkC,OAAAuP,EACAtP,WAAA,IAcAlH,KAAA,SAAAgH,GACA1L,KAAA0L,IAAA1L,KAAA0L,IAAAD,OAAAC,IAeAG,QAAA,SAAAC,EAAAzC,GAgBA,IAdA,GAAAqC,GAAA1L,KAAA0L,IAGAC,EAAAD,EAAAC,OAAAK,SAGAC,EAAAd,EAAAa,SAGAG,EAAAF,EAAA9B,MACAV,EAAAiC,EAAAjC,QACAmC,EAAAF,EAAAE,WAGAO,EAAAxK,OAAA8H,GAAA,CACA4C,GACAV,EAAAW,OAAAD,EAEA,IAAAA,GAAAV,EAAAW,OAAAR,GAAAS,SAAAlD,EACAsC,GAAAa,OAGA,QAAA9K,GAAA,EAAgCA,EAAAkK,EAAgBlK,IAChD2K,EAAAV,EAAAY,SAAAF,GACAV,EAAAa,OAGAP,GAAAa,OAAAT,GAIA,MAFAJ,GAAArB,SAAA,EAAAnB,EAEAwC,IAqBAlB,GAAA0R,OAAA,SAAA3Q,EAAAzC,EAAAqC,GACA,MAAA+Q,GAAAzQ,OAAAN,GAAAG,QAAAC,EAAAzC,OAKAyB,EAAA2R,UhBklGM,SAAS5c,EAAQD,EAASM,IiBntG/B,SAAAR,EAAAC,GAGDE,EAAAD,UAAAD,EAAAO,EAAA,KAUCF,KAAA,SAAA8K,GAKDA,EAAAG,IAAAyR,QAAA,SAAArU,GAEA,GAAA0C,GAAAD,EACAE,EAAAD,EAAAE,IACAC,EAAAF,EAAAE,KACAC,EAAAH,EAAAG,UACAwE,EAAA3E,EAAA2E,uBACApB,EAAAxD,EAAA9G,IAEAN,GADA4K,EAAAc,KACAd,EAAA5K,QACAyH,EAAAL,EAAAM,KACAoR,EAAArR,EAAAqR,OAUAC,EAAA1R,EAAA0R,OAAA/M,EAAAlE,QAMAC,IAAAR,EAAAO,SAgBAkR,gBAAA,SAAA3a,EAAA0J,GACA,MAAA1L,MAAAgM,OAAAhM,KAAA4c,gBAAA5a,EAAA0J,IAiBAmR,gBAAA,SAAA7a,EAAA0J,GACA,MAAA1L,MAAAgM,OAAAhM,KAAA8c,gBAAA9a,EAAA0J,IAcAhH,KAAA,SAAAqY,EAAA/a,EAAA0J,GAEA1L,KAAA0L,IAAA1L,KAAA0L,IAAAD,OAAAC,GAGA1L,KAAAgd,WAAAD,EACA/c,KAAAsY,KAAAtW,EAGAhC,KAAAwM,SAUAA,MAAA,WAEAmD,EAAAnD,MAAAjM,KAAAP,MAGAA,KAAA+Q,YAeAkM,QAAA,SAAAC,GAKA,MAHAld,MAAA8P,QAAAoN,GAGAld,KAAA+P,YAiBAxD,SAAA,SAAA2Q,GAEAA,GACAld,KAAA8P,QAAAoN,EAIA,IAAAC,GAAAnd,KAAAkR,aAEA,OAAAiM,IAGA1T,QAAA,EAEA2T,OAAA,EAEAR,gBAAA,EAEAE,gBAAA,EAeA3L,cAAA,WACA,QAAAkM,GAAArb,GACA,sBAAAA,GACAsb,EAEAC,EAIA,gBAAAC,GACA,OACA9U,QAAA,SAAA0I,EAAApP,EAAA0J,GACA,MAAA2R,GAAArb,GAAA0G,QAAA8U,EAAApM,EAAApP,EAAA0J,IAGA3E,QAAA,SAAA0W,EAAAzb,EAAA0J,GACA,MAAA2R,GAAArb,GAAA+E,QAAAyW,EAAAC,EAAAzb,EAAA0J,WA0BAgS,GAdA1S,EAAA2S,aAAAjB,EAAAjR,QACAyF,YAAA,WAEA,GAAA0M,GAAA5d,KAAA+P,UAAA,EAEA,OAAA6N,IAGAzN,UAAA,IAMApF,EAAA8S,SAKAC,EAAA9S,EAAA8S,gBAAA5S,EAAAO,QAaAkR,gBAAA,SAAAa,EAAAO,GACA,MAAA/d,MAAAge,UAAAhS,OAAAwR,EAAAO,IAeAlB,gBAAA,SAAAW,EAAAO,GACA,MAAA/d,MAAAie,UAAAjS,OAAAwR,EAAAO,IAaArZ,KAAA,SAAA8Y,EAAAO,GACA/d,KAAAke,QAAAV,EACAxd,KAAAme,IAAAJ,KAOAK,EAAAV,EAAAU,IAAA,WAiEA,QAAAC,GAAAlU,EAAAwG,EAAAR,GAEA,GAAA4N,GAAA/d,KAAAme,GAGA,IAAAJ,EAAA,CACA,GAAA1R,GAAA0R,CAGA/d,MAAAme,IAAA9V,MAEA,IAAAgE,GAAArM,KAAAse,UAIA,QAAA5c,GAAA,EAA4BA,EAAAyO,EAAezO,IAC3CyI,EAAAwG,EAAAjP,IAAA2K,EAAA3K,GA7EA,GAAA0c,GAAAN,EAAArS,QAiFA,OA5EA2S,GAAAJ,UAAAI,EAAA3S,QAWA8S,aAAA,SAAApU,EAAAwG,GAEA,GAAA6M,GAAAxd,KAAAke,QACA/N,EAAAqN,EAAArN,SAGAkO,GAAA9d,KAAAP,KAAAmK,EAAAwG,EAAAR,GACAqN,EAAAxE,aAAA7O,EAAAwG,GAGA3Q,KAAAse,WAAAnU,EAAAiE,MAAAuC,IAAAR,MAOAiO,EAAAH,UAAAG,EAAA3S,QAWA8S,aAAA,SAAApU,EAAAwG,GAEA,GAAA6M,GAAAxd,KAAAke,QACA/N,EAAAqN,EAAArN,UAGAqO,EAAArU,EAAAiE,MAAAuC,IAAAR,EAGAqN,GAAAtE,aAAA/O,EAAAwG,GACA0N,EAAA9d,KAAAP,KAAAmK,EAAAwG,EAAAR,GAGAnQ,KAAAse,WAAAE,KAwBAJ,KAMAK,EAAA1T,EAAA2T,OAKAC,EAAAF,EAAAE,OAaAD,IAAA,SAAAnY,EAAA4J,GAYA,OAVAC,GAAA,EAAAD,EAGAyO,EAAAxO,EAAA7J,EAAAqE,SAAAwF,EAGAyO,EAAAD,GAAA,GAAAA,GAAA,GAAAA,GAAA,EAAAA,EAGAE,KACApd,EAAA,EAA4BA,EAAAkd,EAAmBld,GAAA,EAC/Cod,EAAAhV,KAAA+U,EAEA,IAAAE,GAAA5T,EAAAa,OAAA8S,EAAAF,EAGArY,GAAAuG,OAAAiS,IAcAC,MAAA,SAAAzY,GAEA,GAAAqY,GAAA,IAAArY,EAAA4D,MAAA5D,EAAAqE,SAAA,MAGArE,GAAAqE,UAAAgU,IAoFAK,GA3EAjU,EAAAkM,YAAAwF,EAAAjR,QAOAC,IAAAgR,EAAAhR,IAAAD,QACAoS,KAAAO,EACAW,QAAAJ,IAGAnS,MAAA,WAEAkQ,EAAAlQ,MAAAjM,KAAAP,KAGA,IAAA0L,GAAA1L,KAAA0L,IACAqS,EAAArS,EAAAqS,GACAF,EAAAnS,EAAAmS,IAGA,IAAA7d,KAAAgd,YAAAhd,KAAA4c,gBACA,GAAAsC,GAAArB,EAAAlB,oBACc,CACd,GAAAuC,GAAArB,EAAAhB,eAGA7c,MAAAuQ,eAAA,EAEAvQ,KAAAmf,MAAAD,EAAA3e,KAAAsd,EAAA7d,KAAA+d,KAAA5T,QAGAyG,gBAAA,SAAAzG,EAAAwG,GACA3Q,KAAAmf,MAAAZ,aAAApU,EAAAwG,IAGAO,YAAA,WAEA,GAAA6N,GAAA/e,KAAA0L,IAAAqT,OAGA,IAAA/e,KAAAgd,YAAAhd,KAAA4c,gBAAA,CAEAmC,EAAAL,IAAA1e,KAAA4P,MAAA5P,KAAAmQ,UAGA,IAAAyN,GAAA5d,KAAA+P,UAAA,OACc,CAEd,GAAA6N,GAAA5d,KAAA+P,UAAA,EAGAgP,GAAAC,MAAApB,GAGA,MAAAA,IAGAzN,UAAA,IAgBAnF,EAAAiU,aAAA/T,EAAAO,QAoBA/G,KAAA,SAAA0a,GACApf,KAAAkN,MAAAkS,IAkBApY,SAAA,SAAAqY,GACA,OAAAA,GAAArf,KAAAqf,WAAA7W,UAAAxI,UAOAsf,EAAAvU,EAAAwU,UAKAC,EAAAF,EAAAG,SAcAjX,UAAA,SAAA4W,GAEA,GAAA3B,GAAA2B,EAAA3B,WACApU,EAAA+V,EAAA/V,IAGA,IAAAA,EACA,GAAAuE,GAAAzC,EAAAa,QAAA,wBAAAc,OAAAzD,GAAAyD,OAAA2Q,OAEA,IAAA7P,GAAA6P,CAGA,OAAA7P,GAAA5G,SAAArD,IAgBAwD,MAAA,SAAAuY,GAEA,GAAAjC,GAAA9Z,EAAAwD,MAAAuY,GAGAC,EAAAlC,EAAAtT,KAGA,gBAAAwV,EAAA,gBAAAA,EAAA,IAEA,GAAAtW,GAAA8B,EAAAa,OAAA2T,EAAAvR,MAAA,KAGAuR,GAAA3V,OAAA,KACAyT,EAAA7S,UAAA,GAGA,MAAAqU,GAAAjT,QAAyCyR,aAAApU,WAOzCkU,EAAAvS,EAAAuS,mBAAArS,EAAAO,QAMAC,IAAAR,EAAAO,QACA8T,OAAAC,IAqBA9W,QAAA,SAAA8U,EAAApM,EAAApP,EAAA0J,GAEAA,EAAA1L,KAAA0L,IAAAD,OAAAC,EAGA,IAAAkU,GAAApC,EAAAb,gBAAA3a,EAAA0J,GACA+R,EAAAmC,EAAArT,SAAA6E,GAGAyO,EAAAD,EAAAlU,GAGA,OAAAuT,GAAAjT,QACAyR,aACAzb,MACA+b,GAAA8B,EAAA9B,GACA+B,UAAAtC,EACAK,KAAAgC,EAAAhC,KACAkB,QAAAc,EAAAd,QACA5O,UAAAqN,EAAArN,UACAkP,UAAA3T,EAAA6T,UAqBAxY,QAAA,SAAAyW,EAAAC,EAAAzb,EAAA0J,GAEAA,EAAA1L,KAAA0L,IAAAD,OAAAC,GAGA+R,EAAAzd,KAAA+f,OAAAtC,EAAA/R,EAAA6T,OAGA,IAAAS,GAAAxC,EAAAX,gBAAA7a,EAAA0J,GAAAa,SAAAkR,aAEA,OAAAuC,IAkBAD,OAAA,SAAAtC,EAAA8B,GACA,sBAAA9B,GACA8B,EAAApY,MAAAsW,EAAAzd,MAEAyd,KAQAwC,EAAAlV,EAAAmV,OAKAC,EAAAF,EAAAR,SAkBAW,QAAA,SAAAtU,EAAArC,EAAA2T,EAAA/T,GAEAA,IACAA,EAAA8B,EAAA5B,OAAA,GAIA,IAAAvH,GAAAya,EAAAzQ,QAAsCvC,UAAA2T,IAA4BvR,QAAAC,EAAAzC,GAGlE0U,EAAA5S,EAAAa,OAAAhK,EAAAmI,MAAAiE,MAAA3E,GAAA,EAAA2T,EAIA,OAHApb,GAAA4I,SAAA,EAAAnB,EAGAwV,EAAAjT,QAAyChK,MAAA+b,KAAA1U,WAQzCiU,EAAAtS,EAAAsS,oBAAAC,EAAA9R,QAMAC,IAAA6R,EAAA7R,IAAAD,QACAyU,IAAAC,IAoBAzX,QAAA,SAAA8U,EAAApM,EAAAtF,EAAAJ,GAEAA,EAAA1L,KAAA0L,IAAAD,OAAAC,EAGA,IAAA2U,GAAA3U,EAAAwU,IAAAE,QAAAtU,EAAA0R,EAAA/T,QAAA+T,EAAAJ,OAGA1R,GAAAqS,GAAAsC,EAAAtC,EAGA,IAAAN,GAAAF,EAAA7U,QAAAnI,KAAAP,KAAAwd,EAAApM,EAAAiP,EAAAre,IAAA0J,EAKA,OAFA+R,GAAAvQ,MAAAmT,GAEA5C,GAoBA1W,QAAA,SAAAyW,EAAAC,EAAA3R,EAAAJ,GAEAA,EAAA1L,KAAA0L,IAAAD,OAAAC;AAGA+R,EAAAzd,KAAA+f,OAAAtC,EAAA/R,EAAA6T,OAGA,IAAAc,GAAA3U,EAAAwU,IAAAE,QAAAtU,EAAA0R,EAAA/T,QAAA+T,EAAAJ,OAAAK,EAAApU,KAGAqC,GAAAqS,GAAAsC,EAAAtC,EAGA,IAAAiC,GAAAzC,EAAAxW,QAAAxG,KAAAP,KAAAwd,EAAAC,EAAA4C,EAAAre,IAAA0J,EAEA,OAAAsU,YjB+tGM,SAASngB,EAAQD,EAASM,IkBnkI/B,SAAAR,EAAAC,EAAAkL,GAGDhL,EAAAD,UAAAD,EAAAO,EAAA,GAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,MAUCF,KAAA,SAAA8K,GAkvBD,MAhvBA,YA4qBA,QAAAwV,GAAA3P,EAAApG,GACA,GAAAuH,IAAA9R,KAAAugB,UAAA5P,EAAA3Q,KAAAwgB,SAAAjW,CACAvK,MAAAwgB,SAAA1O,EACA9R,KAAAugB,SAAAzO,GAAAnB,EAGA,QAAA8P,GAAA9P,EAAApG,GACA,GAAAuH,IAAA9R,KAAAwgB,UAAA7P,EAAA3Q,KAAAugB,SAAAhW,CACAvK,MAAAugB,SAAAzO,EACA9R,KAAAwgB,SAAA1O,GAAAnB,EAnrBA,GAAA5F,GAAAD,EACAE,EAAAD,EAAAE,IACAE,EAAAH,EAAAG,UACA+L,EAAAlM,EAAAkM,YACA9L,EAAAL,EAAAM,KAGAqV,GACA,sBACA,uBACA,uBACA,wBACA,uBACA,uBACA,uBAIAC,GACA,gBACA,gBACA,gBACA,gBACA,kBACA,kBACA,kBACA,mBAIAC,GAAA,4CAGAC,IAEAC,EAAA,QACAC,UAAA,MACAC,UAAA,QACAC,UAAA,EACAC,WAAA,IACAC,WAAA,QACAC,WAAA,QACAC,WAAA,QACAC,WAAA,IACAC,WAAA,QACAC,WAAA,MACAC,WAAA,QACAC,WAAA,MACAC,WAAA,QACAC,WAAA,EACAC,WAAA,MACAC,UAAA,EACAC,UAAA,QACAC,UAAA,MACAC,UAAA,MACAC,WAAA,QACAC,WAAA,IACAC,WAAA,QACAC,WAAA,EACAC,WAAA,QACAC,WAAA,MACAC,WAAA,QACAC,WAAA,QACAC,WAAA,QACAC,WAAA,MACAC,WAAA,IACAC,WAAA,QACAC,EAAA,MACAC,UAAA,EACAC,UAAA,QACAC,UAAA,QACAC,WAAA,QACAC,WAAA,MACAC,WAAA,IACAC,WAAA,QACAC,WAAA,QACAC,WAAA,QACAC,WAAA,QACAC,WAAA,MACAC,WAAA,IACAC,WAAA,QACAC,WAAA,MACAC,WAAA,EACAC,UAAA,QACAC,UAAA,QACAC,UAAA,QACAC,UAAA,IACAC,WAAA,MACAC,WAAA,QACAC,WAAA,EACAC,WAAA,MACAC,WAAA,MACAC,WAAA,QACAC,WAAA,IACAC,WAAA,QACAC,WAAA,QACAC,WAAA,EACAC,WAAA,MACAC,WAAA,UAGA/D,EAAA,WACAgE,SAAA,MACAC,SAAA,OACAC,SAAA,WACAC,SAAA,WACAC,SAAA,WACAC,UAAA,WACAC,UAAA,GACAtD,UAAA,OACAuD,UAAA,WACAC,UAAA,WACAC,UAAA,OACAC,UAAA,OACAC,UAAA,EACAC,UAAA,MACAC,UAAA,WACAC,QAAA,WACAC,SAAA,OACAC,SAAA,GACAC,SAAA,WACAC,SAAA,WACAC,SAAA,WACAC,UAAA,OACAC,UAAA,WACAC,UAAA,OACAC,UAAA,EACAC,UAAA,MACAC,UAAA,WACAC,UAAA,WACAC,UAAA,OACAC,UAAA,WACAC,UAAA,MACA5F,UAAA,EACA6F,UAAA,WACAC,UAAA,WACAC,UAAA,WACAC,UAAA,WACAC,UAAA,GACAC,UAAA,OACAC,UAAA,MACAnF,UAAA,MACAoF,UAAA,OACAC,UAAA,OACAC,UAAA,WACAC,UAAA,OACAC,UAAA,WACAC,UAAA,WACAC,UAAA,WACAC,UAAA,OACAC,UAAA,OACAC,UAAA,WACAC,UAAA,MACAC,UAAA,WACAC,UAAA,WACAC,UAAA,GACAC,UAAA,WACAC,UAAA,WACAC,UAAA,WACAC,UAAA,WACAC,UAAA,OACAC,UAAA,EACAC,UAAA,MACAC,UAAA,WACAC,UAAA,SAGA3H,EAAA,IACA4H,QAAA,EACAC,QAAA,SACAC,QAAA,MACAC,QAAA,MACAC,QAAA,SACAC,QAAA,SACAC,QAAA,SACApD,QAAA,SACAqD,QAAA,SACAC,SAAA,MACAC,SAAA,SACAC,SAAA,SACAC,SAAA,MACAC,SAAA,EACAC,SAAA,IACAC,OAAA,SACAC,QAAA,SACAC,QAAA,EACAC,QAAA,SACAC,QAAA,SACAC,QAAA,MACAC,QAAA,MACAC,QAAA,IACAC,QAAA,EACAC,QAAA,IACAC,SAAA,SACAC,SAAA,MACAC,SAAA,MACAC,SAAA,SACAC,SAAA,SACAC,SAAA,SACAzF,SAAA,SACA0F,SAAA,MACAC,SAAA,MACAC,SAAA,SACAC,SAAA,IACAC,SAAA,SACAC,SAAA,SACAC,SAAA,EACAjF,SAAA,SACAkF,SAAA,SACAC,SAAA,EACAC,SAAA,MACAC,SAAA,SACAC,SAAA,IACAC,SAAA,MACAC,SAAA,SACAC,SAAA,SACAC,SAAA,IACAC,SAAA,SACAC,SAAA,EACAC,SAAA,MACAC,SAAA,SACAC,SAAA,IACAC,SAAA,SACAC,SAAA,MACAC,SAAA,SACAC,SAAA,MACAC,SAAA,SACAC,SAAA,SACAC,SAAA,SACAC,SAAA,EACAC,SAAA,QAGAvL,EAAA,WACAwL,MAAA,WACAC,OAAA,QACAC,OAAA,WACAC,OAAA,EACAC,OAAA,QACAC,OAAA,WACAC,OAAA,QACApD,OAAA,WACAqD,OAAA,QACAC,OAAA,GACAC,OAAA,WACAC,OAAA,WACAC,OAAA,KACAC,OAAA,KACAC,OAAA,WACAC,MAAA,WACAC,MAAA,GACAC,OAAA,WACAC,OAAA,WACAC,OAAA,QACAC,OAAA,WACAC,OAAA,EACAC,OAAA,WACAC,OAAA,KACAC,OAAA,WACAC,OAAA,QACAC,OAAA,KACAC,OAAA,WACAC,OAAA,QACAC,OAAA,QACAC,QAAA,WACAzF,QAAA,QACA0F,QAAA,QACAC,QAAA,WACAC,QAAA,EACAC,QAAA,KACAC,QAAA,WACAC,QAAA,WACAC,QAAA,WACAjF,QAAA,WACAkF,QAAA,WACAC,QAAA,WACAC,QAAA,QACAC,QAAA,WACAC,QAAA,QACAC,QAAA,GACAC,QAAA,KACAC,QAAA,WACAC,QAAA,WACAC,QAAA,EACAC,QAAA,QACAC,QAAA,QACAC,QAAA,WACAC,QAAA,WACAC,QAAA,GACAC,QAAA,WACAC,QAAA,KACAC,QAAA,WACAC,QAAA,WACAC,QAAA,KACAC,QAAA,WACAC,QAAA,QACAC,QAAA,UAGAnP,EAAA,IACAoP,KAAA,SACAC,KAAA,OACAC,MAAA,UACAC,MAAA,UACAC,MAAA,SACAC,MAAA,UACAC,MAAA,OACApD,MAAA,SACAqD,MAAA,UACAC,MAAA,UACAC,MAAA,UACAC,MAAA,UACAC,MAAA,EACAC,MAAA,SACAC,MAAA,UACAC,KAAA,SACAC,KAAA,UACAC,MAAA,IACAC,MAAA,SACAC,MAAA,OACAC,MAAA,UACAC,MAAA,UACAC,MAAA,UACAC,MAAA,UACAC,MAAA,EACAC,MAAA,UACAC,MAAA,SACAC,MAAA,UACAC,MAAA,UACAC,MAAA,SACAC,MAAA,OACAzF,MAAA,OACA0F,MAAA,IACAC,MAAA,UACAC,MAAA,UACAC,MAAA,SACAC,MAAA,UACAC,MAAA,UACAC,MAAA,SACAjF,MAAA,UACAkF,OAAA,UACAC,OAAA,SACAC,OAAA,UACAC,OAAA,OACAC,OAAA,UACAC,OAAA,EACAC,OAAA,SACAC,MAAA,UACAC,MAAA,SACAC,MAAA,SACAC,MAAA,UACAC,MAAA,UACAC,MAAA,SACAC,MAAA,IACAC,MAAA,UACAC,OAAA,OACAC,OAAA,UACAC,OAAA,EACAC,OAAA,UACAC,OAAA,SACAC,OAAA,OACAC,OAAA,UACAC,OAAA,YAGA/S,EAAA,UACAgT,IAAA,KACAC,IAAA,UACAC,IAAA,UACAC,KAAA,UACAC,KAAA,QACAC,KAAA,QACAC,KAAA,UACApD,KAAA,EACAqD,KAAA,UACAC,KAAA,QACAC,KAAA,EACAC,KAAA,UACAC,KAAA,QACAC,KAAA,KACAC,KAAA,UACAC,IAAA,UACAC,IAAA,UACAC,IAAA,EACAC,IAAA,QACAC,KAAA,QACAC,KAAA,UACAC,KAAA,UACAC,KAAA,KACAC,KAAA,QACAC,KAAA,KACAC,KAAA,UACAC,KAAA,UACAC,KAAA,EACAC,KAAA,UACAC,KAAA,QACAC,KAAA,UACAzF,KAAA,UACA0F,KAAA,UACAC,KAAA,UACAC,KAAA,KACAC,KAAA,QACAC,KAAA,UACAC,KAAA,UACAC,KAAA,QACAjF,KAAA,QACAkF,KAAA,EACAC,KAAA,EACAC,KAAA,UACAC,KAAA,KACAC,KAAA,UACAC,KAAA,UACAC,KAAA,QACAC,KAAA,EACAC,KAAA,QACAC,KAAA,QACAC,KAAA,UACAC,KAAA,UACAC,KAAA,KACAC,KAAA,UACAC,KAAA,UACAC,KAAA,UACAC,KAAA,UACAC,KAAA,KACAC,KAAA,QACAC,KAAA,QACAC,KAAA,EACAC,KAAA,UACAC,KAAA,YAGA3W,EAAA,QACA4W,GAAA,SACAC,GAAA,KACAC,GAAA,QACAC,GAAA,SACAC,GAAA,EACAC,GAAA,EACAC,IAAA,SACApD,IAAA,SACAqD,IAAA,QACAC,IAAA,SACAC,IAAA,SACAC,IAAA,SACAC,IAAA,KACAC,IAAA,QACAC,IAAA,SACAC,EAAA,SACAC,GAAA,EACAC,GAAA,SACAC,GAAA,SACAC,GAAA,QACAC,GAAA,SACAC,IAAA,SACAC,IAAA,KACAC,IAAA,QACAC,IAAA,SACAC,IAAA,SACAC,IAAA,QACAC,IAAA,KACAC,IAAA,SACAC,IAAA,EACAC,IAAA,QACAzF,IAAA,SACA0F,IAAA,QACAC,IAAA,SACAC,IAAA,SACAC,IAAA,QACAC,IAAA,SACAC,IAAA,SACAC,IAAA,QACAjF,IAAA,KACAkF,IAAA,SACAC,IAAA,QACAC,IAAA,EACAC,IAAA,EACAC,IAAA,SACAC,IAAA,SACAC,IAAA,KACAC,IAAA,QACAC,IAAA,SACAC,IAAA,SACAC,IAAA,EACAC,IAAA,SACAC,IAAA,QACAC,IAAA,KACAC,IAAA,SACAC,IAAA,SACAC,IAAA,SACAC,IAAA,EACAC,IAAA,SACAC,IAAA,QACAC,IAAA,KACAC,IAAA,SACAC,IAAA,UAGAva,EAAA,UACAgC,EAAA,OACAwY,EAAA,UACAC,EAAA,GACAC,EAAA,OACAC,EAAA,UACAC,EAAA,UACAC,EAAA,KACAnD,EAAA,UACAoD,EAAA,UACAC,GAAA,OACAC,GAAA,UACAC,GAAA,KACAC,GAAA,EACAC,GAAA,UACAC,GAAA,OACA5a,WAAA,KACAgC,WAAA,UACA6Y,WAAA,UACAC,WAAA,UACAC,WAAA,UACAC,WAAA,OACAC,WAAA,OACAC,WAAA,GACAC,WAAA,UACAC,WAAA,KACAC,WAAA,OACAC,WAAA,UACAC,WAAA,EACAC,WAAA,UACAC,WAAA,UACAC,WAAA,OACAtF,GAAA,OACAuF,GAAA,UACAC,GAAA,GACAC,GAAA,KACAC,GAAA,UACAC,GAAA,UACAC,GAAA,UACAC,GAAA,OACA9E,GAAA,EACA+E,GAAA,OACAC,GAAA,UACAC,GAAA,UACAC,GAAA,UACAC,GAAA,OACAC,GAAA,KACAC,GAAA,UACAC,WAAA,OACAC,WAAA,KACAC,WAAA,UACAC,WAAA,OACAC,WAAA,GACAC,WAAA,UACAC,WAAA,UACAC,WAAA,UACAC,WAAA,UACAC,WAAA,UACAC,WAAA,UACAC,WAAA,EACAC,WAAA,OACAC,WAAA,KACAC,WAAA,OACAC,WAAA,YAKAC,GACA,sCACA,4BAMAj7B,EAAAsH,EAAAtH,IAAAoT,EAAAzL,QACAsF,SAAA,WAOA,OALA/O,GAAAhC,KAAAsY,KACAC,EAAAvW,EAAAmI,MAGA60B,KACAt9B,EAAA,EAA4BA,EAAA,GAAQA,IAAA,CACpC,GAAAu9B,GAAAve,EAAAhf,GAAA,CACAs9B,GAAAt9B,GAAA6W,EAAA0mB,IAAA,QAAAA,EAAA,KAKA,OADAC,GAAAl/B,KAAAm/B,YACAC,EAAA,EAAkCA,EAAA,GAAcA,IAAA,CAQhD,OANAC,GAAAH,EAAAE,MAGAE,EAAA1e,EAAAwe,GAGA19B,EAAA,EAAgCA,EAAA,GAAQA,IAExC29B,EAAA39B,EAAA,MAAAs9B,GAAAre,EAAAjf,GAAA,EAAA49B,GAAA,QAAA59B,EAAA,EAGA29B,EAAA,GAAA39B,EAAA,OAAAs9B,EAAA,IAAAre,EAAAjf,EAAA,MAAA49B,GAAA,QAAA59B,EAAA,CAMA29B,GAAA,GAAAA,EAAA,MAAAA,EAAA,OACA,QAAA39B,GAAA,EAAgCA,EAAA,EAAOA,IACvC29B,EAAA39B,GAAA29B,EAAA39B,KAAA,GAAAA,EAAA,IAEA29B,GAAA,GAAAA,EAAA,MAAAA,EAAA,QAKA,OADAE,GAAAv/B,KAAAw/B,eACA99B,EAAA,EAA4BA,EAAA,GAAQA,IACpC69B,EAAA79B,GAAAw9B,EAAA,GAAAx9B,IAIAsX,aAAA,SAAAxH,EAAAb,GACA3Q,KAAAiZ,cAAAzH,EAAAb,EAAA3Q,KAAAm/B,WAGAjmB,aAAA,SAAA1H,EAAAb,GACA3Q,KAAAiZ,cAAAzH,EAAAb,EAAA3Q,KAAAw/B,cAGAvmB,cAAA,SAAAzH,EAAAb,EAAAuuB,GAEAl/B,KAAAugB,QAAA/O,EAAAb,GACA3Q,KAAAwgB,QAAAhP,EAAAb,EAAA,GAGA2P,EAAA/f,KAAAP,KAAA,aACAsgB,EAAA/f,KAAAP,KAAA,UACAygB,EAAAlgB,KAAAP,KAAA,aACAygB,EAAAlgB,KAAAP,KAAA,YACAsgB,EAAA/f,KAAAP,KAAA,aAGA,QAAAuZ,GAAA,EAAgCA,EAAA,GAAYA,IAAA,CAQ5C,OANA8lB,GAAAH,EAAA3lB,GACAkmB,EAAAz/B,KAAAugB,QACAmf,EAAA1/B,KAAAwgB,QAGAxN,EAAA,EACAtR,EAAA,EAAgCA,EAAA,EAAOA,IACvCsR,GAAA6N,EAAAnf,KAAAg+B,EAAAL,EAAA39B,IAAAq9B,EAAAr9B,MAAA,EAEA1B,MAAAugB,QAAAmf,EACA1/B,KAAAwgB,QAAAif,EAAAzsB,EAIA,GAAAlB,GAAA9R,KAAAugB,OACAvgB,MAAAugB,QAAAvgB,KAAAwgB,QACAxgB,KAAAwgB,QAAA1O,EAGAwO,EAAA/f,KAAAP,KAAA,cACAygB,EAAAlgB,KAAAP,KAAA,YACAygB,EAAAlgB,KAAAP,KAAA,aACAsgB,EAAA/f,KAAAP,KAAA,UACAsgB,EAAA/f,KAAAP,KAAA,aAGAwR,EAAAb,GAAA3Q,KAAAugB,QACA/O,EAAAb,EAAA,GAAA3Q,KAAAwgB,SAGA/W,QAAA,EAEA2T,OAAA,EAEAjN,UAAA,GAwBApF,GAAAjH,IAAAoT,EAAA/F,cAAArN,EAKA,IAAA67B,GAAAv0B,EAAAu0B,UAAAzoB,EAAAzL,QACAsF,SAAA,WAEA,GAAA/O,GAAAhC,KAAAsY,KACAC,EAAAvW,EAAAmI,KAGAnK,MAAA4/B,MAAA97B,EAAA6Y,gBAAAxR,EAAAa,OAAAuM,EAAAnK,MAAA,OACApO,KAAA6/B,MAAA/7B,EAAA6Y,gBAAAxR,EAAAa,OAAAuM,EAAAnK,MAAA,OACApO,KAAA8/B,MAAAh8B,EAAA6Y,gBAAAxR,EAAAa,OAAAuM,EAAAnK,MAAA,QAGA4K,aAAA,SAAAxH,EAAAb,GACA3Q,KAAA4/B,MAAA5mB,aAAAxH,EAAAb,GACA3Q,KAAA6/B,MAAA3mB,aAAA1H,EAAAb,GACA3Q,KAAA8/B,MAAA9mB,aAAAxH,EAAAb,IAGAuI,aAAA,SAAA1H,EAAAb,GACA3Q,KAAA8/B,MAAA5mB,aAAA1H,EAAAb,GACA3Q,KAAA6/B,MAAA7mB,aAAAxH,EAAAb,GACA3Q,KAAA4/B,MAAA1mB,aAAA1H,EAAAb,IAGAlH,QAAA,EAEA2T,OAAA,EAEAjN,UAAA,GAWApF,GAAA40B,UAAAzoB,EAAA/F,cAAAwuB,MAIA70B,EAAA60B,alB2kIM,SAAS9/B,EAAQD,EAASM,ImB10J/B,SAAAR,EAAAC,EAAAkL,GAGDhL,EAAAD,UAAAD,EAAAO,EAAA,GAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,MAUCF,KAAA,SAAA8K,GAgLD,MA9KA,YAkHA,QAAAi1B,KAMA,OAJAC,GAAAhgC,KAAAigC,GACAl1B,EAAA/K,KAAAkgC,GAGAx+B,EAAA,EAAwBA,EAAA,EAAOA,IAC/By+B,EAAAz+B,GAAAqJ,EAAArJ,EAIAqJ,GAAA,GAAAA,EAAA,cAAA/K,KAAAogC,GAAA,EACAr1B,EAAA,GAAAA,EAAA,eAAAA,EAAA,OAAAo1B,EAAA,cACAp1B,EAAA,GAAAA,EAAA,cAAAA,EAAA,OAAAo1B,EAAA,cACAp1B,EAAA,GAAAA,EAAA,eAAAA,EAAA,OAAAo1B,EAAA,cACAp1B,EAAA,GAAAA,EAAA,eAAAA,EAAA,OAAAo1B,EAAA,cACAp1B,EAAA,GAAAA,EAAA,cAAAA,EAAA,OAAAo1B,EAAA,cACAp1B,EAAA,GAAAA,EAAA,eAAAA,EAAA,OAAAo1B,EAAA,cACAp1B,EAAA,GAAAA,EAAA,eAAAA,EAAA,OAAAo1B,EAAA,cACAngC,KAAAogC,GAAAr1B,EAAA,OAAAo1B,EAAA,UAGA,QAAAz+B,GAAA,EAAwBA,EAAA,EAAOA,IAAA,CAC/B,GAAA2+B,GAAAL,EAAAt+B,GAAAqJ,EAAArJ,GAGA4+B,EAAA,MAAAD,EACAE,EAAAF,IAAA,GAGAG,IAAAF,MAAA,IAAAA,EAAAC,IAAA,IAAAA,IACAE,IAAA,WAAAJ,KAAA,WAAAA,KAAA,EAGAK,GAAAh/B,GAAA8+B,EAAAC,EAIAT,EAAA,GAAAU,EAAA,IAAAA,EAAA,OAAAA,EAAA,UAAAA,EAAA,OAAAA,EAAA,WACAV,EAAA,GAAAU,EAAA,IAAAA,EAAA,MAAAA,EAAA,SAAAA,EAAA,KACAV,EAAA,GAAAU,EAAA,IAAAA,EAAA,OAAAA,EAAA,UAAAA,EAAA,OAAAA,EAAA,WACAV,EAAA,GAAAU,EAAA,IAAAA,EAAA,MAAAA,EAAA,SAAAA,EAAA,KACAV,EAAA,GAAAU,EAAA,IAAAA,EAAA,OAAAA,EAAA,UAAAA,EAAA,OAAAA,EAAA,WACAV,EAAA,GAAAU,EAAA,IAAAA,EAAA,MAAAA,EAAA,SAAAA,EAAA,KACAV,EAAA,GAAAU,EAAA,IAAAA,EAAA,OAAAA,EAAA,UAAAA,EAAA,OAAAA,EAAA,WACAV,EAAA,GAAAU,EAAA,IAAAA,EAAA,MAAAA,EAAA,SAAAA,EAAA,KA7JA,GAAA31B,GAAAD,EACAE,EAAAD,EAAAE,IACA0S,EAAA3S,EAAA2S,aACAvS,EAAAL,EAAAM,KAGAs1B,KACAR,KACAO,KAKAE,EAAAx1B,EAAAw1B,OAAAjjB,EAAAlS,QACAsF,SAAA,WAMA,OAJA8vB,GAAA7gC,KAAAsY,KAAAnO,MACA4T,EAAA/d,KAAA0L,IAAAqS,GAGArc,EAAA,EAA4BA,EAAA,EAAOA,IACnCm/B,EAAAn/B,GAAA,UAAAm/B,EAAAn/B,IAAA,EAAAm/B,EAAAn/B,KAAA,IACA,YAAAm/B,EAAAn/B,IAAA,GAAAm/B,EAAAn/B,KAAA,EAIA,IAAAs+B,GAAAhgC,KAAAigC,IACAY,EAAA,GAAAA,EAAA,OAAAA,EAAA,QACAA,EAAA,GAAAA,EAAA,OAAAA,EAAA,QACAA,EAAA,GAAAA,EAAA,OAAAA,EAAA,QACAA,EAAA,GAAAA,EAAA,OAAAA,EAAA,SAIA91B,EAAA/K,KAAAkgC,IACAW,EAAA,OAAAA,EAAA,mBAAAA,EAAA,SAAAA,EAAA,GACAA,EAAA,OAAAA,EAAA,mBAAAA,EAAA,SAAAA,EAAA,GACAA,EAAA,OAAAA,EAAA,mBAAAA,EAAA,SAAAA,EAAA,GACAA,EAAA,OAAAA,EAAA,mBAAAA,EAAA,SAAAA,EAAA,GAIA7gC,MAAAogC,GAAA,CAGA,QAAA1+B,GAAA,EAA4BA,EAAA,EAAOA,IACnCq+B,EAAAx/B,KAAAP,KAIA,QAAA0B,GAAA,EAA4BA,EAAA,EAAOA,IACnCqJ,EAAArJ,IAAAs+B,EAAAt+B,EAAA,IAIA,IAAAqc,EAAA,CAEA,GAAA+iB,GAAA/iB,EAAA5T,MACA42B,EAAAD,EAAA,GACAE,EAAAF,EAAA,GAGAG,EAAA,UAAAF,GAAA,EAAAA,IAAA,gBAAAA,GAAA,GAAAA,IAAA,GACAG,EAAA,UAAAF,GAAA,EAAAA,IAAA,gBAAAA,GAAA,GAAAA,IAAA,GACAG,EAAAF,IAAA,cAAAC,EACAE,EAAAF,GAAA,SAAAD,CAGAl2B,GAAA,IAAAk2B,EACAl2B,EAAA,IAAAo2B,EACAp2B,EAAA,IAAAm2B,EACAn2B,EAAA,IAAAq2B,EACAr2B,EAAA,IAAAk2B,EACAl2B,EAAA,IAAAo2B,EACAp2B,EAAA,IAAAm2B,EACAn2B,EAAA,IAAAq2B,CAGA,QAAA1/B,GAAA,EAAgCA,EAAA,EAAOA,IACvCq+B,EAAAx/B,KAAAP,QAKA4Q,gBAAA,SAAAY,EAAAb,GAEA,GAAAqvB,GAAAhgC,KAAAigC,EAGAF,GAAAx/B,KAAAP,MAGA2gC,EAAA,GAAAX,EAAA,GAAAA,EAAA,QAAAA,EAAA,OACAW,EAAA,GAAAX,EAAA,GAAAA,EAAA,QAAAA,EAAA,OACAW,EAAA,GAAAX,EAAA,GAAAA,EAAA,QAAAA,EAAA,OACAW,EAAA,GAAAX,EAAA,GAAAA,EAAA,QAAAA,EAAA,MAEA,QAAAt+B,GAAA,EAA4BA,EAAA,EAAOA,IAEnCi/B,EAAAj/B,GAAA,UAAAi/B,EAAAj/B,IAAA,EAAAi/B,EAAAj/B,KAAA,IACA,YAAAi/B,EAAAj/B,IAAA,GAAAi/B,EAAAj/B,KAAA,GAGA8P,EAAAb,EAAAjP,IAAAi/B,EAAAj/B,IAIAyO,UAAA,EAEAiN,OAAA,GA2DArS,GAAA61B,OAAAjjB,EAAAxM,cAAAyvB,MAIA91B,EAAA81B,UnBk1JM,SAAS/gC,EAAQD,EAASM,IoB/gK/B,SAAAR,EAAAC,EAAAkL,GAGDhL,EAAAD,UAAAD,EAAAO,EAAA,GAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,IAAAA,EAAA,MAUCF,KAAA,SAAA8K,GA2HD,MAzHA,YAiDA,QAAAu2B,KAQA,OANAV,GAAA3gC,KAAAshC,GACA5/B,EAAA1B,KAAAuhC,GACA10B,EAAA7M,KAAAwhC,GAGAC,EAAA,EACA5vB,EAAA,EAAwBA,EAAA,EAAOA,IAAA,CAC/BnQ,KAAA,OACAmL,KAAA8zB,EAAAj/B,IAAA,GAGA,IAAAoQ,GAAA6uB,EAAAj/B,EACAi/B,GAAAj/B,GAAAi/B,EAAA9zB,GACA8zB,EAAA9zB,GAAAiF,EAEA2vB,GAAAd,KAAAj/B,GAAAi/B,EAAA9zB,IAAA,WAAAgF,EAOA,MAHA7R,MAAAuhC,GAAA7/B,EACA1B,KAAAwhC,GAAA30B,EAEA40B,EAvEA,GAAA12B,GAAAD,EACAE,EAAAD,EAAAE,IACA0S,EAAA3S,EAAA2S,aACAvS,EAAAL,EAAAM,KAKArH,EAAAoH,EAAApH,IAAA2Z,EAAAlS,QACAsF,SAAA,WAQA,OANA/O,GAAAhC,KAAAsY,KACAC,EAAAvW,EAAAmI,MACAu3B,EAAA1/B,EAAA4I,SAGA+1B,EAAA3gC,KAAAshC,MACA5/B,EAAA,EAA4BA,EAAA,IAASA,IACrCi/B,EAAAj/B,IAIA,QAAAA,GAAA,EAAAmL,EAAA,EAAmCnL,EAAA,IAASA,IAAA,CAC5C,GAAAigC,GAAAjgC,EAAAggC,EACAE,EAAArpB,EAAAopB,IAAA,QAAAA,EAAA,OAEA90B,MAAA8zB,EAAAj/B,GAAAkgC,GAAA,GAGA,IAAA9vB,GAAA6uB,EAAAj/B,EACAi/B,GAAAj/B,GAAAi/B,EAAA9zB,GACA8zB,EAAA9zB,GAAAiF,EAIA9R,KAAAuhC,GAAAvhC,KAAAwhC,GAAA,GAGA5wB,gBAAA,SAAAY,EAAAb,GACAa,EAAAb,IAAA0wB,EAAA9gC,KAAAP,OAGAyJ,QAAA,EAEA2T,OAAA,GAsCArS,GAAA/G,IAAA2Z,EAAAxM,cAAAnN,EAKA,IAAA69B,GAAAz2B,EAAAy2B,QAAA79B,EAAAyH,QAMAC,IAAA1H,EAAA0H,IAAAD,QACAq2B,KAAA,MAGA/wB,SAAA,WACA/M,EAAA+M,SAAAxQ,KAAAP,KAGA,QAAA0B,GAAA1B,KAAA0L,IAAAo2B,KAAwCpgC,EAAA,EAAOA,IAC/C2/B,EAAA9gC,KAAAP,QAaA+K,GAAA82B,QAAAlkB,EAAAxM,cAAA0wB,MAIA/2B,EAAA9G","file":"secure-ls.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SecureLS\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SecureLS\"] = factory();\n\telse\n\t\troot[\"SecureLS\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SecureLS\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SecureLS\"] = factory();\n\telse\n\t\troot[\"SecureLS\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _utils = __webpack_require__(1);\n\t\n\tvar _utils2 = _interopRequireDefault(_utils);\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tvar _constants2 = _interopRequireDefault(_constants);\n\t\n\tvar _encUtf = __webpack_require__(8);\n\t\n\tvar _encUtf2 = _interopRequireDefault(_encUtf);\n\t\n\tvar _Base = __webpack_require__(9);\n\t\n\tvar _Base2 = _interopRequireDefault(_Base);\n\t\n\tvar _lzString = __webpack_require__(10);\n\t\n\tvar _lzString2 = _interopRequireDefault(_lzString);\n\t\n\tvar _aes = __webpack_require__(11);\n\t\n\tvar _aes2 = _interopRequireDefault(_aes);\n\t\n\tvar _tripledes = __webpack_require__(16);\n\t\n\tvar _tripledes2 = _interopRequireDefault(_tripledes);\n\t\n\tvar _rabbit = __webpack_require__(17);\n\t\n\tvar _rabbit2 = _interopRequireDefault(_rabbit);\n\t\n\tvar _rc = __webpack_require__(18);\n\t\n\tvar _rc2 = _interopRequireDefault(_rc);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar SecureLS = function () {\n\t function SecureLS(config) {\n\t _classCallCheck(this, SecureLS);\n\t\n\t config = config || {};\n\t this._name = 'secure-ls';\n\t this.utils = _utils2.default;\n\t this.constants = _constants2.default;\n\t this.Base64 = _Base2.default;\n\t this.LZString = _lzString2.default;\n\t this.AES = _aes2.default;\n\t this.DES = _tripledes2.default;\n\t this.RABBIT = _rabbit2.default;\n\t this.RC4 = _rc2.default;\n\t this.enc = _encUtf2.default;\n\t\n\t this.config = {\n\t isCompression: true,\n\t encodingType: _constants2.default.EncrytionTypes.BASE64\n\t };\n\t this.config.isCompression = typeof config.isCompression !== 'undefined' ? config.isCompression : true;\n\t this.config.encodingType = typeof config.encodingType !== 'undefined' || config.encodingType === '' ? config.encodingType.toLowerCase() : _constants2.default.EncrytionTypes.BASE64;\n\t this.config.encryptionSecret = config.encryptionSecret;\n\t\n\t this.ls = localStorage;\n\t this.init();\n\t }\n\t\n\t _createClass(SecureLS, [{\n\t key: 'init',\n\t value: function init() {\n\t var metaData = this.getMetaData() || {};\n\t\n\t this.WarningEnum = this.constants.WarningEnum;\n\t this.WarningTypes = this.constants.WarningTypes;\n\t this.EncrytionTypes = this.constants.EncrytionTypes;\n\t\n\t this._isBase64 = this._isBase64EncryptionType();\n\t this._isAES = this._isAESEncryptionType();\n\t this._isDES = this._isDESEncryptionType();\n\t this._isRabbit = this._isRabbitEncryptionType();\n\t this._isRC4 = this._isRC4EncryptionType();\n\t this._isCompression = this._isDataCompressionEnabled();\n\t\n\t // fill the already present keys to the list of keys being used by secure-ls\n\t this.utils.allKeys = metaData.keys || this.resetAllKeys();\n\t }\n\t }, {\n\t key: '_isBase64EncryptionType',\n\t value: function _isBase64EncryptionType() {\n\t return _Base2.default && (typeof this.config.encodingType === 'undefined' || this.config.encodingType === this.constants.EncrytionTypes.BASE64);\n\t }\n\t }, {\n\t key: '_isAESEncryptionType',\n\t value: function _isAESEncryptionType() {\n\t return _aes2.default && this.config.encodingType === this.constants.EncrytionTypes.AES;\n\t }\n\t }, {\n\t key: '_isDESEncryptionType',\n\t value: function _isDESEncryptionType() {\n\t return _tripledes2.default && this.config.encodingType === this.constants.EncrytionTypes.DES;\n\t }\n\t }, {\n\t key: '_isRabbitEncryptionType',\n\t value: function _isRabbitEncryptionType() {\n\t return _rabbit2.default && this.config.encodingType === this.constants.EncrytionTypes.RABBIT;\n\t }\n\t }, {\n\t key: '_isRC4EncryptionType',\n\t value: function _isRC4EncryptionType() {\n\t return _rc2.default && this.config.encodingType === this.constants.EncrytionTypes.RC4;\n\t }\n\t }, {\n\t key: '_isDataCompressionEnabled',\n\t value: function _isDataCompressionEnabled() {\n\t return this.config.isCompression;\n\t }\n\t }, {\n\t key: 'getEncryptionSecret',\n\t value: function getEncryptionSecret(key) {\n\t var metaData = this.getMetaData() || {};\n\t var obj = this.utils.getObjectFromKey(metaData.keys, key);\n\t\n\t if (!obj) {\n\t return;\n\t }\n\t\n\t if (this._isAES || this._isDES || this._isRabbit || this._isRC4) {\n\t if (typeof this.config.encryptionSecret === 'undefined') {\n\t this.utils.encryptionSecret = obj.s;\n\t\n\t if (!this.utils.encryptionSecret) {\n\t this.utils.encryptionSecret = this.utils.generateSecretKey();\n\t this.setMetaData();\n\t }\n\t } else {\n\t this.utils.encryptionSecret = this.config.encryptionSecret || obj.s || '';\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'get',\n\t value: function get(key, isAllKeysData) {\n\t var decodedData = '',\n\t jsonData = '',\n\t deCompressedData = void 0,\n\t bytes = void 0,\n\t data = void 0;\n\t\n\t if (!this.utils.is(key)) {\n\t this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\n\t return jsonData;\n\t }\n\t\n\t data = this.getDataFromLocalStorage(key);\n\t\n\t if (!data) {\n\t return jsonData;\n\t }\n\t\n\t deCompressedData = data; // saves else\n\t if (this._isCompression || isAllKeysData) {\n\t // meta data always compressed\n\t deCompressedData = _lzString2.default.decompressFromUTF16(data);\n\t }\n\t\n\t decodedData = deCompressedData; // saves else\n\t if (this._isBase64 || isAllKeysData) {\n\t // meta data always Base64\n\t decodedData = _Base2.default.decode(deCompressedData);\n\t } else {\n\t this.getEncryptionSecret(key);\n\t if (this._isAES) {\n\t bytes = _aes2.default.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\n\t } else if (this._isDES) {\n\t bytes = _tripledes2.default.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\n\t } else if (this._isRabbit) {\n\t bytes = _rabbit2.default.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\n\t } else if (this._isRC4) {\n\t bytes = _rc2.default.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\n\t }\n\t\n\t if (bytes) {\n\t decodedData = bytes.toString(_encUtf2.default._Utf8);\n\t }\n\t }\n\t\n\t try {\n\t jsonData = JSON.parse(decodedData);\n\t } catch (e) {\n\t throw new Error('Could not parse JSON');\n\t }\n\t\n\t return jsonData;\n\t }\n\t }, {\n\t key: 'getDataFromLocalStorage',\n\t value: function getDataFromLocalStorage(key) {\n\t return this.ls.getItem(key, true);\n\t }\n\t }, {\n\t key: 'getAllKeys',\n\t value: function getAllKeys() {\n\t var data = this.getMetaData();\n\t\n\t return this.utils.extractKeyNames(data) || [];\n\t }\n\t }, {\n\t key: 'set',\n\t value: function set(key, data) {\n\t var dataToStore = '';\n\t\n\t if (!this.utils.is(key)) {\n\t this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\n\t return;\n\t }\n\t\n\t this.getEncryptionSecret(key);\n\t\n\t // add key(s) to Array if not already added, only for keys other than meta key\n\t if (!(String(key) === String(this.utils.metaKey))) {\n\t if (!this.utils.isKeyPresent(key)) {\n\t this.utils.addToKeysList(key);\n\t this.setMetaData();\n\t }\n\t }\n\t\n\t dataToStore = this.processData(data);\n\t // Store the data to localStorage\n\t this.setDataToLocalStorage(key, dataToStore);\n\t }\n\t }, {\n\t key: 'setDataToLocalStorage',\n\t value: function setDataToLocalStorage(key, data) {\n\t this.ls.setItem(key, data);\n\t }\n\t }, {\n\t key: 'remove',\n\t value: function remove(key) {\n\t if (!this.utils.is(key)) {\n\t this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\n\t return;\n\t }\n\t\n\t if (key === this.utils.metaKey && this.getAllKeys().length) {\n\t this.utils.warn(this.WarningEnum.META_KEY_REMOVE);\n\t return;\n\t }\n\t\n\t if (this.utils.isKeyPresent(key)) {\n\t this.utils.removeFromKeysList(key);\n\t this.setMetaData();\n\t }\n\t this.ls.removeItem(key);\n\t }\n\t }, {\n\t key: 'removeAll',\n\t value: function removeAll() {\n\t var keys = void 0,\n\t i = void 0;\n\t\n\t keys = this.getAllKeys();\n\t for (i = 0; i < keys.length; i++) {\n\t this.ls.removeItem(keys[i]);\n\t }\n\t this.ls.removeItem(this.utils.metaKey);\n\t\n\t this.resetAllKeys();\n\t }\n\t }, {\n\t key: 'clear',\n\t value: function clear() {\n\t this.ls.clear();\n\t this.resetAllKeys();\n\t }\n\t }, {\n\t key: 'resetAllKeys',\n\t value: function resetAllKeys() {\n\t this.utils.allKeys = [];\n\t return [];\n\t }\n\t }, {\n\t key: 'processData',\n\t value: function processData(data, isAllKeysData) {\n\t if (data === null || data === undefined || data === '') {\n\t return '';\n\t }\n\t\n\t var jsonData = void 0,\n\t encodedData = void 0,\n\t compressedData = void 0;\n\t\n\t try {\n\t jsonData = JSON.stringify(data);\n\t } catch (e) {\n\t throw new Error('Could not stringify data.');\n\t }\n\t\n\t // Encode Based on encoding type\n\t // If not set, default to Base64 for securing data\n\t encodedData = jsonData;\n\t if (this._isBase64 || isAllKeysData) {\n\t encodedData = _Base2.default.encode(jsonData);\n\t } else {\n\t if (this._isAES) {\n\t encodedData = _aes2.default.encrypt(jsonData, this.utils.encryptionSecret);\n\t } else if (this._isDES) {\n\t encodedData = _tripledes2.default.encrypt(jsonData, this.utils.encryptionSecret);\n\t } else if (this._isRabbit) {\n\t encodedData = _rabbit2.default.encrypt(jsonData, this.utils.encryptionSecret);\n\t } else if (this._isRC4) {\n\t encodedData = _rc2.default.encrypt(jsonData, this.utils.encryptionSecret);\n\t }\n\t\n\t encodedData = encodedData && encodedData.toString();\n\t }\n\t\n\t // Compress data if set to true\n\t compressedData = encodedData;\n\t if (this._isCompression || isAllKeysData) {\n\t compressedData = _lzString2.default.compressToUTF16(encodedData);\n\t }\n\t\n\t return compressedData;\n\t }\n\t }, {\n\t key: 'setMetaData',\n\t value: function setMetaData() {\n\t var dataToStore = this.processData({\n\t keys: this.utils.allKeys\n\t }, true);\n\t\n\t // Store the data to localStorage\n\t this.setDataToLocalStorage(this.utils.metaKey, dataToStore);\n\t }\n\t }, {\n\t key: 'getMetaData',\n\t value: function getMetaData() {\n\t return this.get(this.utils.metaKey, true);\n\t }\n\t }]);\n\t\n\t return SecureLS;\n\t}();\n\t\n\texports.default = SecureLS;\n\t;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tvar _constants2 = _interopRequireDefault(_constants);\n\t\n\tvar _WordArray = __webpack_require__(3);\n\t\n\tvar _WordArray2 = _interopRequireDefault(_WordArray);\n\t\n\tvar _pbkdf = __webpack_require__(4);\n\t\n\tvar _pbkdf2 = _interopRequireDefault(_pbkdf);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar utils = {\n\t metaKey: '_secure__ls__metadata',\n\t encryptionSecret: '',\n\t secretPhrase: 's3cr3t$#@135^&*246',\n\t allKeys: [],\n\t is: function is(key) {\n\t if (key) {\n\t return true;\n\t }\n\t return false;\n\t },\n\t warn: function warn(reason) {\n\t reason = reason ? reason : _constants2.default.WarningEnum.DEFAULT_TEXT;\n\t console.warn(_constants2.default.WarningTypes[reason]);\n\t },\n\t generateSecretKey: function generateSecretKey() {\n\t var salt = _WordArray2.default.random(128 / 8);\n\t var key128Bits = (0, _pbkdf2.default)(this.secretPhrase, salt, { keySize: 128 / 32 });\n\t\n\t return key128Bits && key128Bits.toString();\n\t },\n\t getObjectFromKey: function getObjectFromKey(data, key) {\n\t if (!data || !data.length) {\n\t return {};\n\t }\n\t\n\t var i = void 0,\n\t obj = {};\n\t\n\t for (i = 0; i < data.length; i++) {\n\t if (data[i].k === key) {\n\t obj = data[i];\n\t break;\n\t }\n\t }\n\t\n\t return obj;\n\t },\n\t extractKeyNames: function extractKeyNames(data) {\n\t if (!data || !data.keys || !data.keys.length) {\n\t return [];\n\t }\n\t\n\t return data.keys.map(function (keyData) {\n\t return keyData.k;\n\t });\n\t },\n\t getAllKeys: function getAllKeys() {\n\t return this.allKeys;\n\t },\n\t isKeyPresent: function isKeyPresent(key) {\n\t var isKeyAlreadyPresent = false;\n\t\n\t for (var i = 0; i < this.allKeys.length; i++) {\n\t if (String(this.allKeys[i].k) === String(key)) {\n\t isKeyAlreadyPresent = true; // found\n\t break;\n\t }\n\t }\n\t\n\t return isKeyAlreadyPresent;\n\t },\n\t addToKeysList: function addToKeysList(key) {\n\t this.allKeys.push({\n\t k: key,\n\t s: this.encryptionSecret\n\t });\n\t },\n\t removeFromKeysList: function removeFromKeysList(key) {\n\t var i = void 0,\n\t index = -1;\n\t\n\t for (i = 0; i < this.allKeys.length; i++) {\n\t if (this.allKeys[i].k === key) {\n\t index = i;\n\t break;\n\t }\n\t }\n\t if (index !== -1) {\n\t this.allKeys.splice(index, 1);\n\t }\n\t return index;\n\t }\n\t};\n\t\n\tmodule.exports = utils;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar WarningEnum = {\n\t KEY_NOT_PROVIDED: 'keyNotProvided',\n\t META_KEY_REMOVE: 'metaKeyRemove',\n\t DEFAULT_TEXT: 'defaultText'\n\t};\n\t\n\tvar WarningTypes = {};\n\t\n\tWarningTypes[WarningEnum.KEY_NOT_PROVIDED] = 'Secure LS: Key not provided. Aborting operation!';\n\tWarningTypes[WarningEnum.META_KEY_REMOVE] = 'Secure LS: Meta key can not be removed\\nunless all keys created by Secure LS are removed!';\n\tWarningTypes[WarningEnum.DEFAULT_TEXT] = 'Unexpected output';\n\t\n\tvar constants = {\n\t WarningEnum: WarningEnum,\n\t WarningTypes: WarningTypes,\n\t EncrytionTypes: {\n\t BASE64: 'base64',\n\t AES: 'aes',\n\t DES: 'des',\n\t RABBIT: 'rabbit',\n\t RC4: 'rc4'\n\t }\n\t};\n\t\n\tmodule.exports = constants;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\t/*\r\n\t ES6 compatible port of CryptoJS - WordArray for PBKDF2 password key generation\r\n\t\r\n\t Source: https://github.com/brix/crypto-js\r\n\t LICENSE: MIT\r\n\t */\n\t\n\tvar CryptoJSWordArray = {};\n\t\n\tCryptoJSWordArray.random = function (nBytes) {\n\t var words = [];\n\t var r = function r(mw) {\n\t var mz = 0x3ade68b1;\n\t var mask = 0xffffffff;\n\t\n\t return function () {\n\t mz = 0x9069 * (mz & 0xFFFF) + (mz >> 0x10) & mask;\n\t mw = 0x4650 * (mw & 0xFFFF) + (mw >> 0x10) & mask;\n\t var result = (mz << 0x10) + mw & mask;\n\t\n\t result /= 0x100000000;\n\t result += 0.5;\n\t return result * (Math.random() > 0.5 ? 1 : -1);\n\t };\n\t };\n\t\n\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t var _r = r((rcache || Math.random()) * 0x100000000);\n\t\n\t rcache = _r() * 0x3ade67b7;\n\t words.push(_r() * 0x100000000 | 0);\n\t }\n\t\n\t return new this.Set(words, nBytes);\n\t};\n\t\n\tCryptoJSWordArray.Set = function (words, sigBytes) {\n\t words = this.words = words || [];\n\t\n\t if (sigBytes !== undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t};\n\t\n\tmodule.exports = CryptoJSWordArray;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(6), __webpack_require__(7));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var Base = C_lib.Base;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var C_algo = C.algo;\n\t\t var SHA1 = C_algo.SHA1;\n\t\t var HMAC = C_algo.HMAC;\n\t\n\t\t /**\n\t\t * Password-Based Key Derivation Function 2 algorithm.\n\t\t */\n\t\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t\t */\n\t\t cfg: Base.extend({\n\t\t keySize: 128/32,\n\t\t hasher: SHA1,\n\t\t iterations: 1\n\t\t }),\n\t\n\t\t /**\n\t\t * Initializes a newly created key derivation function.\n\t\t *\n\t\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t\t */\n\t\t init: function (cfg) {\n\t\t this.cfg = this.cfg.extend(cfg);\n\t\t },\n\t\n\t\t /**\n\t\t * Computes the Password-Based Key Derivation Function 2.\n\t\t *\n\t\t * @param {WordArray|string} password The password.\n\t\t * @param {WordArray|string} salt A salt.\n\t\t *\n\t\t * @return {WordArray} The derived key.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var key = kdf.compute(password, salt);\n\t\t */\n\t\t compute: function (password, salt) {\n\t\t // Shortcut\n\t\t var cfg = this.cfg;\n\t\n\t\t // Init HMAC\n\t\t var hmac = HMAC.create(cfg.hasher, password);\n\t\n\t\t // Initial values\n\t\t var derivedKey = WordArray.create();\n\t\t var blockIndex = WordArray.create([0x00000001]);\n\t\n\t\t // Shortcuts\n\t\t var derivedKeyWords = derivedKey.words;\n\t\t var blockIndexWords = blockIndex.words;\n\t\t var keySize = cfg.keySize;\n\t\t var iterations = cfg.iterations;\n\t\n\t\t // Generate key\n\t\t while (derivedKeyWords.length < keySize) {\n\t\t var block = hmac.update(salt).finalize(blockIndex);\n\t\t hmac.reset();\n\t\n\t\t // Shortcuts\n\t\t var blockWords = block.words;\n\t\t var blockWordsLength = blockWords.length;\n\t\n\t\t // Iterations\n\t\t var intermediate = block;\n\t\t for (var i = 1; i < iterations; i++) {\n\t\t intermediate = hmac.finalize(intermediate);\n\t\t hmac.reset();\n\t\n\t\t // Shortcut\n\t\t var intermediateWords = intermediate.words;\n\t\n\t\t // XOR intermediate with block\n\t\t for (var j = 0; j < blockWordsLength; j++) {\n\t\t blockWords[j] ^= intermediateWords[j];\n\t\t }\n\t\t }\n\t\n\t\t derivedKey.concat(block);\n\t\t blockIndexWords[0]++;\n\t\t }\n\t\t derivedKey.sigBytes = keySize * 4;\n\t\n\t\t return derivedKey;\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Computes the Password-Based Key Derivation Function 2.\n\t\t *\n\t\t * @param {WordArray|string} password The password.\n\t\t * @param {WordArray|string} salt A salt.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t\t *\n\t\t * @return {WordArray} The derived key.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var key = CryptoJS.PBKDF2(password, salt);\n\t\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t\t */\n\t\t C.PBKDF2 = function (password, salt, cfg) {\n\t\t return PBKDF2.create(cfg).compute(password, salt);\n\t\t };\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.PBKDF2;\n\t\n\t}));\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory();\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\troot.CryptoJS = factory();\n\t\t}\n\t}(this, function () {\n\t\n\t\t/**\n\t\t * CryptoJS core components.\n\t\t */\n\t\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t\t /*\n\t\t * Local polyfil of Object.create\n\t\t */\n\t\t var create = Object.create || (function () {\n\t\t function F() {};\n\t\n\t\t return function (obj) {\n\t\t var subtype;\n\t\n\t\t F.prototype = obj;\n\t\n\t\t subtype = new F();\n\t\n\t\t F.prototype = null;\n\t\n\t\t return subtype;\n\t\t };\n\t\t }())\n\t\n\t\t /**\n\t\t * CryptoJS namespace.\n\t\t */\n\t\t var C = {};\n\t\n\t\t /**\n\t\t * Library namespace.\n\t\t */\n\t\t var C_lib = C.lib = {};\n\t\n\t\t /**\n\t\t * Base object for prototypal inheritance.\n\t\t */\n\t\t var Base = C_lib.Base = (function () {\n\t\n\t\n\t\t return {\n\t\t /**\n\t\t * Creates a new object that inherits from this object.\n\t\t *\n\t\t * @param {Object} overrides Properties to copy into the new object.\n\t\t *\n\t\t * @return {Object} The new object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var MyType = CryptoJS.lib.Base.extend({\n\t\t * field: 'value',\n\t\t *\n\t\t * method: function () {\n\t\t * }\n\t\t * });\n\t\t */\n\t\t extend: function (overrides) {\n\t\t // Spawn\n\t\t var subtype = create(this);\n\t\n\t\t // Augment\n\t\t if (overrides) {\n\t\t subtype.mixIn(overrides);\n\t\t }\n\t\n\t\t // Create default initializer\n\t\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t\t subtype.init = function () {\n\t\t subtype.$super.init.apply(this, arguments);\n\t\t };\n\t\t }\n\t\n\t\t // Initializer's prototype is the subtype object\n\t\t subtype.init.prototype = subtype;\n\t\n\t\t // Reference supertype\n\t\t subtype.$super = this;\n\t\n\t\t return subtype;\n\t\t },\n\t\n\t\t /**\n\t\t * Extends this object and runs the init method.\n\t\t * Arguments to create() will be passed to init().\n\t\t *\n\t\t * @return {Object} The new object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var instance = MyType.create();\n\t\t */\n\t\t create: function () {\n\t\t var instance = this.extend();\n\t\t instance.init.apply(instance, arguments);\n\t\n\t\t return instance;\n\t\t },\n\t\n\t\t /**\n\t\t * Initializes a newly created object.\n\t\t * Override this method to add some logic when your objects are created.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var MyType = CryptoJS.lib.Base.extend({\n\t\t * init: function () {\n\t\t * // ...\n\t\t * }\n\t\t * });\n\t\t */\n\t\t init: function () {\n\t\t },\n\t\n\t\t /**\n\t\t * Copies properties into this object.\n\t\t *\n\t\t * @param {Object} properties The properties to mix in.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * MyType.mixIn({\n\t\t * field: 'value'\n\t\t * });\n\t\t */\n\t\t mixIn: function (properties) {\n\t\t for (var propertyName in properties) {\n\t\t if (properties.hasOwnProperty(propertyName)) {\n\t\t this[propertyName] = properties[propertyName];\n\t\t }\n\t\t }\n\t\n\t\t // IE won't copy toString using the loop above\n\t\t if (properties.hasOwnProperty('toString')) {\n\t\t this.toString = properties.toString;\n\t\t }\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a copy of this object.\n\t\t *\n\t\t * @return {Object} The clone.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var clone = instance.clone();\n\t\t */\n\t\t clone: function () {\n\t\t return this.init.prototype.extend(this);\n\t\t }\n\t\t };\n\t\t }());\n\t\n\t\t /**\n\t\t * An array of 32-bit words.\n\t\t *\n\t\t * @property {Array} words The array of 32-bit words.\n\t\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t\t */\n\t\t var WordArray = C_lib.WordArray = Base.extend({\n\t\t /**\n\t\t * Initializes a newly created word array.\n\t\t *\n\t\t * @param {Array} words (Optional) An array of 32-bit words.\n\t\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t\t */\n\t\t init: function (words, sigBytes) {\n\t\t words = this.words = words || [];\n\t\n\t\t if (sigBytes != undefined) {\n\t\t this.sigBytes = sigBytes;\n\t\t } else {\n\t\t this.sigBytes = words.length * 4;\n\t\t }\n\t\t },\n\t\n\t\t /**\n\t\t * Converts this word array to a string.\n\t\t *\n\t\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t\t *\n\t\t * @return {string} The stringified word array.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var string = wordArray + '';\n\t\t * var string = wordArray.toString();\n\t\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t\t */\n\t\t toString: function (encoder) {\n\t\t return (encoder || Hex).stringify(this);\n\t\t },\n\t\n\t\t /**\n\t\t * Concatenates a word array to this word array.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array to append.\n\t\t *\n\t\t * @return {WordArray} This word array.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * wordArray1.concat(wordArray2);\n\t\t */\n\t\t concat: function (wordArray) {\n\t\t // Shortcuts\n\t\t var thisWords = this.words;\n\t\t var thatWords = wordArray.words;\n\t\t var thisSigBytes = this.sigBytes;\n\t\t var thatSigBytes = wordArray.sigBytes;\n\t\n\t\t // Clamp excess bits\n\t\t this.clamp();\n\t\n\t\t // Concat\n\t\t if (thisSigBytes % 4) {\n\t\t // Copy one byte at a time\n\t\t for (var i = 0; i < thatSigBytes; i++) {\n\t\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t\t }\n\t\t } else {\n\t\t // Copy one word at a time\n\t\t for (var i = 0; i < thatSigBytes; i += 4) {\n\t\t thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t\t }\n\t\t }\n\t\t this.sigBytes += thatSigBytes;\n\t\n\t\t // Chainable\n\t\t return this;\n\t\t },\n\t\n\t\t /**\n\t\t * Removes insignificant bits.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * wordArray.clamp();\n\t\t */\n\t\t clamp: function () {\n\t\t // Shortcuts\n\t\t var words = this.words;\n\t\t var sigBytes = this.sigBytes;\n\t\n\t\t // Clamp\n\t\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t\t words.length = Math.ceil(sigBytes / 4);\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a copy of this word array.\n\t\t *\n\t\t * @return {WordArray} The clone.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var clone = wordArray.clone();\n\t\t */\n\t\t clone: function () {\n\t\t var clone = Base.clone.call(this);\n\t\t clone.words = this.words.slice(0);\n\t\n\t\t return clone;\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a word array filled with random bytes.\n\t\t *\n\t\t * @param {number} nBytes The number of random bytes to generate.\n\t\t *\n\t\t * @return {WordArray} The random word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t\t */\n\t\t random: function (nBytes) {\n\t\t var words = [];\n\t\n\t\t var r = (function (m_w) {\n\t\t var m_w = m_w;\n\t\t var m_z = 0x3ade68b1;\n\t\t var mask = 0xffffffff;\n\t\n\t\t return function () {\n\t\t m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t\t m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t\t var result = ((m_z << 0x10) + m_w) & mask;\n\t\t result /= 0x100000000;\n\t\t result += 0.5;\n\t\t return result * (Math.random() > .5 ? 1 : -1);\n\t\t }\n\t\t });\n\t\n\t\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t\t var _r = r((rcache || Math.random()) * 0x100000000);\n\t\n\t\t rcache = _r() * 0x3ade67b7;\n\t\t words.push((_r() * 0x100000000) | 0);\n\t\t }\n\t\n\t\t return new WordArray.init(words, nBytes);\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Encoder namespace.\n\t\t */\n\t\t var C_enc = C.enc = {};\n\t\n\t\t /**\n\t\t * Hex encoding strategy.\n\t\t */\n\t\t var Hex = C_enc.Hex = {\n\t\t /**\n\t\t * Converts a word array to a hex string.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array.\n\t\t *\n\t\t * @return {string} The hex string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t\t */\n\t\t stringify: function (wordArray) {\n\t\t // Shortcuts\n\t\t var words = wordArray.words;\n\t\t var sigBytes = wordArray.sigBytes;\n\t\n\t\t // Convert\n\t\t var hexChars = [];\n\t\t for (var i = 0; i < sigBytes; i++) {\n\t\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t\t hexChars.push((bite >>> 4).toString(16));\n\t\t hexChars.push((bite & 0x0f).toString(16));\n\t\t }\n\t\n\t\t return hexChars.join('');\n\t\t },\n\t\n\t\t /**\n\t\t * Converts a hex string to a word array.\n\t\t *\n\t\t * @param {string} hexStr The hex string.\n\t\t *\n\t\t * @return {WordArray} The word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t\t */\n\t\t parse: function (hexStr) {\n\t\t // Shortcut\n\t\t var hexStrLength = hexStr.length;\n\t\n\t\t // Convert\n\t\t var words = [];\n\t\t for (var i = 0; i < hexStrLength; i += 2) {\n\t\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t\t }\n\t\n\t\t return new WordArray.init(words, hexStrLength / 2);\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * Latin1 encoding strategy.\n\t\t */\n\t\t var Latin1 = C_enc.Latin1 = {\n\t\t /**\n\t\t * Converts a word array to a Latin1 string.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array.\n\t\t *\n\t\t * @return {string} The Latin1 string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t\t */\n\t\t stringify: function (wordArray) {\n\t\t // Shortcuts\n\t\t var words = wordArray.words;\n\t\t var sigBytes = wordArray.sigBytes;\n\t\n\t\t // Convert\n\t\t var latin1Chars = [];\n\t\t for (var i = 0; i < sigBytes; i++) {\n\t\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t\t latin1Chars.push(String.fromCharCode(bite));\n\t\t }\n\t\n\t\t return latin1Chars.join('');\n\t\t },\n\t\n\t\t /**\n\t\t * Converts a Latin1 string to a word array.\n\t\t *\n\t\t * @param {string} latin1Str The Latin1 string.\n\t\t *\n\t\t * @return {WordArray} The word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t\t */\n\t\t parse: function (latin1Str) {\n\t\t // Shortcut\n\t\t var latin1StrLength = latin1Str.length;\n\t\n\t\t // Convert\n\t\t var words = [];\n\t\t for (var i = 0; i < latin1StrLength; i++) {\n\t\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t\t }\n\t\n\t\t return new WordArray.init(words, latin1StrLength);\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * UTF-8 encoding strategy.\n\t\t */\n\t\t var Utf8 = C_enc.Utf8 = {\n\t\t /**\n\t\t * Converts a word array to a UTF-8 string.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array.\n\t\t *\n\t\t * @return {string} The UTF-8 string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t\t */\n\t\t stringify: function (wordArray) {\n\t\t try {\n\t\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t\t } catch (e) {\n\t\t throw new Error('Malformed UTF-8 data');\n\t\t }\n\t\t },\n\t\n\t\t /**\n\t\t * Converts a UTF-8 string to a word array.\n\t\t *\n\t\t * @param {string} utf8Str The UTF-8 string.\n\t\t *\n\t\t * @return {WordArray} The word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t\t */\n\t\t parse: function (utf8Str) {\n\t\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * Abstract buffered block algorithm template.\n\t\t *\n\t\t * The property blockSize must be implemented in a concrete subtype.\n\t\t *\n\t\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t\t */\n\t\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t\t /**\n\t\t * Resets this block algorithm's data buffer to its initial state.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * bufferedBlockAlgorithm.reset();\n\t\t */\n\t\t reset: function () {\n\t\t // Initial values\n\t\t this._data = new WordArray.init();\n\t\t this._nDataBytes = 0;\n\t\t },\n\t\n\t\t /**\n\t\t * Adds new data to this block algorithm's buffer.\n\t\t *\n\t\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * bufferedBlockAlgorithm._append('data');\n\t\t * bufferedBlockAlgorithm._append(wordArray);\n\t\t */\n\t\t _append: function (data) {\n\t\t // Convert string to WordArray, else assume WordArray already\n\t\t if (typeof data == 'string') {\n\t\t data = Utf8.parse(data);\n\t\t }\n\t\n\t\t // Append\n\t\t this._data.concat(data);\n\t\t this._nDataBytes += data.sigBytes;\n\t\t },\n\t\n\t\t /**\n\t\t * Processes available data blocks.\n\t\t *\n\t\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t\t *\n\t\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t\t *\n\t\t * @return {WordArray} The processed data.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var processedData = bufferedBlockAlgorithm._process();\n\t\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t\t */\n\t\t _process: function (doFlush) {\n\t\t // Shortcuts\n\t\t var data = this._data;\n\t\t var dataWords = data.words;\n\t\t var dataSigBytes = data.sigBytes;\n\t\t var blockSize = this.blockSize;\n\t\t var blockSizeBytes = blockSize * 4;\n\t\n\t\t // Count blocks ready\n\t\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t\t if (doFlush) {\n\t\t // Round up to include partial blocks\n\t\t nBlocksReady = Math.ceil(nBlocksReady);\n\t\t } else {\n\t\t // Round down to include only full blocks,\n\t\t // less the number of blocks that must remain in the buffer\n\t\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t\t }\n\t\n\t\t // Count words ready\n\t\t var nWordsReady = nBlocksReady * blockSize;\n\t\n\t\t // Count bytes ready\n\t\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\t\n\t\t // Process blocks\n\t\t if (nWordsReady) {\n\t\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t\t // Perform concrete-algorithm logic\n\t\t this._doProcessBlock(dataWords, offset);\n\t\t }\n\t\n\t\t // Remove processed words\n\t\t var processedWords = dataWords.splice(0, nWordsReady);\n\t\t data.sigBytes -= nBytesReady;\n\t\t }\n\t\n\t\t // Return processed words\n\t\t return new WordArray.init(processedWords, nBytesReady);\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a copy of this object.\n\t\t *\n\t\t * @return {Object} The clone.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var clone = bufferedBlockAlgorithm.clone();\n\t\t */\n\t\t clone: function () {\n\t\t var clone = Base.clone.call(this);\n\t\t clone._data = this._data.clone();\n\t\n\t\t return clone;\n\t\t },\n\t\n\t\t _minBufferSize: 0\n\t\t });\n\t\n\t\t /**\n\t\t * Abstract hasher template.\n\t\t *\n\t\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t\t */\n\t\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t */\n\t\t cfg: Base.extend(),\n\t\n\t\t /**\n\t\t * Initializes a newly created hasher.\n\t\t *\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hasher = CryptoJS.algo.SHA256.create();\n\t\t */\n\t\t init: function (cfg) {\n\t\t // Apply config defaults\n\t\t this.cfg = this.cfg.extend(cfg);\n\t\n\t\t // Set initial values\n\t\t this.reset();\n\t\t },\n\t\n\t\t /**\n\t\t * Resets this hasher to its initial state.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * hasher.reset();\n\t\t */\n\t\t reset: function () {\n\t\t // Reset data buffer\n\t\t BufferedBlockAlgorithm.reset.call(this);\n\t\n\t\t // Perform concrete-hasher logic\n\t\t this._doReset();\n\t\t },\n\t\n\t\t /**\n\t\t * Updates this hasher with a message.\n\t\t *\n\t\t * @param {WordArray|string} messageUpdate The message to append.\n\t\t *\n\t\t * @return {Hasher} This hasher.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * hasher.update('message');\n\t\t * hasher.update(wordArray);\n\t\t */\n\t\t update: function (messageUpdate) {\n\t\t // Append\n\t\t this._append(messageUpdate);\n\t\n\t\t // Update the hash\n\t\t this._process();\n\t\n\t\t // Chainable\n\t\t return this;\n\t\t },\n\t\n\t\t /**\n\t\t * Finalizes the hash computation.\n\t\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t\t *\n\t\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t\t *\n\t\t * @return {WordArray} The hash.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hash = hasher.finalize();\n\t\t * var hash = hasher.finalize('message');\n\t\t * var hash = hasher.finalize(wordArray);\n\t\t */\n\t\t finalize: function (messageUpdate) {\n\t\t // Final message update\n\t\t if (messageUpdate) {\n\t\t this._append(messageUpdate);\n\t\t }\n\t\n\t\t // Perform concrete-hasher logic\n\t\t var hash = this._doFinalize();\n\t\n\t\t return hash;\n\t\t },\n\t\n\t\t blockSize: 512/32,\n\t\n\t\t /**\n\t\t * Creates a shortcut function to a hasher's object interface.\n\t\t *\n\t\t * @param {Hasher} hasher The hasher to create a helper for.\n\t\t *\n\t\t * @return {Function} The shortcut function.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t\t */\n\t\t _createHelper: function (hasher) {\n\t\t return function (message, cfg) {\n\t\t return new hasher.init(cfg).finalize(message);\n\t\t };\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a shortcut function to the HMAC's object interface.\n\t\t *\n\t\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t\t *\n\t\t * @return {Function} The shortcut function.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t\t */\n\t\t _createHmacHelper: function (hasher) {\n\t\t return function (message, key) {\n\t\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t\t };\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Algorithm namespace.\n\t\t */\n\t\t var C_algo = C.algo = {};\n\t\n\t\t return C;\n\t\t}(Math));\n\t\n\t\n\t\treturn CryptoJS;\n\t\n\t}));\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var Hasher = C_lib.Hasher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Reusable object\n\t\t var W = [];\n\t\n\t\t /**\n\t\t * SHA-1 hash algorithm.\n\t\t */\n\t\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t\t _doReset: function () {\n\t\t this._hash = new WordArray.init([\n\t\t 0x67452301, 0xefcdab89,\n\t\t 0x98badcfe, 0x10325476,\n\t\t 0xc3d2e1f0\n\t\t ]);\n\t\t },\n\t\n\t\t _doProcessBlock: function (M, offset) {\n\t\t // Shortcut\n\t\t var H = this._hash.words;\n\t\n\t\t // Working variables\n\t\t var a = H[0];\n\t\t var b = H[1];\n\t\t var c = H[2];\n\t\t var d = H[3];\n\t\t var e = H[4];\n\t\n\t\t // Computation\n\t\t for (var i = 0; i < 80; i++) {\n\t\t if (i < 16) {\n\t\t W[i] = M[offset + i] | 0;\n\t\t } else {\n\t\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t\t W[i] = (n << 1) | (n >>> 31);\n\t\t }\n\t\n\t\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t\t if (i < 20) {\n\t\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t\t } else if (i < 40) {\n\t\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t\t } else if (i < 60) {\n\t\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t\t } else /* if (i < 80) */ {\n\t\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t\t }\n\t\n\t\t e = d;\n\t\t d = c;\n\t\t c = (b << 30) | (b >>> 2);\n\t\t b = a;\n\t\t a = t;\n\t\t }\n\t\n\t\t // Intermediate hash value\n\t\t H[0] = (H[0] + a) | 0;\n\t\t H[1] = (H[1] + b) | 0;\n\t\t H[2] = (H[2] + c) | 0;\n\t\t H[3] = (H[3] + d) | 0;\n\t\t H[4] = (H[4] + e) | 0;\n\t\t },\n\t\n\t\t _doFinalize: function () {\n\t\t // Shortcuts\n\t\t var data = this._data;\n\t\t var dataWords = data.words;\n\t\n\t\t var nBitsTotal = this._nDataBytes * 8;\n\t\t var nBitsLeft = data.sigBytes * 8;\n\t\n\t\t // Add padding\n\t\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t\t data.sigBytes = dataWords.length * 4;\n\t\n\t\t // Hash final blocks\n\t\t this._process();\n\t\n\t\t // Return final computed hash\n\t\t return this._hash;\n\t\t },\n\t\n\t\t clone: function () {\n\t\t var clone = Hasher.clone.call(this);\n\t\t clone._hash = this._hash.clone();\n\t\n\t\t return clone;\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Shortcut function to the hasher's object interface.\n\t\t *\n\t\t * @param {WordArray|string} message The message to hash.\n\t\t *\n\t\t * @return {WordArray} The hash.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hash = CryptoJS.SHA1('message');\n\t\t * var hash = CryptoJS.SHA1(wordArray);\n\t\t */\n\t\t C.SHA1 = Hasher._createHelper(SHA1);\n\t\n\t\t /**\n\t\t * Shortcut function to the HMAC's object interface.\n\t\t *\n\t\t * @param {WordArray|string} message The message to hash.\n\t\t * @param {WordArray|string} key The secret key.\n\t\t *\n\t\t * @return {WordArray} The HMAC.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t\t */\n\t\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.SHA1;\n\t\n\t}));\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var Base = C_lib.Base;\n\t\t var C_enc = C.enc;\n\t\t var Utf8 = C_enc.Utf8;\n\t\t var C_algo = C.algo;\n\t\n\t\t /**\n\t\t * HMAC algorithm.\n\t\t */\n\t\t var HMAC = C_algo.HMAC = Base.extend({\n\t\t /**\n\t\t * Initializes a newly created HMAC.\n\t\t *\n\t\t * @param {Hasher} hasher The hash algorithm to use.\n\t\t * @param {WordArray|string} key The secret key.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t\t */\n\t\t init: function (hasher, key) {\n\t\t // Init hasher\n\t\t hasher = this._hasher = new hasher.init();\n\t\n\t\t // Convert string to WordArray, else assume WordArray already\n\t\t if (typeof key == 'string') {\n\t\t key = Utf8.parse(key);\n\t\t }\n\t\n\t\t // Shortcuts\n\t\t var hasherBlockSize = hasher.blockSize;\n\t\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\t\n\t\t // Allow arbitrary length keys\n\t\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t\t key = hasher.finalize(key);\n\t\t }\n\t\n\t\t // Clamp excess bits\n\t\t key.clamp();\n\t\n\t\t // Clone key for inner and outer pads\n\t\t var oKey = this._oKey = key.clone();\n\t\t var iKey = this._iKey = key.clone();\n\t\n\t\t // Shortcuts\n\t\t var oKeyWords = oKey.words;\n\t\t var iKeyWords = iKey.words;\n\t\n\t\t // XOR keys with pad constants\n\t\t for (var i = 0; i < hasherBlockSize; i++) {\n\t\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t\t iKeyWords[i] ^= 0x36363636;\n\t\t }\n\t\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\t\n\t\t // Set initial values\n\t\t this.reset();\n\t\t },\n\t\n\t\t /**\n\t\t * Resets this HMAC to its initial state.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * hmacHasher.reset();\n\t\t */\n\t\t reset: function () {\n\t\t // Shortcut\n\t\t var hasher = this._hasher;\n\t\n\t\t // Reset\n\t\t hasher.reset();\n\t\t hasher.update(this._iKey);\n\t\t },\n\t\n\t\t /**\n\t\t * Updates this HMAC with a message.\n\t\t *\n\t\t * @param {WordArray|string} messageUpdate The message to append.\n\t\t *\n\t\t * @return {HMAC} This HMAC instance.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * hmacHasher.update('message');\n\t\t * hmacHasher.update(wordArray);\n\t\t */\n\t\t update: function (messageUpdate) {\n\t\t this._hasher.update(messageUpdate);\n\t\n\t\t // Chainable\n\t\t return this;\n\t\t },\n\t\n\t\t /**\n\t\t * Finalizes the HMAC computation.\n\t\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t\t *\n\t\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t\t *\n\t\t * @return {WordArray} The HMAC.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hmac = hmacHasher.finalize();\n\t\t * var hmac = hmacHasher.finalize('message');\n\t\t * var hmac = hmacHasher.finalize(wordArray);\n\t\t */\n\t\t finalize: function (messageUpdate) {\n\t\t // Shortcut\n\t\t var hasher = this._hasher;\n\t\n\t\t // Compute HMAC\n\t\t var innerHash = hasher.finalize(messageUpdate);\n\t\t hasher.reset();\n\t\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\t\n\t\t return hmac;\n\t\t }\n\t\t });\n\t\t}());\n\t\n\t\n\t}));\n\n/***/ },\n/* 8 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\t/*\r\n\t ES6 compatible port of CryptoJS - encoding\r\n\t\r\n\t Source: https://github.com/brix/crypto-js\r\n\t LICENSE: MIT\r\n\t */\n\tvar enc = {};\n\t\n\tenc.Latin1 = {\n\t stringify: function stringify(wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var latin1Chars = [],\n\t i = void 0,\n\t bite = void 0;\n\t\n\t // Convert\n\t for (i = 0; i < sigBytes; i++) {\n\t bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\t\n\t return latin1Chars.join('');\n\t }\n\t};\n\t\n\tenc._Utf8 = {\n\t stringify: function stringify(wordArray) {\n\t try {\n\t return decodeURIComponent(escape(enc.Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t }\n\t};\n\t\n\tmodule.exports = enc;\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar Base64 = {\n\t _keyStr: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t encode: function encode(e) {\n\t var t = '';\n\t var n = void 0,\n\t r = void 0,\n\t i = void 0,\n\t s = void 0,\n\t o = void 0,\n\t u = void 0,\n\t a = void 0;\n\t var f = 0;\n\t\n\t e = Base64._utf8Encode(e);\n\t while (f < e.length) {\n\t n = e.charCodeAt(f++);\n\t r = e.charCodeAt(f++);\n\t i = e.charCodeAt(f++);\n\t s = n >> 2;\n\t o = (n & 3) << 4 | r >> 4;\n\t u = (r & 15) << 2 | i >> 6;\n\t a = i & 63;\n\t if (isNaN(r)) {\n\t u = a = 64;\n\t } else if (isNaN(i)) {\n\t a = 64;\n\t }\n\t t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a);\n\t }\n\t return t;\n\t },\n\t decode: function decode(e) {\n\t var t = '';\n\t var n = void 0,\n\t r = void 0,\n\t i = void 0;\n\t var s = void 0,\n\t o = void 0,\n\t u = void 0,\n\t a = void 0;\n\t var f = 0;\n\t\n\t e = e.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n\t while (f < e.length) {\n\t s = this._keyStr.indexOf(e.charAt(f++));\n\t o = this._keyStr.indexOf(e.charAt(f++));\n\t u = this._keyStr.indexOf(e.charAt(f++));\n\t a = this._keyStr.indexOf(e.charAt(f++));\n\t n = s << 2 | o >> 4;\n\t r = (o & 15) << 4 | u >> 2;\n\t i = (u & 3) << 6 | a;\n\t t = t + String.fromCharCode(n);\n\t if (u !== 64) {\n\t t = t + String.fromCharCode(r);\n\t }\n\t if (a !== 64) {\n\t t = t + String.fromCharCode(i);\n\t }\n\t }\n\t t = Base64._utf8Decode(t);\n\t return t;\n\t },\n\t _utf8Encode: function _utf8Encode(e) {\n\t e = e.replace(/\\r\\n/g, '\\n');\n\t var t = '';\n\t\n\t for (var n = 0; n < e.length; n++) {\n\t var r = e.charCodeAt(n);\n\t\n\t if (r < 128) {\n\t t += String.fromCharCode(r);\n\t } else if (r > 127 && r < 2048) {\n\t t += String.fromCharCode(r >> 6 | 192);\n\t t += String.fromCharCode(r & 63 | 128);\n\t } else {\n\t t += String.fromCharCode(r >> 12 | 224);\n\t t += String.fromCharCode(r >> 6 & 63 | 128);\n\t t += String.fromCharCode(r & 63 | 128);\n\t }\n\t }\n\t return t;\n\t },\n\t _utf8Decode: function _utf8Decode(e) {\n\t var t = '';\n\t var n = 0;\n\t var r = void 0,\n\t c2 = void 0,\n\t c3 = void 0;\n\t\n\t r = c2 = 0;\n\t while (n < e.length) {\n\t r = e.charCodeAt(n);\n\t if (r < 128) {\n\t t += String.fromCharCode(r);\n\t n++;\n\t } else if (r > 191 && r < 224) {\n\t c2 = e.charCodeAt(n + 1);\n\t t += String.fromCharCode((r & 31) << 6 | c2 & 63);\n\t n += 2;\n\t } else {\n\t c2 = e.charCodeAt(n + 1);\n\t c3 = e.charCodeAt(n + 2);\n\t t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\n\t n += 3;\n\t }\n\t }\n\t return t;\n\t }\n\t};\n\t\n\tmodule.exports = Base64;\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;// Copyright (c) 2013 Pieroxy \n\t// This work is free. You can redistribute it and/or modify it\n\t// under the terms of the WTFPL, Version 2\n\t// For more information see LICENSE.txt or http://www.wtfpl.net/\n\t//\n\t// For more information, the home page:\n\t// http://pieroxy.net/blog/pages/lz-string/testing.html\n\t//\n\t// LZ-based compression algorithm, version 1.4.4\n\tvar LZString = (function() {\n\t\n\t// private property\n\tvar f = String.fromCharCode;\n\tvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\tvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\n\tvar baseReverseDic = {};\n\t\n\tfunction getBaseValue(alphabet, character) {\n\t if (!baseReverseDic[alphabet]) {\n\t baseReverseDic[alphabet] = {};\n\t for (var i=0 ; i>> 8;\n\t buf[i*2+1] = current_value % 256;\n\t }\n\t return buf;\n\t },\n\t\n\t //decompress from uint8array (UCS-2 big endian format)\n\t decompressFromUint8Array:function (compressed) {\n\t if (compressed===null || compressed===undefined){\n\t return LZString.decompress(compressed);\n\t } else {\n\t var buf=new Array(compressed.length/2); // 2 bytes per character\n\t for (var i=0, TotalLen=buf.length; i> 1;\n\t }\n\t } else {\n\t value = 1;\n\t for (i=0 ; i> 1;\n\t }\n\t }\n\t context_enlargeIn--;\n\t if (context_enlargeIn == 0) {\n\t context_enlargeIn = Math.pow(2, context_numBits);\n\t context_numBits++;\n\t }\n\t delete context_dictionaryToCreate[context_w];\n\t } else {\n\t value = context_dictionary[context_w];\n\t for (i=0 ; i> 1;\n\t }\n\t\n\t\n\t }\n\t context_enlargeIn--;\n\t if (context_enlargeIn == 0) {\n\t context_enlargeIn = Math.pow(2, context_numBits);\n\t context_numBits++;\n\t }\n\t // Add wc to the dictionary.\n\t context_dictionary[context_wc] = context_dictSize++;\n\t context_w = String(context_c);\n\t }\n\t }\n\t\n\t // Output the code for w.\n\t if (context_w !== \"\") {\n\t if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n\t if (context_w.charCodeAt(0)<256) {\n\t for (i=0 ; i> 1;\n\t }\n\t } else {\n\t value = 1;\n\t for (i=0 ; i> 1;\n\t }\n\t }\n\t context_enlargeIn--;\n\t if (context_enlargeIn == 0) {\n\t context_enlargeIn = Math.pow(2, context_numBits);\n\t context_numBits++;\n\t }\n\t delete context_dictionaryToCreate[context_w];\n\t } else {\n\t value = context_dictionary[context_w];\n\t for (i=0 ; i> 1;\n\t }\n\t\n\t\n\t }\n\t context_enlargeIn--;\n\t if (context_enlargeIn == 0) {\n\t context_enlargeIn = Math.pow(2, context_numBits);\n\t context_numBits++;\n\t }\n\t }\n\t\n\t // Mark the end of the stream\n\t value = 2;\n\t for (i=0 ; i> 1;\n\t }\n\t\n\t // Flush the last char\n\t while (true) {\n\t context_data_val = (context_data_val << 1);\n\t if (context_data_position == bitsPerChar-1) {\n\t context_data.push(getCharFromInt(context_data_val));\n\t break;\n\t }\n\t else context_data_position++;\n\t }\n\t return context_data.join('');\n\t },\n\t\n\t decompress: function (compressed) {\n\t if (compressed == null) return \"\";\n\t if (compressed == \"\") return null;\n\t return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n\t },\n\t\n\t _decompress: function (length, resetValue, getNextValue) {\n\t var dictionary = [],\n\t next,\n\t enlargeIn = 4,\n\t dictSize = 4,\n\t numBits = 3,\n\t entry = \"\",\n\t result = [],\n\t i,\n\t w,\n\t bits, resb, maxpower, power,\n\t c,\n\t data = {val:getNextValue(0), position:resetValue, index:1};\n\t\n\t for (i = 0; i < 3; i += 1) {\n\t dictionary[i] = i;\n\t }\n\t\n\t bits = 0;\n\t maxpower = Math.pow(2,2);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t\n\t switch (next = bits) {\n\t case 0:\n\t bits = 0;\n\t maxpower = Math.pow(2,8);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t c = f(bits);\n\t break;\n\t case 1:\n\t bits = 0;\n\t maxpower = Math.pow(2,16);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t c = f(bits);\n\t break;\n\t case 2:\n\t return \"\";\n\t }\n\t dictionary[3] = c;\n\t w = c;\n\t result.push(c);\n\t while (true) {\n\t if (data.index > length) {\n\t return \"\";\n\t }\n\t\n\t bits = 0;\n\t maxpower = Math.pow(2,numBits);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t\n\t switch (c = bits) {\n\t case 0:\n\t bits = 0;\n\t maxpower = Math.pow(2,8);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t\n\t dictionary[dictSize++] = f(bits);\n\t c = dictSize-1;\n\t enlargeIn--;\n\t break;\n\t case 1:\n\t bits = 0;\n\t maxpower = Math.pow(2,16);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t dictionary[dictSize++] = f(bits);\n\t c = dictSize-1;\n\t enlargeIn--;\n\t break;\n\t case 2:\n\t return result.join('');\n\t }\n\t\n\t if (enlargeIn == 0) {\n\t enlargeIn = Math.pow(2, numBits);\n\t numBits++;\n\t }\n\t\n\t if (dictionary[c]) {\n\t entry = dictionary[c];\n\t } else {\n\t if (c === dictSize) {\n\t entry = w + w.charAt(0);\n\t } else {\n\t return null;\n\t }\n\t }\n\t result.push(entry);\n\t\n\t // Add w+entry[0] to the dictionary.\n\t dictionary[dictSize++] = w + entry.charAt(0);\n\t enlargeIn--;\n\t\n\t w = entry;\n\t\n\t if (enlargeIn == 0) {\n\t enlargeIn = Math.pow(2, numBits);\n\t numBits++;\n\t }\n\t\n\t }\n\t }\n\t};\n\t return LZString;\n\t})();\n\t\n\tif (true) {\n\t !(__WEBPACK_AMD_DEFINE_RESULT__ = function () { return LZString; }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else if( typeof module !== 'undefined' && module != null ) {\n\t module.exports = LZString\n\t}\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(12), __webpack_require__(13), __webpack_require__(14), __webpack_require__(15));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var BlockCipher = C_lib.BlockCipher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Lookup tables\n\t\t var SBOX = [];\n\t\t var INV_SBOX = [];\n\t\t var SUB_MIX_0 = [];\n\t\t var SUB_MIX_1 = [];\n\t\t var SUB_MIX_2 = [];\n\t\t var SUB_MIX_3 = [];\n\t\t var INV_SUB_MIX_0 = [];\n\t\t var INV_SUB_MIX_1 = [];\n\t\t var INV_SUB_MIX_2 = [];\n\t\t var INV_SUB_MIX_3 = [];\n\t\n\t\t // Compute lookup tables\n\t\t (function () {\n\t\t // Compute double table\n\t\t var d = [];\n\t\t for (var i = 0; i < 256; i++) {\n\t\t if (i < 128) {\n\t\t d[i] = i << 1;\n\t\t } else {\n\t\t d[i] = (i << 1) ^ 0x11b;\n\t\t }\n\t\t }\n\t\n\t\t // Walk GF(2^8)\n\t\t var x = 0;\n\t\t var xi = 0;\n\t\t for (var i = 0; i < 256; i++) {\n\t\t // Compute sbox\n\t\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t\t SBOX[x] = sx;\n\t\t INV_SBOX[sx] = x;\n\t\n\t\t // Compute multiplication\n\t\t var x2 = d[x];\n\t\t var x4 = d[x2];\n\t\t var x8 = d[x4];\n\t\n\t\t // Compute sub bytes, mix columns tables\n\t\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t\t SUB_MIX_3[x] = t;\n\t\n\t\t // Compute inv sub bytes, inv mix columns tables\n\t\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t\t INV_SUB_MIX_3[sx] = t;\n\t\n\t\t // Compute next counter\n\t\t if (!x) {\n\t\t x = xi = 1;\n\t\t } else {\n\t\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t\t xi ^= d[d[xi]];\n\t\t }\n\t\t }\n\t\t }());\n\t\n\t\t // Precomputed Rcon lookup\n\t\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\t\n\t\t /**\n\t\t * AES block cipher algorithm.\n\t\t */\n\t\t var AES = C_algo.AES = BlockCipher.extend({\n\t\t _doReset: function () {\n\t\t // Skip reset of nRounds has been set before and key did not change\n\t\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t\t return;\n\t\t }\n\t\n\t\t // Shortcuts\n\t\t var key = this._keyPriorReset = this._key;\n\t\t var keyWords = key.words;\n\t\t var keySize = key.sigBytes / 4;\n\t\n\t\t // Compute number of rounds\n\t\t var nRounds = this._nRounds = keySize + 6;\n\t\n\t\t // Compute number of key schedule rows\n\t\t var ksRows = (nRounds + 1) * 4;\n\t\n\t\t // Compute key schedule\n\t\t var keySchedule = this._keySchedule = [];\n\t\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t\t if (ksRow < keySize) {\n\t\t keySchedule[ksRow] = keyWords[ksRow];\n\t\t } else {\n\t\t var t = keySchedule[ksRow - 1];\n\t\n\t\t if (!(ksRow % keySize)) {\n\t\t // Rot word\n\t\t t = (t << 8) | (t >>> 24);\n\t\n\t\t // Sub word\n\t\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t\n\t\t // Mix Rcon\n\t\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t\t // Sub word\n\t\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t\t }\n\t\n\t\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t\t }\n\t\t }\n\t\n\t\t // Compute inv key schedule\n\t\t var invKeySchedule = this._invKeySchedule = [];\n\t\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t\t var ksRow = ksRows - invKsRow;\n\t\n\t\t if (invKsRow % 4) {\n\t\t var t = keySchedule[ksRow];\n\t\t } else {\n\t\t var t = keySchedule[ksRow - 4];\n\t\t }\n\t\n\t\t if (invKsRow < 4 || ksRow <= 4) {\n\t\t invKeySchedule[invKsRow] = t;\n\t\t } else {\n\t\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t\t }\n\t\t }\n\t\t },\n\t\n\t\t encryptBlock: function (M, offset) {\n\t\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t\t },\n\t\n\t\t decryptBlock: function (M, offset) {\n\t\t // Swap 2nd and 4th rows\n\t\t var t = M[offset + 1];\n\t\t M[offset + 1] = M[offset + 3];\n\t\t M[offset + 3] = t;\n\t\n\t\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\t\n\t\t // Inv swap 2nd and 4th rows\n\t\t var t = M[offset + 1];\n\t\t M[offset + 1] = M[offset + 3];\n\t\t M[offset + 3] = t;\n\t\t },\n\t\n\t\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t\t // Shortcut\n\t\t var nRounds = this._nRounds;\n\t\n\t\t // Get input, add round key\n\t\t var s0 = M[offset] ^ keySchedule[0];\n\t\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t\t var s3 = M[offset + 3] ^ keySchedule[3];\n\t\n\t\t // Key schedule row counter\n\t\t var ksRow = 4;\n\t\n\t\t // Rounds\n\t\t for (var round = 1; round < nRounds; round++) {\n\t\t // Shift rows, sub bytes, mix columns, add round key\n\t\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\t\n\t\t // Update state\n\t\t s0 = t0;\n\t\t s1 = t1;\n\t\t s2 = t2;\n\t\t s3 = t3;\n\t\t }\n\t\n\t\t // Shift rows, sub bytes, add round key\n\t\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\t\n\t\t // Set output\n\t\t M[offset] = t0;\n\t\t M[offset + 1] = t1;\n\t\t M[offset + 2] = t2;\n\t\t M[offset + 3] = t3;\n\t\t },\n\t\n\t\t keySize: 256/32\n\t\t });\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.AES = BlockCipher._createHelper(AES);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.AES;\n\t\n\t}));\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var C_enc = C.enc;\n\t\n\t\t /**\n\t\t * Base64 encoding strategy.\n\t\t */\n\t\t var Base64 = C_enc.Base64 = {\n\t\t /**\n\t\t * Converts a word array to a Base64 string.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array.\n\t\t *\n\t\t * @return {string} The Base64 string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t\t */\n\t\t stringify: function (wordArray) {\n\t\t // Shortcuts\n\t\t var words = wordArray.words;\n\t\t var sigBytes = wordArray.sigBytes;\n\t\t var map = this._map;\n\t\n\t\t // Clamp excess bits\n\t\t wordArray.clamp();\n\t\n\t\t // Convert\n\t\t var base64Chars = [];\n\t\t for (var i = 0; i < sigBytes; i += 3) {\n\t\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\t\n\t\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\t\n\t\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t\t }\n\t\t }\n\t\n\t\t // Add padding\n\t\t var paddingChar = map.charAt(64);\n\t\t if (paddingChar) {\n\t\t while (base64Chars.length % 4) {\n\t\t base64Chars.push(paddingChar);\n\t\t }\n\t\t }\n\t\n\t\t return base64Chars.join('');\n\t\t },\n\t\n\t\t /**\n\t\t * Converts a Base64 string to a word array.\n\t\t *\n\t\t * @param {string} base64Str The Base64 string.\n\t\t *\n\t\t * @return {WordArray} The word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t\t */\n\t\t parse: function (base64Str) {\n\t\t // Shortcuts\n\t\t var base64StrLength = base64Str.length;\n\t\t var map = this._map;\n\t\t var reverseMap = this._reverseMap;\n\t\n\t\t if (!reverseMap) {\n\t\t reverseMap = this._reverseMap = [];\n\t\t for (var j = 0; j < map.length; j++) {\n\t\t reverseMap[map.charCodeAt(j)] = j;\n\t\t }\n\t\t }\n\t\n\t\t // Ignore padding\n\t\t var paddingChar = map.charAt(64);\n\t\t if (paddingChar) {\n\t\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t\t if (paddingIndex !== -1) {\n\t\t base64StrLength = paddingIndex;\n\t\t }\n\t\t }\n\t\n\t\t // Convert\n\t\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\t\n\t\t },\n\t\n\t\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t\t };\n\t\n\t\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t\t var words = [];\n\t\t var nBytes = 0;\n\t\t for (var i = 0; i < base64StrLength; i++) {\n\t\t if (i % 4) {\n\t\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t\t words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n\t\t nBytes++;\n\t\t }\n\t\t }\n\t\t return WordArray.create(words, nBytes);\n\t\t }\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.enc.Base64;\n\t\n\t}));\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function (Math) {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var Hasher = C_lib.Hasher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Constants table\n\t\t var T = [];\n\t\n\t\t // Compute constants\n\t\t (function () {\n\t\t for (var i = 0; i < 64; i++) {\n\t\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t\t }\n\t\t }());\n\t\n\t\t /**\n\t\t * MD5 hash algorithm.\n\t\t */\n\t\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t\t _doReset: function () {\n\t\t this._hash = new WordArray.init([\n\t\t 0x67452301, 0xefcdab89,\n\t\t 0x98badcfe, 0x10325476\n\t\t ]);\n\t\t },\n\t\n\t\t _doProcessBlock: function (M, offset) {\n\t\t // Swap endian\n\t\t for (var i = 0; i < 16; i++) {\n\t\t // Shortcuts\n\t\t var offset_i = offset + i;\n\t\t var M_offset_i = M[offset_i];\n\t\n\t\t M[offset_i] = (\n\t\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t\t );\n\t\t }\n\t\n\t\t // Shortcuts\n\t\t var H = this._hash.words;\n\t\n\t\t var M_offset_0 = M[offset + 0];\n\t\t var M_offset_1 = M[offset + 1];\n\t\t var M_offset_2 = M[offset + 2];\n\t\t var M_offset_3 = M[offset + 3];\n\t\t var M_offset_4 = M[offset + 4];\n\t\t var M_offset_5 = M[offset + 5];\n\t\t var M_offset_6 = M[offset + 6];\n\t\t var M_offset_7 = M[offset + 7];\n\t\t var M_offset_8 = M[offset + 8];\n\t\t var M_offset_9 = M[offset + 9];\n\t\t var M_offset_10 = M[offset + 10];\n\t\t var M_offset_11 = M[offset + 11];\n\t\t var M_offset_12 = M[offset + 12];\n\t\t var M_offset_13 = M[offset + 13];\n\t\t var M_offset_14 = M[offset + 14];\n\t\t var M_offset_15 = M[offset + 15];\n\t\n\t\t // Working varialbes\n\t\t var a = H[0];\n\t\t var b = H[1];\n\t\t var c = H[2];\n\t\t var d = H[3];\n\t\n\t\t // Computation\n\t\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\t\n\t\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\t\n\t\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\t\n\t\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\t\n\t\t // Intermediate hash value\n\t\t H[0] = (H[0] + a) | 0;\n\t\t H[1] = (H[1] + b) | 0;\n\t\t H[2] = (H[2] + c) | 0;\n\t\t H[3] = (H[3] + d) | 0;\n\t\t },\n\t\n\t\t _doFinalize: function () {\n\t\t // Shortcuts\n\t\t var data = this._data;\n\t\t var dataWords = data.words;\n\t\n\t\t var nBitsTotal = this._nDataBytes * 8;\n\t\t var nBitsLeft = data.sigBytes * 8;\n\t\n\t\t // Add padding\n\t\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t\n\t\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t\t var nBitsTotalL = nBitsTotal;\n\t\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t\t );\n\t\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t\t );\n\t\n\t\t data.sigBytes = (dataWords.length + 1) * 4;\n\t\n\t\t // Hash final blocks\n\t\t this._process();\n\t\n\t\t // Shortcuts\n\t\t var hash = this._hash;\n\t\t var H = hash.words;\n\t\n\t\t // Swap endian\n\t\t for (var i = 0; i < 4; i++) {\n\t\t // Shortcut\n\t\t var H_i = H[i];\n\t\n\t\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t\t }\n\t\n\t\t // Return final computed hash\n\t\t return hash;\n\t\t },\n\t\n\t\t clone: function () {\n\t\t var clone = Hasher.clone.call(this);\n\t\t clone._hash = this._hash.clone();\n\t\n\t\t return clone;\n\t\t }\n\t\t });\n\t\n\t\t function FF(a, b, c, d, x, s, t) {\n\t\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t\t return ((n << s) | (n >>> (32 - s))) + b;\n\t\t }\n\t\n\t\t function GG(a, b, c, d, x, s, t) {\n\t\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t\t return ((n << s) | (n >>> (32 - s))) + b;\n\t\t }\n\t\n\t\t function HH(a, b, c, d, x, s, t) {\n\t\t var n = a + (b ^ c ^ d) + x + t;\n\t\t return ((n << s) | (n >>> (32 - s))) + b;\n\t\t }\n\t\n\t\t function II(a, b, c, d, x, s, t) {\n\t\t var n = a + (c ^ (b | ~d)) + x + t;\n\t\t return ((n << s) | (n >>> (32 - s))) + b;\n\t\t }\n\t\n\t\t /**\n\t\t * Shortcut function to the hasher's object interface.\n\t\t *\n\t\t * @param {WordArray|string} message The message to hash.\n\t\t *\n\t\t * @return {WordArray} The hash.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hash = CryptoJS.MD5('message');\n\t\t * var hash = CryptoJS.MD5(wordArray);\n\t\t */\n\t\t C.MD5 = Hasher._createHelper(MD5);\n\t\n\t\t /**\n\t\t * Shortcut function to the HMAC's object interface.\n\t\t *\n\t\t * @param {WordArray|string} message The message to hash.\n\t\t * @param {WordArray|string} key The secret key.\n\t\t *\n\t\t * @return {WordArray} The HMAC.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t\t */\n\t\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t\t}(Math));\n\t\n\t\n\t\treturn CryptoJS.MD5;\n\t\n\t}));\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(6), __webpack_require__(7));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var Base = C_lib.Base;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var C_algo = C.algo;\n\t\t var MD5 = C_algo.MD5;\n\t\n\t\t /**\n\t\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t\t */\n\t\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t\t */\n\t\t cfg: Base.extend({\n\t\t keySize: 128/32,\n\t\t hasher: MD5,\n\t\t iterations: 1\n\t\t }),\n\t\n\t\t /**\n\t\t * Initializes a newly created key derivation function.\n\t\t *\n\t\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t\t */\n\t\t init: function (cfg) {\n\t\t this.cfg = this.cfg.extend(cfg);\n\t\t },\n\t\n\t\t /**\n\t\t * Derives a key from a password.\n\t\t *\n\t\t * @param {WordArray|string} password The password.\n\t\t * @param {WordArray|string} salt A salt.\n\t\t *\n\t\t * @return {WordArray} The derived key.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var key = kdf.compute(password, salt);\n\t\t */\n\t\t compute: function (password, salt) {\n\t\t // Shortcut\n\t\t var cfg = this.cfg;\n\t\n\t\t // Init hasher\n\t\t var hasher = cfg.hasher.create();\n\t\n\t\t // Initial values\n\t\t var derivedKey = WordArray.create();\n\t\n\t\t // Shortcuts\n\t\t var derivedKeyWords = derivedKey.words;\n\t\t var keySize = cfg.keySize;\n\t\t var iterations = cfg.iterations;\n\t\n\t\t // Generate key\n\t\t while (derivedKeyWords.length < keySize) {\n\t\t if (block) {\n\t\t hasher.update(block);\n\t\t }\n\t\t var block = hasher.update(password).finalize(salt);\n\t\t hasher.reset();\n\t\n\t\t // Iterations\n\t\t for (var i = 1; i < iterations; i++) {\n\t\t block = hasher.finalize(block);\n\t\t hasher.reset();\n\t\t }\n\t\n\t\t derivedKey.concat(block);\n\t\t }\n\t\t derivedKey.sigBytes = keySize * 4;\n\t\n\t\t return derivedKey;\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Derives a key from a password.\n\t\t *\n\t\t * @param {WordArray|string} password The password.\n\t\t * @param {WordArray|string} salt A salt.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t\t *\n\t\t * @return {WordArray} The derived key.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var key = CryptoJS.EvpKDF(password, salt);\n\t\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t\t */\n\t\t C.EvpKDF = function (password, salt, cfg) {\n\t\t return EvpKDF.create(cfg).compute(password, salt);\n\t\t };\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.EvpKDF;\n\t\n\t}));\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t/**\n\t\t * Cipher core components.\n\t\t */\n\t\tCryptoJS.lib.Cipher || (function (undefined) {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var Base = C_lib.Base;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t\t var C_enc = C.enc;\n\t\t var Utf8 = C_enc.Utf8;\n\t\t var Base64 = C_enc.Base64;\n\t\t var C_algo = C.algo;\n\t\t var EvpKDF = C_algo.EvpKDF;\n\t\n\t\t /**\n\t\t * Abstract base cipher template.\n\t\t *\n\t\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t\t */\n\t\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {WordArray} iv The IV to use for this operation.\n\t\t */\n\t\t cfg: Base.extend(),\n\t\n\t\t /**\n\t\t * Creates this cipher in encryption mode.\n\t\t *\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {Cipher} A cipher instance.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t\t */\n\t\t createEncryptor: function (key, cfg) {\n\t\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t\t },\n\t\n\t\t /**\n\t\t * Creates this cipher in decryption mode.\n\t\t *\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {Cipher} A cipher instance.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t\t */\n\t\t createDecryptor: function (key, cfg) {\n\t\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t\t },\n\t\n\t\t /**\n\t\t * Initializes a newly created cipher.\n\t\t *\n\t\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t\t */\n\t\t init: function (xformMode, key, cfg) {\n\t\t // Apply config defaults\n\t\t this.cfg = this.cfg.extend(cfg);\n\t\n\t\t // Store transform mode and key\n\t\t this._xformMode = xformMode;\n\t\t this._key = key;\n\t\n\t\t // Set initial values\n\t\t this.reset();\n\t\t },\n\t\n\t\t /**\n\t\t * Resets this cipher to its initial state.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * cipher.reset();\n\t\t */\n\t\t reset: function () {\n\t\t // Reset data buffer\n\t\t BufferedBlockAlgorithm.reset.call(this);\n\t\n\t\t // Perform concrete-cipher logic\n\t\t this._doReset();\n\t\t },\n\t\n\t\t /**\n\t\t * Adds data to be encrypted or decrypted.\n\t\t *\n\t\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t\t *\n\t\t * @return {WordArray} The data after processing.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var encrypted = cipher.process('data');\n\t\t * var encrypted = cipher.process(wordArray);\n\t\t */\n\t\t process: function (dataUpdate) {\n\t\t // Append\n\t\t this._append(dataUpdate);\n\t\n\t\t // Process available blocks\n\t\t return this._process();\n\t\t },\n\t\n\t\t /**\n\t\t * Finalizes the encryption or decryption process.\n\t\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t\t *\n\t\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t\t *\n\t\t * @return {WordArray} The data after final processing.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var encrypted = cipher.finalize();\n\t\t * var encrypted = cipher.finalize('data');\n\t\t * var encrypted = cipher.finalize(wordArray);\n\t\t */\n\t\t finalize: function (dataUpdate) {\n\t\t // Final data update\n\t\t if (dataUpdate) {\n\t\t this._append(dataUpdate);\n\t\t }\n\t\n\t\t // Perform concrete-cipher logic\n\t\t var finalProcessedData = this._doFinalize();\n\t\n\t\t return finalProcessedData;\n\t\t },\n\t\n\t\t keySize: 128/32,\n\t\n\t\t ivSize: 128/32,\n\t\n\t\t _ENC_XFORM_MODE: 1,\n\t\n\t\t _DEC_XFORM_MODE: 2,\n\t\n\t\t /**\n\t\t * Creates shortcut functions to a cipher's object interface.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher to create a helper for.\n\t\t *\n\t\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t\t */\n\t\t _createHelper: (function () {\n\t\t function selectCipherStrategy(key) {\n\t\t if (typeof key == 'string') {\n\t\t return PasswordBasedCipher;\n\t\t } else {\n\t\t return SerializableCipher;\n\t\t }\n\t\t }\n\t\n\t\t return function (cipher) {\n\t\t return {\n\t\t encrypt: function (message, key, cfg) {\n\t\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t\t },\n\t\n\t\t decrypt: function (ciphertext, key, cfg) {\n\t\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t\t }\n\t\t };\n\t\t };\n\t\t }())\n\t\t });\n\t\n\t\t /**\n\t\t * Abstract base stream cipher template.\n\t\t *\n\t\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t\t */\n\t\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t\t _doFinalize: function () {\n\t\t // Process partial blocks\n\t\t var finalProcessedBlocks = this._process(!!'flush');\n\t\n\t\t return finalProcessedBlocks;\n\t\t },\n\t\n\t\t blockSize: 1\n\t\t });\n\t\n\t\t /**\n\t\t * Mode namespace.\n\t\t */\n\t\t var C_mode = C.mode = {};\n\t\n\t\t /**\n\t\t * Abstract base block cipher mode template.\n\t\t */\n\t\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t\t /**\n\t\t * Creates this mode for encryption.\n\t\t *\n\t\t * @param {Cipher} cipher A block cipher instance.\n\t\t * @param {Array} iv The IV words.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t\t */\n\t\t createEncryptor: function (cipher, iv) {\n\t\t return this.Encryptor.create(cipher, iv);\n\t\t },\n\t\n\t\t /**\n\t\t * Creates this mode for decryption.\n\t\t *\n\t\t * @param {Cipher} cipher A block cipher instance.\n\t\t * @param {Array} iv The IV words.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t\t */\n\t\t createDecryptor: function (cipher, iv) {\n\t\t return this.Decryptor.create(cipher, iv);\n\t\t },\n\t\n\t\t /**\n\t\t * Initializes a newly created mode.\n\t\t *\n\t\t * @param {Cipher} cipher A block cipher instance.\n\t\t * @param {Array} iv The IV words.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t\t */\n\t\t init: function (cipher, iv) {\n\t\t this._cipher = cipher;\n\t\t this._iv = iv;\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Cipher Block Chaining mode.\n\t\t */\n\t\t var CBC = C_mode.CBC = (function () {\n\t\t /**\n\t\t * Abstract base CBC mode.\n\t\t */\n\t\t var CBC = BlockCipherMode.extend();\n\t\n\t\t /**\n\t\t * CBC encryptor.\n\t\t */\n\t\t CBC.Encryptor = CBC.extend({\n\t\t /**\n\t\t * Processes the data block at offset.\n\t\t *\n\t\t * @param {Array} words The data words to operate on.\n\t\t * @param {number} offset The offset where the block starts.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * mode.processBlock(data.words, offset);\n\t\t */\n\t\t processBlock: function (words, offset) {\n\t\t // Shortcuts\n\t\t var cipher = this._cipher;\n\t\t var blockSize = cipher.blockSize;\n\t\n\t\t // XOR and encrypt\n\t\t xorBlock.call(this, words, offset, blockSize);\n\t\t cipher.encryptBlock(words, offset);\n\t\n\t\t // Remember this block to use with next block\n\t\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * CBC decryptor.\n\t\t */\n\t\t CBC.Decryptor = CBC.extend({\n\t\t /**\n\t\t * Processes the data block at offset.\n\t\t *\n\t\t * @param {Array} words The data words to operate on.\n\t\t * @param {number} offset The offset where the block starts.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * mode.processBlock(data.words, offset);\n\t\t */\n\t\t processBlock: function (words, offset) {\n\t\t // Shortcuts\n\t\t var cipher = this._cipher;\n\t\t var blockSize = cipher.blockSize;\n\t\n\t\t // Remember this block to use with next block\n\t\t var thisBlock = words.slice(offset, offset + blockSize);\n\t\n\t\t // Decrypt and XOR\n\t\t cipher.decryptBlock(words, offset);\n\t\t xorBlock.call(this, words, offset, blockSize);\n\t\n\t\t // This block becomes the previous block\n\t\t this._prevBlock = thisBlock;\n\t\t }\n\t\t });\n\t\n\t\t function xorBlock(words, offset, blockSize) {\n\t\t // Shortcut\n\t\t var iv = this._iv;\n\t\n\t\t // Choose mixing block\n\t\t if (iv) {\n\t\t var block = iv;\n\t\n\t\t // Remove IV for subsequent blocks\n\t\t this._iv = undefined;\n\t\t } else {\n\t\t var block = this._prevBlock;\n\t\t }\n\t\n\t\t // XOR blocks\n\t\t for (var i = 0; i < blockSize; i++) {\n\t\t words[offset + i] ^= block[i];\n\t\t }\n\t\t }\n\t\n\t\t return CBC;\n\t\t }());\n\t\n\t\t /**\n\t\t * Padding namespace.\n\t\t */\n\t\t var C_pad = C.pad = {};\n\t\n\t\t /**\n\t\t * PKCS #5/7 padding strategy.\n\t\t */\n\t\t var Pkcs7 = C_pad.Pkcs7 = {\n\t\t /**\n\t\t * Pads data using the algorithm defined in PKCS #5/7.\n\t\t *\n\t\t * @param {WordArray} data The data to pad.\n\t\t * @param {number} blockSize The multiple that the data should be padded to.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t\t */\n\t\t pad: function (data, blockSize) {\n\t\t // Shortcut\n\t\t var blockSizeBytes = blockSize * 4;\n\t\n\t\t // Count padding bytes\n\t\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\t\n\t\t // Create padding word\n\t\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\t\n\t\t // Create padding\n\t\t var paddingWords = [];\n\t\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t\t paddingWords.push(paddingWord);\n\t\t }\n\t\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\t\n\t\t // Add padding\n\t\t data.concat(padding);\n\t\t },\n\t\n\t\t /**\n\t\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t\t *\n\t\t * @param {WordArray} data The data to unpad.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t\t */\n\t\t unpad: function (data) {\n\t\t // Get number of padding bytes from last byte\n\t\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\t\n\t\t // Remove padding\n\t\t data.sigBytes -= nPaddingBytes;\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * Abstract base block cipher template.\n\t\t *\n\t\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t\t */\n\t\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {Mode} mode The block mode to use. Default: CBC\n\t\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t\t */\n\t\t cfg: Cipher.cfg.extend({\n\t\t mode: CBC,\n\t\t padding: Pkcs7\n\t\t }),\n\t\n\t\t reset: function () {\n\t\t // Reset cipher\n\t\t Cipher.reset.call(this);\n\t\n\t\t // Shortcuts\n\t\t var cfg = this.cfg;\n\t\t var iv = cfg.iv;\n\t\t var mode = cfg.mode;\n\t\n\t\t // Reset block mode\n\t\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t\t var modeCreator = mode.createEncryptor;\n\t\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t\t var modeCreator = mode.createDecryptor;\n\t\n\t\t // Keep at least one block in the buffer for unpadding\n\t\t this._minBufferSize = 1;\n\t\t }\n\t\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t\t },\n\t\n\t\t _doProcessBlock: function (words, offset) {\n\t\t this._mode.processBlock(words, offset);\n\t\t },\n\t\n\t\t _doFinalize: function () {\n\t\t // Shortcut\n\t\t var padding = this.cfg.padding;\n\t\n\t\t // Finalize\n\t\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t\t // Pad data\n\t\t padding.pad(this._data, this.blockSize);\n\t\n\t\t // Process final blocks\n\t\t var finalProcessedBlocks = this._process(!!'flush');\n\t\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t\t // Process final blocks\n\t\t var finalProcessedBlocks = this._process(!!'flush');\n\t\n\t\t // Unpad data\n\t\t padding.unpad(finalProcessedBlocks);\n\t\t }\n\t\n\t\t return finalProcessedBlocks;\n\t\t },\n\t\n\t\t blockSize: 128/32\n\t\t });\n\t\n\t\t /**\n\t\t * A collection of cipher parameters.\n\t\t *\n\t\t * @property {WordArray} ciphertext The raw ciphertext.\n\t\t * @property {WordArray} key The key to this ciphertext.\n\t\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t\t * @property {WordArray} salt The salt used with a key derivation function.\n\t\t * @property {Cipher} algorithm The cipher algorithm.\n\t\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t\t * @property {number} blockSize The block size of the cipher.\n\t\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t\t */\n\t\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t\t /**\n\t\t * Initializes a newly created cipher params object.\n\t\t *\n\t\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t\t * ciphertext: ciphertextWordArray,\n\t\t * key: keyWordArray,\n\t\t * iv: ivWordArray,\n\t\t * salt: saltWordArray,\n\t\t * algorithm: CryptoJS.algo.AES,\n\t\t * mode: CryptoJS.mode.CBC,\n\t\t * padding: CryptoJS.pad.PKCS7,\n\t\t * blockSize: 4,\n\t\t * formatter: CryptoJS.format.OpenSSL\n\t\t * });\n\t\t */\n\t\t init: function (cipherParams) {\n\t\t this.mixIn(cipherParams);\n\t\t },\n\t\n\t\t /**\n\t\t * Converts this cipher params object to a string.\n\t\t *\n\t\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t\t *\n\t\t * @return {string} The stringified cipher params.\n\t\t *\n\t\t * @throws Error If neither the formatter nor the default formatter is set.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var string = cipherParams + '';\n\t\t * var string = cipherParams.toString();\n\t\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t\t */\n\t\t toString: function (formatter) {\n\t\t return (formatter || this.formatter).stringify(this);\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Format namespace.\n\t\t */\n\t\t var C_format = C.format = {};\n\t\n\t\t /**\n\t\t * OpenSSL formatting strategy.\n\t\t */\n\t\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t\t /**\n\t\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t\t *\n\t\t * @param {CipherParams} cipherParams The cipher params object.\n\t\t *\n\t\t * @return {string} The OpenSSL-compatible string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t\t */\n\t\t stringify: function (cipherParams) {\n\t\t // Shortcuts\n\t\t var ciphertext = cipherParams.ciphertext;\n\t\t var salt = cipherParams.salt;\n\t\n\t\t // Format\n\t\t if (salt) {\n\t\t var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t\t } else {\n\t\t var wordArray = ciphertext;\n\t\t }\n\t\n\t\t return wordArray.toString(Base64);\n\t\t },\n\t\n\t\t /**\n\t\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t\t *\n\t\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t\t *\n\t\t * @return {CipherParams} The cipher params object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t\t */\n\t\t parse: function (openSSLStr) {\n\t\t // Parse base64\n\t\t var ciphertext = Base64.parse(openSSLStr);\n\t\n\t\t // Shortcut\n\t\t var ciphertextWords = ciphertext.words;\n\t\n\t\t // Test for salt\n\t\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t\t // Extract salt\n\t\t var salt = WordArray.create(ciphertextWords.slice(2, 4));\n\t\n\t\t // Remove salt from ciphertext\n\t\t ciphertextWords.splice(0, 4);\n\t\t ciphertext.sigBytes -= 16;\n\t\t }\n\t\n\t\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t\t */\n\t\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t\t */\n\t\t cfg: Base.extend({\n\t\t format: OpenSSLFormatter\n\t\t }),\n\t\n\t\t /**\n\t\t * Encrypts a message.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher algorithm to use.\n\t\t * @param {WordArray|string} message The message to encrypt.\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {CipherParams} A cipher params object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t\t */\n\t\t encrypt: function (cipher, message, key, cfg) {\n\t\t // Apply config defaults\n\t\t cfg = this.cfg.extend(cfg);\n\t\n\t\t // Encrypt\n\t\t var encryptor = cipher.createEncryptor(key, cfg);\n\t\t var ciphertext = encryptor.finalize(message);\n\t\n\t\t // Shortcut\n\t\t var cipherCfg = encryptor.cfg;\n\t\n\t\t // Create and return serializable cipher params\n\t\t return CipherParams.create({\n\t\t ciphertext: ciphertext,\n\t\t key: key,\n\t\t iv: cipherCfg.iv,\n\t\t algorithm: cipher,\n\t\t mode: cipherCfg.mode,\n\t\t padding: cipherCfg.padding,\n\t\t blockSize: cipher.blockSize,\n\t\t formatter: cfg.format\n\t\t });\n\t\t },\n\t\n\t\t /**\n\t\t * Decrypts serialized ciphertext.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher algorithm to use.\n\t\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {WordArray} The plaintext.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t\t */\n\t\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t\t // Apply config defaults\n\t\t cfg = this.cfg.extend(cfg);\n\t\n\t\t // Convert string to CipherParams\n\t\t ciphertext = this._parse(ciphertext, cfg.format);\n\t\n\t\t // Decrypt\n\t\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\t\n\t\t return plaintext;\n\t\t },\n\t\n\t\t /**\n\t\t * Converts serialized ciphertext to CipherParams,\n\t\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t\t *\n\t\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t\t *\n\t\t * @return {CipherParams} The unserialized ciphertext.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t\t */\n\t\t _parse: function (ciphertext, format) {\n\t\t if (typeof ciphertext == 'string') {\n\t\t return format.parse(ciphertext, this);\n\t\t } else {\n\t\t return ciphertext;\n\t\t }\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Key derivation function namespace.\n\t\t */\n\t\t var C_kdf = C.kdf = {};\n\t\n\t\t /**\n\t\t * OpenSSL key derivation function.\n\t\t */\n\t\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t\t /**\n\t\t * Derives a key and IV from a password.\n\t\t *\n\t\t * @param {string} password The password to derive from.\n\t\t * @param {number} keySize The size in words of the key to generate.\n\t\t * @param {number} ivSize The size in words of the IV to generate.\n\t\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t\t *\n\t\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t\t */\n\t\t execute: function (password, keySize, ivSize, salt) {\n\t\t // Generate random salt\n\t\t if (!salt) {\n\t\t salt = WordArray.random(64/8);\n\t\t }\n\t\n\t\t // Derive key and IV\n\t\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\t\n\t\t // Separate key and IV\n\t\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t\t key.sigBytes = keySize * 4;\n\t\n\t\t // Return params\n\t\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * A serializable cipher wrapper that derives the key from a password,\n\t\t * and returns ciphertext as a serializable cipher params object.\n\t\t */\n\t\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t\t */\n\t\t cfg: SerializableCipher.cfg.extend({\n\t\t kdf: OpenSSLKdf\n\t\t }),\n\t\n\t\t /**\n\t\t * Encrypts a message using a password.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher algorithm to use.\n\t\t * @param {WordArray|string} message The message to encrypt.\n\t\t * @param {string} password The password.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {CipherParams} A cipher params object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t\t */\n\t\t encrypt: function (cipher, message, password, cfg) {\n\t\t // Apply config defaults\n\t\t cfg = this.cfg.extend(cfg);\n\t\n\t\t // Derive key and other params\n\t\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\t\n\t\t // Add IV to config\n\t\t cfg.iv = derivedParams.iv;\n\t\n\t\t // Encrypt\n\t\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\t\n\t\t // Mix in derived params\n\t\t ciphertext.mixIn(derivedParams);\n\t\n\t\t return ciphertext;\n\t\t },\n\t\n\t\t /**\n\t\t * Decrypts serialized ciphertext using a password.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher algorithm to use.\n\t\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t\t * @param {string} password The password.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {WordArray} The plaintext.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t\t */\n\t\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t\t // Apply config defaults\n\t\t cfg = this.cfg.extend(cfg);\n\t\n\t\t // Convert string to CipherParams\n\t\t ciphertext = this._parse(ciphertext, cfg.format);\n\t\n\t\t // Derive key and other params\n\t\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\t\n\t\t // Add IV to config\n\t\t cfg.iv = derivedParams.iv;\n\t\n\t\t // Decrypt\n\t\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\t\n\t\t return plaintext;\n\t\t }\n\t\t });\n\t\t}());\n\t\n\t\n\t}));\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(12), __webpack_require__(13), __webpack_require__(14), __webpack_require__(15));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var BlockCipher = C_lib.BlockCipher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Permuted Choice 1 constants\n\t\t var PC1 = [\n\t\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t\t 29, 21, 13, 5, 28, 20, 12, 4\n\t\t ];\n\t\n\t\t // Permuted Choice 2 constants\n\t\t var PC2 = [\n\t\t 14, 17, 11, 24, 1, 5,\n\t\t 3, 28, 15, 6, 21, 10,\n\t\t 23, 19, 12, 4, 26, 8,\n\t\t 16, 7, 27, 20, 13, 2,\n\t\t 41, 52, 31, 37, 47, 55,\n\t\t 30, 40, 51, 45, 33, 48,\n\t\t 44, 49, 39, 56, 34, 53,\n\t\t 46, 42, 50, 36, 29, 32\n\t\t ];\n\t\n\t\t // Cumulative bit shift constants\n\t\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\t\n\t\t // SBOXes and round permutation constants\n\t\t var SBOX_P = [\n\t\t {\n\t\t 0x0: 0x808200,\n\t\t 0x10000000: 0x8000,\n\t\t 0x20000000: 0x808002,\n\t\t 0x30000000: 0x2,\n\t\t 0x40000000: 0x200,\n\t\t 0x50000000: 0x808202,\n\t\t 0x60000000: 0x800202,\n\t\t 0x70000000: 0x800000,\n\t\t 0x80000000: 0x202,\n\t\t 0x90000000: 0x800200,\n\t\t 0xa0000000: 0x8200,\n\t\t 0xb0000000: 0x808000,\n\t\t 0xc0000000: 0x8002,\n\t\t 0xd0000000: 0x800002,\n\t\t 0xe0000000: 0x0,\n\t\t 0xf0000000: 0x8202,\n\t\t 0x8000000: 0x0,\n\t\t 0x18000000: 0x808202,\n\t\t 0x28000000: 0x8202,\n\t\t 0x38000000: 0x8000,\n\t\t 0x48000000: 0x808200,\n\t\t 0x58000000: 0x200,\n\t\t 0x68000000: 0x808002,\n\t\t 0x78000000: 0x2,\n\t\t 0x88000000: 0x800200,\n\t\t 0x98000000: 0x8200,\n\t\t 0xa8000000: 0x808000,\n\t\t 0xb8000000: 0x800202,\n\t\t 0xc8000000: 0x800002,\n\t\t 0xd8000000: 0x8002,\n\t\t 0xe8000000: 0x202,\n\t\t 0xf8000000: 0x800000,\n\t\t 0x1: 0x8000,\n\t\t 0x10000001: 0x2,\n\t\t 0x20000001: 0x808200,\n\t\t 0x30000001: 0x800000,\n\t\t 0x40000001: 0x808002,\n\t\t 0x50000001: 0x8200,\n\t\t 0x60000001: 0x200,\n\t\t 0x70000001: 0x800202,\n\t\t 0x80000001: 0x808202,\n\t\t 0x90000001: 0x808000,\n\t\t 0xa0000001: 0x800002,\n\t\t 0xb0000001: 0x8202,\n\t\t 0xc0000001: 0x202,\n\t\t 0xd0000001: 0x800200,\n\t\t 0xe0000001: 0x8002,\n\t\t 0xf0000001: 0x0,\n\t\t 0x8000001: 0x808202,\n\t\t 0x18000001: 0x808000,\n\t\t 0x28000001: 0x800000,\n\t\t 0x38000001: 0x200,\n\t\t 0x48000001: 0x8000,\n\t\t 0x58000001: 0x800002,\n\t\t 0x68000001: 0x2,\n\t\t 0x78000001: 0x8202,\n\t\t 0x88000001: 0x8002,\n\t\t 0x98000001: 0x800202,\n\t\t 0xa8000001: 0x202,\n\t\t 0xb8000001: 0x808200,\n\t\t 0xc8000001: 0x800200,\n\t\t 0xd8000001: 0x0,\n\t\t 0xe8000001: 0x8200,\n\t\t 0xf8000001: 0x808002\n\t\t },\n\t\t {\n\t\t 0x0: 0x40084010,\n\t\t 0x1000000: 0x4000,\n\t\t 0x2000000: 0x80000,\n\t\t 0x3000000: 0x40080010,\n\t\t 0x4000000: 0x40000010,\n\t\t 0x5000000: 0x40084000,\n\t\t 0x6000000: 0x40004000,\n\t\t 0x7000000: 0x10,\n\t\t 0x8000000: 0x84000,\n\t\t 0x9000000: 0x40004010,\n\t\t 0xa000000: 0x40000000,\n\t\t 0xb000000: 0x84010,\n\t\t 0xc000000: 0x80010,\n\t\t 0xd000000: 0x0,\n\t\t 0xe000000: 0x4010,\n\t\t 0xf000000: 0x40080000,\n\t\t 0x800000: 0x40004000,\n\t\t 0x1800000: 0x84010,\n\t\t 0x2800000: 0x10,\n\t\t 0x3800000: 0x40004010,\n\t\t 0x4800000: 0x40084010,\n\t\t 0x5800000: 0x40000000,\n\t\t 0x6800000: 0x80000,\n\t\t 0x7800000: 0x40080010,\n\t\t 0x8800000: 0x80010,\n\t\t 0x9800000: 0x0,\n\t\t 0xa800000: 0x4000,\n\t\t 0xb800000: 0x40080000,\n\t\t 0xc800000: 0x40000010,\n\t\t 0xd800000: 0x84000,\n\t\t 0xe800000: 0x40084000,\n\t\t 0xf800000: 0x4010,\n\t\t 0x10000000: 0x0,\n\t\t 0x11000000: 0x40080010,\n\t\t 0x12000000: 0x40004010,\n\t\t 0x13000000: 0x40084000,\n\t\t 0x14000000: 0x40080000,\n\t\t 0x15000000: 0x10,\n\t\t 0x16000000: 0x84010,\n\t\t 0x17000000: 0x4000,\n\t\t 0x18000000: 0x4010,\n\t\t 0x19000000: 0x80000,\n\t\t 0x1a000000: 0x80010,\n\t\t 0x1b000000: 0x40000010,\n\t\t 0x1c000000: 0x84000,\n\t\t 0x1d000000: 0x40004000,\n\t\t 0x1e000000: 0x40000000,\n\t\t 0x1f000000: 0x40084010,\n\t\t 0x10800000: 0x84010,\n\t\t 0x11800000: 0x80000,\n\t\t 0x12800000: 0x40080000,\n\t\t 0x13800000: 0x4000,\n\t\t 0x14800000: 0x40004000,\n\t\t 0x15800000: 0x40084010,\n\t\t 0x16800000: 0x10,\n\t\t 0x17800000: 0x40000000,\n\t\t 0x18800000: 0x40084000,\n\t\t 0x19800000: 0x40000010,\n\t\t 0x1a800000: 0x40004010,\n\t\t 0x1b800000: 0x80010,\n\t\t 0x1c800000: 0x0,\n\t\t 0x1d800000: 0x4010,\n\t\t 0x1e800000: 0x40080010,\n\t\t 0x1f800000: 0x84000\n\t\t },\n\t\t {\n\t\t 0x0: 0x104,\n\t\t 0x100000: 0x0,\n\t\t 0x200000: 0x4000100,\n\t\t 0x300000: 0x10104,\n\t\t 0x400000: 0x10004,\n\t\t 0x500000: 0x4000004,\n\t\t 0x600000: 0x4010104,\n\t\t 0x700000: 0x4010000,\n\t\t 0x800000: 0x4000000,\n\t\t 0x900000: 0x4010100,\n\t\t 0xa00000: 0x10100,\n\t\t 0xb00000: 0x4010004,\n\t\t 0xc00000: 0x4000104,\n\t\t 0xd00000: 0x10000,\n\t\t 0xe00000: 0x4,\n\t\t 0xf00000: 0x100,\n\t\t 0x80000: 0x4010100,\n\t\t 0x180000: 0x4010004,\n\t\t 0x280000: 0x0,\n\t\t 0x380000: 0x4000100,\n\t\t 0x480000: 0x4000004,\n\t\t 0x580000: 0x10000,\n\t\t 0x680000: 0x10004,\n\t\t 0x780000: 0x104,\n\t\t 0x880000: 0x4,\n\t\t 0x980000: 0x100,\n\t\t 0xa80000: 0x4010000,\n\t\t 0xb80000: 0x10104,\n\t\t 0xc80000: 0x10100,\n\t\t 0xd80000: 0x4000104,\n\t\t 0xe80000: 0x4010104,\n\t\t 0xf80000: 0x4000000,\n\t\t 0x1000000: 0x4010100,\n\t\t 0x1100000: 0x10004,\n\t\t 0x1200000: 0x10000,\n\t\t 0x1300000: 0x4000100,\n\t\t 0x1400000: 0x100,\n\t\t 0x1500000: 0x4010104,\n\t\t 0x1600000: 0x4000004,\n\t\t 0x1700000: 0x0,\n\t\t 0x1800000: 0x4000104,\n\t\t 0x1900000: 0x4000000,\n\t\t 0x1a00000: 0x4,\n\t\t 0x1b00000: 0x10100,\n\t\t 0x1c00000: 0x4010000,\n\t\t 0x1d00000: 0x104,\n\t\t 0x1e00000: 0x10104,\n\t\t 0x1f00000: 0x4010004,\n\t\t 0x1080000: 0x4000000,\n\t\t 0x1180000: 0x104,\n\t\t 0x1280000: 0x4010100,\n\t\t 0x1380000: 0x0,\n\t\t 0x1480000: 0x10004,\n\t\t 0x1580000: 0x4000100,\n\t\t 0x1680000: 0x100,\n\t\t 0x1780000: 0x4010004,\n\t\t 0x1880000: 0x10000,\n\t\t 0x1980000: 0x4010104,\n\t\t 0x1a80000: 0x10104,\n\t\t 0x1b80000: 0x4000004,\n\t\t 0x1c80000: 0x4000104,\n\t\t 0x1d80000: 0x4010000,\n\t\t 0x1e80000: 0x4,\n\t\t 0x1f80000: 0x10100\n\t\t },\n\t\t {\n\t\t 0x0: 0x80401000,\n\t\t 0x10000: 0x80001040,\n\t\t 0x20000: 0x401040,\n\t\t 0x30000: 0x80400000,\n\t\t 0x40000: 0x0,\n\t\t 0x50000: 0x401000,\n\t\t 0x60000: 0x80000040,\n\t\t 0x70000: 0x400040,\n\t\t 0x80000: 0x80000000,\n\t\t 0x90000: 0x400000,\n\t\t 0xa0000: 0x40,\n\t\t 0xb0000: 0x80001000,\n\t\t 0xc0000: 0x80400040,\n\t\t 0xd0000: 0x1040,\n\t\t 0xe0000: 0x1000,\n\t\t 0xf0000: 0x80401040,\n\t\t 0x8000: 0x80001040,\n\t\t 0x18000: 0x40,\n\t\t 0x28000: 0x80400040,\n\t\t 0x38000: 0x80001000,\n\t\t 0x48000: 0x401000,\n\t\t 0x58000: 0x80401040,\n\t\t 0x68000: 0x0,\n\t\t 0x78000: 0x80400000,\n\t\t 0x88000: 0x1000,\n\t\t 0x98000: 0x80401000,\n\t\t 0xa8000: 0x400000,\n\t\t 0xb8000: 0x1040,\n\t\t 0xc8000: 0x80000000,\n\t\t 0xd8000: 0x400040,\n\t\t 0xe8000: 0x401040,\n\t\t 0xf8000: 0x80000040,\n\t\t 0x100000: 0x400040,\n\t\t 0x110000: 0x401000,\n\t\t 0x120000: 0x80000040,\n\t\t 0x130000: 0x0,\n\t\t 0x140000: 0x1040,\n\t\t 0x150000: 0x80400040,\n\t\t 0x160000: 0x80401000,\n\t\t 0x170000: 0x80001040,\n\t\t 0x180000: 0x80401040,\n\t\t 0x190000: 0x80000000,\n\t\t 0x1a0000: 0x80400000,\n\t\t 0x1b0000: 0x401040,\n\t\t 0x1c0000: 0x80001000,\n\t\t 0x1d0000: 0x400000,\n\t\t 0x1e0000: 0x40,\n\t\t 0x1f0000: 0x1000,\n\t\t 0x108000: 0x80400000,\n\t\t 0x118000: 0x80401040,\n\t\t 0x128000: 0x0,\n\t\t 0x138000: 0x401000,\n\t\t 0x148000: 0x400040,\n\t\t 0x158000: 0x80000000,\n\t\t 0x168000: 0x80001040,\n\t\t 0x178000: 0x40,\n\t\t 0x188000: 0x80000040,\n\t\t 0x198000: 0x1000,\n\t\t 0x1a8000: 0x80001000,\n\t\t 0x1b8000: 0x80400040,\n\t\t 0x1c8000: 0x1040,\n\t\t 0x1d8000: 0x80401000,\n\t\t 0x1e8000: 0x400000,\n\t\t 0x1f8000: 0x401040\n\t\t },\n\t\t {\n\t\t 0x0: 0x80,\n\t\t 0x1000: 0x1040000,\n\t\t 0x2000: 0x40000,\n\t\t 0x3000: 0x20000000,\n\t\t 0x4000: 0x20040080,\n\t\t 0x5000: 0x1000080,\n\t\t 0x6000: 0x21000080,\n\t\t 0x7000: 0x40080,\n\t\t 0x8000: 0x1000000,\n\t\t 0x9000: 0x20040000,\n\t\t 0xa000: 0x20000080,\n\t\t 0xb000: 0x21040080,\n\t\t 0xc000: 0x21040000,\n\t\t 0xd000: 0x0,\n\t\t 0xe000: 0x1040080,\n\t\t 0xf000: 0x21000000,\n\t\t 0x800: 0x1040080,\n\t\t 0x1800: 0x21000080,\n\t\t 0x2800: 0x80,\n\t\t 0x3800: 0x1040000,\n\t\t 0x4800: 0x40000,\n\t\t 0x5800: 0x20040080,\n\t\t 0x6800: 0x21040000,\n\t\t 0x7800: 0x20000000,\n\t\t 0x8800: 0x20040000,\n\t\t 0x9800: 0x0,\n\t\t 0xa800: 0x21040080,\n\t\t 0xb800: 0x1000080,\n\t\t 0xc800: 0x20000080,\n\t\t 0xd800: 0x21000000,\n\t\t 0xe800: 0x1000000,\n\t\t 0xf800: 0x40080,\n\t\t 0x10000: 0x40000,\n\t\t 0x11000: 0x80,\n\t\t 0x12000: 0x20000000,\n\t\t 0x13000: 0x21000080,\n\t\t 0x14000: 0x1000080,\n\t\t 0x15000: 0x21040000,\n\t\t 0x16000: 0x20040080,\n\t\t 0x17000: 0x1000000,\n\t\t 0x18000: 0x21040080,\n\t\t 0x19000: 0x21000000,\n\t\t 0x1a000: 0x1040000,\n\t\t 0x1b000: 0x20040000,\n\t\t 0x1c000: 0x40080,\n\t\t 0x1d000: 0x20000080,\n\t\t 0x1e000: 0x0,\n\t\t 0x1f000: 0x1040080,\n\t\t 0x10800: 0x21000080,\n\t\t 0x11800: 0x1000000,\n\t\t 0x12800: 0x1040000,\n\t\t 0x13800: 0x20040080,\n\t\t 0x14800: 0x20000000,\n\t\t 0x15800: 0x1040080,\n\t\t 0x16800: 0x80,\n\t\t 0x17800: 0x21040000,\n\t\t 0x18800: 0x40080,\n\t\t 0x19800: 0x21040080,\n\t\t 0x1a800: 0x0,\n\t\t 0x1b800: 0x21000000,\n\t\t 0x1c800: 0x1000080,\n\t\t 0x1d800: 0x40000,\n\t\t 0x1e800: 0x20040000,\n\t\t 0x1f800: 0x20000080\n\t\t },\n\t\t {\n\t\t 0x0: 0x10000008,\n\t\t 0x100: 0x2000,\n\t\t 0x200: 0x10200000,\n\t\t 0x300: 0x10202008,\n\t\t 0x400: 0x10002000,\n\t\t 0x500: 0x200000,\n\t\t 0x600: 0x200008,\n\t\t 0x700: 0x10000000,\n\t\t 0x800: 0x0,\n\t\t 0x900: 0x10002008,\n\t\t 0xa00: 0x202000,\n\t\t 0xb00: 0x8,\n\t\t 0xc00: 0x10200008,\n\t\t 0xd00: 0x202008,\n\t\t 0xe00: 0x2008,\n\t\t 0xf00: 0x10202000,\n\t\t 0x80: 0x10200000,\n\t\t 0x180: 0x10202008,\n\t\t 0x280: 0x8,\n\t\t 0x380: 0x200000,\n\t\t 0x480: 0x202008,\n\t\t 0x580: 0x10000008,\n\t\t 0x680: 0x10002000,\n\t\t 0x780: 0x2008,\n\t\t 0x880: 0x200008,\n\t\t 0x980: 0x2000,\n\t\t 0xa80: 0x10002008,\n\t\t 0xb80: 0x10200008,\n\t\t 0xc80: 0x0,\n\t\t 0xd80: 0x10202000,\n\t\t 0xe80: 0x202000,\n\t\t 0xf80: 0x10000000,\n\t\t 0x1000: 0x10002000,\n\t\t 0x1100: 0x10200008,\n\t\t 0x1200: 0x10202008,\n\t\t 0x1300: 0x2008,\n\t\t 0x1400: 0x200000,\n\t\t 0x1500: 0x10000000,\n\t\t 0x1600: 0x10000008,\n\t\t 0x1700: 0x202000,\n\t\t 0x1800: 0x202008,\n\t\t 0x1900: 0x0,\n\t\t 0x1a00: 0x8,\n\t\t 0x1b00: 0x10200000,\n\t\t 0x1c00: 0x2000,\n\t\t 0x1d00: 0x10002008,\n\t\t 0x1e00: 0x10202000,\n\t\t 0x1f00: 0x200008,\n\t\t 0x1080: 0x8,\n\t\t 0x1180: 0x202000,\n\t\t 0x1280: 0x200000,\n\t\t 0x1380: 0x10000008,\n\t\t 0x1480: 0x10002000,\n\t\t 0x1580: 0x2008,\n\t\t 0x1680: 0x10202008,\n\t\t 0x1780: 0x10200000,\n\t\t 0x1880: 0x10202000,\n\t\t 0x1980: 0x10200008,\n\t\t 0x1a80: 0x2000,\n\t\t 0x1b80: 0x202008,\n\t\t 0x1c80: 0x200008,\n\t\t 0x1d80: 0x0,\n\t\t 0x1e80: 0x10000000,\n\t\t 0x1f80: 0x10002008\n\t\t },\n\t\t {\n\t\t 0x0: 0x100000,\n\t\t 0x10: 0x2000401,\n\t\t 0x20: 0x400,\n\t\t 0x30: 0x100401,\n\t\t 0x40: 0x2100401,\n\t\t 0x50: 0x0,\n\t\t 0x60: 0x1,\n\t\t 0x70: 0x2100001,\n\t\t 0x80: 0x2000400,\n\t\t 0x90: 0x100001,\n\t\t 0xa0: 0x2000001,\n\t\t 0xb0: 0x2100400,\n\t\t 0xc0: 0x2100000,\n\t\t 0xd0: 0x401,\n\t\t 0xe0: 0x100400,\n\t\t 0xf0: 0x2000000,\n\t\t 0x8: 0x2100001,\n\t\t 0x18: 0x0,\n\t\t 0x28: 0x2000401,\n\t\t 0x38: 0x2100400,\n\t\t 0x48: 0x100000,\n\t\t 0x58: 0x2000001,\n\t\t 0x68: 0x2000000,\n\t\t 0x78: 0x401,\n\t\t 0x88: 0x100401,\n\t\t 0x98: 0x2000400,\n\t\t 0xa8: 0x2100000,\n\t\t 0xb8: 0x100001,\n\t\t 0xc8: 0x400,\n\t\t 0xd8: 0x2100401,\n\t\t 0xe8: 0x1,\n\t\t 0xf8: 0x100400,\n\t\t 0x100: 0x2000000,\n\t\t 0x110: 0x100000,\n\t\t 0x120: 0x2000401,\n\t\t 0x130: 0x2100001,\n\t\t 0x140: 0x100001,\n\t\t 0x150: 0x2000400,\n\t\t 0x160: 0x2100400,\n\t\t 0x170: 0x100401,\n\t\t 0x180: 0x401,\n\t\t 0x190: 0x2100401,\n\t\t 0x1a0: 0x100400,\n\t\t 0x1b0: 0x1,\n\t\t 0x1c0: 0x0,\n\t\t 0x1d0: 0x2100000,\n\t\t 0x1e0: 0x2000001,\n\t\t 0x1f0: 0x400,\n\t\t 0x108: 0x100400,\n\t\t 0x118: 0x2000401,\n\t\t 0x128: 0x2100001,\n\t\t 0x138: 0x1,\n\t\t 0x148: 0x2000000,\n\t\t 0x158: 0x100000,\n\t\t 0x168: 0x401,\n\t\t 0x178: 0x2100400,\n\t\t 0x188: 0x2000001,\n\t\t 0x198: 0x2100000,\n\t\t 0x1a8: 0x0,\n\t\t 0x1b8: 0x2100401,\n\t\t 0x1c8: 0x100401,\n\t\t 0x1d8: 0x400,\n\t\t 0x1e8: 0x2000400,\n\t\t 0x1f8: 0x100001\n\t\t },\n\t\t {\n\t\t 0x0: 0x8000820,\n\t\t 0x1: 0x20000,\n\t\t 0x2: 0x8000000,\n\t\t 0x3: 0x20,\n\t\t 0x4: 0x20020,\n\t\t 0x5: 0x8020820,\n\t\t 0x6: 0x8020800,\n\t\t 0x7: 0x800,\n\t\t 0x8: 0x8020000,\n\t\t 0x9: 0x8000800,\n\t\t 0xa: 0x20800,\n\t\t 0xb: 0x8020020,\n\t\t 0xc: 0x820,\n\t\t 0xd: 0x0,\n\t\t 0xe: 0x8000020,\n\t\t 0xf: 0x20820,\n\t\t 0x80000000: 0x800,\n\t\t 0x80000001: 0x8020820,\n\t\t 0x80000002: 0x8000820,\n\t\t 0x80000003: 0x8000000,\n\t\t 0x80000004: 0x8020000,\n\t\t 0x80000005: 0x20800,\n\t\t 0x80000006: 0x20820,\n\t\t 0x80000007: 0x20,\n\t\t 0x80000008: 0x8000020,\n\t\t 0x80000009: 0x820,\n\t\t 0x8000000a: 0x20020,\n\t\t 0x8000000b: 0x8020800,\n\t\t 0x8000000c: 0x0,\n\t\t 0x8000000d: 0x8020020,\n\t\t 0x8000000e: 0x8000800,\n\t\t 0x8000000f: 0x20000,\n\t\t 0x10: 0x20820,\n\t\t 0x11: 0x8020800,\n\t\t 0x12: 0x20,\n\t\t 0x13: 0x800,\n\t\t 0x14: 0x8000800,\n\t\t 0x15: 0x8000020,\n\t\t 0x16: 0x8020020,\n\t\t 0x17: 0x20000,\n\t\t 0x18: 0x0,\n\t\t 0x19: 0x20020,\n\t\t 0x1a: 0x8020000,\n\t\t 0x1b: 0x8000820,\n\t\t 0x1c: 0x8020820,\n\t\t 0x1d: 0x20800,\n\t\t 0x1e: 0x820,\n\t\t 0x1f: 0x8000000,\n\t\t 0x80000010: 0x20000,\n\t\t 0x80000011: 0x800,\n\t\t 0x80000012: 0x8020020,\n\t\t 0x80000013: 0x20820,\n\t\t 0x80000014: 0x20,\n\t\t 0x80000015: 0x8020000,\n\t\t 0x80000016: 0x8000000,\n\t\t 0x80000017: 0x8000820,\n\t\t 0x80000018: 0x8020820,\n\t\t 0x80000019: 0x8000020,\n\t\t 0x8000001a: 0x8000800,\n\t\t 0x8000001b: 0x0,\n\t\t 0x8000001c: 0x20800,\n\t\t 0x8000001d: 0x820,\n\t\t 0x8000001e: 0x20020,\n\t\t 0x8000001f: 0x8020800\n\t\t }\n\t\t ];\n\t\n\t\t // Masks that select the SBOX input\n\t\t var SBOX_MASK = [\n\t\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t\t ];\n\t\n\t\t /**\n\t\t * DES block cipher algorithm.\n\t\t */\n\t\t var DES = C_algo.DES = BlockCipher.extend({\n\t\t _doReset: function () {\n\t\t // Shortcuts\n\t\t var key = this._key;\n\t\t var keyWords = key.words;\n\t\n\t\t // Select 56 bits according to PC1\n\t\t var keyBits = [];\n\t\t for (var i = 0; i < 56; i++) {\n\t\t var keyBitPos = PC1[i] - 1;\n\t\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t\t }\n\t\n\t\t // Assemble 16 subkeys\n\t\t var subKeys = this._subKeys = [];\n\t\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t\t // Create subkey\n\t\t var subKey = subKeys[nSubKey] = [];\n\t\n\t\t // Shortcut\n\t\t var bitShift = BIT_SHIFTS[nSubKey];\n\t\n\t\t // Select 48 bits according to PC2\n\t\t for (var i = 0; i < 24; i++) {\n\t\t // Select from the left 28 key bits\n\t\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\t\n\t\t // Select from the right 28 key bits\n\t\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t\t }\n\t\n\t\t // Since each subkey is applied to an expanded 32-bit input,\n\t\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t\t // which allows the key to be used without expansion\n\t\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t\t for (var i = 1; i < 7; i++) {\n\t\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t\t }\n\t\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t\t }\n\t\n\t\t // Compute inverse subkeys\n\t\t var invSubKeys = this._invSubKeys = [];\n\t\t for (var i = 0; i < 16; i++) {\n\t\t invSubKeys[i] = subKeys[15 - i];\n\t\t }\n\t\t },\n\t\n\t\t encryptBlock: function (M, offset) {\n\t\t this._doCryptBlock(M, offset, this._subKeys);\n\t\t },\n\t\n\t\t decryptBlock: function (M, offset) {\n\t\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t\t },\n\t\n\t\t _doCryptBlock: function (M, offset, subKeys) {\n\t\t // Get input\n\t\t this._lBlock = M[offset];\n\t\t this._rBlock = M[offset + 1];\n\t\n\t\t // Initial permutation\n\t\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t\t exchangeLR.call(this, 16, 0x0000ffff);\n\t\t exchangeRL.call(this, 2, 0x33333333);\n\t\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t\t exchangeLR.call(this, 1, 0x55555555);\n\t\n\t\t // Rounds\n\t\t for (var round = 0; round < 16; round++) {\n\t\t // Shortcuts\n\t\t var subKey = subKeys[round];\n\t\t var lBlock = this._lBlock;\n\t\t var rBlock = this._rBlock;\n\t\n\t\t // Feistel function\n\t\t var f = 0;\n\t\t for (var i = 0; i < 8; i++) {\n\t\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t\t }\n\t\t this._lBlock = rBlock;\n\t\t this._rBlock = lBlock ^ f;\n\t\t }\n\t\n\t\t // Undo swap from last round\n\t\t var t = this._lBlock;\n\t\t this._lBlock = this._rBlock;\n\t\t this._rBlock = t;\n\t\n\t\t // Final permutation\n\t\t exchangeLR.call(this, 1, 0x55555555);\n\t\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t\t exchangeRL.call(this, 2, 0x33333333);\n\t\t exchangeLR.call(this, 16, 0x0000ffff);\n\t\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t\n\t\t // Set output\n\t\t M[offset] = this._lBlock;\n\t\t M[offset + 1] = this._rBlock;\n\t\t },\n\t\n\t\t keySize: 64/32,\n\t\n\t\t ivSize: 64/32,\n\t\n\t\t blockSize: 64/32\n\t\t });\n\t\n\t\t // Swap bits across the left and right words\n\t\t function exchangeLR(offset, mask) {\n\t\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t\t this._rBlock ^= t;\n\t\t this._lBlock ^= t << offset;\n\t\t }\n\t\n\t\t function exchangeRL(offset, mask) {\n\t\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t\t this._lBlock ^= t;\n\t\t this._rBlock ^= t << offset;\n\t\t }\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.DES = BlockCipher._createHelper(DES);\n\t\n\t\t /**\n\t\t * Triple-DES block cipher algorithm.\n\t\t */\n\t\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t\t _doReset: function () {\n\t\t // Shortcuts\n\t\t var key = this._key;\n\t\t var keyWords = key.words;\n\t\n\t\t // Create DES instances\n\t\t this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));\n\t\t this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));\n\t\t this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));\n\t\t },\n\t\n\t\t encryptBlock: function (M, offset) {\n\t\t this._des1.encryptBlock(M, offset);\n\t\t this._des2.decryptBlock(M, offset);\n\t\t this._des3.encryptBlock(M, offset);\n\t\t },\n\t\n\t\t decryptBlock: function (M, offset) {\n\t\t this._des3.decryptBlock(M, offset);\n\t\t this._des2.encryptBlock(M, offset);\n\t\t this._des1.decryptBlock(M, offset);\n\t\t },\n\t\n\t\t keySize: 192/32,\n\t\n\t\t ivSize: 64/32,\n\t\n\t\t blockSize: 64/32\n\t\t });\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.TripleDES;\n\t\n\t}));\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(12), __webpack_require__(13), __webpack_require__(14), __webpack_require__(15));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var StreamCipher = C_lib.StreamCipher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Reusable objects\n\t\t var S = [];\n\t\t var C_ = [];\n\t\t var G = [];\n\t\n\t\t /**\n\t\t * Rabbit stream cipher algorithm\n\t\t */\n\t\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t\t _doReset: function () {\n\t\t // Shortcuts\n\t\t var K = this._key.words;\n\t\t var iv = this.cfg.iv;\n\t\n\t\t // Swap endian\n\t\t for (var i = 0; i < 4; i++) {\n\t\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t\t }\n\t\n\t\t // Generate initial state values\n\t\t var X = this._X = [\n\t\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t\t ];\n\t\n\t\t // Generate initial counter values\n\t\t var C = this._C = [\n\t\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t\t ];\n\t\n\t\t // Carry bit\n\t\t this._b = 0;\n\t\n\t\t // Iterate the system four times\n\t\t for (var i = 0; i < 4; i++) {\n\t\t nextState.call(this);\n\t\t }\n\t\n\t\t // Modify the counters\n\t\t for (var i = 0; i < 8; i++) {\n\t\t C[i] ^= X[(i + 4) & 7];\n\t\t }\n\t\n\t\t // IV setup\n\t\t if (iv) {\n\t\t // Shortcuts\n\t\t var IV = iv.words;\n\t\t var IV_0 = IV[0];\n\t\t var IV_1 = IV[1];\n\t\n\t\t // Generate four subvectors\n\t\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\t\n\t\t // Modify counter values\n\t\t C[0] ^= i0;\n\t\t C[1] ^= i1;\n\t\t C[2] ^= i2;\n\t\t C[3] ^= i3;\n\t\t C[4] ^= i0;\n\t\t C[5] ^= i1;\n\t\t C[6] ^= i2;\n\t\t C[7] ^= i3;\n\t\n\t\t // Iterate the system four times\n\t\t for (var i = 0; i < 4; i++) {\n\t\t nextState.call(this);\n\t\t }\n\t\t }\n\t\t },\n\t\n\t\t _doProcessBlock: function (M, offset) {\n\t\t // Shortcut\n\t\t var X = this._X;\n\t\n\t\t // Iterate the system\n\t\t nextState.call(this);\n\t\n\t\t // Generate four keystream words\n\t\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\t\n\t\t for (var i = 0; i < 4; i++) {\n\t\t // Swap endian\n\t\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\t\n\t\t // Encrypt\n\t\t M[offset + i] ^= S[i];\n\t\t }\n\t\t },\n\t\n\t\t blockSize: 128/32,\n\t\n\t\t ivSize: 64/32\n\t\t });\n\t\n\t\t function nextState() {\n\t\t // Shortcuts\n\t\t var X = this._X;\n\t\t var C = this._C;\n\t\n\t\t // Save old counter values\n\t\t for (var i = 0; i < 8; i++) {\n\t\t C_[i] = C[i];\n\t\t }\n\t\n\t\t // Calculate new counter values\n\t\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\t\n\t\t // Calculate the g-values\n\t\t for (var i = 0; i < 8; i++) {\n\t\t var gx = X[i] + C[i];\n\t\n\t\t // Construct high and low argument for squaring\n\t\t var ga = gx & 0xffff;\n\t\t var gb = gx >>> 16;\n\t\n\t\t // Calculate high and low result of squaring\n\t\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\t\n\t\t // High XOR low\n\t\t G[i] = gh ^ gl;\n\t\t }\n\t\n\t\t // Calculate new state values\n\t\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t\t }\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.Rabbit;\n\t\n\t}));\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(12), __webpack_require__(13), __webpack_require__(14), __webpack_require__(15));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var StreamCipher = C_lib.StreamCipher;\n\t\t var C_algo = C.algo;\n\t\n\t\t /**\n\t\t * RC4 stream cipher algorithm.\n\t\t */\n\t\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t\t _doReset: function () {\n\t\t // Shortcuts\n\t\t var key = this._key;\n\t\t var keyWords = key.words;\n\t\t var keySigBytes = key.sigBytes;\n\t\n\t\t // Init sbox\n\t\t var S = this._S = [];\n\t\t for (var i = 0; i < 256; i++) {\n\t\t S[i] = i;\n\t\t }\n\t\n\t\t // Key setup\n\t\t for (var i = 0, j = 0; i < 256; i++) {\n\t\t var keyByteIndex = i % keySigBytes;\n\t\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\t\n\t\t j = (j + S[i] + keyByte) % 256;\n\t\n\t\t // Swap\n\t\t var t = S[i];\n\t\t S[i] = S[j];\n\t\t S[j] = t;\n\t\t }\n\t\n\t\t // Counters\n\t\t this._i = this._j = 0;\n\t\t },\n\t\n\t\t _doProcessBlock: function (M, offset) {\n\t\t M[offset] ^= generateKeystreamWord.call(this);\n\t\t },\n\t\n\t\t keySize: 256/32,\n\t\n\t\t ivSize: 0\n\t\t });\n\t\n\t\t function generateKeystreamWord() {\n\t\t // Shortcuts\n\t\t var S = this._S;\n\t\t var i = this._i;\n\t\t var j = this._j;\n\t\n\t\t // Generate keystream word\n\t\t var keystreamWord = 0;\n\t\t for (var n = 0; n < 4; n++) {\n\t\t i = (i + 1) % 256;\n\t\t j = (j + S[i]) % 256;\n\t\n\t\t // Swap\n\t\t var t = S[i];\n\t\t S[i] = S[j];\n\t\t S[j] = t;\n\t\n\t\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t\t }\n\t\n\t\t // Update counters\n\t\t this._i = i;\n\t\t this._j = j;\n\t\n\t\t return keystreamWord;\n\t\t }\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.RC4 = StreamCipher._createHelper(RC4);\n\t\n\t\t /**\n\t\t * Modified RC4 stream cipher algorithm.\n\t\t */\n\t\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {number} drop The number of keystream words to drop. Default 192\n\t\t */\n\t\t cfg: RC4.cfg.extend({\n\t\t drop: 192\n\t\t }),\n\t\n\t\t _doReset: function () {\n\t\t RC4._doReset.call(this);\n\t\n\t\t // Drop\n\t\t for (var i = this.cfg.drop; i > 0; i--) {\n\t\t generateKeystreamWord.call(this);\n\t\t }\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.RC4;\n\t\n\t}));\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** secure-ls.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 245926ca54c49a2a1f31\n **/","import utils from './utils';\r\nimport constants from './constants';\r\nimport enc from './enc-utf8';\r\n\r\nimport Base64 from './Base64';\r\nimport LZString from 'lz-string/libs/lz-string';\r\nimport AES from 'crypto-js/aes';\r\nimport DES from 'crypto-js/tripledes';\r\nimport RABBIT from 'crypto-js/rabbit';\r\nimport RC4 from 'crypto-js/rc4';\r\n\r\nexport default class SecureLS {\r\n constructor(config) {\r\n config = config || {};\r\n this._name = 'secure-ls';\r\n this.utils = utils;\r\n this.constants = constants;\r\n this.Base64 = Base64;\r\n this.LZString = LZString;\r\n this.AES = AES;\r\n this.DES = DES;\r\n this.RABBIT = RABBIT;\r\n this.RC4 = RC4;\r\n this.enc = enc;\r\n\r\n this.config = {\r\n isCompression: true,\r\n encodingType: constants.EncrytionTypes.BASE64\r\n };\r\n this.config.isCompression = typeof config.isCompression !== 'undefined' ?\r\n config.isCompression :\r\n true;\r\n this.config.encodingType = (typeof config.encodingType !== 'undefined' || config.encodingType === '') ?\r\n config.encodingType.toLowerCase() :\r\n constants.EncrytionTypes.BASE64;\r\n this.config.encryptionSecret = config.encryptionSecret;\r\n\r\n this.ls = localStorage;\r\n this.init();\r\n };\r\n\r\n init() {\r\n let metaData = this.getMetaData() || {};\r\n\r\n this.WarningEnum = this.constants.WarningEnum;\r\n this.WarningTypes = this.constants.WarningTypes;\r\n this.EncrytionTypes = this.constants.EncrytionTypes;\r\n\r\n this._isBase64 = this._isBase64EncryptionType();\r\n this._isAES = this._isAESEncryptionType();\r\n this._isDES = this._isDESEncryptionType();\r\n this._isRabbit = this._isRabbitEncryptionType();\r\n this._isRC4 = this._isRC4EncryptionType();\r\n this._isCompression = this._isDataCompressionEnabled();\r\n\r\n // fill the already present keys to the list of keys being used by secure-ls\r\n this.utils.allKeys = metaData.keys || this.resetAllKeys();\r\n };\r\n\r\n _isBase64EncryptionType() {\r\n return Base64 &&\r\n (typeof this.config.encodingType === 'undefined' ||\r\n this.config.encodingType === this.constants.EncrytionTypes.BASE64);\r\n };\r\n\r\n _isAESEncryptionType() {\r\n return AES &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.AES);\r\n };\r\n\r\n _isDESEncryptionType() {\r\n return DES &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.DES);\r\n };\r\n\r\n _isRabbitEncryptionType() {\r\n return RABBIT &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.RABBIT);\r\n };\r\n\r\n _isRC4EncryptionType() {\r\n return RC4 &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.RC4);\r\n };\r\n\r\n _isDataCompressionEnabled() {\r\n return this.config.isCompression;\r\n }\r\n\r\n getEncryptionSecret(key) {\r\n let metaData = this.getMetaData() || {};\r\n let obj = this.utils.getObjectFromKey(metaData.keys, key);\r\n\r\n if (!obj) {\r\n return;\r\n }\r\n\r\n if (this._isAES ||\r\n this._isDES ||\r\n this._isRabbit ||\r\n this._isRC4\r\n ) {\r\n if (typeof this.config.encryptionSecret === 'undefined') {\r\n this.utils.encryptionSecret = obj.s;\r\n\r\n if (!this.utils.encryptionSecret) {\r\n this.utils.encryptionSecret = this.utils.generateSecretKey();\r\n this.setMetaData();\r\n }\r\n } else {\r\n this.utils.encryptionSecret = this.config.encryptionSecret || obj.s || '';\r\n }\r\n }\r\n }\r\n\r\n get(key, isAllKeysData) {\r\n let decodedData = '',\r\n jsonData = '',\r\n deCompressedData,\r\n bytes,\r\n data;\r\n\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return jsonData;\r\n }\r\n\r\n data = this.getDataFromLocalStorage(key);\r\n\r\n if (!data) {\r\n return jsonData;\r\n }\r\n\r\n deCompressedData = data; // saves else\r\n if (this._isCompression || isAllKeysData) { // meta data always compressed\r\n deCompressedData = LZString.decompressFromUTF16(data);\r\n }\r\n\r\n decodedData = deCompressedData; // saves else\r\n if (this._isBase64 || isAllKeysData) { // meta data always Base64\r\n decodedData = Base64.decode(deCompressedData);\r\n } else {\r\n this.getEncryptionSecret(key);\r\n if (this._isAES) {\r\n bytes = AES.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isDES) {\r\n bytes = DES.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isRabbit) {\r\n bytes = RABBIT.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isRC4) {\r\n bytes = RC4.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n }\r\n\r\n if (bytes) {\r\n decodedData = bytes.toString(enc._Utf8);\r\n }\r\n }\r\n\r\n try {\r\n jsonData = JSON.parse(decodedData);\r\n } catch (e) {\r\n throw new Error('Could not parse JSON');\r\n }\r\n\r\n return jsonData;\r\n };\r\n\r\n getDataFromLocalStorage(key) {\r\n return this.ls.getItem(key, true);\r\n };\r\n\r\n getAllKeys() {\r\n let data = this.getMetaData();\r\n\r\n return this.utils.extractKeyNames(data) || [];\r\n };\r\n\r\n set(key, data) {\r\n let dataToStore = '';\r\n\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return;\r\n }\r\n\r\n this.getEncryptionSecret(key);\r\n\r\n // add key(s) to Array if not already added, only for keys other than meta key\r\n if (!(String(key) === String(this.utils.metaKey))) {\r\n if (!this.utils.isKeyPresent(key)) {\r\n this.utils.addToKeysList(key);\r\n this.setMetaData();\r\n }\r\n }\r\n\r\n dataToStore = this.processData(data);\r\n // Store the data to localStorage\r\n this.setDataToLocalStorage(key, dataToStore);\r\n };\r\n\r\n setDataToLocalStorage(key, data) {\r\n this.ls.setItem(key, data);\r\n };\r\n\r\n remove(key) {\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return;\r\n }\r\n\r\n if (key === this.utils.metaKey && this.getAllKeys().length) {\r\n this.utils.warn(this.WarningEnum.META_KEY_REMOVE);\r\n return;\r\n }\r\n\r\n if (this.utils.isKeyPresent(key)) {\r\n this.utils.removeFromKeysList(key);\r\n this.setMetaData();\r\n }\r\n this.ls.removeItem(key);\r\n };\r\n\r\n removeAll() {\r\n let keys, i;\r\n\r\n keys = this.getAllKeys();\r\n for (i = 0; i < keys.length; i++) {\r\n this.ls.removeItem(keys[i]);\r\n }\r\n this.ls.removeItem(this.utils.metaKey);\r\n\r\n this.resetAllKeys();\r\n };\r\n\r\n clear() {\r\n this.ls.clear();\r\n this.resetAllKeys();\r\n };\r\n\r\n resetAllKeys() {\r\n this.utils.allKeys = [];\r\n return [];\r\n }\r\n\r\n processData(data, isAllKeysData) {\r\n if (data === null || data === undefined || data === '') {\r\n return '';\r\n }\r\n\r\n let jsonData, encodedData, compressedData;\r\n\r\n try {\r\n jsonData = JSON.stringify(data);\r\n } catch (e) {\r\n throw new Error('Could not stringify data.');\r\n }\r\n\r\n // Encode Based on encoding type\r\n // If not set, default to Base64 for securing data\r\n encodedData = jsonData;\r\n if (this._isBase64 || isAllKeysData) {\r\n encodedData = Base64.encode(jsonData);\r\n } else {\r\n if (this._isAES) {\r\n encodedData = AES.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isDES) {\r\n encodedData = DES.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isRabbit) {\r\n encodedData = RABBIT.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isRC4) {\r\n encodedData = RC4.encrypt(jsonData, this.utils.encryptionSecret);\r\n }\r\n\r\n encodedData = encodedData && encodedData.toString();\r\n }\r\n\r\n // Compress data if set to true\r\n compressedData = encodedData;\r\n if (this._isCompression || isAllKeysData) {\r\n compressedData = LZString.compressToUTF16(encodedData);\r\n }\r\n\r\n return compressedData;\r\n };\r\n\r\n setMetaData() {\r\n let dataToStore = this.processData({\r\n keys: this.utils.allKeys\r\n }, true);\r\n\r\n // Store the data to localStorage\r\n this.setDataToLocalStorage(this.utils.metaKey, dataToStore);\r\n };\r\n\r\n getMetaData() {\r\n return this.get(this.utils.metaKey, true);\r\n };\r\n\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/index.js\n **/","import constants from './constants';\r\nimport CryptoJSWordArray from './WordArray';\r\nimport PBKDF2 from 'crypto-js/pbkdf2';\r\n\r\nlet utils = {\r\n metaKey: '_secure__ls__metadata',\r\n encryptionSecret: '',\r\n secretPhrase: 's3cr3t$#@135^&*246',\r\n allKeys: [],\r\n is: function (key) {\r\n if (key) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n warn: function (reason) {\r\n reason = reason ? reason : constants.WarningEnum.DEFAULT_TEXT;\r\n console.warn(constants.WarningTypes[reason]);\r\n },\r\n generateSecretKey: function () {\r\n let salt = CryptoJSWordArray.random(128 / 8);\r\n let key128Bits = PBKDF2(this.secretPhrase, salt, {keySize: 128 / 32 });\r\n\r\n return key128Bits && key128Bits.toString();\r\n },\r\n getObjectFromKey: function (data, key) {\r\n if (!data || !data.length) {\r\n return {};\r\n }\r\n\r\n let i, obj = {};\r\n\r\n for (i = 0; i < data.length; i++) {\r\n if (data[i].k === key) {\r\n obj = data[i];\r\n break;\r\n }\r\n }\r\n\r\n return obj;\r\n },\r\n extractKeyNames: function (data) {\r\n if (!data || !data.keys || !data.keys.length) {\r\n return [];\r\n }\r\n\r\n return data.keys.map(keyData => {\r\n return keyData.k;\r\n });\r\n },\r\n getAllKeys: function () {\r\n return this.allKeys;\r\n },\r\n isKeyPresent: function (key) {\r\n let isKeyAlreadyPresent = false;\r\n\r\n for (let i = 0; i < this.allKeys.length; i++) {\r\n if (String(this.allKeys[i].k) === String(key)) {\r\n isKeyAlreadyPresent = true; // found\r\n break;\r\n }\r\n }\r\n\r\n return isKeyAlreadyPresent;\r\n },\r\n addToKeysList: function (key) {\r\n this.allKeys.push({\r\n k: key,\r\n s: this.encryptionSecret\r\n });\r\n },\r\n removeFromKeysList: function (key) {\r\n let i, index = -1;\r\n\r\n for (i = 0; i < this.allKeys.length; i++) {\r\n if (this.allKeys[i].k === key) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n if (index !== -1) {\r\n this.allKeys.splice(index, 1);\r\n }\r\n return index;\r\n }\r\n};\r\n\r\nmodule.exports = utils;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/utils.js\n **/","let WarningEnum = {\r\n KEY_NOT_PROVIDED: 'keyNotProvided',\r\n META_KEY_REMOVE: 'metaKeyRemove',\r\n DEFAULT_TEXT: 'defaultText'\r\n};\r\n\r\nlet WarningTypes = {};\r\n\r\nWarningTypes[WarningEnum.KEY_NOT_PROVIDED] = 'Secure LS: Key not provided. Aborting operation!';\r\nWarningTypes[WarningEnum.META_KEY_REMOVE] = `Secure LS: Meta key can not be removed\r\nunless all keys created by Secure LS are removed!`;\r\nWarningTypes[WarningEnum.DEFAULT_TEXT] = `Unexpected output`;\r\n\r\nlet constants = {\r\n WarningEnum: WarningEnum,\r\n WarningTypes: WarningTypes,\r\n EncrytionTypes: {\r\n BASE64: 'base64',\r\n AES: 'aes',\r\n DES: 'des',\r\n RABBIT: 'rabbit',\r\n RC4: 'rc4'\r\n }\r\n};\r\n\r\nmodule.exports = constants;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/constants.js\n **/","/*\r\n ES6 compatible port of CryptoJS - WordArray for PBKDF2 password key generation\r\n\r\n Source: https://github.com/brix/crypto-js\r\n LICENSE: MIT\r\n */\r\n\r\nlet CryptoJSWordArray = {};\r\n\r\nCryptoJSWordArray.random = function (nBytes) {\r\n let words = [];\r\n let r = (function (mw) {\r\n let mz = 0x3ade68b1;\r\n let mask = 0xffffffff;\r\n\r\n return function () {\r\n mz = (0x9069 * (mz & 0xFFFF) + (mz >> 0x10)) & mask;\r\n mw = (0x4650 * (mw & 0xFFFF) + (mw >> 0x10)) & mask;\r\n let result = ((mz << 0x10) + mw) & mask;\r\n\r\n result /= 0x100000000;\r\n result += 0.5;\r\n return result * (Math.random() > 0.5 ? 1 : -1);\r\n };\r\n });\r\n\r\n for (let i = 0, rcache; i < nBytes; i += 4) {\r\n let _r = r((rcache || Math.random()) * 0x100000000);\r\n\r\n rcache = _r() * 0x3ade67b7;\r\n words.push((_r() * 0x100000000) | 0);\r\n }\r\n\r\n return new this.Set(words, nBytes);\r\n};\r\n\r\nCryptoJSWordArray.Set = function (words, sigBytes) {\r\n words = this.words = words || [];\r\n\r\n if (sigBytes !== undefined) {\r\n this.sigBytes = sigBytes;\r\n } else {\r\n this.sigBytes = words.length * 8;\r\n }\r\n};\r\n\r\nmodule.exports = CryptoJSWordArray;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/WordArray.js\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/pbkdf2.js\n ** module id = 4\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t /*\n\t * Local polyfil of Object.create\n\t */\n\t var create = Object.create || (function () {\n\t function F() {};\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }())\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var i = 0; i < thatSigBytes; i += 4) {\n\t thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t var r = (function (m_w) {\n\t var m_w = m_w;\n\t var m_z = 0x3ade68b1;\n\t var mask = 0xffffffff;\n\n\t return function () {\n\t m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t var result = ((m_z << 0x10) + m_w) & mask;\n\t result /= 0x100000000;\n\t result += 0.5;\n\t return result * (Math.random() > .5 ? 1 : -1);\n\t }\n\t });\n\n\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t var _r = r((rcache || Math.random()) * 0x100000000);\n\n\t rcache = _r() * 0x3ade67b7;\n\t words.push((_r() * 0x100000000) | 0);\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t var processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/core.js\n ** module id = 5\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/sha1.js\n ** module id = 6\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/hmac.js\n ** module id = 7\n ** module chunks = 0\n **/","/*\r\n ES6 compatible port of CryptoJS - encoding\r\n\r\n Source: https://github.com/brix/crypto-js\r\n LICENSE: MIT\r\n */\r\nlet enc = {};\r\n\r\nenc.Latin1 = {\r\n stringify: (wordArray) => {\r\n // Shortcuts\r\n let words = wordArray.words;\r\n let sigBytes = wordArray.sigBytes;\r\n let latin1Chars = [], i, bite;\r\n\r\n // Convert\r\n for (i = 0; i < sigBytes; i++) {\r\n bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n latin1Chars.push(String.fromCharCode(bite));\r\n }\r\n\r\n return latin1Chars.join('');\r\n }\r\n};\r\n\r\nenc._Utf8 = {\r\n stringify: (wordArray) => {\r\n try {\r\n return decodeURIComponent(escape(enc.Latin1.stringify(wordArray)));\r\n } catch (e) {\r\n throw new Error('Malformed UTF-8 data');\r\n }\r\n }\r\n};\r\n\r\nmodule.exports = enc;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/enc-utf8.js\n **/","let Base64 = {\r\n _keyStr: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\r\n encode: function (e) {\r\n let t = '';\r\n let n, r, i, s, o, u, a;\r\n let f = 0;\r\n\r\n e = Base64._utf8Encode(e);\r\n while (f < e.length) {\r\n n = e.charCodeAt(f++);\r\n r = e.charCodeAt(f++);\r\n i = e.charCodeAt(f++);\r\n s = n >> 2;\r\n o = (n & 3) << 4 | r >> 4;\r\n u = (r & 15) << 2 | i >> 6;\r\n a = i & 63;\r\n if (isNaN(r)) {\r\n u = a = 64;\r\n } else if (isNaN(i)) {\r\n a = 64;\r\n }\r\n t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a);\r\n }\r\n return t;\r\n },\r\n decode: function (e) {\r\n let t = '';\r\n let n, r, i;\r\n let s, o, u, a;\r\n let f = 0;\r\n\r\n e = e.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\r\n while (f < e.length) {\r\n s = this._keyStr.indexOf(e.charAt(f++));\r\n o = this._keyStr.indexOf(e.charAt(f++));\r\n u = this._keyStr.indexOf(e.charAt(f++));\r\n a = this._keyStr.indexOf(e.charAt(f++));\r\n n = s << 2 | o >> 4;\r\n r = (o & 15) << 4 | u >> 2;\r\n i = (u & 3) << 6 | a;\r\n t = t + String.fromCharCode(n);\r\n if (u !== 64) {\r\n t = t + String.fromCharCode(r);\r\n }\r\n if (a !== 64) {\r\n t = t + String.fromCharCode(i);\r\n }\r\n }\r\n t = Base64._utf8Decode(t);\r\n return t;\r\n },\r\n _utf8Encode: function (e) {\r\n e = e.replace(/\\r\\n/g, '\\n');\r\n let t = '';\r\n\r\n for (let n = 0; n < e.length; n++) {\r\n let r = e.charCodeAt(n);\r\n\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n } else if (r > 127 && r < 2048) {\r\n t += String.fromCharCode(r >> 6 | 192);\r\n t += String.fromCharCode(r & 63 | 128);\r\n } else {\r\n t += String.fromCharCode(r >> 12 | 224);\r\n t += String.fromCharCode(r >> 6 & 63 | 128);\r\n t += String.fromCharCode(r & 63 | 128);\r\n }\r\n }\r\n return t;\r\n },\r\n _utf8Decode: function (e) {\r\n let t = '';\r\n let n = 0;\r\n let r, c2, c3;\r\n\r\n r = c2 = 0;\r\n while (n < e.length) {\r\n r = e.charCodeAt(n);\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n n++;\r\n } else if (r > 191 && r < 224) {\r\n c2 = e.charCodeAt(n + 1);\r\n t += String.fromCharCode((r & 31) << 6 | c2 & 63);\r\n n += 2;\r\n } else {\r\n c2 = e.charCodeAt(n + 1);\r\n c3 = e.charCodeAt(n + 2);\r\n t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\r\n n += 3;\r\n }\r\n }\r\n return t;\r\n }\r\n};\r\n\r\nmodule.exports = Base64;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/Base64.js\n **/","// Copyright (c) 2013 Pieroxy \n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lz-string/libs/lz-string.js\n ** module id = 10\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/aes.js\n ** module id = 11\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/enc-base64.js\n ** module id = 12\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/md5.js\n ** module id = 13\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t var block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/evpkdf.js\n ** module id = 14\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t var block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t var block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t var modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t var modeCreator = mode.createDecryptor;\n\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t var wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t var salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/cipher-core.js\n ** module id = 15\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));\n\t this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));\n\t this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/tripledes.js\n ** module id = 16\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/rabbit.js\n ** module id = 17\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/rc4.js\n ** module id = 18\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///secure-ls.min.js","webpack:///webpack/bootstrap 86f0cc5995c1466f85ee","webpack:///./src/index.js","webpack:///./src/utils.js","webpack:///./src/constants.js","webpack:///./src/WordArray.js","webpack:///./~/crypto-js/pbkdf2.js","webpack:///./~/crypto-js/core.js","webpack:///./~/crypto-js/sha1.js","webpack:///./~/crypto-js/hmac.js","webpack:///./src/enc-utf8.js","webpack:///./src/Base64.js","webpack:///./~/lz-string/libs/lz-string.js","webpack:///./~/crypto-js/aes.js","webpack:///./~/crypto-js/enc-base64.js","webpack:///./~/crypto-js/md5.js","webpack:///./~/crypto-js/evpkdf.js","webpack:///./~/crypto-js/cipher-core.js","webpack:///./~/crypto-js/tripledes.js","webpack:///./~/crypto-js/rabbit.js","webpack:///./~/crypto-js/rc4.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","_classCallCheck","instance","Constructor","TypeError","Object","defineProperty","value","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","key","protoProps","staticProps","prototype","_utils","_utils2","_constants","_constants2","_encUtf","_encUtf2","_Base","_Base2","_lzString","_lzString2","_aes","_aes2","_tripledes","_tripledes2","_rabbit","_rabbit2","_rc","_rc2","SecureLS","config","_name","utils","constants","Base64","LZString","AES","DES","RABBIT","RC4","enc","isCompression","encodingType","EncrytionTypes","BASE64","encryptionSecret","encryptionRealm","toLowerCase","ls","localStorage","init","metaData","getMetaData","WarningEnum","WarningTypes","_isBase64","_isBase64EncryptionType","_isAES","_isAESEncryptionType","_isDES","_isDESEncryptionType","_isRabbit","_isRabbitEncryptionType","_isRC4","_isRC4EncryptionType","_isCompression","_isDataCompressionEnabled","allKeys","keys","resetAllKeys","getObjectFromKey","s","generateSecretKey","setMetaData","isAllKeysData","decodedData","jsonData","deCompressedData","bytes","data","is","warn","KEY_NOT_PROVIDED","getDataFromLocalStorage","decompressFromUTF16","decode","getEncryptionSecret","decrypt","toString","_Utf8","JSON","parse","e","Error","getItem","extractKeyNames","dataToStore","String","metaKey","isKeyPresent","addToKeysList","processData","setDataToLocalStorage","setItem","getAllKeys","META_KEY_REMOVE","removeFromKeysList","removeItem","clear","undefined","encodedData","compressedData","stringify","encode","encrypt","compressToUTF16","getMetaKey","get","_WordArray","_WordArray2","_pbkdf","_pbkdf2","secretPhrase","reason","DEFAULT_TEXT","console","salt","CryptoJSWordArray","random","key128Bits","keySize","k","map","keyData","isKeyAlreadyPresent","push","index","splice","nBytes","rcache","words","r","mw","mz","mask","result","Math","_r","Set","sigBytes","undef","CryptoJS","C","C_lib","lib","Base","WordArray","C_algo","algo","SHA1","HMAC","PBKDF2","extend","cfg","hasher","iterations","compute","password","hmac","create","derivedKey","blockIndex","derivedKeyWords","blockIndexWords","block","update","finalize","reset","blockWords","blockWordsLength","intermediate","intermediateWords","j","concat","F","subtype","overrides","mixIn","hasOwnProperty","$super","apply","arguments","properties","propertyName","clone","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","ceil","slice","m_w","m_z","C_enc","hexChars","bite","join","hexStr","hexStrLength","parseInt","substr","Latin1","latin1Chars","fromCharCode","latin1Str","latin1StrLength","charCodeAt","Utf8","decodeURIComponent","escape","utf8Str","unescape","encodeURIComponent","BufferedBlockAlgorithm","_data","_nDataBytes","_append","_process","doFlush","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","max","_minBufferSize","nWordsReady","nBytesReady","min","offset","_doProcessBlock","processedWords","Hasher","_doReset","messageUpdate","hash","_doFinalize","_createHelper","message","_createHmacHelper","W","_hash","M","H","a","b","d","n","t","nBitsTotal","nBitsLeft","floor","HmacSHA1","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","_keyStr","o","u","f","_utf8Encode","isNaN","charAt","replace","indexOf","_utf8Decode","c2","c3","__WEBPACK_AMD_DEFINE_RESULT__","getBaseValue","alphabet","character","baseReverseDic","keyStrBase64","keyStrUriSafe","compressToBase64","input","res","_compress","decompressFromBase64","_decompress","compressed","compressToUint8Array","uncompressed","compress","buf","Uint8Array","TotalLen","current_value","decompressFromUint8Array","decompress","Array","forEach","compressToEncodedURIComponent","decompressFromEncodedURIComponent","bitsPerChar","getCharFromInt","ii","context_dictionary","context_dictionaryToCreate","context_c","context_wc","context_w","context_enlargeIn","context_dictSize","context_numBits","context_data","context_data_val","context_data_position","pow","resetValue","getNextValue","next","w","bits","resb","maxpower","power","dictionary","enlargeIn","dictSize","numBits","entry","val","position","BlockCipher","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","x","xi","sx","x2","x4","x8","RCON","_nRounds","_keyPriorReset","_key","keyWords","nRounds","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","encryptBlock","_doCryptBlock","decryptBlock","s0","s1","s2","s3","round","t0","t1","t2","t3","parseLoop","base64Str","base64StrLength","reverseMap","bits1","bits2","_map","base64Chars","byte1","byte2","byte3","triplet","paddingChar","_reverseMap","paddingIndex","FF","GG","HH","II","T","abs","sin","MD5","offset_i","M_offset_i","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","nBitsTotalH","nBitsTotalL","H_i","HmacMD5","EvpKDF","Cipher","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","process","dataUpdate","finalProcessedData","ivSize","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","ciphertext","C_mode","StreamCipher","finalProcessedBlocks","mode","BlockCipherMode","iv","Encryptor","Decryptor","_cipher","_iv","CBC","xorBlock","_prevBlock","processBlock","thisBlock","C_pad","pad","Pkcs7","nPaddingBytes","paddingWord","paddingWords","padding","unpad","CipherParams","modeCreator","_mode","cipherParams","formatter","C_format","format","OpenSSLFormatter","OpenSSL","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","plaintext","C_kdf","kdf","OpenSSLKdf","execute","derivedParams","exchangeLR","_lBlock","_rBlock","exchangeRL","PC1","PC2","BIT_SHIFTS","SBOX_P","0","268435456","536870912","805306368","1073741824","1342177280","1610612736","1879048192","2147483648","2415919104","2684354560","2952790016","3221225472","3489660928","3758096384","4026531840","134217728","402653184","671088640","939524096","1207959552","1476395008","1744830464","2013265920","2281701376","2550136832","2818572288","3087007744","3355443200","3623878656","3892314112","4160749568","1","268435457","536870913","805306369","1073741825","1342177281","1610612737","1879048193","2147483649","2415919105","2684354561","2952790017","3221225473","3489660929","3758096385","4026531841","134217729","402653185","671088641","939524097","1207959553","1476395009","1744830465","2013265921","2281701377","2550136833","2818572289","3087007745","3355443201","3623878657","3892314113","4160749569","16777216","33554432","50331648","67108864","83886080","100663296","117440512","150994944","167772160","184549376","201326592","218103808","234881024","251658240","8388608","25165824","41943040","58720256","75497472","92274688","109051904","125829120","142606336","159383552","176160768","192937984","209715200","226492416","243269632","260046848","285212672","301989888","318767104","335544320","352321536","369098752","385875968","419430400","436207616","452984832","469762048","486539264","503316480","520093696","276824064","293601280","310378496","327155712","343932928","360710144","377487360","394264576","411041792","427819008","444596224","461373440","478150656","494927872","511705088","528482304","1048576","2097152","3145728","4194304","5242880","6291456","7340032","9437184","10485760","11534336","12582912","13631488","14680064","15728640","524288","1572864","2621440","3670016","4718592","5767168","6815744","7864320","8912896","9961472","11010048","12058624","13107200","14155776","15204352","16252928","17825792","18874368","19922944","20971520","22020096","23068672","24117248","26214400","27262976","28311552","29360128","30408704","31457280","32505856","17301504","18350080","19398656","20447232","21495808","22544384","23592960","24641536","25690112","26738688","27787264","28835840","29884416","30932992","31981568","33030144","65536","131072","196608","262144","327680","393216","458752","589824","655360","720896","786432","851968","917504","983040","32768","98304","163840","229376","294912","360448","425984","491520","557056","622592","688128","753664","819200","884736","950272","1015808","1114112","1179648","1245184","1310720","1376256","1441792","1507328","1638400","1703936","1769472","1835008","1900544","1966080","2031616","1081344","1146880","1212416","1277952","1343488","1409024","1474560","1540096","1605632","1671168","1736704","1802240","1867776","1933312","1998848","2064384","4096","8192","12288","16384","20480","24576","28672","36864","40960","45056","49152","53248","57344","61440","2048","6144","10240","14336","18432","22528","26624","30720","34816","38912","43008","47104","51200","55296","59392","63488","69632","73728","77824","81920","86016","90112","94208","102400","106496","110592","114688","118784","122880","126976","67584","71680","75776","79872","83968","88064","92160","96256","100352","104448","108544","112640","116736","120832","124928","129024","256","512","768","1024","1280","1536","1792","2304","2560","2816","3072","3328","3584","3840","128","384","640","896","1152","1408","1664","1920","2176","2432","2688","2944","3200","3456","3712","3968","4352","4608","4864","5120","5376","5632","5888","6400","6656","6912","7168","7424","7680","7936","4224","4480","4736","4992","5248","5504","5760","6016","6272","6528","6784","7040","7296","7552","7808","8064","16","32","48","64","80","96","112","144","160","176","192","208","224","240","8","24","40","56","72","88","104","120","136","152","168","184","200","216","232","248","272","288","304","320","336","352","368","400","416","432","448","464","480","496","264","280","296","312","328","344","360","376","392","408","424","440","456","472","488","504","2","3","4","5","6","7","9","10","11","12","13","14","15","2147483650","2147483651","2147483652","2147483653","2147483654","2147483655","2147483656","2147483657","2147483658","2147483659","2147483660","2147483661","2147483662","2147483663","17","18","19","20","21","22","23","25","26","27","28","29","30","31","2147483664","2147483665","2147483666","2147483667","2147483668","2147483669","2147483670","2147483671","2147483672","2147483673","2147483674","2147483675","2147483676","2147483677","2147483678","2147483679","SBOX_MASK","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","lBlock","rBlock","TripleDES","_des1","_des2","_des3","nextState","X","_X","_C","C_","_b","gx","ga","gb","gh","gl","G","S","Rabbit","K","IV","IV_0","IV_1","i0","i2","i1","i3","generateKeystreamWord","_S","_i","_j","keystreamWord","keySigBytes","keyByteIndex","keyByte","RC4Drop","drop"],"mappings":"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","file":"secure-ls.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SecureLS\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SecureLS\"] = factory();\n\telse\n\t\troot[\"SecureLS\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SecureLS\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SecureLS\"] = factory();\n\telse\n\t\troot[\"SecureLS\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _utils = __webpack_require__(1);\n\t\n\tvar _utils2 = _interopRequireDefault(_utils);\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tvar _constants2 = _interopRequireDefault(_constants);\n\t\n\tvar _encUtf = __webpack_require__(8);\n\t\n\tvar _encUtf2 = _interopRequireDefault(_encUtf);\n\t\n\tvar _Base = __webpack_require__(9);\n\t\n\tvar _Base2 = _interopRequireDefault(_Base);\n\t\n\tvar _lzString = __webpack_require__(10);\n\t\n\tvar _lzString2 = _interopRequireDefault(_lzString);\n\t\n\tvar _aes = __webpack_require__(11);\n\t\n\tvar _aes2 = _interopRequireDefault(_aes);\n\t\n\tvar _tripledes = __webpack_require__(16);\n\t\n\tvar _tripledes2 = _interopRequireDefault(_tripledes);\n\t\n\tvar _rabbit = __webpack_require__(17);\n\t\n\tvar _rabbit2 = _interopRequireDefault(_rabbit);\n\t\n\tvar _rc = __webpack_require__(18);\n\t\n\tvar _rc2 = _interopRequireDefault(_rc);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar SecureLS = function () {\n\t function SecureLS(config) {\n\t _classCallCheck(this, SecureLS);\n\t\n\t config = config || {};\n\t this._name = 'secure-ls';\n\t this.utils = _utils2.default;\n\t this.constants = _constants2.default;\n\t this.Base64 = _Base2.default;\n\t this.LZString = _lzString2.default;\n\t this.AES = _aes2.default;\n\t this.DES = _tripledes2.default;\n\t this.RABBIT = _rabbit2.default;\n\t this.RC4 = _rc2.default;\n\t this.enc = _encUtf2.default;\n\t\n\t this.config = {\n\t isCompression: true,\n\t encodingType: _constants2.default.EncrytionTypes.BASE64,\n\t encryptionSecret: config.encryptionSecret,\n\t encryptionRealm: config.encryptionRealm\n\t };\n\t this.config.isCompression = typeof config.isCompression !== 'undefined' ? config.isCompression : true;\n\t this.config.encodingType = typeof config.encodingType !== 'undefined' || config.encodingType === '' ? config.encodingType.toLowerCase() : _constants2.default.EncrytionTypes.BASE64;\n\t\n\t this.ls = localStorage;\n\t this.init();\n\t }\n\t\n\t _createClass(SecureLS, [{\n\t key: 'init',\n\t value: function init() {\n\t var metaData = this.getMetaData();\n\t\n\t this.WarningEnum = this.constants.WarningEnum;\n\t this.WarningTypes = this.constants.WarningTypes;\n\t this.EncrytionTypes = this.constants.EncrytionTypes;\n\t\n\t this._isBase64 = this._isBase64EncryptionType();\n\t this._isAES = this._isAESEncryptionType();\n\t this._isDES = this._isDESEncryptionType();\n\t this._isRabbit = this._isRabbitEncryptionType();\n\t this._isRC4 = this._isRC4EncryptionType();\n\t this._isCompression = this._isDataCompressionEnabled();\n\t\n\t // fill the already present keys to the list of keys being used by secure-ls\n\t this.utils.allKeys = metaData.keys || this.resetAllKeys();\n\t }\n\t }, {\n\t key: '_isBase64EncryptionType',\n\t value: function _isBase64EncryptionType() {\n\t return _Base2.default && (typeof this.config.encodingType === 'undefined' || this.config.encodingType === this.constants.EncrytionTypes.BASE64);\n\t }\n\t }, {\n\t key: '_isAESEncryptionType',\n\t value: function _isAESEncryptionType() {\n\t return _aes2.default && this.config.encodingType === this.constants.EncrytionTypes.AES;\n\t }\n\t }, {\n\t key: '_isDESEncryptionType',\n\t value: function _isDESEncryptionType() {\n\t return _tripledes2.default && this.config.encodingType === this.constants.EncrytionTypes.DES;\n\t }\n\t }, {\n\t key: '_isRabbitEncryptionType',\n\t value: function _isRabbitEncryptionType() {\n\t return _rabbit2.default && this.config.encodingType === this.constants.EncrytionTypes.RABBIT;\n\t }\n\t }, {\n\t key: '_isRC4EncryptionType',\n\t value: function _isRC4EncryptionType() {\n\t return _rc2.default && this.config.encodingType === this.constants.EncrytionTypes.RC4;\n\t }\n\t }, {\n\t key: '_isDataCompressionEnabled',\n\t value: function _isDataCompressionEnabled() {\n\t return this.config.isCompression;\n\t }\n\t }, {\n\t key: 'getEncryptionSecret',\n\t value: function getEncryptionSecret(key) {\n\t var metaData = this.getMetaData();\n\t var obj = this.utils.getObjectFromKey(metaData.keys, key);\n\t\n\t if (!obj) {\n\t return;\n\t }\n\t\n\t if (this._isAES || this._isDES || this._isRabbit || this._isRC4) {\n\t if (typeof this.config.encryptionSecret === 'undefined') {\n\t this.utils.encryptionSecret = obj.s;\n\t\n\t if (!this.utils.encryptionSecret) {\n\t this.utils.encryptionSecret = this.utils.generateSecretKey();\n\t this.setMetaData();\n\t }\n\t } else {\n\t this.utils.encryptionSecret = this.config.encryptionSecret || obj.s || '';\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'get',\n\t value: function get(key, isAllKeysData) {\n\t var decodedData = '',\n\t jsonData = '',\n\t deCompressedData = void 0,\n\t bytes = void 0,\n\t data = void 0;\n\t\n\t if (!this.utils.is(key)) {\n\t this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\n\t return jsonData;\n\t }\n\t\n\t data = this.getDataFromLocalStorage(key);\n\t\n\t if (!data) {\n\t return jsonData;\n\t }\n\t\n\t deCompressedData = data; // saves else\n\t if (this._isCompression || isAllKeysData) {\n\t // meta data always compressed\n\t deCompressedData = _lzString2.default.decompressFromUTF16(data);\n\t }\n\t\n\t decodedData = deCompressedData; // saves else\n\t if (this._isBase64 || isAllKeysData) {\n\t // meta data always Base64\n\t decodedData = _Base2.default.decode(deCompressedData);\n\t } else {\n\t this.getEncryptionSecret(key);\n\t if (this._isAES) {\n\t bytes = _aes2.default.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\n\t } else if (this._isDES) {\n\t bytes = _tripledes2.default.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\n\t } else if (this._isRabbit) {\n\t bytes = _rabbit2.default.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\n\t } else if (this._isRC4) {\n\t bytes = _rc2.default.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\n\t }\n\t\n\t if (bytes) {\n\t decodedData = bytes.toString(_encUtf2.default._Utf8);\n\t }\n\t }\n\t\n\t try {\n\t jsonData = JSON.parse(decodedData);\n\t } catch (e) {\n\t throw new Error('Could not parse JSON');\n\t }\n\t\n\t return jsonData;\n\t }\n\t }, {\n\t key: 'getDataFromLocalStorage',\n\t value: function getDataFromLocalStorage(key) {\n\t return this.ls.getItem(key, true);\n\t }\n\t }, {\n\t key: 'getAllKeys',\n\t value: function getAllKeys() {\n\t var data = this.getMetaData();\n\t\n\t return this.utils.extractKeyNames(data) || [];\n\t }\n\t }, {\n\t key: 'set',\n\t value: function set(key, data) {\n\t var dataToStore = '';\n\t\n\t if (!this.utils.is(key)) {\n\t this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\n\t return;\n\t }\n\t\n\t this.getEncryptionSecret(key);\n\t\n\t // add key(s) to Array if not already added, only for keys other than meta key\n\t if (!(String(key) === String(this.utils.metaKey))) {\n\t if (!this.utils.isKeyPresent(key)) {\n\t this.utils.addToKeysList(key);\n\t this.setMetaData();\n\t }\n\t }\n\t\n\t dataToStore = this.processData(data);\n\t // Store the data to localStorage\n\t this.setDataToLocalStorage(key, dataToStore);\n\t }\n\t }, {\n\t key: 'setDataToLocalStorage',\n\t value: function setDataToLocalStorage(key, data) {\n\t this.ls.setItem(key, data);\n\t }\n\t }, {\n\t key: 'remove',\n\t value: function remove(key) {\n\t if (!this.utils.is(key)) {\n\t this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\n\t return;\n\t }\n\t\n\t if (key === this.utils.metaKey && this.getAllKeys().length) {\n\t this.utils.warn(this.WarningEnum.META_KEY_REMOVE);\n\t return;\n\t }\n\t\n\t if (this.utils.isKeyPresent(key)) {\n\t this.utils.removeFromKeysList(key);\n\t this.setMetaData();\n\t }\n\t this.ls.removeItem(key);\n\t }\n\t }, {\n\t key: 'removeAll',\n\t value: function removeAll() {\n\t var keys = void 0,\n\t i = void 0;\n\t\n\t keys = this.getAllKeys();\n\t for (i = 0; i < keys.length; i++) {\n\t this.ls.removeItem(keys[i]);\n\t }\n\t this.ls.removeItem(this.utils.metaKey);\n\t\n\t this.resetAllKeys();\n\t }\n\t }, {\n\t key: 'clear',\n\t value: function clear() {\n\t this.ls.clear();\n\t this.resetAllKeys();\n\t }\n\t }, {\n\t key: 'resetAllKeys',\n\t value: function resetAllKeys() {\n\t this.utils.allKeys = [];\n\t return [];\n\t }\n\t }, {\n\t key: 'processData',\n\t value: function processData(data, isAllKeysData) {\n\t if (data === null || data === undefined || data === '') {\n\t return '';\n\t }\n\t\n\t var jsonData = void 0,\n\t encodedData = void 0,\n\t compressedData = void 0;\n\t\n\t try {\n\t jsonData = JSON.stringify(data);\n\t } catch (e) {\n\t throw new Error('Could not stringify data.');\n\t }\n\t\n\t // Encode Based on encoding type\n\t // If not set, default to Base64 for securing data\n\t encodedData = jsonData;\n\t if (this._isBase64 || isAllKeysData) {\n\t encodedData = _Base2.default.encode(jsonData);\n\t } else {\n\t if (this._isAES) {\n\t encodedData = _aes2.default.encrypt(jsonData, this.utils.encryptionSecret);\n\t } else if (this._isDES) {\n\t encodedData = _tripledes2.default.encrypt(jsonData, this.utils.encryptionSecret);\n\t } else if (this._isRabbit) {\n\t encodedData = _rabbit2.default.encrypt(jsonData, this.utils.encryptionSecret);\n\t } else if (this._isRC4) {\n\t encodedData = _rc2.default.encrypt(jsonData, this.utils.encryptionSecret);\n\t }\n\t\n\t encodedData = encodedData && encodedData.toString();\n\t }\n\t\n\t // Compress data if set to true\n\t compressedData = encodedData;\n\t if (this._isCompression || isAllKeysData) {\n\t compressedData = _lzString2.default.compressToUTF16(encodedData);\n\t }\n\t\n\t return compressedData;\n\t }\n\t }, {\n\t key: 'setMetaData',\n\t value: function setMetaData() {\n\t var dataToStore = this.processData({\n\t keys: this.utils.allKeys\n\t }, true);\n\t\n\t // Store the data to localStorage\n\t this.setDataToLocalStorage(this.getMetaKey(), dataToStore);\n\t }\n\t }, {\n\t key: 'getMetaData',\n\t value: function getMetaData() {\n\t return this.get(this.getMetaKey(), true) || {};\n\t }\n\t }, {\n\t key: 'getMetaKey',\n\t value: function getMetaKey() {\n\t return this.utils.metaKey + (this.config.encryptionRealm ? '__' + this.config.encryptionRealm : '');\n\t }\n\t }]);\n\t\n\t return SecureLS;\n\t}();\n\t\n\texports.default = SecureLS;\n\t;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tvar _constants2 = _interopRequireDefault(_constants);\n\t\n\tvar _WordArray = __webpack_require__(3);\n\t\n\tvar _WordArray2 = _interopRequireDefault(_WordArray);\n\t\n\tvar _pbkdf = __webpack_require__(4);\n\t\n\tvar _pbkdf2 = _interopRequireDefault(_pbkdf);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar utils = {\n\t metaKey: '_secure__ls__metadata',\n\t encryptionSecret: '',\n\t secretPhrase: 's3cr3t$#@135^&*246',\n\t allKeys: [],\n\t is: function is(key) {\n\t if (key) {\n\t return true;\n\t }\n\t return false;\n\t },\n\t warn: function warn(reason) {\n\t reason = reason ? reason : _constants2.default.WarningEnum.DEFAULT_TEXT;\n\t console.warn(_constants2.default.WarningTypes[reason]);\n\t },\n\t generateSecretKey: function generateSecretKey() {\n\t var salt = _WordArray2.default.random(128 / 8);\n\t var key128Bits = (0, _pbkdf2.default)(this.secretPhrase, salt, { keySize: 128 / 32 });\n\t\n\t return key128Bits && key128Bits.toString();\n\t },\n\t getObjectFromKey: function getObjectFromKey(data, key) {\n\t if (!data || !data.length) {\n\t return {};\n\t }\n\t\n\t var i = void 0,\n\t obj = {};\n\t\n\t for (i = 0; i < data.length; i++) {\n\t if (data[i].k === key) {\n\t obj = data[i];\n\t break;\n\t }\n\t }\n\t\n\t return obj;\n\t },\n\t extractKeyNames: function extractKeyNames(data) {\n\t if (!data || !data.keys || !data.keys.length) {\n\t return [];\n\t }\n\t\n\t return data.keys.map(function (keyData) {\n\t return keyData.k;\n\t });\n\t },\n\t getAllKeys: function getAllKeys() {\n\t return this.allKeys;\n\t },\n\t isKeyPresent: function isKeyPresent(key) {\n\t var isKeyAlreadyPresent = false;\n\t\n\t for (var i = 0; i < this.allKeys.length; i++) {\n\t if (String(this.allKeys[i].k) === String(key)) {\n\t isKeyAlreadyPresent = true; // found\n\t break;\n\t }\n\t }\n\t\n\t return isKeyAlreadyPresent;\n\t },\n\t addToKeysList: function addToKeysList(key) {\n\t this.allKeys.push({\n\t k: key,\n\t s: this.encryptionSecret\n\t });\n\t },\n\t removeFromKeysList: function removeFromKeysList(key) {\n\t var i = void 0,\n\t index = -1;\n\t\n\t for (i = 0; i < this.allKeys.length; i++) {\n\t if (this.allKeys[i].k === key) {\n\t index = i;\n\t break;\n\t }\n\t }\n\t if (index !== -1) {\n\t this.allKeys.splice(index, 1);\n\t }\n\t return index;\n\t }\n\t};\n\t\n\tmodule.exports = utils;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar WarningEnum = {\n\t KEY_NOT_PROVIDED: 'keyNotProvided',\n\t META_KEY_REMOVE: 'metaKeyRemove',\n\t DEFAULT_TEXT: 'defaultText'\n\t};\n\t\n\tvar WarningTypes = {};\n\t\n\tWarningTypes[WarningEnum.KEY_NOT_PROVIDED] = 'Secure LS: Key not provided. Aborting operation!';\n\tWarningTypes[WarningEnum.META_KEY_REMOVE] = 'Secure LS: Meta key can not be removed\\nunless all keys created by Secure LS are removed!';\n\tWarningTypes[WarningEnum.DEFAULT_TEXT] = 'Unexpected output';\n\t\n\tvar constants = {\n\t WarningEnum: WarningEnum,\n\t WarningTypes: WarningTypes,\n\t EncrytionTypes: {\n\t BASE64: 'base64',\n\t AES: 'aes',\n\t DES: 'des',\n\t RABBIT: 'rabbit',\n\t RC4: 'rc4'\n\t }\n\t};\n\t\n\tmodule.exports = constants;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\t/*\r\n\t ES6 compatible port of CryptoJS - WordArray for PBKDF2 password key generation\r\n\t\r\n\t Source: https://github.com/brix/crypto-js\r\n\t LICENSE: MIT\r\n\t */\n\t\n\tvar CryptoJSWordArray = {};\n\t\n\tCryptoJSWordArray.random = function (nBytes) {\n\t var words = [];\n\t var r = function r(mw) {\n\t var mz = 0x3ade68b1;\n\t var mask = 0xffffffff;\n\t\n\t return function () {\n\t mz = 0x9069 * (mz & 0xFFFF) + (mz >> 0x10) & mask;\n\t mw = 0x4650 * (mw & 0xFFFF) + (mw >> 0x10) & mask;\n\t var result = (mz << 0x10) + mw & mask;\n\t\n\t result /= 0x100000000;\n\t result += 0.5;\n\t return result * (Math.random() > 0.5 ? 1 : -1);\n\t };\n\t };\n\t\n\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t var _r = r((rcache || Math.random()) * 0x100000000);\n\t\n\t rcache = _r() * 0x3ade67b7;\n\t words.push(_r() * 0x100000000 | 0);\n\t }\n\t\n\t return new this.Set(words, nBytes);\n\t};\n\t\n\tCryptoJSWordArray.Set = function (words, sigBytes) {\n\t words = this.words = words || [];\n\t\n\t if (sigBytes !== undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t};\n\t\n\tmodule.exports = CryptoJSWordArray;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(6), __webpack_require__(7));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var Base = C_lib.Base;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var C_algo = C.algo;\n\t\t var SHA1 = C_algo.SHA1;\n\t\t var HMAC = C_algo.HMAC;\n\t\n\t\t /**\n\t\t * Password-Based Key Derivation Function 2 algorithm.\n\t\t */\n\t\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t\t */\n\t\t cfg: Base.extend({\n\t\t keySize: 128/32,\n\t\t hasher: SHA1,\n\t\t iterations: 1\n\t\t }),\n\t\n\t\t /**\n\t\t * Initializes a newly created key derivation function.\n\t\t *\n\t\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t\t */\n\t\t init: function (cfg) {\n\t\t this.cfg = this.cfg.extend(cfg);\n\t\t },\n\t\n\t\t /**\n\t\t * Computes the Password-Based Key Derivation Function 2.\n\t\t *\n\t\t * @param {WordArray|string} password The password.\n\t\t * @param {WordArray|string} salt A salt.\n\t\t *\n\t\t * @return {WordArray} The derived key.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var key = kdf.compute(password, salt);\n\t\t */\n\t\t compute: function (password, salt) {\n\t\t // Shortcut\n\t\t var cfg = this.cfg;\n\t\n\t\t // Init HMAC\n\t\t var hmac = HMAC.create(cfg.hasher, password);\n\t\n\t\t // Initial values\n\t\t var derivedKey = WordArray.create();\n\t\t var blockIndex = WordArray.create([0x00000001]);\n\t\n\t\t // Shortcuts\n\t\t var derivedKeyWords = derivedKey.words;\n\t\t var blockIndexWords = blockIndex.words;\n\t\t var keySize = cfg.keySize;\n\t\t var iterations = cfg.iterations;\n\t\n\t\t // Generate key\n\t\t while (derivedKeyWords.length < keySize) {\n\t\t var block = hmac.update(salt).finalize(blockIndex);\n\t\t hmac.reset();\n\t\n\t\t // Shortcuts\n\t\t var blockWords = block.words;\n\t\t var blockWordsLength = blockWords.length;\n\t\n\t\t // Iterations\n\t\t var intermediate = block;\n\t\t for (var i = 1; i < iterations; i++) {\n\t\t intermediate = hmac.finalize(intermediate);\n\t\t hmac.reset();\n\t\n\t\t // Shortcut\n\t\t var intermediateWords = intermediate.words;\n\t\n\t\t // XOR intermediate with block\n\t\t for (var j = 0; j < blockWordsLength; j++) {\n\t\t blockWords[j] ^= intermediateWords[j];\n\t\t }\n\t\t }\n\t\n\t\t derivedKey.concat(block);\n\t\t blockIndexWords[0]++;\n\t\t }\n\t\t derivedKey.sigBytes = keySize * 4;\n\t\n\t\t return derivedKey;\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Computes the Password-Based Key Derivation Function 2.\n\t\t *\n\t\t * @param {WordArray|string} password The password.\n\t\t * @param {WordArray|string} salt A salt.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t\t *\n\t\t * @return {WordArray} The derived key.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var key = CryptoJS.PBKDF2(password, salt);\n\t\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t\t */\n\t\t C.PBKDF2 = function (password, salt, cfg) {\n\t\t return PBKDF2.create(cfg).compute(password, salt);\n\t\t };\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.PBKDF2;\n\t\n\t}));\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory();\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\troot.CryptoJS = factory();\n\t\t}\n\t}(this, function () {\n\t\n\t\t/**\n\t\t * CryptoJS core components.\n\t\t */\n\t\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t\t /*\n\t\t * Local polyfil of Object.create\n\t\t */\n\t\t var create = Object.create || (function () {\n\t\t function F() {};\n\t\n\t\t return function (obj) {\n\t\t var subtype;\n\t\n\t\t F.prototype = obj;\n\t\n\t\t subtype = new F();\n\t\n\t\t F.prototype = null;\n\t\n\t\t return subtype;\n\t\t };\n\t\t }())\n\t\n\t\t /**\n\t\t * CryptoJS namespace.\n\t\t */\n\t\t var C = {};\n\t\n\t\t /**\n\t\t * Library namespace.\n\t\t */\n\t\t var C_lib = C.lib = {};\n\t\n\t\t /**\n\t\t * Base object for prototypal inheritance.\n\t\t */\n\t\t var Base = C_lib.Base = (function () {\n\t\n\t\n\t\t return {\n\t\t /**\n\t\t * Creates a new object that inherits from this object.\n\t\t *\n\t\t * @param {Object} overrides Properties to copy into the new object.\n\t\t *\n\t\t * @return {Object} The new object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var MyType = CryptoJS.lib.Base.extend({\n\t\t * field: 'value',\n\t\t *\n\t\t * method: function () {\n\t\t * }\n\t\t * });\n\t\t */\n\t\t extend: function (overrides) {\n\t\t // Spawn\n\t\t var subtype = create(this);\n\t\n\t\t // Augment\n\t\t if (overrides) {\n\t\t subtype.mixIn(overrides);\n\t\t }\n\t\n\t\t // Create default initializer\n\t\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t\t subtype.init = function () {\n\t\t subtype.$super.init.apply(this, arguments);\n\t\t };\n\t\t }\n\t\n\t\t // Initializer's prototype is the subtype object\n\t\t subtype.init.prototype = subtype;\n\t\n\t\t // Reference supertype\n\t\t subtype.$super = this;\n\t\n\t\t return subtype;\n\t\t },\n\t\n\t\t /**\n\t\t * Extends this object and runs the init method.\n\t\t * Arguments to create() will be passed to init().\n\t\t *\n\t\t * @return {Object} The new object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var instance = MyType.create();\n\t\t */\n\t\t create: function () {\n\t\t var instance = this.extend();\n\t\t instance.init.apply(instance, arguments);\n\t\n\t\t return instance;\n\t\t },\n\t\n\t\t /**\n\t\t * Initializes a newly created object.\n\t\t * Override this method to add some logic when your objects are created.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var MyType = CryptoJS.lib.Base.extend({\n\t\t * init: function () {\n\t\t * // ...\n\t\t * }\n\t\t * });\n\t\t */\n\t\t init: function () {\n\t\t },\n\t\n\t\t /**\n\t\t * Copies properties into this object.\n\t\t *\n\t\t * @param {Object} properties The properties to mix in.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * MyType.mixIn({\n\t\t * field: 'value'\n\t\t * });\n\t\t */\n\t\t mixIn: function (properties) {\n\t\t for (var propertyName in properties) {\n\t\t if (properties.hasOwnProperty(propertyName)) {\n\t\t this[propertyName] = properties[propertyName];\n\t\t }\n\t\t }\n\t\n\t\t // IE won't copy toString using the loop above\n\t\t if (properties.hasOwnProperty('toString')) {\n\t\t this.toString = properties.toString;\n\t\t }\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a copy of this object.\n\t\t *\n\t\t * @return {Object} The clone.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var clone = instance.clone();\n\t\t */\n\t\t clone: function () {\n\t\t return this.init.prototype.extend(this);\n\t\t }\n\t\t };\n\t\t }());\n\t\n\t\t /**\n\t\t * An array of 32-bit words.\n\t\t *\n\t\t * @property {Array} words The array of 32-bit words.\n\t\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t\t */\n\t\t var WordArray = C_lib.WordArray = Base.extend({\n\t\t /**\n\t\t * Initializes a newly created word array.\n\t\t *\n\t\t * @param {Array} words (Optional) An array of 32-bit words.\n\t\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t\t */\n\t\t init: function (words, sigBytes) {\n\t\t words = this.words = words || [];\n\t\n\t\t if (sigBytes != undefined) {\n\t\t this.sigBytes = sigBytes;\n\t\t } else {\n\t\t this.sigBytes = words.length * 4;\n\t\t }\n\t\t },\n\t\n\t\t /**\n\t\t * Converts this word array to a string.\n\t\t *\n\t\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t\t *\n\t\t * @return {string} The stringified word array.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var string = wordArray + '';\n\t\t * var string = wordArray.toString();\n\t\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t\t */\n\t\t toString: function (encoder) {\n\t\t return (encoder || Hex).stringify(this);\n\t\t },\n\t\n\t\t /**\n\t\t * Concatenates a word array to this word array.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array to append.\n\t\t *\n\t\t * @return {WordArray} This word array.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * wordArray1.concat(wordArray2);\n\t\t */\n\t\t concat: function (wordArray) {\n\t\t // Shortcuts\n\t\t var thisWords = this.words;\n\t\t var thatWords = wordArray.words;\n\t\t var thisSigBytes = this.sigBytes;\n\t\t var thatSigBytes = wordArray.sigBytes;\n\t\n\t\t // Clamp excess bits\n\t\t this.clamp();\n\t\n\t\t // Concat\n\t\t if (thisSigBytes % 4) {\n\t\t // Copy one byte at a time\n\t\t for (var i = 0; i < thatSigBytes; i++) {\n\t\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t\t }\n\t\t } else {\n\t\t // Copy one word at a time\n\t\t for (var i = 0; i < thatSigBytes; i += 4) {\n\t\t thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t\t }\n\t\t }\n\t\t this.sigBytes += thatSigBytes;\n\t\n\t\t // Chainable\n\t\t return this;\n\t\t },\n\t\n\t\t /**\n\t\t * Removes insignificant bits.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * wordArray.clamp();\n\t\t */\n\t\t clamp: function () {\n\t\t // Shortcuts\n\t\t var words = this.words;\n\t\t var sigBytes = this.sigBytes;\n\t\n\t\t // Clamp\n\t\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t\t words.length = Math.ceil(sigBytes / 4);\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a copy of this word array.\n\t\t *\n\t\t * @return {WordArray} The clone.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var clone = wordArray.clone();\n\t\t */\n\t\t clone: function () {\n\t\t var clone = Base.clone.call(this);\n\t\t clone.words = this.words.slice(0);\n\t\n\t\t return clone;\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a word array filled with random bytes.\n\t\t *\n\t\t * @param {number} nBytes The number of random bytes to generate.\n\t\t *\n\t\t * @return {WordArray} The random word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t\t */\n\t\t random: function (nBytes) {\n\t\t var words = [];\n\t\n\t\t var r = (function (m_w) {\n\t\t var m_w = m_w;\n\t\t var m_z = 0x3ade68b1;\n\t\t var mask = 0xffffffff;\n\t\n\t\t return function () {\n\t\t m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t\t m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t\t var result = ((m_z << 0x10) + m_w) & mask;\n\t\t result /= 0x100000000;\n\t\t result += 0.5;\n\t\t return result * (Math.random() > .5 ? 1 : -1);\n\t\t }\n\t\t });\n\t\n\t\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t\t var _r = r((rcache || Math.random()) * 0x100000000);\n\t\n\t\t rcache = _r() * 0x3ade67b7;\n\t\t words.push((_r() * 0x100000000) | 0);\n\t\t }\n\t\n\t\t return new WordArray.init(words, nBytes);\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Encoder namespace.\n\t\t */\n\t\t var C_enc = C.enc = {};\n\t\n\t\t /**\n\t\t * Hex encoding strategy.\n\t\t */\n\t\t var Hex = C_enc.Hex = {\n\t\t /**\n\t\t * Converts a word array to a hex string.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array.\n\t\t *\n\t\t * @return {string} The hex string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t\t */\n\t\t stringify: function (wordArray) {\n\t\t // Shortcuts\n\t\t var words = wordArray.words;\n\t\t var sigBytes = wordArray.sigBytes;\n\t\n\t\t // Convert\n\t\t var hexChars = [];\n\t\t for (var i = 0; i < sigBytes; i++) {\n\t\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t\t hexChars.push((bite >>> 4).toString(16));\n\t\t hexChars.push((bite & 0x0f).toString(16));\n\t\t }\n\t\n\t\t return hexChars.join('');\n\t\t },\n\t\n\t\t /**\n\t\t * Converts a hex string to a word array.\n\t\t *\n\t\t * @param {string} hexStr The hex string.\n\t\t *\n\t\t * @return {WordArray} The word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t\t */\n\t\t parse: function (hexStr) {\n\t\t // Shortcut\n\t\t var hexStrLength = hexStr.length;\n\t\n\t\t // Convert\n\t\t var words = [];\n\t\t for (var i = 0; i < hexStrLength; i += 2) {\n\t\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t\t }\n\t\n\t\t return new WordArray.init(words, hexStrLength / 2);\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * Latin1 encoding strategy.\n\t\t */\n\t\t var Latin1 = C_enc.Latin1 = {\n\t\t /**\n\t\t * Converts a word array to a Latin1 string.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array.\n\t\t *\n\t\t * @return {string} The Latin1 string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t\t */\n\t\t stringify: function (wordArray) {\n\t\t // Shortcuts\n\t\t var words = wordArray.words;\n\t\t var sigBytes = wordArray.sigBytes;\n\t\n\t\t // Convert\n\t\t var latin1Chars = [];\n\t\t for (var i = 0; i < sigBytes; i++) {\n\t\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t\t latin1Chars.push(String.fromCharCode(bite));\n\t\t }\n\t\n\t\t return latin1Chars.join('');\n\t\t },\n\t\n\t\t /**\n\t\t * Converts a Latin1 string to a word array.\n\t\t *\n\t\t * @param {string} latin1Str The Latin1 string.\n\t\t *\n\t\t * @return {WordArray} The word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t\t */\n\t\t parse: function (latin1Str) {\n\t\t // Shortcut\n\t\t var latin1StrLength = latin1Str.length;\n\t\n\t\t // Convert\n\t\t var words = [];\n\t\t for (var i = 0; i < latin1StrLength; i++) {\n\t\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t\t }\n\t\n\t\t return new WordArray.init(words, latin1StrLength);\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * UTF-8 encoding strategy.\n\t\t */\n\t\t var Utf8 = C_enc.Utf8 = {\n\t\t /**\n\t\t * Converts a word array to a UTF-8 string.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array.\n\t\t *\n\t\t * @return {string} The UTF-8 string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t\t */\n\t\t stringify: function (wordArray) {\n\t\t try {\n\t\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t\t } catch (e) {\n\t\t throw new Error('Malformed UTF-8 data');\n\t\t }\n\t\t },\n\t\n\t\t /**\n\t\t * Converts a UTF-8 string to a word array.\n\t\t *\n\t\t * @param {string} utf8Str The UTF-8 string.\n\t\t *\n\t\t * @return {WordArray} The word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t\t */\n\t\t parse: function (utf8Str) {\n\t\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * Abstract buffered block algorithm template.\n\t\t *\n\t\t * The property blockSize must be implemented in a concrete subtype.\n\t\t *\n\t\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t\t */\n\t\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t\t /**\n\t\t * Resets this block algorithm's data buffer to its initial state.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * bufferedBlockAlgorithm.reset();\n\t\t */\n\t\t reset: function () {\n\t\t // Initial values\n\t\t this._data = new WordArray.init();\n\t\t this._nDataBytes = 0;\n\t\t },\n\t\n\t\t /**\n\t\t * Adds new data to this block algorithm's buffer.\n\t\t *\n\t\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * bufferedBlockAlgorithm._append('data');\n\t\t * bufferedBlockAlgorithm._append(wordArray);\n\t\t */\n\t\t _append: function (data) {\n\t\t // Convert string to WordArray, else assume WordArray already\n\t\t if (typeof data == 'string') {\n\t\t data = Utf8.parse(data);\n\t\t }\n\t\n\t\t // Append\n\t\t this._data.concat(data);\n\t\t this._nDataBytes += data.sigBytes;\n\t\t },\n\t\n\t\t /**\n\t\t * Processes available data blocks.\n\t\t *\n\t\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t\t *\n\t\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t\t *\n\t\t * @return {WordArray} The processed data.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var processedData = bufferedBlockAlgorithm._process();\n\t\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t\t */\n\t\t _process: function (doFlush) {\n\t\t // Shortcuts\n\t\t var data = this._data;\n\t\t var dataWords = data.words;\n\t\t var dataSigBytes = data.sigBytes;\n\t\t var blockSize = this.blockSize;\n\t\t var blockSizeBytes = blockSize * 4;\n\t\n\t\t // Count blocks ready\n\t\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t\t if (doFlush) {\n\t\t // Round up to include partial blocks\n\t\t nBlocksReady = Math.ceil(nBlocksReady);\n\t\t } else {\n\t\t // Round down to include only full blocks,\n\t\t // less the number of blocks that must remain in the buffer\n\t\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t\t }\n\t\n\t\t // Count words ready\n\t\t var nWordsReady = nBlocksReady * blockSize;\n\t\n\t\t // Count bytes ready\n\t\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\t\n\t\t // Process blocks\n\t\t if (nWordsReady) {\n\t\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t\t // Perform concrete-algorithm logic\n\t\t this._doProcessBlock(dataWords, offset);\n\t\t }\n\t\n\t\t // Remove processed words\n\t\t var processedWords = dataWords.splice(0, nWordsReady);\n\t\t data.sigBytes -= nBytesReady;\n\t\t }\n\t\n\t\t // Return processed words\n\t\t return new WordArray.init(processedWords, nBytesReady);\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a copy of this object.\n\t\t *\n\t\t * @return {Object} The clone.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var clone = bufferedBlockAlgorithm.clone();\n\t\t */\n\t\t clone: function () {\n\t\t var clone = Base.clone.call(this);\n\t\t clone._data = this._data.clone();\n\t\n\t\t return clone;\n\t\t },\n\t\n\t\t _minBufferSize: 0\n\t\t });\n\t\n\t\t /**\n\t\t * Abstract hasher template.\n\t\t *\n\t\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t\t */\n\t\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t */\n\t\t cfg: Base.extend(),\n\t\n\t\t /**\n\t\t * Initializes a newly created hasher.\n\t\t *\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hasher = CryptoJS.algo.SHA256.create();\n\t\t */\n\t\t init: function (cfg) {\n\t\t // Apply config defaults\n\t\t this.cfg = this.cfg.extend(cfg);\n\t\n\t\t // Set initial values\n\t\t this.reset();\n\t\t },\n\t\n\t\t /**\n\t\t * Resets this hasher to its initial state.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * hasher.reset();\n\t\t */\n\t\t reset: function () {\n\t\t // Reset data buffer\n\t\t BufferedBlockAlgorithm.reset.call(this);\n\t\n\t\t // Perform concrete-hasher logic\n\t\t this._doReset();\n\t\t },\n\t\n\t\t /**\n\t\t * Updates this hasher with a message.\n\t\t *\n\t\t * @param {WordArray|string} messageUpdate The message to append.\n\t\t *\n\t\t * @return {Hasher} This hasher.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * hasher.update('message');\n\t\t * hasher.update(wordArray);\n\t\t */\n\t\t update: function (messageUpdate) {\n\t\t // Append\n\t\t this._append(messageUpdate);\n\t\n\t\t // Update the hash\n\t\t this._process();\n\t\n\t\t // Chainable\n\t\t return this;\n\t\t },\n\t\n\t\t /**\n\t\t * Finalizes the hash computation.\n\t\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t\t *\n\t\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t\t *\n\t\t * @return {WordArray} The hash.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hash = hasher.finalize();\n\t\t * var hash = hasher.finalize('message');\n\t\t * var hash = hasher.finalize(wordArray);\n\t\t */\n\t\t finalize: function (messageUpdate) {\n\t\t // Final message update\n\t\t if (messageUpdate) {\n\t\t this._append(messageUpdate);\n\t\t }\n\t\n\t\t // Perform concrete-hasher logic\n\t\t var hash = this._doFinalize();\n\t\n\t\t return hash;\n\t\t },\n\t\n\t\t blockSize: 512/32,\n\t\n\t\t /**\n\t\t * Creates a shortcut function to a hasher's object interface.\n\t\t *\n\t\t * @param {Hasher} hasher The hasher to create a helper for.\n\t\t *\n\t\t * @return {Function} The shortcut function.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t\t */\n\t\t _createHelper: function (hasher) {\n\t\t return function (message, cfg) {\n\t\t return new hasher.init(cfg).finalize(message);\n\t\t };\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a shortcut function to the HMAC's object interface.\n\t\t *\n\t\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t\t *\n\t\t * @return {Function} The shortcut function.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t\t */\n\t\t _createHmacHelper: function (hasher) {\n\t\t return function (message, key) {\n\t\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t\t };\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Algorithm namespace.\n\t\t */\n\t\t var C_algo = C.algo = {};\n\t\n\t\t return C;\n\t\t}(Math));\n\t\n\t\n\t\treturn CryptoJS;\n\t\n\t}));\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var Hasher = C_lib.Hasher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Reusable object\n\t\t var W = [];\n\t\n\t\t /**\n\t\t * SHA-1 hash algorithm.\n\t\t */\n\t\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t\t _doReset: function () {\n\t\t this._hash = new WordArray.init([\n\t\t 0x67452301, 0xefcdab89,\n\t\t 0x98badcfe, 0x10325476,\n\t\t 0xc3d2e1f0\n\t\t ]);\n\t\t },\n\t\n\t\t _doProcessBlock: function (M, offset) {\n\t\t // Shortcut\n\t\t var H = this._hash.words;\n\t\n\t\t // Working variables\n\t\t var a = H[0];\n\t\t var b = H[1];\n\t\t var c = H[2];\n\t\t var d = H[3];\n\t\t var e = H[4];\n\t\n\t\t // Computation\n\t\t for (var i = 0; i < 80; i++) {\n\t\t if (i < 16) {\n\t\t W[i] = M[offset + i] | 0;\n\t\t } else {\n\t\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t\t W[i] = (n << 1) | (n >>> 31);\n\t\t }\n\t\n\t\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t\t if (i < 20) {\n\t\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t\t } else if (i < 40) {\n\t\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t\t } else if (i < 60) {\n\t\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t\t } else /* if (i < 80) */ {\n\t\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t\t }\n\t\n\t\t e = d;\n\t\t d = c;\n\t\t c = (b << 30) | (b >>> 2);\n\t\t b = a;\n\t\t a = t;\n\t\t }\n\t\n\t\t // Intermediate hash value\n\t\t H[0] = (H[0] + a) | 0;\n\t\t H[1] = (H[1] + b) | 0;\n\t\t H[2] = (H[2] + c) | 0;\n\t\t H[3] = (H[3] + d) | 0;\n\t\t H[4] = (H[4] + e) | 0;\n\t\t },\n\t\n\t\t _doFinalize: function () {\n\t\t // Shortcuts\n\t\t var data = this._data;\n\t\t var dataWords = data.words;\n\t\n\t\t var nBitsTotal = this._nDataBytes * 8;\n\t\t var nBitsLeft = data.sigBytes * 8;\n\t\n\t\t // Add padding\n\t\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t\t data.sigBytes = dataWords.length * 4;\n\t\n\t\t // Hash final blocks\n\t\t this._process();\n\t\n\t\t // Return final computed hash\n\t\t return this._hash;\n\t\t },\n\t\n\t\t clone: function () {\n\t\t var clone = Hasher.clone.call(this);\n\t\t clone._hash = this._hash.clone();\n\t\n\t\t return clone;\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Shortcut function to the hasher's object interface.\n\t\t *\n\t\t * @param {WordArray|string} message The message to hash.\n\t\t *\n\t\t * @return {WordArray} The hash.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hash = CryptoJS.SHA1('message');\n\t\t * var hash = CryptoJS.SHA1(wordArray);\n\t\t */\n\t\t C.SHA1 = Hasher._createHelper(SHA1);\n\t\n\t\t /**\n\t\t * Shortcut function to the HMAC's object interface.\n\t\t *\n\t\t * @param {WordArray|string} message The message to hash.\n\t\t * @param {WordArray|string} key The secret key.\n\t\t *\n\t\t * @return {WordArray} The HMAC.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t\t */\n\t\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.SHA1;\n\t\n\t}));\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var Base = C_lib.Base;\n\t\t var C_enc = C.enc;\n\t\t var Utf8 = C_enc.Utf8;\n\t\t var C_algo = C.algo;\n\t\n\t\t /**\n\t\t * HMAC algorithm.\n\t\t */\n\t\t var HMAC = C_algo.HMAC = Base.extend({\n\t\t /**\n\t\t * Initializes a newly created HMAC.\n\t\t *\n\t\t * @param {Hasher} hasher The hash algorithm to use.\n\t\t * @param {WordArray|string} key The secret key.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t\t */\n\t\t init: function (hasher, key) {\n\t\t // Init hasher\n\t\t hasher = this._hasher = new hasher.init();\n\t\n\t\t // Convert string to WordArray, else assume WordArray already\n\t\t if (typeof key == 'string') {\n\t\t key = Utf8.parse(key);\n\t\t }\n\t\n\t\t // Shortcuts\n\t\t var hasherBlockSize = hasher.blockSize;\n\t\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\t\n\t\t // Allow arbitrary length keys\n\t\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t\t key = hasher.finalize(key);\n\t\t }\n\t\n\t\t // Clamp excess bits\n\t\t key.clamp();\n\t\n\t\t // Clone key for inner and outer pads\n\t\t var oKey = this._oKey = key.clone();\n\t\t var iKey = this._iKey = key.clone();\n\t\n\t\t // Shortcuts\n\t\t var oKeyWords = oKey.words;\n\t\t var iKeyWords = iKey.words;\n\t\n\t\t // XOR keys with pad constants\n\t\t for (var i = 0; i < hasherBlockSize; i++) {\n\t\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t\t iKeyWords[i] ^= 0x36363636;\n\t\t }\n\t\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\t\n\t\t // Set initial values\n\t\t this.reset();\n\t\t },\n\t\n\t\t /**\n\t\t * Resets this HMAC to its initial state.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * hmacHasher.reset();\n\t\t */\n\t\t reset: function () {\n\t\t // Shortcut\n\t\t var hasher = this._hasher;\n\t\n\t\t // Reset\n\t\t hasher.reset();\n\t\t hasher.update(this._iKey);\n\t\t },\n\t\n\t\t /**\n\t\t * Updates this HMAC with a message.\n\t\t *\n\t\t * @param {WordArray|string} messageUpdate The message to append.\n\t\t *\n\t\t * @return {HMAC} This HMAC instance.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * hmacHasher.update('message');\n\t\t * hmacHasher.update(wordArray);\n\t\t */\n\t\t update: function (messageUpdate) {\n\t\t this._hasher.update(messageUpdate);\n\t\n\t\t // Chainable\n\t\t return this;\n\t\t },\n\t\n\t\t /**\n\t\t * Finalizes the HMAC computation.\n\t\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t\t *\n\t\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t\t *\n\t\t * @return {WordArray} The HMAC.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hmac = hmacHasher.finalize();\n\t\t * var hmac = hmacHasher.finalize('message');\n\t\t * var hmac = hmacHasher.finalize(wordArray);\n\t\t */\n\t\t finalize: function (messageUpdate) {\n\t\t // Shortcut\n\t\t var hasher = this._hasher;\n\t\n\t\t // Compute HMAC\n\t\t var innerHash = hasher.finalize(messageUpdate);\n\t\t hasher.reset();\n\t\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\t\n\t\t return hmac;\n\t\t }\n\t\t });\n\t\t}());\n\t\n\t\n\t}));\n\n/***/ },\n/* 8 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\t/*\r\n\t ES6 compatible port of CryptoJS - encoding\r\n\t\r\n\t Source: https://github.com/brix/crypto-js\r\n\t LICENSE: MIT\r\n\t */\n\tvar enc = {};\n\t\n\tenc.Latin1 = {\n\t stringify: function stringify(wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var latin1Chars = [],\n\t i = void 0,\n\t bite = void 0;\n\t\n\t // Convert\n\t for (i = 0; i < sigBytes; i++) {\n\t bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\t\n\t return latin1Chars.join('');\n\t }\n\t};\n\t\n\tenc._Utf8 = {\n\t stringify: function stringify(wordArray) {\n\t try {\n\t return decodeURIComponent(escape(enc.Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t }\n\t};\n\t\n\tmodule.exports = enc;\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar Base64 = {\n\t _keyStr: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t encode: function encode(e) {\n\t var t = '';\n\t var n = void 0,\n\t r = void 0,\n\t i = void 0,\n\t s = void 0,\n\t o = void 0,\n\t u = void 0,\n\t a = void 0;\n\t var f = 0;\n\t\n\t e = Base64._utf8Encode(e);\n\t while (f < e.length) {\n\t n = e.charCodeAt(f++);\n\t r = e.charCodeAt(f++);\n\t i = e.charCodeAt(f++);\n\t s = n >> 2;\n\t o = (n & 3) << 4 | r >> 4;\n\t u = (r & 15) << 2 | i >> 6;\n\t a = i & 63;\n\t if (isNaN(r)) {\n\t u = a = 64;\n\t } else if (isNaN(i)) {\n\t a = 64;\n\t }\n\t t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a);\n\t }\n\t return t;\n\t },\n\t decode: function decode(e) {\n\t var t = '';\n\t var n = void 0,\n\t r = void 0,\n\t i = void 0;\n\t var s = void 0,\n\t o = void 0,\n\t u = void 0,\n\t a = void 0;\n\t var f = 0;\n\t\n\t e = e.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n\t while (f < e.length) {\n\t s = this._keyStr.indexOf(e.charAt(f++));\n\t o = this._keyStr.indexOf(e.charAt(f++));\n\t u = this._keyStr.indexOf(e.charAt(f++));\n\t a = this._keyStr.indexOf(e.charAt(f++));\n\t n = s << 2 | o >> 4;\n\t r = (o & 15) << 4 | u >> 2;\n\t i = (u & 3) << 6 | a;\n\t t = t + String.fromCharCode(n);\n\t if (u !== 64) {\n\t t = t + String.fromCharCode(r);\n\t }\n\t if (a !== 64) {\n\t t = t + String.fromCharCode(i);\n\t }\n\t }\n\t t = Base64._utf8Decode(t);\n\t return t;\n\t },\n\t _utf8Encode: function _utf8Encode(e) {\n\t e = e.replace(/\\r\\n/g, '\\n');\n\t var t = '';\n\t\n\t for (var n = 0; n < e.length; n++) {\n\t var r = e.charCodeAt(n);\n\t\n\t if (r < 128) {\n\t t += String.fromCharCode(r);\n\t } else if (r > 127 && r < 2048) {\n\t t += String.fromCharCode(r >> 6 | 192);\n\t t += String.fromCharCode(r & 63 | 128);\n\t } else {\n\t t += String.fromCharCode(r >> 12 | 224);\n\t t += String.fromCharCode(r >> 6 & 63 | 128);\n\t t += String.fromCharCode(r & 63 | 128);\n\t }\n\t }\n\t return t;\n\t },\n\t _utf8Decode: function _utf8Decode(e) {\n\t var t = '';\n\t var n = 0;\n\t var r = void 0,\n\t c2 = void 0,\n\t c3 = void 0;\n\t\n\t r = c2 = 0;\n\t while (n < e.length) {\n\t r = e.charCodeAt(n);\n\t if (r < 128) {\n\t t += String.fromCharCode(r);\n\t n++;\n\t } else if (r > 191 && r < 224) {\n\t c2 = e.charCodeAt(n + 1);\n\t t += String.fromCharCode((r & 31) << 6 | c2 & 63);\n\t n += 2;\n\t } else {\n\t c2 = e.charCodeAt(n + 1);\n\t c3 = e.charCodeAt(n + 2);\n\t t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\n\t n += 3;\n\t }\n\t }\n\t return t;\n\t }\n\t};\n\t\n\tmodule.exports = Base64;\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;// Copyright (c) 2013 Pieroxy \n\t// This work is free. You can redistribute it and/or modify it\n\t// under the terms of the WTFPL, Version 2\n\t// For more information see LICENSE.txt or http://www.wtfpl.net/\n\t//\n\t// For more information, the home page:\n\t// http://pieroxy.net/blog/pages/lz-string/testing.html\n\t//\n\t// LZ-based compression algorithm, version 1.4.4\n\tvar LZString = (function() {\n\t\n\t// private property\n\tvar f = String.fromCharCode;\n\tvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\tvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\n\tvar baseReverseDic = {};\n\t\n\tfunction getBaseValue(alphabet, character) {\n\t if (!baseReverseDic[alphabet]) {\n\t baseReverseDic[alphabet] = {};\n\t for (var i=0 ; i>> 8;\n\t buf[i*2+1] = current_value % 256;\n\t }\n\t return buf;\n\t },\n\t\n\t //decompress from uint8array (UCS-2 big endian format)\n\t decompressFromUint8Array:function (compressed) {\n\t if (compressed===null || compressed===undefined){\n\t return LZString.decompress(compressed);\n\t } else {\n\t var buf=new Array(compressed.length/2); // 2 bytes per character\n\t for (var i=0, TotalLen=buf.length; i> 1;\n\t }\n\t } else {\n\t value = 1;\n\t for (i=0 ; i> 1;\n\t }\n\t }\n\t context_enlargeIn--;\n\t if (context_enlargeIn == 0) {\n\t context_enlargeIn = Math.pow(2, context_numBits);\n\t context_numBits++;\n\t }\n\t delete context_dictionaryToCreate[context_w];\n\t } else {\n\t value = context_dictionary[context_w];\n\t for (i=0 ; i> 1;\n\t }\n\t\n\t\n\t }\n\t context_enlargeIn--;\n\t if (context_enlargeIn == 0) {\n\t context_enlargeIn = Math.pow(2, context_numBits);\n\t context_numBits++;\n\t }\n\t // Add wc to the dictionary.\n\t context_dictionary[context_wc] = context_dictSize++;\n\t context_w = String(context_c);\n\t }\n\t }\n\t\n\t // Output the code for w.\n\t if (context_w !== \"\") {\n\t if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n\t if (context_w.charCodeAt(0)<256) {\n\t for (i=0 ; i> 1;\n\t }\n\t } else {\n\t value = 1;\n\t for (i=0 ; i> 1;\n\t }\n\t }\n\t context_enlargeIn--;\n\t if (context_enlargeIn == 0) {\n\t context_enlargeIn = Math.pow(2, context_numBits);\n\t context_numBits++;\n\t }\n\t delete context_dictionaryToCreate[context_w];\n\t } else {\n\t value = context_dictionary[context_w];\n\t for (i=0 ; i> 1;\n\t }\n\t\n\t\n\t }\n\t context_enlargeIn--;\n\t if (context_enlargeIn == 0) {\n\t context_enlargeIn = Math.pow(2, context_numBits);\n\t context_numBits++;\n\t }\n\t }\n\t\n\t // Mark the end of the stream\n\t value = 2;\n\t for (i=0 ; i> 1;\n\t }\n\t\n\t // Flush the last char\n\t while (true) {\n\t context_data_val = (context_data_val << 1);\n\t if (context_data_position == bitsPerChar-1) {\n\t context_data.push(getCharFromInt(context_data_val));\n\t break;\n\t }\n\t else context_data_position++;\n\t }\n\t return context_data.join('');\n\t },\n\t\n\t decompress: function (compressed) {\n\t if (compressed == null) return \"\";\n\t if (compressed == \"\") return null;\n\t return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n\t },\n\t\n\t _decompress: function (length, resetValue, getNextValue) {\n\t var dictionary = [],\n\t next,\n\t enlargeIn = 4,\n\t dictSize = 4,\n\t numBits = 3,\n\t entry = \"\",\n\t result = [],\n\t i,\n\t w,\n\t bits, resb, maxpower, power,\n\t c,\n\t data = {val:getNextValue(0), position:resetValue, index:1};\n\t\n\t for (i = 0; i < 3; i += 1) {\n\t dictionary[i] = i;\n\t }\n\t\n\t bits = 0;\n\t maxpower = Math.pow(2,2);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t\n\t switch (next = bits) {\n\t case 0:\n\t bits = 0;\n\t maxpower = Math.pow(2,8);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t c = f(bits);\n\t break;\n\t case 1:\n\t bits = 0;\n\t maxpower = Math.pow(2,16);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t c = f(bits);\n\t break;\n\t case 2:\n\t return \"\";\n\t }\n\t dictionary[3] = c;\n\t w = c;\n\t result.push(c);\n\t while (true) {\n\t if (data.index > length) {\n\t return \"\";\n\t }\n\t\n\t bits = 0;\n\t maxpower = Math.pow(2,numBits);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t\n\t switch (c = bits) {\n\t case 0:\n\t bits = 0;\n\t maxpower = Math.pow(2,8);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t\n\t dictionary[dictSize++] = f(bits);\n\t c = dictSize-1;\n\t enlargeIn--;\n\t break;\n\t case 1:\n\t bits = 0;\n\t maxpower = Math.pow(2,16);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t dictionary[dictSize++] = f(bits);\n\t c = dictSize-1;\n\t enlargeIn--;\n\t break;\n\t case 2:\n\t return result.join('');\n\t }\n\t\n\t if (enlargeIn == 0) {\n\t enlargeIn = Math.pow(2, numBits);\n\t numBits++;\n\t }\n\t\n\t if (dictionary[c]) {\n\t entry = dictionary[c];\n\t } else {\n\t if (c === dictSize) {\n\t entry = w + w.charAt(0);\n\t } else {\n\t return null;\n\t }\n\t }\n\t result.push(entry);\n\t\n\t // Add w+entry[0] to the dictionary.\n\t dictionary[dictSize++] = w + entry.charAt(0);\n\t enlargeIn--;\n\t\n\t w = entry;\n\t\n\t if (enlargeIn == 0) {\n\t enlargeIn = Math.pow(2, numBits);\n\t numBits++;\n\t }\n\t\n\t }\n\t }\n\t};\n\t return LZString;\n\t})();\n\t\n\tif (true) {\n\t !(__WEBPACK_AMD_DEFINE_RESULT__ = function () { return LZString; }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else if( typeof module !== 'undefined' && module != null ) {\n\t module.exports = LZString\n\t}\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(12), __webpack_require__(13), __webpack_require__(14), __webpack_require__(15));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var BlockCipher = C_lib.BlockCipher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Lookup tables\n\t\t var SBOX = [];\n\t\t var INV_SBOX = [];\n\t\t var SUB_MIX_0 = [];\n\t\t var SUB_MIX_1 = [];\n\t\t var SUB_MIX_2 = [];\n\t\t var SUB_MIX_3 = [];\n\t\t var INV_SUB_MIX_0 = [];\n\t\t var INV_SUB_MIX_1 = [];\n\t\t var INV_SUB_MIX_2 = [];\n\t\t var INV_SUB_MIX_3 = [];\n\t\n\t\t // Compute lookup tables\n\t\t (function () {\n\t\t // Compute double table\n\t\t var d = [];\n\t\t for (var i = 0; i < 256; i++) {\n\t\t if (i < 128) {\n\t\t d[i] = i << 1;\n\t\t } else {\n\t\t d[i] = (i << 1) ^ 0x11b;\n\t\t }\n\t\t }\n\t\n\t\t // Walk GF(2^8)\n\t\t var x = 0;\n\t\t var xi = 0;\n\t\t for (var i = 0; i < 256; i++) {\n\t\t // Compute sbox\n\t\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t\t SBOX[x] = sx;\n\t\t INV_SBOX[sx] = x;\n\t\n\t\t // Compute multiplication\n\t\t var x2 = d[x];\n\t\t var x4 = d[x2];\n\t\t var x8 = d[x4];\n\t\n\t\t // Compute sub bytes, mix columns tables\n\t\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t\t SUB_MIX_3[x] = t;\n\t\n\t\t // Compute inv sub bytes, inv mix columns tables\n\t\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t\t INV_SUB_MIX_3[sx] = t;\n\t\n\t\t // Compute next counter\n\t\t if (!x) {\n\t\t x = xi = 1;\n\t\t } else {\n\t\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t\t xi ^= d[d[xi]];\n\t\t }\n\t\t }\n\t\t }());\n\t\n\t\t // Precomputed Rcon lookup\n\t\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\t\n\t\t /**\n\t\t * AES block cipher algorithm.\n\t\t */\n\t\t var AES = C_algo.AES = BlockCipher.extend({\n\t\t _doReset: function () {\n\t\t // Skip reset of nRounds has been set before and key did not change\n\t\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t\t return;\n\t\t }\n\t\n\t\t // Shortcuts\n\t\t var key = this._keyPriorReset = this._key;\n\t\t var keyWords = key.words;\n\t\t var keySize = key.sigBytes / 4;\n\t\n\t\t // Compute number of rounds\n\t\t var nRounds = this._nRounds = keySize + 6;\n\t\n\t\t // Compute number of key schedule rows\n\t\t var ksRows = (nRounds + 1) * 4;\n\t\n\t\t // Compute key schedule\n\t\t var keySchedule = this._keySchedule = [];\n\t\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t\t if (ksRow < keySize) {\n\t\t keySchedule[ksRow] = keyWords[ksRow];\n\t\t } else {\n\t\t var t = keySchedule[ksRow - 1];\n\t\n\t\t if (!(ksRow % keySize)) {\n\t\t // Rot word\n\t\t t = (t << 8) | (t >>> 24);\n\t\n\t\t // Sub word\n\t\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t\n\t\t // Mix Rcon\n\t\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t\t // Sub word\n\t\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t\t }\n\t\n\t\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t\t }\n\t\t }\n\t\n\t\t // Compute inv key schedule\n\t\t var invKeySchedule = this._invKeySchedule = [];\n\t\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t\t var ksRow = ksRows - invKsRow;\n\t\n\t\t if (invKsRow % 4) {\n\t\t var t = keySchedule[ksRow];\n\t\t } else {\n\t\t var t = keySchedule[ksRow - 4];\n\t\t }\n\t\n\t\t if (invKsRow < 4 || ksRow <= 4) {\n\t\t invKeySchedule[invKsRow] = t;\n\t\t } else {\n\t\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t\t }\n\t\t }\n\t\t },\n\t\n\t\t encryptBlock: function (M, offset) {\n\t\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t\t },\n\t\n\t\t decryptBlock: function (M, offset) {\n\t\t // Swap 2nd and 4th rows\n\t\t var t = M[offset + 1];\n\t\t M[offset + 1] = M[offset + 3];\n\t\t M[offset + 3] = t;\n\t\n\t\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\t\n\t\t // Inv swap 2nd and 4th rows\n\t\t var t = M[offset + 1];\n\t\t M[offset + 1] = M[offset + 3];\n\t\t M[offset + 3] = t;\n\t\t },\n\t\n\t\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t\t // Shortcut\n\t\t var nRounds = this._nRounds;\n\t\n\t\t // Get input, add round key\n\t\t var s0 = M[offset] ^ keySchedule[0];\n\t\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t\t var s3 = M[offset + 3] ^ keySchedule[3];\n\t\n\t\t // Key schedule row counter\n\t\t var ksRow = 4;\n\t\n\t\t // Rounds\n\t\t for (var round = 1; round < nRounds; round++) {\n\t\t // Shift rows, sub bytes, mix columns, add round key\n\t\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\t\n\t\t // Update state\n\t\t s0 = t0;\n\t\t s1 = t1;\n\t\t s2 = t2;\n\t\t s3 = t3;\n\t\t }\n\t\n\t\t // Shift rows, sub bytes, add round key\n\t\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\t\n\t\t // Set output\n\t\t M[offset] = t0;\n\t\t M[offset + 1] = t1;\n\t\t M[offset + 2] = t2;\n\t\t M[offset + 3] = t3;\n\t\t },\n\t\n\t\t keySize: 256/32\n\t\t });\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.AES = BlockCipher._createHelper(AES);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.AES;\n\t\n\t}));\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var C_enc = C.enc;\n\t\n\t\t /**\n\t\t * Base64 encoding strategy.\n\t\t */\n\t\t var Base64 = C_enc.Base64 = {\n\t\t /**\n\t\t * Converts a word array to a Base64 string.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array.\n\t\t *\n\t\t * @return {string} The Base64 string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t\t */\n\t\t stringify: function (wordArray) {\n\t\t // Shortcuts\n\t\t var words = wordArray.words;\n\t\t var sigBytes = wordArray.sigBytes;\n\t\t var map = this._map;\n\t\n\t\t // Clamp excess bits\n\t\t wordArray.clamp();\n\t\n\t\t // Convert\n\t\t var base64Chars = [];\n\t\t for (var i = 0; i < sigBytes; i += 3) {\n\t\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\t\n\t\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\t\n\t\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t\t }\n\t\t }\n\t\n\t\t // Add padding\n\t\t var paddingChar = map.charAt(64);\n\t\t if (paddingChar) {\n\t\t while (base64Chars.length % 4) {\n\t\t base64Chars.push(paddingChar);\n\t\t }\n\t\t }\n\t\n\t\t return base64Chars.join('');\n\t\t },\n\t\n\t\t /**\n\t\t * Converts a Base64 string to a word array.\n\t\t *\n\t\t * @param {string} base64Str The Base64 string.\n\t\t *\n\t\t * @return {WordArray} The word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t\t */\n\t\t parse: function (base64Str) {\n\t\t // Shortcuts\n\t\t var base64StrLength = base64Str.length;\n\t\t var map = this._map;\n\t\t var reverseMap = this._reverseMap;\n\t\n\t\t if (!reverseMap) {\n\t\t reverseMap = this._reverseMap = [];\n\t\t for (var j = 0; j < map.length; j++) {\n\t\t reverseMap[map.charCodeAt(j)] = j;\n\t\t }\n\t\t }\n\t\n\t\t // Ignore padding\n\t\t var paddingChar = map.charAt(64);\n\t\t if (paddingChar) {\n\t\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t\t if (paddingIndex !== -1) {\n\t\t base64StrLength = paddingIndex;\n\t\t }\n\t\t }\n\t\n\t\t // Convert\n\t\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\t\n\t\t },\n\t\n\t\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t\t };\n\t\n\t\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t\t var words = [];\n\t\t var nBytes = 0;\n\t\t for (var i = 0; i < base64StrLength; i++) {\n\t\t if (i % 4) {\n\t\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t\t words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n\t\t nBytes++;\n\t\t }\n\t\t }\n\t\t return WordArray.create(words, nBytes);\n\t\t }\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.enc.Base64;\n\t\n\t}));\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function (Math) {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var Hasher = C_lib.Hasher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Constants table\n\t\t var T = [];\n\t\n\t\t // Compute constants\n\t\t (function () {\n\t\t for (var i = 0; i < 64; i++) {\n\t\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t\t }\n\t\t }());\n\t\n\t\t /**\n\t\t * MD5 hash algorithm.\n\t\t */\n\t\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t\t _doReset: function () {\n\t\t this._hash = new WordArray.init([\n\t\t 0x67452301, 0xefcdab89,\n\t\t 0x98badcfe, 0x10325476\n\t\t ]);\n\t\t },\n\t\n\t\t _doProcessBlock: function (M, offset) {\n\t\t // Swap endian\n\t\t for (var i = 0; i < 16; i++) {\n\t\t // Shortcuts\n\t\t var offset_i = offset + i;\n\t\t var M_offset_i = M[offset_i];\n\t\n\t\t M[offset_i] = (\n\t\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t\t );\n\t\t }\n\t\n\t\t // Shortcuts\n\t\t var H = this._hash.words;\n\t\n\t\t var M_offset_0 = M[offset + 0];\n\t\t var M_offset_1 = M[offset + 1];\n\t\t var M_offset_2 = M[offset + 2];\n\t\t var M_offset_3 = M[offset + 3];\n\t\t var M_offset_4 = M[offset + 4];\n\t\t var M_offset_5 = M[offset + 5];\n\t\t var M_offset_6 = M[offset + 6];\n\t\t var M_offset_7 = M[offset + 7];\n\t\t var M_offset_8 = M[offset + 8];\n\t\t var M_offset_9 = M[offset + 9];\n\t\t var M_offset_10 = M[offset + 10];\n\t\t var M_offset_11 = M[offset + 11];\n\t\t var M_offset_12 = M[offset + 12];\n\t\t var M_offset_13 = M[offset + 13];\n\t\t var M_offset_14 = M[offset + 14];\n\t\t var M_offset_15 = M[offset + 15];\n\t\n\t\t // Working varialbes\n\t\t var a = H[0];\n\t\t var b = H[1];\n\t\t var c = H[2];\n\t\t var d = H[3];\n\t\n\t\t // Computation\n\t\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\t\n\t\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\t\n\t\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\t\n\t\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\t\n\t\t // Intermediate hash value\n\t\t H[0] = (H[0] + a) | 0;\n\t\t H[1] = (H[1] + b) | 0;\n\t\t H[2] = (H[2] + c) | 0;\n\t\t H[3] = (H[3] + d) | 0;\n\t\t },\n\t\n\t\t _doFinalize: function () {\n\t\t // Shortcuts\n\t\t var data = this._data;\n\t\t var dataWords = data.words;\n\t\n\t\t var nBitsTotal = this._nDataBytes * 8;\n\t\t var nBitsLeft = data.sigBytes * 8;\n\t\n\t\t // Add padding\n\t\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t\n\t\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t\t var nBitsTotalL = nBitsTotal;\n\t\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t\t );\n\t\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t\t );\n\t\n\t\t data.sigBytes = (dataWords.length + 1) * 4;\n\t\n\t\t // Hash final blocks\n\t\t this._process();\n\t\n\t\t // Shortcuts\n\t\t var hash = this._hash;\n\t\t var H = hash.words;\n\t\n\t\t // Swap endian\n\t\t for (var i = 0; i < 4; i++) {\n\t\t // Shortcut\n\t\t var H_i = H[i];\n\t\n\t\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t\t }\n\t\n\t\t // Return final computed hash\n\t\t return hash;\n\t\t },\n\t\n\t\t clone: function () {\n\t\t var clone = Hasher.clone.call(this);\n\t\t clone._hash = this._hash.clone();\n\t\n\t\t return clone;\n\t\t }\n\t\t });\n\t\n\t\t function FF(a, b, c, d, x, s, t) {\n\t\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t\t return ((n << s) | (n >>> (32 - s))) + b;\n\t\t }\n\t\n\t\t function GG(a, b, c, d, x, s, t) {\n\t\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t\t return ((n << s) | (n >>> (32 - s))) + b;\n\t\t }\n\t\n\t\t function HH(a, b, c, d, x, s, t) {\n\t\t var n = a + (b ^ c ^ d) + x + t;\n\t\t return ((n << s) | (n >>> (32 - s))) + b;\n\t\t }\n\t\n\t\t function II(a, b, c, d, x, s, t) {\n\t\t var n = a + (c ^ (b | ~d)) + x + t;\n\t\t return ((n << s) | (n >>> (32 - s))) + b;\n\t\t }\n\t\n\t\t /**\n\t\t * Shortcut function to the hasher's object interface.\n\t\t *\n\t\t * @param {WordArray|string} message The message to hash.\n\t\t *\n\t\t * @return {WordArray} The hash.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hash = CryptoJS.MD5('message');\n\t\t * var hash = CryptoJS.MD5(wordArray);\n\t\t */\n\t\t C.MD5 = Hasher._createHelper(MD5);\n\t\n\t\t /**\n\t\t * Shortcut function to the HMAC's object interface.\n\t\t *\n\t\t * @param {WordArray|string} message The message to hash.\n\t\t * @param {WordArray|string} key The secret key.\n\t\t *\n\t\t * @return {WordArray} The HMAC.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t\t */\n\t\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t\t}(Math));\n\t\n\t\n\t\treturn CryptoJS.MD5;\n\t\n\t}));\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(6), __webpack_require__(7));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var Base = C_lib.Base;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var C_algo = C.algo;\n\t\t var MD5 = C_algo.MD5;\n\t\n\t\t /**\n\t\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t\t */\n\t\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t\t */\n\t\t cfg: Base.extend({\n\t\t keySize: 128/32,\n\t\t hasher: MD5,\n\t\t iterations: 1\n\t\t }),\n\t\n\t\t /**\n\t\t * Initializes a newly created key derivation function.\n\t\t *\n\t\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t\t */\n\t\t init: function (cfg) {\n\t\t this.cfg = this.cfg.extend(cfg);\n\t\t },\n\t\n\t\t /**\n\t\t * Derives a key from a password.\n\t\t *\n\t\t * @param {WordArray|string} password The password.\n\t\t * @param {WordArray|string} salt A salt.\n\t\t *\n\t\t * @return {WordArray} The derived key.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var key = kdf.compute(password, salt);\n\t\t */\n\t\t compute: function (password, salt) {\n\t\t // Shortcut\n\t\t var cfg = this.cfg;\n\t\n\t\t // Init hasher\n\t\t var hasher = cfg.hasher.create();\n\t\n\t\t // Initial values\n\t\t var derivedKey = WordArray.create();\n\t\n\t\t // Shortcuts\n\t\t var derivedKeyWords = derivedKey.words;\n\t\t var keySize = cfg.keySize;\n\t\t var iterations = cfg.iterations;\n\t\n\t\t // Generate key\n\t\t while (derivedKeyWords.length < keySize) {\n\t\t if (block) {\n\t\t hasher.update(block);\n\t\t }\n\t\t var block = hasher.update(password).finalize(salt);\n\t\t hasher.reset();\n\t\n\t\t // Iterations\n\t\t for (var i = 1; i < iterations; i++) {\n\t\t block = hasher.finalize(block);\n\t\t hasher.reset();\n\t\t }\n\t\n\t\t derivedKey.concat(block);\n\t\t }\n\t\t derivedKey.sigBytes = keySize * 4;\n\t\n\t\t return derivedKey;\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Derives a key from a password.\n\t\t *\n\t\t * @param {WordArray|string} password The password.\n\t\t * @param {WordArray|string} salt A salt.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t\t *\n\t\t * @return {WordArray} The derived key.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var key = CryptoJS.EvpKDF(password, salt);\n\t\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t\t */\n\t\t C.EvpKDF = function (password, salt, cfg) {\n\t\t return EvpKDF.create(cfg).compute(password, salt);\n\t\t };\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.EvpKDF;\n\t\n\t}));\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t/**\n\t\t * Cipher core components.\n\t\t */\n\t\tCryptoJS.lib.Cipher || (function (undefined) {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var Base = C_lib.Base;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t\t var C_enc = C.enc;\n\t\t var Utf8 = C_enc.Utf8;\n\t\t var Base64 = C_enc.Base64;\n\t\t var C_algo = C.algo;\n\t\t var EvpKDF = C_algo.EvpKDF;\n\t\n\t\t /**\n\t\t * Abstract base cipher template.\n\t\t *\n\t\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t\t */\n\t\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {WordArray} iv The IV to use for this operation.\n\t\t */\n\t\t cfg: Base.extend(),\n\t\n\t\t /**\n\t\t * Creates this cipher in encryption mode.\n\t\t *\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {Cipher} A cipher instance.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t\t */\n\t\t createEncryptor: function (key, cfg) {\n\t\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t\t },\n\t\n\t\t /**\n\t\t * Creates this cipher in decryption mode.\n\t\t *\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {Cipher} A cipher instance.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t\t */\n\t\t createDecryptor: function (key, cfg) {\n\t\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t\t },\n\t\n\t\t /**\n\t\t * Initializes a newly created cipher.\n\t\t *\n\t\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t\t */\n\t\t init: function (xformMode, key, cfg) {\n\t\t // Apply config defaults\n\t\t this.cfg = this.cfg.extend(cfg);\n\t\n\t\t // Store transform mode and key\n\t\t this._xformMode = xformMode;\n\t\t this._key = key;\n\t\n\t\t // Set initial values\n\t\t this.reset();\n\t\t },\n\t\n\t\t /**\n\t\t * Resets this cipher to its initial state.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * cipher.reset();\n\t\t */\n\t\t reset: function () {\n\t\t // Reset data buffer\n\t\t BufferedBlockAlgorithm.reset.call(this);\n\t\n\t\t // Perform concrete-cipher logic\n\t\t this._doReset();\n\t\t },\n\t\n\t\t /**\n\t\t * Adds data to be encrypted or decrypted.\n\t\t *\n\t\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t\t *\n\t\t * @return {WordArray} The data after processing.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var encrypted = cipher.process('data');\n\t\t * var encrypted = cipher.process(wordArray);\n\t\t */\n\t\t process: function (dataUpdate) {\n\t\t // Append\n\t\t this._append(dataUpdate);\n\t\n\t\t // Process available blocks\n\t\t return this._process();\n\t\t },\n\t\n\t\t /**\n\t\t * Finalizes the encryption or decryption process.\n\t\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t\t *\n\t\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t\t *\n\t\t * @return {WordArray} The data after final processing.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var encrypted = cipher.finalize();\n\t\t * var encrypted = cipher.finalize('data');\n\t\t * var encrypted = cipher.finalize(wordArray);\n\t\t */\n\t\t finalize: function (dataUpdate) {\n\t\t // Final data update\n\t\t if (dataUpdate) {\n\t\t this._append(dataUpdate);\n\t\t }\n\t\n\t\t // Perform concrete-cipher logic\n\t\t var finalProcessedData = this._doFinalize();\n\t\n\t\t return finalProcessedData;\n\t\t },\n\t\n\t\t keySize: 128/32,\n\t\n\t\t ivSize: 128/32,\n\t\n\t\t _ENC_XFORM_MODE: 1,\n\t\n\t\t _DEC_XFORM_MODE: 2,\n\t\n\t\t /**\n\t\t * Creates shortcut functions to a cipher's object interface.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher to create a helper for.\n\t\t *\n\t\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t\t */\n\t\t _createHelper: (function () {\n\t\t function selectCipherStrategy(key) {\n\t\t if (typeof key == 'string') {\n\t\t return PasswordBasedCipher;\n\t\t } else {\n\t\t return SerializableCipher;\n\t\t }\n\t\t }\n\t\n\t\t return function (cipher) {\n\t\t return {\n\t\t encrypt: function (message, key, cfg) {\n\t\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t\t },\n\t\n\t\t decrypt: function (ciphertext, key, cfg) {\n\t\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t\t }\n\t\t };\n\t\t };\n\t\t }())\n\t\t });\n\t\n\t\t /**\n\t\t * Abstract base stream cipher template.\n\t\t *\n\t\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t\t */\n\t\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t\t _doFinalize: function () {\n\t\t // Process partial blocks\n\t\t var finalProcessedBlocks = this._process(!!'flush');\n\t\n\t\t return finalProcessedBlocks;\n\t\t },\n\t\n\t\t blockSize: 1\n\t\t });\n\t\n\t\t /**\n\t\t * Mode namespace.\n\t\t */\n\t\t var C_mode = C.mode = {};\n\t\n\t\t /**\n\t\t * Abstract base block cipher mode template.\n\t\t */\n\t\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t\t /**\n\t\t * Creates this mode for encryption.\n\t\t *\n\t\t * @param {Cipher} cipher A block cipher instance.\n\t\t * @param {Array} iv The IV words.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t\t */\n\t\t createEncryptor: function (cipher, iv) {\n\t\t return this.Encryptor.create(cipher, iv);\n\t\t },\n\t\n\t\t /**\n\t\t * Creates this mode for decryption.\n\t\t *\n\t\t * @param {Cipher} cipher A block cipher instance.\n\t\t * @param {Array} iv The IV words.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t\t */\n\t\t createDecryptor: function (cipher, iv) {\n\t\t return this.Decryptor.create(cipher, iv);\n\t\t },\n\t\n\t\t /**\n\t\t * Initializes a newly created mode.\n\t\t *\n\t\t * @param {Cipher} cipher A block cipher instance.\n\t\t * @param {Array} iv The IV words.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t\t */\n\t\t init: function (cipher, iv) {\n\t\t this._cipher = cipher;\n\t\t this._iv = iv;\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Cipher Block Chaining mode.\n\t\t */\n\t\t var CBC = C_mode.CBC = (function () {\n\t\t /**\n\t\t * Abstract base CBC mode.\n\t\t */\n\t\t var CBC = BlockCipherMode.extend();\n\t\n\t\t /**\n\t\t * CBC encryptor.\n\t\t */\n\t\t CBC.Encryptor = CBC.extend({\n\t\t /**\n\t\t * Processes the data block at offset.\n\t\t *\n\t\t * @param {Array} words The data words to operate on.\n\t\t * @param {number} offset The offset where the block starts.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * mode.processBlock(data.words, offset);\n\t\t */\n\t\t processBlock: function (words, offset) {\n\t\t // Shortcuts\n\t\t var cipher = this._cipher;\n\t\t var blockSize = cipher.blockSize;\n\t\n\t\t // XOR and encrypt\n\t\t xorBlock.call(this, words, offset, blockSize);\n\t\t cipher.encryptBlock(words, offset);\n\t\n\t\t // Remember this block to use with next block\n\t\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * CBC decryptor.\n\t\t */\n\t\t CBC.Decryptor = CBC.extend({\n\t\t /**\n\t\t * Processes the data block at offset.\n\t\t *\n\t\t * @param {Array} words The data words to operate on.\n\t\t * @param {number} offset The offset where the block starts.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * mode.processBlock(data.words, offset);\n\t\t */\n\t\t processBlock: function (words, offset) {\n\t\t // Shortcuts\n\t\t var cipher = this._cipher;\n\t\t var blockSize = cipher.blockSize;\n\t\n\t\t // Remember this block to use with next block\n\t\t var thisBlock = words.slice(offset, offset + blockSize);\n\t\n\t\t // Decrypt and XOR\n\t\t cipher.decryptBlock(words, offset);\n\t\t xorBlock.call(this, words, offset, blockSize);\n\t\n\t\t // This block becomes the previous block\n\t\t this._prevBlock = thisBlock;\n\t\t }\n\t\t });\n\t\n\t\t function xorBlock(words, offset, blockSize) {\n\t\t // Shortcut\n\t\t var iv = this._iv;\n\t\n\t\t // Choose mixing block\n\t\t if (iv) {\n\t\t var block = iv;\n\t\n\t\t // Remove IV for subsequent blocks\n\t\t this._iv = undefined;\n\t\t } else {\n\t\t var block = this._prevBlock;\n\t\t }\n\t\n\t\t // XOR blocks\n\t\t for (var i = 0; i < blockSize; i++) {\n\t\t words[offset + i] ^= block[i];\n\t\t }\n\t\t }\n\t\n\t\t return CBC;\n\t\t }());\n\t\n\t\t /**\n\t\t * Padding namespace.\n\t\t */\n\t\t var C_pad = C.pad = {};\n\t\n\t\t /**\n\t\t * PKCS #5/7 padding strategy.\n\t\t */\n\t\t var Pkcs7 = C_pad.Pkcs7 = {\n\t\t /**\n\t\t * Pads data using the algorithm defined in PKCS #5/7.\n\t\t *\n\t\t * @param {WordArray} data The data to pad.\n\t\t * @param {number} blockSize The multiple that the data should be padded to.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t\t */\n\t\t pad: function (data, blockSize) {\n\t\t // Shortcut\n\t\t var blockSizeBytes = blockSize * 4;\n\t\n\t\t // Count padding bytes\n\t\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\t\n\t\t // Create padding word\n\t\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\t\n\t\t // Create padding\n\t\t var paddingWords = [];\n\t\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t\t paddingWords.push(paddingWord);\n\t\t }\n\t\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\t\n\t\t // Add padding\n\t\t data.concat(padding);\n\t\t },\n\t\n\t\t /**\n\t\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t\t *\n\t\t * @param {WordArray} data The data to unpad.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t\t */\n\t\t unpad: function (data) {\n\t\t // Get number of padding bytes from last byte\n\t\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\t\n\t\t // Remove padding\n\t\t data.sigBytes -= nPaddingBytes;\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * Abstract base block cipher template.\n\t\t *\n\t\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t\t */\n\t\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {Mode} mode The block mode to use. Default: CBC\n\t\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t\t */\n\t\t cfg: Cipher.cfg.extend({\n\t\t mode: CBC,\n\t\t padding: Pkcs7\n\t\t }),\n\t\n\t\t reset: function () {\n\t\t // Reset cipher\n\t\t Cipher.reset.call(this);\n\t\n\t\t // Shortcuts\n\t\t var cfg = this.cfg;\n\t\t var iv = cfg.iv;\n\t\t var mode = cfg.mode;\n\t\n\t\t // Reset block mode\n\t\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t\t var modeCreator = mode.createEncryptor;\n\t\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t\t var modeCreator = mode.createDecryptor;\n\t\n\t\t // Keep at least one block in the buffer for unpadding\n\t\t this._minBufferSize = 1;\n\t\t }\n\t\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t\t },\n\t\n\t\t _doProcessBlock: function (words, offset) {\n\t\t this._mode.processBlock(words, offset);\n\t\t },\n\t\n\t\t _doFinalize: function () {\n\t\t // Shortcut\n\t\t var padding = this.cfg.padding;\n\t\n\t\t // Finalize\n\t\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t\t // Pad data\n\t\t padding.pad(this._data, this.blockSize);\n\t\n\t\t // Process final blocks\n\t\t var finalProcessedBlocks = this._process(!!'flush');\n\t\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t\t // Process final blocks\n\t\t var finalProcessedBlocks = this._process(!!'flush');\n\t\n\t\t // Unpad data\n\t\t padding.unpad(finalProcessedBlocks);\n\t\t }\n\t\n\t\t return finalProcessedBlocks;\n\t\t },\n\t\n\t\t blockSize: 128/32\n\t\t });\n\t\n\t\t /**\n\t\t * A collection of cipher parameters.\n\t\t *\n\t\t * @property {WordArray} ciphertext The raw ciphertext.\n\t\t * @property {WordArray} key The key to this ciphertext.\n\t\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t\t * @property {WordArray} salt The salt used with a key derivation function.\n\t\t * @property {Cipher} algorithm The cipher algorithm.\n\t\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t\t * @property {number} blockSize The block size of the cipher.\n\t\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t\t */\n\t\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t\t /**\n\t\t * Initializes a newly created cipher params object.\n\t\t *\n\t\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t\t * ciphertext: ciphertextWordArray,\n\t\t * key: keyWordArray,\n\t\t * iv: ivWordArray,\n\t\t * salt: saltWordArray,\n\t\t * algorithm: CryptoJS.algo.AES,\n\t\t * mode: CryptoJS.mode.CBC,\n\t\t * padding: CryptoJS.pad.PKCS7,\n\t\t * blockSize: 4,\n\t\t * formatter: CryptoJS.format.OpenSSL\n\t\t * });\n\t\t */\n\t\t init: function (cipherParams) {\n\t\t this.mixIn(cipherParams);\n\t\t },\n\t\n\t\t /**\n\t\t * Converts this cipher params object to a string.\n\t\t *\n\t\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t\t *\n\t\t * @return {string} The stringified cipher params.\n\t\t *\n\t\t * @throws Error If neither the formatter nor the default formatter is set.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var string = cipherParams + '';\n\t\t * var string = cipherParams.toString();\n\t\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t\t */\n\t\t toString: function (formatter) {\n\t\t return (formatter || this.formatter).stringify(this);\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Format namespace.\n\t\t */\n\t\t var C_format = C.format = {};\n\t\n\t\t /**\n\t\t * OpenSSL formatting strategy.\n\t\t */\n\t\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t\t /**\n\t\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t\t *\n\t\t * @param {CipherParams} cipherParams The cipher params object.\n\t\t *\n\t\t * @return {string} The OpenSSL-compatible string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t\t */\n\t\t stringify: function (cipherParams) {\n\t\t // Shortcuts\n\t\t var ciphertext = cipherParams.ciphertext;\n\t\t var salt = cipherParams.salt;\n\t\n\t\t // Format\n\t\t if (salt) {\n\t\t var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t\t } else {\n\t\t var wordArray = ciphertext;\n\t\t }\n\t\n\t\t return wordArray.toString(Base64);\n\t\t },\n\t\n\t\t /**\n\t\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t\t *\n\t\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t\t *\n\t\t * @return {CipherParams} The cipher params object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t\t */\n\t\t parse: function (openSSLStr) {\n\t\t // Parse base64\n\t\t var ciphertext = Base64.parse(openSSLStr);\n\t\n\t\t // Shortcut\n\t\t var ciphertextWords = ciphertext.words;\n\t\n\t\t // Test for salt\n\t\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t\t // Extract salt\n\t\t var salt = WordArray.create(ciphertextWords.slice(2, 4));\n\t\n\t\t // Remove salt from ciphertext\n\t\t ciphertextWords.splice(0, 4);\n\t\t ciphertext.sigBytes -= 16;\n\t\t }\n\t\n\t\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t\t */\n\t\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t\t */\n\t\t cfg: Base.extend({\n\t\t format: OpenSSLFormatter\n\t\t }),\n\t\n\t\t /**\n\t\t * Encrypts a message.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher algorithm to use.\n\t\t * @param {WordArray|string} message The message to encrypt.\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {CipherParams} A cipher params object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t\t */\n\t\t encrypt: function (cipher, message, key, cfg) {\n\t\t // Apply config defaults\n\t\t cfg = this.cfg.extend(cfg);\n\t\n\t\t // Encrypt\n\t\t var encryptor = cipher.createEncryptor(key, cfg);\n\t\t var ciphertext = encryptor.finalize(message);\n\t\n\t\t // Shortcut\n\t\t var cipherCfg = encryptor.cfg;\n\t\n\t\t // Create and return serializable cipher params\n\t\t return CipherParams.create({\n\t\t ciphertext: ciphertext,\n\t\t key: key,\n\t\t iv: cipherCfg.iv,\n\t\t algorithm: cipher,\n\t\t mode: cipherCfg.mode,\n\t\t padding: cipherCfg.padding,\n\t\t blockSize: cipher.blockSize,\n\t\t formatter: cfg.format\n\t\t });\n\t\t },\n\t\n\t\t /**\n\t\t * Decrypts serialized ciphertext.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher algorithm to use.\n\t\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {WordArray} The plaintext.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t\t */\n\t\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t\t // Apply config defaults\n\t\t cfg = this.cfg.extend(cfg);\n\t\n\t\t // Convert string to CipherParams\n\t\t ciphertext = this._parse(ciphertext, cfg.format);\n\t\n\t\t // Decrypt\n\t\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\t\n\t\t return plaintext;\n\t\t },\n\t\n\t\t /**\n\t\t * Converts serialized ciphertext to CipherParams,\n\t\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t\t *\n\t\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t\t *\n\t\t * @return {CipherParams} The unserialized ciphertext.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t\t */\n\t\t _parse: function (ciphertext, format) {\n\t\t if (typeof ciphertext == 'string') {\n\t\t return format.parse(ciphertext, this);\n\t\t } else {\n\t\t return ciphertext;\n\t\t }\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Key derivation function namespace.\n\t\t */\n\t\t var C_kdf = C.kdf = {};\n\t\n\t\t /**\n\t\t * OpenSSL key derivation function.\n\t\t */\n\t\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t\t /**\n\t\t * Derives a key and IV from a password.\n\t\t *\n\t\t * @param {string} password The password to derive from.\n\t\t * @param {number} keySize The size in words of the key to generate.\n\t\t * @param {number} ivSize The size in words of the IV to generate.\n\t\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t\t *\n\t\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t\t */\n\t\t execute: function (password, keySize, ivSize, salt) {\n\t\t // Generate random salt\n\t\t if (!salt) {\n\t\t salt = WordArray.random(64/8);\n\t\t }\n\t\n\t\t // Derive key and IV\n\t\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\t\n\t\t // Separate key and IV\n\t\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t\t key.sigBytes = keySize * 4;\n\t\n\t\t // Return params\n\t\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * A serializable cipher wrapper that derives the key from a password,\n\t\t * and returns ciphertext as a serializable cipher params object.\n\t\t */\n\t\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t\t */\n\t\t cfg: SerializableCipher.cfg.extend({\n\t\t kdf: OpenSSLKdf\n\t\t }),\n\t\n\t\t /**\n\t\t * Encrypts a message using a password.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher algorithm to use.\n\t\t * @param {WordArray|string} message The message to encrypt.\n\t\t * @param {string} password The password.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {CipherParams} A cipher params object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t\t */\n\t\t encrypt: function (cipher, message, password, cfg) {\n\t\t // Apply config defaults\n\t\t cfg = this.cfg.extend(cfg);\n\t\n\t\t // Derive key and other params\n\t\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\t\n\t\t // Add IV to config\n\t\t cfg.iv = derivedParams.iv;\n\t\n\t\t // Encrypt\n\t\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\t\n\t\t // Mix in derived params\n\t\t ciphertext.mixIn(derivedParams);\n\t\n\t\t return ciphertext;\n\t\t },\n\t\n\t\t /**\n\t\t * Decrypts serialized ciphertext using a password.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher algorithm to use.\n\t\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t\t * @param {string} password The password.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {WordArray} The plaintext.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t\t */\n\t\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t\t // Apply config defaults\n\t\t cfg = this.cfg.extend(cfg);\n\t\n\t\t // Convert string to CipherParams\n\t\t ciphertext = this._parse(ciphertext, cfg.format);\n\t\n\t\t // Derive key and other params\n\t\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\t\n\t\t // Add IV to config\n\t\t cfg.iv = derivedParams.iv;\n\t\n\t\t // Decrypt\n\t\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\t\n\t\t return plaintext;\n\t\t }\n\t\t });\n\t\t}());\n\t\n\t\n\t}));\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(12), __webpack_require__(13), __webpack_require__(14), __webpack_require__(15));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var BlockCipher = C_lib.BlockCipher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Permuted Choice 1 constants\n\t\t var PC1 = [\n\t\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t\t 29, 21, 13, 5, 28, 20, 12, 4\n\t\t ];\n\t\n\t\t // Permuted Choice 2 constants\n\t\t var PC2 = [\n\t\t 14, 17, 11, 24, 1, 5,\n\t\t 3, 28, 15, 6, 21, 10,\n\t\t 23, 19, 12, 4, 26, 8,\n\t\t 16, 7, 27, 20, 13, 2,\n\t\t 41, 52, 31, 37, 47, 55,\n\t\t 30, 40, 51, 45, 33, 48,\n\t\t 44, 49, 39, 56, 34, 53,\n\t\t 46, 42, 50, 36, 29, 32\n\t\t ];\n\t\n\t\t // Cumulative bit shift constants\n\t\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\t\n\t\t // SBOXes and round permutation constants\n\t\t var SBOX_P = [\n\t\t {\n\t\t 0x0: 0x808200,\n\t\t 0x10000000: 0x8000,\n\t\t 0x20000000: 0x808002,\n\t\t 0x30000000: 0x2,\n\t\t 0x40000000: 0x200,\n\t\t 0x50000000: 0x808202,\n\t\t 0x60000000: 0x800202,\n\t\t 0x70000000: 0x800000,\n\t\t 0x80000000: 0x202,\n\t\t 0x90000000: 0x800200,\n\t\t 0xa0000000: 0x8200,\n\t\t 0xb0000000: 0x808000,\n\t\t 0xc0000000: 0x8002,\n\t\t 0xd0000000: 0x800002,\n\t\t 0xe0000000: 0x0,\n\t\t 0xf0000000: 0x8202,\n\t\t 0x8000000: 0x0,\n\t\t 0x18000000: 0x808202,\n\t\t 0x28000000: 0x8202,\n\t\t 0x38000000: 0x8000,\n\t\t 0x48000000: 0x808200,\n\t\t 0x58000000: 0x200,\n\t\t 0x68000000: 0x808002,\n\t\t 0x78000000: 0x2,\n\t\t 0x88000000: 0x800200,\n\t\t 0x98000000: 0x8200,\n\t\t 0xa8000000: 0x808000,\n\t\t 0xb8000000: 0x800202,\n\t\t 0xc8000000: 0x800002,\n\t\t 0xd8000000: 0x8002,\n\t\t 0xe8000000: 0x202,\n\t\t 0xf8000000: 0x800000,\n\t\t 0x1: 0x8000,\n\t\t 0x10000001: 0x2,\n\t\t 0x20000001: 0x808200,\n\t\t 0x30000001: 0x800000,\n\t\t 0x40000001: 0x808002,\n\t\t 0x50000001: 0x8200,\n\t\t 0x60000001: 0x200,\n\t\t 0x70000001: 0x800202,\n\t\t 0x80000001: 0x808202,\n\t\t 0x90000001: 0x808000,\n\t\t 0xa0000001: 0x800002,\n\t\t 0xb0000001: 0x8202,\n\t\t 0xc0000001: 0x202,\n\t\t 0xd0000001: 0x800200,\n\t\t 0xe0000001: 0x8002,\n\t\t 0xf0000001: 0x0,\n\t\t 0x8000001: 0x808202,\n\t\t 0x18000001: 0x808000,\n\t\t 0x28000001: 0x800000,\n\t\t 0x38000001: 0x200,\n\t\t 0x48000001: 0x8000,\n\t\t 0x58000001: 0x800002,\n\t\t 0x68000001: 0x2,\n\t\t 0x78000001: 0x8202,\n\t\t 0x88000001: 0x8002,\n\t\t 0x98000001: 0x800202,\n\t\t 0xa8000001: 0x202,\n\t\t 0xb8000001: 0x808200,\n\t\t 0xc8000001: 0x800200,\n\t\t 0xd8000001: 0x0,\n\t\t 0xe8000001: 0x8200,\n\t\t 0xf8000001: 0x808002\n\t\t },\n\t\t {\n\t\t 0x0: 0x40084010,\n\t\t 0x1000000: 0x4000,\n\t\t 0x2000000: 0x80000,\n\t\t 0x3000000: 0x40080010,\n\t\t 0x4000000: 0x40000010,\n\t\t 0x5000000: 0x40084000,\n\t\t 0x6000000: 0x40004000,\n\t\t 0x7000000: 0x10,\n\t\t 0x8000000: 0x84000,\n\t\t 0x9000000: 0x40004010,\n\t\t 0xa000000: 0x40000000,\n\t\t 0xb000000: 0x84010,\n\t\t 0xc000000: 0x80010,\n\t\t 0xd000000: 0x0,\n\t\t 0xe000000: 0x4010,\n\t\t 0xf000000: 0x40080000,\n\t\t 0x800000: 0x40004000,\n\t\t 0x1800000: 0x84010,\n\t\t 0x2800000: 0x10,\n\t\t 0x3800000: 0x40004010,\n\t\t 0x4800000: 0x40084010,\n\t\t 0x5800000: 0x40000000,\n\t\t 0x6800000: 0x80000,\n\t\t 0x7800000: 0x40080010,\n\t\t 0x8800000: 0x80010,\n\t\t 0x9800000: 0x0,\n\t\t 0xa800000: 0x4000,\n\t\t 0xb800000: 0x40080000,\n\t\t 0xc800000: 0x40000010,\n\t\t 0xd800000: 0x84000,\n\t\t 0xe800000: 0x40084000,\n\t\t 0xf800000: 0x4010,\n\t\t 0x10000000: 0x0,\n\t\t 0x11000000: 0x40080010,\n\t\t 0x12000000: 0x40004010,\n\t\t 0x13000000: 0x40084000,\n\t\t 0x14000000: 0x40080000,\n\t\t 0x15000000: 0x10,\n\t\t 0x16000000: 0x84010,\n\t\t 0x17000000: 0x4000,\n\t\t 0x18000000: 0x4010,\n\t\t 0x19000000: 0x80000,\n\t\t 0x1a000000: 0x80010,\n\t\t 0x1b000000: 0x40000010,\n\t\t 0x1c000000: 0x84000,\n\t\t 0x1d000000: 0x40004000,\n\t\t 0x1e000000: 0x40000000,\n\t\t 0x1f000000: 0x40084010,\n\t\t 0x10800000: 0x84010,\n\t\t 0x11800000: 0x80000,\n\t\t 0x12800000: 0x40080000,\n\t\t 0x13800000: 0x4000,\n\t\t 0x14800000: 0x40004000,\n\t\t 0x15800000: 0x40084010,\n\t\t 0x16800000: 0x10,\n\t\t 0x17800000: 0x40000000,\n\t\t 0x18800000: 0x40084000,\n\t\t 0x19800000: 0x40000010,\n\t\t 0x1a800000: 0x40004010,\n\t\t 0x1b800000: 0x80010,\n\t\t 0x1c800000: 0x0,\n\t\t 0x1d800000: 0x4010,\n\t\t 0x1e800000: 0x40080010,\n\t\t 0x1f800000: 0x84000\n\t\t },\n\t\t {\n\t\t 0x0: 0x104,\n\t\t 0x100000: 0x0,\n\t\t 0x200000: 0x4000100,\n\t\t 0x300000: 0x10104,\n\t\t 0x400000: 0x10004,\n\t\t 0x500000: 0x4000004,\n\t\t 0x600000: 0x4010104,\n\t\t 0x700000: 0x4010000,\n\t\t 0x800000: 0x4000000,\n\t\t 0x900000: 0x4010100,\n\t\t 0xa00000: 0x10100,\n\t\t 0xb00000: 0x4010004,\n\t\t 0xc00000: 0x4000104,\n\t\t 0xd00000: 0x10000,\n\t\t 0xe00000: 0x4,\n\t\t 0xf00000: 0x100,\n\t\t 0x80000: 0x4010100,\n\t\t 0x180000: 0x4010004,\n\t\t 0x280000: 0x0,\n\t\t 0x380000: 0x4000100,\n\t\t 0x480000: 0x4000004,\n\t\t 0x580000: 0x10000,\n\t\t 0x680000: 0x10004,\n\t\t 0x780000: 0x104,\n\t\t 0x880000: 0x4,\n\t\t 0x980000: 0x100,\n\t\t 0xa80000: 0x4010000,\n\t\t 0xb80000: 0x10104,\n\t\t 0xc80000: 0x10100,\n\t\t 0xd80000: 0x4000104,\n\t\t 0xe80000: 0x4010104,\n\t\t 0xf80000: 0x4000000,\n\t\t 0x1000000: 0x4010100,\n\t\t 0x1100000: 0x10004,\n\t\t 0x1200000: 0x10000,\n\t\t 0x1300000: 0x4000100,\n\t\t 0x1400000: 0x100,\n\t\t 0x1500000: 0x4010104,\n\t\t 0x1600000: 0x4000004,\n\t\t 0x1700000: 0x0,\n\t\t 0x1800000: 0x4000104,\n\t\t 0x1900000: 0x4000000,\n\t\t 0x1a00000: 0x4,\n\t\t 0x1b00000: 0x10100,\n\t\t 0x1c00000: 0x4010000,\n\t\t 0x1d00000: 0x104,\n\t\t 0x1e00000: 0x10104,\n\t\t 0x1f00000: 0x4010004,\n\t\t 0x1080000: 0x4000000,\n\t\t 0x1180000: 0x104,\n\t\t 0x1280000: 0x4010100,\n\t\t 0x1380000: 0x0,\n\t\t 0x1480000: 0x10004,\n\t\t 0x1580000: 0x4000100,\n\t\t 0x1680000: 0x100,\n\t\t 0x1780000: 0x4010004,\n\t\t 0x1880000: 0x10000,\n\t\t 0x1980000: 0x4010104,\n\t\t 0x1a80000: 0x10104,\n\t\t 0x1b80000: 0x4000004,\n\t\t 0x1c80000: 0x4000104,\n\t\t 0x1d80000: 0x4010000,\n\t\t 0x1e80000: 0x4,\n\t\t 0x1f80000: 0x10100\n\t\t },\n\t\t {\n\t\t 0x0: 0x80401000,\n\t\t 0x10000: 0x80001040,\n\t\t 0x20000: 0x401040,\n\t\t 0x30000: 0x80400000,\n\t\t 0x40000: 0x0,\n\t\t 0x50000: 0x401000,\n\t\t 0x60000: 0x80000040,\n\t\t 0x70000: 0x400040,\n\t\t 0x80000: 0x80000000,\n\t\t 0x90000: 0x400000,\n\t\t 0xa0000: 0x40,\n\t\t 0xb0000: 0x80001000,\n\t\t 0xc0000: 0x80400040,\n\t\t 0xd0000: 0x1040,\n\t\t 0xe0000: 0x1000,\n\t\t 0xf0000: 0x80401040,\n\t\t 0x8000: 0x80001040,\n\t\t 0x18000: 0x40,\n\t\t 0x28000: 0x80400040,\n\t\t 0x38000: 0x80001000,\n\t\t 0x48000: 0x401000,\n\t\t 0x58000: 0x80401040,\n\t\t 0x68000: 0x0,\n\t\t 0x78000: 0x80400000,\n\t\t 0x88000: 0x1000,\n\t\t 0x98000: 0x80401000,\n\t\t 0xa8000: 0x400000,\n\t\t 0xb8000: 0x1040,\n\t\t 0xc8000: 0x80000000,\n\t\t 0xd8000: 0x400040,\n\t\t 0xe8000: 0x401040,\n\t\t 0xf8000: 0x80000040,\n\t\t 0x100000: 0x400040,\n\t\t 0x110000: 0x401000,\n\t\t 0x120000: 0x80000040,\n\t\t 0x130000: 0x0,\n\t\t 0x140000: 0x1040,\n\t\t 0x150000: 0x80400040,\n\t\t 0x160000: 0x80401000,\n\t\t 0x170000: 0x80001040,\n\t\t 0x180000: 0x80401040,\n\t\t 0x190000: 0x80000000,\n\t\t 0x1a0000: 0x80400000,\n\t\t 0x1b0000: 0x401040,\n\t\t 0x1c0000: 0x80001000,\n\t\t 0x1d0000: 0x400000,\n\t\t 0x1e0000: 0x40,\n\t\t 0x1f0000: 0x1000,\n\t\t 0x108000: 0x80400000,\n\t\t 0x118000: 0x80401040,\n\t\t 0x128000: 0x0,\n\t\t 0x138000: 0x401000,\n\t\t 0x148000: 0x400040,\n\t\t 0x158000: 0x80000000,\n\t\t 0x168000: 0x80001040,\n\t\t 0x178000: 0x40,\n\t\t 0x188000: 0x80000040,\n\t\t 0x198000: 0x1000,\n\t\t 0x1a8000: 0x80001000,\n\t\t 0x1b8000: 0x80400040,\n\t\t 0x1c8000: 0x1040,\n\t\t 0x1d8000: 0x80401000,\n\t\t 0x1e8000: 0x400000,\n\t\t 0x1f8000: 0x401040\n\t\t },\n\t\t {\n\t\t 0x0: 0x80,\n\t\t 0x1000: 0x1040000,\n\t\t 0x2000: 0x40000,\n\t\t 0x3000: 0x20000000,\n\t\t 0x4000: 0x20040080,\n\t\t 0x5000: 0x1000080,\n\t\t 0x6000: 0x21000080,\n\t\t 0x7000: 0x40080,\n\t\t 0x8000: 0x1000000,\n\t\t 0x9000: 0x20040000,\n\t\t 0xa000: 0x20000080,\n\t\t 0xb000: 0x21040080,\n\t\t 0xc000: 0x21040000,\n\t\t 0xd000: 0x0,\n\t\t 0xe000: 0x1040080,\n\t\t 0xf000: 0x21000000,\n\t\t 0x800: 0x1040080,\n\t\t 0x1800: 0x21000080,\n\t\t 0x2800: 0x80,\n\t\t 0x3800: 0x1040000,\n\t\t 0x4800: 0x40000,\n\t\t 0x5800: 0x20040080,\n\t\t 0x6800: 0x21040000,\n\t\t 0x7800: 0x20000000,\n\t\t 0x8800: 0x20040000,\n\t\t 0x9800: 0x0,\n\t\t 0xa800: 0x21040080,\n\t\t 0xb800: 0x1000080,\n\t\t 0xc800: 0x20000080,\n\t\t 0xd800: 0x21000000,\n\t\t 0xe800: 0x1000000,\n\t\t 0xf800: 0x40080,\n\t\t 0x10000: 0x40000,\n\t\t 0x11000: 0x80,\n\t\t 0x12000: 0x20000000,\n\t\t 0x13000: 0x21000080,\n\t\t 0x14000: 0x1000080,\n\t\t 0x15000: 0x21040000,\n\t\t 0x16000: 0x20040080,\n\t\t 0x17000: 0x1000000,\n\t\t 0x18000: 0x21040080,\n\t\t 0x19000: 0x21000000,\n\t\t 0x1a000: 0x1040000,\n\t\t 0x1b000: 0x20040000,\n\t\t 0x1c000: 0x40080,\n\t\t 0x1d000: 0x20000080,\n\t\t 0x1e000: 0x0,\n\t\t 0x1f000: 0x1040080,\n\t\t 0x10800: 0x21000080,\n\t\t 0x11800: 0x1000000,\n\t\t 0x12800: 0x1040000,\n\t\t 0x13800: 0x20040080,\n\t\t 0x14800: 0x20000000,\n\t\t 0x15800: 0x1040080,\n\t\t 0x16800: 0x80,\n\t\t 0x17800: 0x21040000,\n\t\t 0x18800: 0x40080,\n\t\t 0x19800: 0x21040080,\n\t\t 0x1a800: 0x0,\n\t\t 0x1b800: 0x21000000,\n\t\t 0x1c800: 0x1000080,\n\t\t 0x1d800: 0x40000,\n\t\t 0x1e800: 0x20040000,\n\t\t 0x1f800: 0x20000080\n\t\t },\n\t\t {\n\t\t 0x0: 0x10000008,\n\t\t 0x100: 0x2000,\n\t\t 0x200: 0x10200000,\n\t\t 0x300: 0x10202008,\n\t\t 0x400: 0x10002000,\n\t\t 0x500: 0x200000,\n\t\t 0x600: 0x200008,\n\t\t 0x700: 0x10000000,\n\t\t 0x800: 0x0,\n\t\t 0x900: 0x10002008,\n\t\t 0xa00: 0x202000,\n\t\t 0xb00: 0x8,\n\t\t 0xc00: 0x10200008,\n\t\t 0xd00: 0x202008,\n\t\t 0xe00: 0x2008,\n\t\t 0xf00: 0x10202000,\n\t\t 0x80: 0x10200000,\n\t\t 0x180: 0x10202008,\n\t\t 0x280: 0x8,\n\t\t 0x380: 0x200000,\n\t\t 0x480: 0x202008,\n\t\t 0x580: 0x10000008,\n\t\t 0x680: 0x10002000,\n\t\t 0x780: 0x2008,\n\t\t 0x880: 0x200008,\n\t\t 0x980: 0x2000,\n\t\t 0xa80: 0x10002008,\n\t\t 0xb80: 0x10200008,\n\t\t 0xc80: 0x0,\n\t\t 0xd80: 0x10202000,\n\t\t 0xe80: 0x202000,\n\t\t 0xf80: 0x10000000,\n\t\t 0x1000: 0x10002000,\n\t\t 0x1100: 0x10200008,\n\t\t 0x1200: 0x10202008,\n\t\t 0x1300: 0x2008,\n\t\t 0x1400: 0x200000,\n\t\t 0x1500: 0x10000000,\n\t\t 0x1600: 0x10000008,\n\t\t 0x1700: 0x202000,\n\t\t 0x1800: 0x202008,\n\t\t 0x1900: 0x0,\n\t\t 0x1a00: 0x8,\n\t\t 0x1b00: 0x10200000,\n\t\t 0x1c00: 0x2000,\n\t\t 0x1d00: 0x10002008,\n\t\t 0x1e00: 0x10202000,\n\t\t 0x1f00: 0x200008,\n\t\t 0x1080: 0x8,\n\t\t 0x1180: 0x202000,\n\t\t 0x1280: 0x200000,\n\t\t 0x1380: 0x10000008,\n\t\t 0x1480: 0x10002000,\n\t\t 0x1580: 0x2008,\n\t\t 0x1680: 0x10202008,\n\t\t 0x1780: 0x10200000,\n\t\t 0x1880: 0x10202000,\n\t\t 0x1980: 0x10200008,\n\t\t 0x1a80: 0x2000,\n\t\t 0x1b80: 0x202008,\n\t\t 0x1c80: 0x200008,\n\t\t 0x1d80: 0x0,\n\t\t 0x1e80: 0x10000000,\n\t\t 0x1f80: 0x10002008\n\t\t },\n\t\t {\n\t\t 0x0: 0x100000,\n\t\t 0x10: 0x2000401,\n\t\t 0x20: 0x400,\n\t\t 0x30: 0x100401,\n\t\t 0x40: 0x2100401,\n\t\t 0x50: 0x0,\n\t\t 0x60: 0x1,\n\t\t 0x70: 0x2100001,\n\t\t 0x80: 0x2000400,\n\t\t 0x90: 0x100001,\n\t\t 0xa0: 0x2000001,\n\t\t 0xb0: 0x2100400,\n\t\t 0xc0: 0x2100000,\n\t\t 0xd0: 0x401,\n\t\t 0xe0: 0x100400,\n\t\t 0xf0: 0x2000000,\n\t\t 0x8: 0x2100001,\n\t\t 0x18: 0x0,\n\t\t 0x28: 0x2000401,\n\t\t 0x38: 0x2100400,\n\t\t 0x48: 0x100000,\n\t\t 0x58: 0x2000001,\n\t\t 0x68: 0x2000000,\n\t\t 0x78: 0x401,\n\t\t 0x88: 0x100401,\n\t\t 0x98: 0x2000400,\n\t\t 0xa8: 0x2100000,\n\t\t 0xb8: 0x100001,\n\t\t 0xc8: 0x400,\n\t\t 0xd8: 0x2100401,\n\t\t 0xe8: 0x1,\n\t\t 0xf8: 0x100400,\n\t\t 0x100: 0x2000000,\n\t\t 0x110: 0x100000,\n\t\t 0x120: 0x2000401,\n\t\t 0x130: 0x2100001,\n\t\t 0x140: 0x100001,\n\t\t 0x150: 0x2000400,\n\t\t 0x160: 0x2100400,\n\t\t 0x170: 0x100401,\n\t\t 0x180: 0x401,\n\t\t 0x190: 0x2100401,\n\t\t 0x1a0: 0x100400,\n\t\t 0x1b0: 0x1,\n\t\t 0x1c0: 0x0,\n\t\t 0x1d0: 0x2100000,\n\t\t 0x1e0: 0x2000001,\n\t\t 0x1f0: 0x400,\n\t\t 0x108: 0x100400,\n\t\t 0x118: 0x2000401,\n\t\t 0x128: 0x2100001,\n\t\t 0x138: 0x1,\n\t\t 0x148: 0x2000000,\n\t\t 0x158: 0x100000,\n\t\t 0x168: 0x401,\n\t\t 0x178: 0x2100400,\n\t\t 0x188: 0x2000001,\n\t\t 0x198: 0x2100000,\n\t\t 0x1a8: 0x0,\n\t\t 0x1b8: 0x2100401,\n\t\t 0x1c8: 0x100401,\n\t\t 0x1d8: 0x400,\n\t\t 0x1e8: 0x2000400,\n\t\t 0x1f8: 0x100001\n\t\t },\n\t\t {\n\t\t 0x0: 0x8000820,\n\t\t 0x1: 0x20000,\n\t\t 0x2: 0x8000000,\n\t\t 0x3: 0x20,\n\t\t 0x4: 0x20020,\n\t\t 0x5: 0x8020820,\n\t\t 0x6: 0x8020800,\n\t\t 0x7: 0x800,\n\t\t 0x8: 0x8020000,\n\t\t 0x9: 0x8000800,\n\t\t 0xa: 0x20800,\n\t\t 0xb: 0x8020020,\n\t\t 0xc: 0x820,\n\t\t 0xd: 0x0,\n\t\t 0xe: 0x8000020,\n\t\t 0xf: 0x20820,\n\t\t 0x80000000: 0x800,\n\t\t 0x80000001: 0x8020820,\n\t\t 0x80000002: 0x8000820,\n\t\t 0x80000003: 0x8000000,\n\t\t 0x80000004: 0x8020000,\n\t\t 0x80000005: 0x20800,\n\t\t 0x80000006: 0x20820,\n\t\t 0x80000007: 0x20,\n\t\t 0x80000008: 0x8000020,\n\t\t 0x80000009: 0x820,\n\t\t 0x8000000a: 0x20020,\n\t\t 0x8000000b: 0x8020800,\n\t\t 0x8000000c: 0x0,\n\t\t 0x8000000d: 0x8020020,\n\t\t 0x8000000e: 0x8000800,\n\t\t 0x8000000f: 0x20000,\n\t\t 0x10: 0x20820,\n\t\t 0x11: 0x8020800,\n\t\t 0x12: 0x20,\n\t\t 0x13: 0x800,\n\t\t 0x14: 0x8000800,\n\t\t 0x15: 0x8000020,\n\t\t 0x16: 0x8020020,\n\t\t 0x17: 0x20000,\n\t\t 0x18: 0x0,\n\t\t 0x19: 0x20020,\n\t\t 0x1a: 0x8020000,\n\t\t 0x1b: 0x8000820,\n\t\t 0x1c: 0x8020820,\n\t\t 0x1d: 0x20800,\n\t\t 0x1e: 0x820,\n\t\t 0x1f: 0x8000000,\n\t\t 0x80000010: 0x20000,\n\t\t 0x80000011: 0x800,\n\t\t 0x80000012: 0x8020020,\n\t\t 0x80000013: 0x20820,\n\t\t 0x80000014: 0x20,\n\t\t 0x80000015: 0x8020000,\n\t\t 0x80000016: 0x8000000,\n\t\t 0x80000017: 0x8000820,\n\t\t 0x80000018: 0x8020820,\n\t\t 0x80000019: 0x8000020,\n\t\t 0x8000001a: 0x8000800,\n\t\t 0x8000001b: 0x0,\n\t\t 0x8000001c: 0x20800,\n\t\t 0x8000001d: 0x820,\n\t\t 0x8000001e: 0x20020,\n\t\t 0x8000001f: 0x8020800\n\t\t }\n\t\t ];\n\t\n\t\t // Masks that select the SBOX input\n\t\t var SBOX_MASK = [\n\t\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t\t ];\n\t\n\t\t /**\n\t\t * DES block cipher algorithm.\n\t\t */\n\t\t var DES = C_algo.DES = BlockCipher.extend({\n\t\t _doReset: function () {\n\t\t // Shortcuts\n\t\t var key = this._key;\n\t\t var keyWords = key.words;\n\t\n\t\t // Select 56 bits according to PC1\n\t\t var keyBits = [];\n\t\t for (var i = 0; i < 56; i++) {\n\t\t var keyBitPos = PC1[i] - 1;\n\t\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t\t }\n\t\n\t\t // Assemble 16 subkeys\n\t\t var subKeys = this._subKeys = [];\n\t\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t\t // Create subkey\n\t\t var subKey = subKeys[nSubKey] = [];\n\t\n\t\t // Shortcut\n\t\t var bitShift = BIT_SHIFTS[nSubKey];\n\t\n\t\t // Select 48 bits according to PC2\n\t\t for (var i = 0; i < 24; i++) {\n\t\t // Select from the left 28 key bits\n\t\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\t\n\t\t // Select from the right 28 key bits\n\t\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t\t }\n\t\n\t\t // Since each subkey is applied to an expanded 32-bit input,\n\t\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t\t // which allows the key to be used without expansion\n\t\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t\t for (var i = 1; i < 7; i++) {\n\t\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t\t }\n\t\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t\t }\n\t\n\t\t // Compute inverse subkeys\n\t\t var invSubKeys = this._invSubKeys = [];\n\t\t for (var i = 0; i < 16; i++) {\n\t\t invSubKeys[i] = subKeys[15 - i];\n\t\t }\n\t\t },\n\t\n\t\t encryptBlock: function (M, offset) {\n\t\t this._doCryptBlock(M, offset, this._subKeys);\n\t\t },\n\t\n\t\t decryptBlock: function (M, offset) {\n\t\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t\t },\n\t\n\t\t _doCryptBlock: function (M, offset, subKeys) {\n\t\t // Get input\n\t\t this._lBlock = M[offset];\n\t\t this._rBlock = M[offset + 1];\n\t\n\t\t // Initial permutation\n\t\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t\t exchangeLR.call(this, 16, 0x0000ffff);\n\t\t exchangeRL.call(this, 2, 0x33333333);\n\t\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t\t exchangeLR.call(this, 1, 0x55555555);\n\t\n\t\t // Rounds\n\t\t for (var round = 0; round < 16; round++) {\n\t\t // Shortcuts\n\t\t var subKey = subKeys[round];\n\t\t var lBlock = this._lBlock;\n\t\t var rBlock = this._rBlock;\n\t\n\t\t // Feistel function\n\t\t var f = 0;\n\t\t for (var i = 0; i < 8; i++) {\n\t\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t\t }\n\t\t this._lBlock = rBlock;\n\t\t this._rBlock = lBlock ^ f;\n\t\t }\n\t\n\t\t // Undo swap from last round\n\t\t var t = this._lBlock;\n\t\t this._lBlock = this._rBlock;\n\t\t this._rBlock = t;\n\t\n\t\t // Final permutation\n\t\t exchangeLR.call(this, 1, 0x55555555);\n\t\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t\t exchangeRL.call(this, 2, 0x33333333);\n\t\t exchangeLR.call(this, 16, 0x0000ffff);\n\t\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t\n\t\t // Set output\n\t\t M[offset] = this._lBlock;\n\t\t M[offset + 1] = this._rBlock;\n\t\t },\n\t\n\t\t keySize: 64/32,\n\t\n\t\t ivSize: 64/32,\n\t\n\t\t blockSize: 64/32\n\t\t });\n\t\n\t\t // Swap bits across the left and right words\n\t\t function exchangeLR(offset, mask) {\n\t\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t\t this._rBlock ^= t;\n\t\t this._lBlock ^= t << offset;\n\t\t }\n\t\n\t\t function exchangeRL(offset, mask) {\n\t\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t\t this._lBlock ^= t;\n\t\t this._rBlock ^= t << offset;\n\t\t }\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.DES = BlockCipher._createHelper(DES);\n\t\n\t\t /**\n\t\t * Triple-DES block cipher algorithm.\n\t\t */\n\t\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t\t _doReset: function () {\n\t\t // Shortcuts\n\t\t var key = this._key;\n\t\t var keyWords = key.words;\n\t\n\t\t // Create DES instances\n\t\t this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));\n\t\t this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));\n\t\t this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));\n\t\t },\n\t\n\t\t encryptBlock: function (M, offset) {\n\t\t this._des1.encryptBlock(M, offset);\n\t\t this._des2.decryptBlock(M, offset);\n\t\t this._des3.encryptBlock(M, offset);\n\t\t },\n\t\n\t\t decryptBlock: function (M, offset) {\n\t\t this._des3.decryptBlock(M, offset);\n\t\t this._des2.encryptBlock(M, offset);\n\t\t this._des1.decryptBlock(M, offset);\n\t\t },\n\t\n\t\t keySize: 192/32,\n\t\n\t\t ivSize: 64/32,\n\t\n\t\t blockSize: 64/32\n\t\t });\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.TripleDES;\n\t\n\t}));\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(12), __webpack_require__(13), __webpack_require__(14), __webpack_require__(15));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var StreamCipher = C_lib.StreamCipher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Reusable objects\n\t\t var S = [];\n\t\t var C_ = [];\n\t\t var G = [];\n\t\n\t\t /**\n\t\t * Rabbit stream cipher algorithm\n\t\t */\n\t\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t\t _doReset: function () {\n\t\t // Shortcuts\n\t\t var K = this._key.words;\n\t\t var iv = this.cfg.iv;\n\t\n\t\t // Swap endian\n\t\t for (var i = 0; i < 4; i++) {\n\t\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t\t }\n\t\n\t\t // Generate initial state values\n\t\t var X = this._X = [\n\t\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t\t ];\n\t\n\t\t // Generate initial counter values\n\t\t var C = this._C = [\n\t\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t\t ];\n\t\n\t\t // Carry bit\n\t\t this._b = 0;\n\t\n\t\t // Iterate the system four times\n\t\t for (var i = 0; i < 4; i++) {\n\t\t nextState.call(this);\n\t\t }\n\t\n\t\t // Modify the counters\n\t\t for (var i = 0; i < 8; i++) {\n\t\t C[i] ^= X[(i + 4) & 7];\n\t\t }\n\t\n\t\t // IV setup\n\t\t if (iv) {\n\t\t // Shortcuts\n\t\t var IV = iv.words;\n\t\t var IV_0 = IV[0];\n\t\t var IV_1 = IV[1];\n\t\n\t\t // Generate four subvectors\n\t\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\t\n\t\t // Modify counter values\n\t\t C[0] ^= i0;\n\t\t C[1] ^= i1;\n\t\t C[2] ^= i2;\n\t\t C[3] ^= i3;\n\t\t C[4] ^= i0;\n\t\t C[5] ^= i1;\n\t\t C[6] ^= i2;\n\t\t C[7] ^= i3;\n\t\n\t\t // Iterate the system four times\n\t\t for (var i = 0; i < 4; i++) {\n\t\t nextState.call(this);\n\t\t }\n\t\t }\n\t\t },\n\t\n\t\t _doProcessBlock: function (M, offset) {\n\t\t // Shortcut\n\t\t var X = this._X;\n\t\n\t\t // Iterate the system\n\t\t nextState.call(this);\n\t\n\t\t // Generate four keystream words\n\t\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\t\n\t\t for (var i = 0; i < 4; i++) {\n\t\t // Swap endian\n\t\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\t\n\t\t // Encrypt\n\t\t M[offset + i] ^= S[i];\n\t\t }\n\t\t },\n\t\n\t\t blockSize: 128/32,\n\t\n\t\t ivSize: 64/32\n\t\t });\n\t\n\t\t function nextState() {\n\t\t // Shortcuts\n\t\t var X = this._X;\n\t\t var C = this._C;\n\t\n\t\t // Save old counter values\n\t\t for (var i = 0; i < 8; i++) {\n\t\t C_[i] = C[i];\n\t\t }\n\t\n\t\t // Calculate new counter values\n\t\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\t\n\t\t // Calculate the g-values\n\t\t for (var i = 0; i < 8; i++) {\n\t\t var gx = X[i] + C[i];\n\t\n\t\t // Construct high and low argument for squaring\n\t\t var ga = gx & 0xffff;\n\t\t var gb = gx >>> 16;\n\t\n\t\t // Calculate high and low result of squaring\n\t\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\t\n\t\t // High XOR low\n\t\t G[i] = gh ^ gl;\n\t\t }\n\t\n\t\t // Calculate new state values\n\t\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t\t }\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.Rabbit;\n\t\n\t}));\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(12), __webpack_require__(13), __webpack_require__(14), __webpack_require__(15));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var StreamCipher = C_lib.StreamCipher;\n\t\t var C_algo = C.algo;\n\t\n\t\t /**\n\t\t * RC4 stream cipher algorithm.\n\t\t */\n\t\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t\t _doReset: function () {\n\t\t // Shortcuts\n\t\t var key = this._key;\n\t\t var keyWords = key.words;\n\t\t var keySigBytes = key.sigBytes;\n\t\n\t\t // Init sbox\n\t\t var S = this._S = [];\n\t\t for (var i = 0; i < 256; i++) {\n\t\t S[i] = i;\n\t\t }\n\t\n\t\t // Key setup\n\t\t for (var i = 0, j = 0; i < 256; i++) {\n\t\t var keyByteIndex = i % keySigBytes;\n\t\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\t\n\t\t j = (j + S[i] + keyByte) % 256;\n\t\n\t\t // Swap\n\t\t var t = S[i];\n\t\t S[i] = S[j];\n\t\t S[j] = t;\n\t\t }\n\t\n\t\t // Counters\n\t\t this._i = this._j = 0;\n\t\t },\n\t\n\t\t _doProcessBlock: function (M, offset) {\n\t\t M[offset] ^= generateKeystreamWord.call(this);\n\t\t },\n\t\n\t\t keySize: 256/32,\n\t\n\t\t ivSize: 0\n\t\t });\n\t\n\t\t function generateKeystreamWord() {\n\t\t // Shortcuts\n\t\t var S = this._S;\n\t\t var i = this._i;\n\t\t var j = this._j;\n\t\n\t\t // Generate keystream word\n\t\t var keystreamWord = 0;\n\t\t for (var n = 0; n < 4; n++) {\n\t\t i = (i + 1) % 256;\n\t\t j = (j + S[i]) % 256;\n\t\n\t\t // Swap\n\t\t var t = S[i];\n\t\t S[i] = S[j];\n\t\t S[j] = t;\n\t\n\t\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t\t }\n\t\n\t\t // Update counters\n\t\t this._i = i;\n\t\t this._j = j;\n\t\n\t\t return keystreamWord;\n\t\t }\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.RC4 = StreamCipher._createHelper(RC4);\n\t\n\t\t /**\n\t\t * Modified RC4 stream cipher algorithm.\n\t\t */\n\t\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {number} drop The number of keystream words to drop. Default 192\n\t\t */\n\t\t cfg: RC4.cfg.extend({\n\t\t drop: 192\n\t\t }),\n\t\n\t\t _doReset: function () {\n\t\t RC4._doReset.call(this);\n\t\n\t\t // Drop\n\t\t for (var i = this.cfg.drop; i > 0; i--) {\n\t\t generateKeystreamWord.call(this);\n\t\t }\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.RC4;\n\t\n\t}));\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** secure-ls.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 86f0cc5995c1466f85ee\n **/","import utils from './utils';\r\nimport constants from './constants';\r\nimport enc from './enc-utf8';\r\n\r\nimport Base64 from './Base64';\r\nimport LZString from 'lz-string/libs/lz-string';\r\nimport AES from 'crypto-js/aes';\r\nimport DES from 'crypto-js/tripledes';\r\nimport RABBIT from 'crypto-js/rabbit';\r\nimport RC4 from 'crypto-js/rc4';\r\n\r\nexport default class SecureLS {\r\n constructor(config) {\r\n config = config || {};\r\n this._name = 'secure-ls';\r\n this.utils = utils;\r\n this.constants = constants;\r\n this.Base64 = Base64;\r\n this.LZString = LZString;\r\n this.AES = AES;\r\n this.DES = DES;\r\n this.RABBIT = RABBIT;\r\n this.RC4 = RC4;\r\n this.enc = enc;\r\n\r\n this.config = {\r\n isCompression: true,\r\n encodingType: constants.EncrytionTypes.BASE64,\r\n encryptionSecret: config.encryptionSecret,\r\n encryptionRealm: config.encryptionRealm\r\n };\r\n this.config.isCompression = typeof config.isCompression !== 'undefined' ?\r\n config.isCompression :\r\n true;\r\n this.config.encodingType = (typeof config.encodingType !== 'undefined' || config.encodingType === '') ?\r\n config.encodingType.toLowerCase() :\r\n constants.EncrytionTypes.BASE64;\r\n\r\n this.ls = localStorage;\r\n this.init();\r\n };\r\n\r\n init() {\r\n let metaData = this.getMetaData();\r\n\r\n this.WarningEnum = this.constants.WarningEnum;\r\n this.WarningTypes = this.constants.WarningTypes;\r\n this.EncrytionTypes = this.constants.EncrytionTypes;\r\n\r\n this._isBase64 = this._isBase64EncryptionType();\r\n this._isAES = this._isAESEncryptionType();\r\n this._isDES = this._isDESEncryptionType();\r\n this._isRabbit = this._isRabbitEncryptionType();\r\n this._isRC4 = this._isRC4EncryptionType();\r\n this._isCompression = this._isDataCompressionEnabled();\r\n\r\n // fill the already present keys to the list of keys being used by secure-ls\r\n this.utils.allKeys = metaData.keys || this.resetAllKeys();\r\n };\r\n\r\n _isBase64EncryptionType() {\r\n return Base64 &&\r\n (typeof this.config.encodingType === 'undefined' ||\r\n this.config.encodingType === this.constants.EncrytionTypes.BASE64);\r\n };\r\n\r\n _isAESEncryptionType() {\r\n return AES &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.AES);\r\n };\r\n\r\n _isDESEncryptionType() {\r\n return DES &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.DES);\r\n };\r\n\r\n _isRabbitEncryptionType() {\r\n return RABBIT &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.RABBIT);\r\n };\r\n\r\n _isRC4EncryptionType() {\r\n return RC4 &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.RC4);\r\n };\r\n\r\n _isDataCompressionEnabled() {\r\n return this.config.isCompression;\r\n }\r\n\r\n getEncryptionSecret(key) {\r\n let metaData = this.getMetaData();\r\n let obj = this.utils.getObjectFromKey(metaData.keys, key);\r\n\r\n if (!obj) {\r\n return;\r\n }\r\n\r\n if (this._isAES ||\r\n this._isDES ||\r\n this._isRabbit ||\r\n this._isRC4\r\n ) {\r\n if (typeof this.config.encryptionSecret === 'undefined') {\r\n this.utils.encryptionSecret = obj.s;\r\n\r\n if (!this.utils.encryptionSecret) {\r\n this.utils.encryptionSecret = this.utils.generateSecretKey();\r\n this.setMetaData();\r\n }\r\n } else {\r\n this.utils.encryptionSecret = this.config.encryptionSecret || obj.s || '';\r\n }\r\n }\r\n }\r\n\r\n get(key, isAllKeysData) {\r\n let decodedData = '',\r\n jsonData = '',\r\n deCompressedData,\r\n bytes,\r\n data;\r\n\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return jsonData;\r\n }\r\n\r\n data = this.getDataFromLocalStorage(key);\r\n\r\n if (!data) {\r\n return jsonData;\r\n }\r\n\r\n deCompressedData = data; // saves else\r\n if (this._isCompression || isAllKeysData) { // meta data always compressed\r\n deCompressedData = LZString.decompressFromUTF16(data);\r\n }\r\n\r\n decodedData = deCompressedData; // saves else\r\n if (this._isBase64 || isAllKeysData) { // meta data always Base64\r\n decodedData = Base64.decode(deCompressedData);\r\n } else {\r\n this.getEncryptionSecret(key);\r\n if (this._isAES) {\r\n bytes = AES.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isDES) {\r\n bytes = DES.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isRabbit) {\r\n bytes = RABBIT.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isRC4) {\r\n bytes = RC4.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n }\r\n\r\n if (bytes) {\r\n decodedData = bytes.toString(enc._Utf8);\r\n }\r\n }\r\n\r\n try {\r\n jsonData = JSON.parse(decodedData);\r\n } catch (e) {\r\n throw new Error('Could not parse JSON');\r\n }\r\n\r\n return jsonData;\r\n };\r\n\r\n getDataFromLocalStorage(key) {\r\n return this.ls.getItem(key, true);\r\n };\r\n\r\n getAllKeys() {\r\n let data = this.getMetaData();\r\n\r\n return this.utils.extractKeyNames(data) || [];\r\n };\r\n\r\n set(key, data) {\r\n let dataToStore = '';\r\n\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return;\r\n }\r\n\r\n this.getEncryptionSecret(key);\r\n\r\n // add key(s) to Array if not already added, only for keys other than meta key\r\n if (!(String(key) === String(this.utils.metaKey))) {\r\n if (!this.utils.isKeyPresent(key)) {\r\n this.utils.addToKeysList(key);\r\n this.setMetaData();\r\n }\r\n }\r\n\r\n dataToStore = this.processData(data);\r\n // Store the data to localStorage\r\n this.setDataToLocalStorage(key, dataToStore);\r\n };\r\n\r\n setDataToLocalStorage(key, data) {\r\n this.ls.setItem(key, data);\r\n };\r\n\r\n remove(key) {\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return;\r\n }\r\n\r\n if (key === this.utils.metaKey && this.getAllKeys().length) {\r\n this.utils.warn(this.WarningEnum.META_KEY_REMOVE);\r\n return;\r\n }\r\n\r\n if (this.utils.isKeyPresent(key)) {\r\n this.utils.removeFromKeysList(key);\r\n this.setMetaData();\r\n }\r\n this.ls.removeItem(key);\r\n };\r\n\r\n removeAll() {\r\n let keys, i;\r\n\r\n keys = this.getAllKeys();\r\n for (i = 0; i < keys.length; i++) {\r\n this.ls.removeItem(keys[i]);\r\n }\r\n this.ls.removeItem(this.utils.metaKey);\r\n\r\n this.resetAllKeys();\r\n };\r\n\r\n clear() {\r\n this.ls.clear();\r\n this.resetAllKeys();\r\n };\r\n\r\n resetAllKeys() {\r\n this.utils.allKeys = [];\r\n return [];\r\n }\r\n\r\n processData(data, isAllKeysData) {\r\n if (data === null || data === undefined || data === '') {\r\n return '';\r\n }\r\n\r\n let jsonData, encodedData, compressedData;\r\n\r\n try {\r\n jsonData = JSON.stringify(data);\r\n } catch (e) {\r\n throw new Error('Could not stringify data.');\r\n }\r\n\r\n // Encode Based on encoding type\r\n // If not set, default to Base64 for securing data\r\n encodedData = jsonData;\r\n if (this._isBase64 || isAllKeysData) {\r\n encodedData = Base64.encode(jsonData);\r\n } else {\r\n if (this._isAES) {\r\n encodedData = AES.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isDES) {\r\n encodedData = DES.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isRabbit) {\r\n encodedData = RABBIT.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isRC4) {\r\n encodedData = RC4.encrypt(jsonData, this.utils.encryptionSecret);\r\n }\r\n\r\n encodedData = encodedData && encodedData.toString();\r\n }\r\n\r\n // Compress data if set to true\r\n compressedData = encodedData;\r\n if (this._isCompression || isAllKeysData) {\r\n compressedData = LZString.compressToUTF16(encodedData);\r\n }\r\n\r\n return compressedData;\r\n };\r\n\r\n setMetaData() {\r\n let dataToStore = this.processData({\r\n keys: this.utils.allKeys\r\n }, true);\r\n\r\n // Store the data to localStorage\r\n this.setDataToLocalStorage(this.getMetaKey(), dataToStore);\r\n };\r\n\r\n getMetaData() {\r\n return this.get(this.getMetaKey(), true) || {};\r\n };\r\n\r\n getMetaKey() {\r\n return this.utils.metaKey + (this.config.encryptionRealm ? '__' + this.config.encryptionRealm : '');\r\n }\r\n\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/index.js\n **/","import constants from './constants';\r\nimport CryptoJSWordArray from './WordArray';\r\nimport PBKDF2 from 'crypto-js/pbkdf2';\r\n\r\nlet utils = {\r\n metaKey: '_secure__ls__metadata',\r\n encryptionSecret: '',\r\n secretPhrase: 's3cr3t$#@135^&*246',\r\n allKeys: [],\r\n is: function (key) {\r\n if (key) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n warn: function (reason) {\r\n reason = reason ? reason : constants.WarningEnum.DEFAULT_TEXT;\r\n console.warn(constants.WarningTypes[reason]);\r\n },\r\n generateSecretKey: function () {\r\n let salt = CryptoJSWordArray.random(128 / 8);\r\n let key128Bits = PBKDF2(this.secretPhrase, salt, {keySize: 128 / 32 });\r\n\r\n return key128Bits && key128Bits.toString();\r\n },\r\n getObjectFromKey: function (data, key) {\r\n if (!data || !data.length) {\r\n return {};\r\n }\r\n\r\n let i, obj = {};\r\n\r\n for (i = 0; i < data.length; i++) {\r\n if (data[i].k === key) {\r\n obj = data[i];\r\n break;\r\n }\r\n }\r\n\r\n return obj;\r\n },\r\n extractKeyNames: function (data) {\r\n if (!data || !data.keys || !data.keys.length) {\r\n return [];\r\n }\r\n\r\n return data.keys.map(keyData => {\r\n return keyData.k;\r\n });\r\n },\r\n getAllKeys: function () {\r\n return this.allKeys;\r\n },\r\n isKeyPresent: function (key) {\r\n let isKeyAlreadyPresent = false;\r\n\r\n for (let i = 0; i < this.allKeys.length; i++) {\r\n if (String(this.allKeys[i].k) === String(key)) {\r\n isKeyAlreadyPresent = true; // found\r\n break;\r\n }\r\n }\r\n\r\n return isKeyAlreadyPresent;\r\n },\r\n addToKeysList: function (key) {\r\n this.allKeys.push({\r\n k: key,\r\n s: this.encryptionSecret\r\n });\r\n },\r\n removeFromKeysList: function (key) {\r\n let i, index = -1;\r\n\r\n for (i = 0; i < this.allKeys.length; i++) {\r\n if (this.allKeys[i].k === key) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n if (index !== -1) {\r\n this.allKeys.splice(index, 1);\r\n }\r\n return index;\r\n }\r\n};\r\n\r\nmodule.exports = utils;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/utils.js\n **/","let WarningEnum = {\r\n KEY_NOT_PROVIDED: 'keyNotProvided',\r\n META_KEY_REMOVE: 'metaKeyRemove',\r\n DEFAULT_TEXT: 'defaultText'\r\n};\r\n\r\nlet WarningTypes = {};\r\n\r\nWarningTypes[WarningEnum.KEY_NOT_PROVIDED] = 'Secure LS: Key not provided. Aborting operation!';\r\nWarningTypes[WarningEnum.META_KEY_REMOVE] = `Secure LS: Meta key can not be removed\r\nunless all keys created by Secure LS are removed!`;\r\nWarningTypes[WarningEnum.DEFAULT_TEXT] = `Unexpected output`;\r\n\r\nlet constants = {\r\n WarningEnum: WarningEnum,\r\n WarningTypes: WarningTypes,\r\n EncrytionTypes: {\r\n BASE64: 'base64',\r\n AES: 'aes',\r\n DES: 'des',\r\n RABBIT: 'rabbit',\r\n RC4: 'rc4'\r\n }\r\n};\r\n\r\nmodule.exports = constants;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/constants.js\n **/","/*\r\n ES6 compatible port of CryptoJS - WordArray for PBKDF2 password key generation\r\n\r\n Source: https://github.com/brix/crypto-js\r\n LICENSE: MIT\r\n */\r\n\r\nlet CryptoJSWordArray = {};\r\n\r\nCryptoJSWordArray.random = function (nBytes) {\r\n let words = [];\r\n let r = (function (mw) {\r\n let mz = 0x3ade68b1;\r\n let mask = 0xffffffff;\r\n\r\n return function () {\r\n mz = (0x9069 * (mz & 0xFFFF) + (mz >> 0x10)) & mask;\r\n mw = (0x4650 * (mw & 0xFFFF) + (mw >> 0x10)) & mask;\r\n let result = ((mz << 0x10) + mw) & mask;\r\n\r\n result /= 0x100000000;\r\n result += 0.5;\r\n return result * (Math.random() > 0.5 ? 1 : -1);\r\n };\r\n });\r\n\r\n for (let i = 0, rcache; i < nBytes; i += 4) {\r\n let _r = r((rcache || Math.random()) * 0x100000000);\r\n\r\n rcache = _r() * 0x3ade67b7;\r\n words.push((_r() * 0x100000000) | 0);\r\n }\r\n\r\n return new this.Set(words, nBytes);\r\n};\r\n\r\nCryptoJSWordArray.Set = function (words, sigBytes) {\r\n words = this.words = words || [];\r\n\r\n if (sigBytes !== undefined) {\r\n this.sigBytes = sigBytes;\r\n } else {\r\n this.sigBytes = words.length * 8;\r\n }\r\n};\r\n\r\nmodule.exports = CryptoJSWordArray;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/WordArray.js\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/pbkdf2.js\n ** module id = 4\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t /*\n\t * Local polyfil of Object.create\n\t */\n\t var create = Object.create || (function () {\n\t function F() {};\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }())\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var i = 0; i < thatSigBytes; i += 4) {\n\t thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t var r = (function (m_w) {\n\t var m_w = m_w;\n\t var m_z = 0x3ade68b1;\n\t var mask = 0xffffffff;\n\n\t return function () {\n\t m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t var result = ((m_z << 0x10) + m_w) & mask;\n\t result /= 0x100000000;\n\t result += 0.5;\n\t return result * (Math.random() > .5 ? 1 : -1);\n\t }\n\t });\n\n\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t var _r = r((rcache || Math.random()) * 0x100000000);\n\n\t rcache = _r() * 0x3ade67b7;\n\t words.push((_r() * 0x100000000) | 0);\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t var processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/core.js\n ** module id = 5\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/sha1.js\n ** module id = 6\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/hmac.js\n ** module id = 7\n ** module chunks = 0\n **/","/*\r\n ES6 compatible port of CryptoJS - encoding\r\n\r\n Source: https://github.com/brix/crypto-js\r\n LICENSE: MIT\r\n */\r\nlet enc = {};\r\n\r\nenc.Latin1 = {\r\n stringify: (wordArray) => {\r\n // Shortcuts\r\n let words = wordArray.words;\r\n let sigBytes = wordArray.sigBytes;\r\n let latin1Chars = [], i, bite;\r\n\r\n // Convert\r\n for (i = 0; i < sigBytes; i++) {\r\n bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n latin1Chars.push(String.fromCharCode(bite));\r\n }\r\n\r\n return latin1Chars.join('');\r\n }\r\n};\r\n\r\nenc._Utf8 = {\r\n stringify: (wordArray) => {\r\n try {\r\n return decodeURIComponent(escape(enc.Latin1.stringify(wordArray)));\r\n } catch (e) {\r\n throw new Error('Malformed UTF-8 data');\r\n }\r\n }\r\n};\r\n\r\nmodule.exports = enc;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/enc-utf8.js\n **/","let Base64 = {\r\n _keyStr: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\r\n encode: function (e) {\r\n let t = '';\r\n let n, r, i, s, o, u, a;\r\n let f = 0;\r\n\r\n e = Base64._utf8Encode(e);\r\n while (f < e.length) {\r\n n = e.charCodeAt(f++);\r\n r = e.charCodeAt(f++);\r\n i = e.charCodeAt(f++);\r\n s = n >> 2;\r\n o = (n & 3) << 4 | r >> 4;\r\n u = (r & 15) << 2 | i >> 6;\r\n a = i & 63;\r\n if (isNaN(r)) {\r\n u = a = 64;\r\n } else if (isNaN(i)) {\r\n a = 64;\r\n }\r\n t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a);\r\n }\r\n return t;\r\n },\r\n decode: function (e) {\r\n let t = '';\r\n let n, r, i;\r\n let s, o, u, a;\r\n let f = 0;\r\n\r\n e = e.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\r\n while (f < e.length) {\r\n s = this._keyStr.indexOf(e.charAt(f++));\r\n o = this._keyStr.indexOf(e.charAt(f++));\r\n u = this._keyStr.indexOf(e.charAt(f++));\r\n a = this._keyStr.indexOf(e.charAt(f++));\r\n n = s << 2 | o >> 4;\r\n r = (o & 15) << 4 | u >> 2;\r\n i = (u & 3) << 6 | a;\r\n t = t + String.fromCharCode(n);\r\n if (u !== 64) {\r\n t = t + String.fromCharCode(r);\r\n }\r\n if (a !== 64) {\r\n t = t + String.fromCharCode(i);\r\n }\r\n }\r\n t = Base64._utf8Decode(t);\r\n return t;\r\n },\r\n _utf8Encode: function (e) {\r\n e = e.replace(/\\r\\n/g, '\\n');\r\n let t = '';\r\n\r\n for (let n = 0; n < e.length; n++) {\r\n let r = e.charCodeAt(n);\r\n\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n } else if (r > 127 && r < 2048) {\r\n t += String.fromCharCode(r >> 6 | 192);\r\n t += String.fromCharCode(r & 63 | 128);\r\n } else {\r\n t += String.fromCharCode(r >> 12 | 224);\r\n t += String.fromCharCode(r >> 6 & 63 | 128);\r\n t += String.fromCharCode(r & 63 | 128);\r\n }\r\n }\r\n return t;\r\n },\r\n _utf8Decode: function (e) {\r\n let t = '';\r\n let n = 0;\r\n let r, c2, c3;\r\n\r\n r = c2 = 0;\r\n while (n < e.length) {\r\n r = e.charCodeAt(n);\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n n++;\r\n } else if (r > 191 && r < 224) {\r\n c2 = e.charCodeAt(n + 1);\r\n t += String.fromCharCode((r & 31) << 6 | c2 & 63);\r\n n += 2;\r\n } else {\r\n c2 = e.charCodeAt(n + 1);\r\n c3 = e.charCodeAt(n + 2);\r\n t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\r\n n += 3;\r\n }\r\n }\r\n return t;\r\n }\r\n};\r\n\r\nmodule.exports = Base64;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/Base64.js\n **/","// Copyright (c) 2013 Pieroxy \n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lz-string/libs/lz-string.js\n ** module id = 10\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/aes.js\n ** module id = 11\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/enc-base64.js\n ** module id = 12\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/md5.js\n ** module id = 13\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t var block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/evpkdf.js\n ** module id = 14\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t var block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t var block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t var modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t var modeCreator = mode.createDecryptor;\n\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t var wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t var salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/cipher-core.js\n ** module id = 15\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));\n\t this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));\n\t this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/tripledes.js\n ** module id = 16\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/rabbit.js\n ** module id = 17\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/rc4.js\n ** module id = 18\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/example/aes-compressed-realm.js b/example/aes-compressed-realm.js new file mode 100644 index 0000000..8faa584 --- /dev/null +++ b/example/aes-compressed-realm.js @@ -0,0 +1,23 @@ +var data = {data: [{age: 1}, {age: '2'}]}; +var aesCRealm1 = new SecureLS({encodingType: 'aes', encryptionSecret: 'secret1', encryptionRealm: 'realm1'}); +var key1 = 'aes__compressed_1'; +var ae = aesCRealm1.AES.encrypt(JSON.stringify(data), ''); +var bde = aesCRealm1.AES.decrypt(ae.toString(), ''); +var de = bde.toString(aesCRealm1.enc._Utf8); +var aesCRealm2 = new SecureLS({encodingType: 'aes', encryptionSecret: 'secret2', encryptionRealm: 'realm2'}); +var key2 = 'aes__compressed_2'; +var ae2 = aesCRealm2.AES.encrypt(JSON.stringify(data), ''); +var bde2 = aesCRealm2.AES.decrypt(ae2.toString(), ''); +var de2 = bde2.toString(aesCRealm2.enc._Utf8); + +aesCRealm1.set(key1, data); +console.log('AES Compressed Realm1'); +console.log(localStorage.getItem(key1)); +console.log(aesCRealm1.get(key1)); +console.log('____________________________________'); + +aesCRealm2.set(key2, data); +console.log('AES Compressed Realm2'); +console.log(localStorage.getItem(key2)); +console.log(aesCRealm2.get(key2)); +console.log('____________________________________'); diff --git a/example/index.html b/example/index.html index d9e7b96..2007d9d 100644 --- a/example/index.html +++ b/example/index.html @@ -24,6 +24,7 @@ + diff --git a/src/index.js b/src/index.js index bdbf29e..747abf3 100644 --- a/src/index.js +++ b/src/index.js @@ -25,7 +25,9 @@ export default class SecureLS { this.config = { isCompression: true, - encodingType: constants.EncrytionTypes.BASE64 + encodingType: constants.EncrytionTypes.BASE64, + encryptionSecret: config.encryptionSecret, + encryptionRealm: config.encryptionRealm }; this.config.isCompression = typeof config.isCompression !== 'undefined' ? config.isCompression : @@ -33,14 +35,13 @@ export default class SecureLS { this.config.encodingType = (typeof config.encodingType !== 'undefined' || config.encodingType === '') ? config.encodingType.toLowerCase() : constants.EncrytionTypes.BASE64; - this.config.encryptionSecret = config.encryptionSecret; this.ls = localStorage; this.init(); }; init() { - let metaData = this.getMetaData() || {}; + let metaData = this.getMetaData(); this.WarningEnum = this.constants.WarningEnum; this.WarningTypes = this.constants.WarningTypes; @@ -88,7 +89,7 @@ export default class SecureLS { } getEncryptionSecret(key) { - let metaData = this.getMetaData() || {}; + let metaData = this.getMetaData(); let obj = this.utils.getObjectFromKey(metaData.keys, key); if (!obj) { @@ -289,11 +290,15 @@ export default class SecureLS { }, true); // Store the data to localStorage - this.setDataToLocalStorage(this.utils.metaKey, dataToStore); + this.setDataToLocalStorage(this.getMetaKey(), dataToStore); }; getMetaData() { - return this.get(this.utils.metaKey, true); + return this.get(this.getMetaKey(), true) || {}; }; + getMetaKey() { + return this.utils.metaKey + (this.config.encryptionRealm ? '__' + this.config.encryptionRealm : ''); + } + }; diff --git a/test/library.spec.js b/test/library.spec.js index 76208f8..28317a5 100644 --- a/test/library.spec.js +++ b/test/library.spec.js @@ -4,4 +4,4 @@ import './localStorage.spec'; import './utils.spec'; import './ls-data-compression.spec'; import './ls-data-enc-dec.spec'; -import './functional.spec'; \ No newline at end of file +import './functional.spec'; diff --git a/test/ls-data-enc-dec.spec.js b/test/ls-data-enc-dec.spec.js index e9d4a09..dc8355e 100644 --- a/test/ls-data-enc-dec.spec.js +++ b/test/ls-data-enc-dec.spec.js @@ -101,7 +101,9 @@ describe('Encryption / Decryption Tests ->', () => { lib.set(key, data); // corresponding to [1, 2, 3] => "⪂恢ೠ☎ڰځ᠁쁺Ÿીꀜ鄈Àኀ퐁᠁肢ϙ㑀娃࠰Ⲁ찠̨ư༠ǟ踈Ÿ耀 " i.e. compressed AES encrypted - valueStored = lib.LZString.compressToUTF16(lib.AES.encrypt(JSON.stringify(data), lib.utils.encryptionSecret).toString()); + valueStored = lib.LZString.compressToUTF16( + lib.AES.encrypt(JSON.stringify(data), lib.utils.encryptionSecret).toString() + ); expect(mockLS.storage[key]).to.exist; expect(mockLS.storage[key]).to.be.a('string'); @@ -135,12 +137,13 @@ describe('Encryption / Decryption Tests ->', () => { expect(lib.utils.encryptionSecret).to.equal('mySecretKey123'); // corresponding to [1, 2, 3] => "⪂恢ೠ☎ڰځ᠁쁺Ÿીꀜ鄈Àኀ퐁᠁肢ϙ㑀娃࠰Ⲁ찠̨ư༠ǟ踈Ÿ耀 " i.e. compressed AES encrypted - valueStored = lib.LZString.compressToUTF16(lib.AES.encrypt(JSON.stringify(data), lib.utils.encryptionSecret).toString()); + valueStored = lib.LZString.compressToUTF16( + lib.AES.encrypt(JSON.stringify(data), lib.utils.encryptionSecret).toString() + ); expect(mockLS.storage[key]).to.exist; expect(mockLS.storage[key]).to.be.a('string'); - // Can't check exact values since CryptoJS encryption is time-dependent // expect(mockLS.storage[key]).to.equal(valueStored); @@ -222,7 +225,9 @@ describe('Encryption / Decryption Tests ->', () => { lib.set(key, data); // corresponding to [1, 2, 3] => "⪂恢ೠ☎ڰځ᠉쁡㠓䌄倈쁺ᆰୀ䬐ʐɀ挀喠儴ݲ " i.e. compressed DES encrypted - valueStored = lib.LZString.compressToUTF16(lib.DES.encrypt(JSON.stringify(data), lib.utils.encryptionSecret).toString()); + valueStored = lib.LZString.compressToUTF16( + lib.DES.encrypt(JSON.stringify(data), lib.utils.encryptionSecret).toString() + ); expect(mockLS.storage[key]).to.exist; expect(mockLS.storage[key]).to.be.a('string'); @@ -369,7 +374,9 @@ describe('Encryption / Decryption Tests ->', () => { lib.set(key, data); // corresponding to [1, 2, 3] => "⪂恢ೠ☎ڰځ᠍䁅̘ࡀ⡀⢀丈٠ⶀ㙸໠ވɘའ̀눂 " i.e. compressed RC4 encrypted - valueStored = lib.LZString.compressToUTF16(lib.RC4.encrypt(JSON.stringify(data), lib.utils.encryptionSecret).toString()); + valueStored = lib.LZString.compressToUTF16( + lib.RC4.encrypt(JSON.stringify(data), lib.utils.encryptionSecret).toString() + ); expect(mockLS.storage[key]).to.exist; expect(mockLS.storage[key]).to.be.a('string'); @@ -384,4 +391,42 @@ describe('Encryption / Decryption Tests ->', () => { lib.removeAll(); }); }); + + describe('AES encryption and compression and multiple storages', () => { + it('should have two parallel storage running at the same time', () => { + let data1 = [1, 2, 3]; + let data2 = [3, 4, 5]; + let secret1 = 'secret1'; + let secret2 = 'secret2'; + let realm1 = 'realm1'; + let realm2 = 'realm2'; + let key1 = 'key-1'; + let key2 = 'key-2'; + + let lib1 = new SecureLS({ + encodingType: 'RC4', isCompression: true, encryptionSecret: secret1, encryptionRealm: realm1 + }); + let lib2 = new SecureLS({ + encodingType: 'RC4', isCompression: true, encryptionSecret: secret2, encryptionRealm: realm2 + }); + + lib1.ls = mockStorage; + lib2.ls = mockStorage; + + lib1.set(key1, data1); + lib2.set(key2, data2); + + expect(lib1.get(key1)).to.eql(data1); + expect(lib2.get(key2)).to.eql(data2); + + let error = null; + + try { + lib1.get(key2); + } catch (e) { + error = e; + } + expect(error).to.not.eql(null); + }); + }); }); From 102405f54d5151e094e4cb59f2734460db2369e9 Mon Sep 17 00:00:00 2001 From: Richard Burkhardt Date: Sun, 6 Jan 2019 11:53:48 +0100 Subject: [PATCH 2/5] updated version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8ee1c57..b49591e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "secure-ls", - "version": "1.2.4", + "version": "1.2.5", "description": "Secure localStorage data with high level of encryption and data compression", "main": "./dist/secure-ls.js", "typings": "./dist/secure-ls.d.ts", From 0a406c3b20b32d4f9650b1e0a06ea9cdf00e5739 Mon Sep 17 00:00:00 2001 From: Richard Burkhardt Date: Mon, 7 Jan 2019 09:15:36 +0100 Subject: [PATCH 3/5] encryptionRealm -> encryptionNamespace, explaining encryptionNamespace --- README.md | 24 ++++++++++++++++-------- dist/secure-ls.d.ts | 2 +- dist/secure-ls.js | 4 ++-- dist/secure-ls.js.map | 2 +- dist/secure-ls.min.js | 4 ++-- dist/secure-ls.min.js.map | 2 +- example/aes-compressed-realm.js | 4 ++-- src/index.js | 4 ++-- test/ls-data-enc-dec.spec.js | 4 ++-- 9 files changed, 29 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 69ffb38..d8500ab 100644 --- a/README.md +++ b/README.md @@ -102,14 +102,22 @@ var ls = new SecureLS(); `Contructor` accepts a configurable `Object` with all three keys being optional. -| Config Keys | default | accepts | -| --------------------- | -------------- | ----------------------------------------- | -| **encodingType** | Base64 | `base64`/`aes`/`des`/`rabbit`/`rc4`/`''` | -| **isCompression** | `true` | `true`/`false` | -| **encryptionSecret** | PBKDF2 value | String | - -**Note:** `encryptionSecret` will only be used for the Encryption and Decryption of data with `AES`, `DES`, `RC4`, `RABBIT`, and the library will discard it if no encoding / Base64 encoding method is choosen. - +| Config Keys | default | accepts | +| ------------------------ | -------------- | ----------------------------------------- | +| **encodingType** | Base64 | `base64`/`aes`/`des`/`rabbit`/`rc4`/`''` | +| **isCompression** | `true` | `true`/`false` | +| **encryptionSecret** | PBKDF2 value | String | +| **encryptionNamespace** | null | String | + +**Note:** `encryptionSecret` will only be used for the Encryption and Decryption of data +with `AES`, `DES`, `RC4`, `RABBIT`, and the library will discard it if no encoding / Base64 +encoding method is choosen. + +`encryptionNamespace` is used to make multiple instances with different `encryptionSecret` +and/or different `encryptionSecret` possible. + + var ls1 = new SecureLS({encodingType: 'des', encryptionSecret: 'my-secret-key-1'}); + var ls2 = new SecureLS({encodingType: 'aes', encryptionSecret: 'my-secret-key-2'}); **Examples:** diff --git a/dist/secure-ls.d.ts b/dist/secure-ls.d.ts index cf8a7d2..0fe3b41 100644 --- a/dist/secure-ls.d.ts +++ b/dist/secure-ls.d.ts @@ -1,5 +1,5 @@ export interface SecureLS { - new(config?: { isCompression: boolean, encodingType: string, encryptionSecret: string , encryptionRealm: string }): SecureLS; + new(config?: { isCompression: boolean, encodingType: string, encryptionSecret: string , encryptionNamespace: string }): SecureLS; getEncryptionSecret(): string; get(key: string, isAllKeysData?: boolean): any; getDataFromLocalStorage(key: string): string | null; diff --git a/dist/secure-ls.js b/dist/secure-ls.js index 61091ac..cbe1793 100644 --- a/dist/secure-ls.js +++ b/dist/secure-ls.js @@ -122,7 +122,7 @@ return /******/ (function(modules) { // webpackBootstrap isCompression: true, encodingType: _constants2.default.EncrytionTypes.BASE64, encryptionSecret: config.encryptionSecret, - encryptionRealm: config.encryptionRealm + encryptionNamespace: config.encryptionNamespace }; this.config.isCompression = typeof config.isCompression !== 'undefined' ? config.isCompression : true; this.config.encodingType = typeof config.encodingType !== 'undefined' || config.encodingType === '' ? config.encodingType.toLowerCase() : _constants2.default.EncrytionTypes.BASE64; @@ -406,7 +406,7 @@ return /******/ (function(modules) { // webpackBootstrap }, { key: 'getMetaKey', value: function getMetaKey() { - return this.utils.metaKey + (this.config.encryptionRealm ? '__' + this.config.encryptionRealm : ''); + return this.utils.metaKey + (this.config.encryptionNamespace ? '__' + this.config.encryptionNamespace : ''); } }]); diff --git a/dist/secure-ls.js.map b/dist/secure-ls.js.map index 4a218db..eb5e846 100644 --- a/dist/secure-ls.js.map +++ b/dist/secure-ls.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 8ad1579ae007ab8ea3e4","webpack:///./src/index.js","webpack:///./src/utils.js","webpack:///./src/constants.js","webpack:///./src/WordArray.js","webpack:///./~/crypto-js/pbkdf2.js","webpack:///./~/crypto-js/core.js","webpack:///./~/crypto-js/sha1.js","webpack:///./~/crypto-js/hmac.js","webpack:///./src/enc-utf8.js","webpack:///./src/Base64.js","webpack:///./~/lz-string/libs/lz-string.js","webpack:///./~/crypto-js/aes.js","webpack:///./~/crypto-js/enc-base64.js","webpack:///./~/crypto-js/md5.js","webpack:///./~/crypto-js/evpkdf.js","webpack:///./~/crypto-js/cipher-core.js","webpack:///./~/crypto-js/tripledes.js","webpack:///./~/crypto-js/rabbit.js","webpack:///./~/crypto-js/rc4.js"],"names":["SecureLS","config","_name","utils","constants","Base64","LZString","AES","DES","RABBIT","RC4","enc","isCompression","encodingType","EncrytionTypes","BASE64","encryptionSecret","encryptionRealm","toLowerCase","ls","localStorage","init","metaData","getMetaData","WarningEnum","WarningTypes","_isBase64","_isBase64EncryptionType","_isAES","_isAESEncryptionType","_isDES","_isDESEncryptionType","_isRabbit","_isRabbitEncryptionType","_isRC4","_isRC4EncryptionType","_isCompression","_isDataCompressionEnabled","allKeys","keys","resetAllKeys","key","obj","getObjectFromKey","s","generateSecretKey","setMetaData","isAllKeysData","decodedData","jsonData","deCompressedData","bytes","data","is","warn","KEY_NOT_PROVIDED","getDataFromLocalStorage","decompressFromUTF16","decode","getEncryptionSecret","decrypt","toString","_Utf8","JSON","parse","e","Error","getItem","extractKeyNames","dataToStore","String","metaKey","isKeyPresent","addToKeysList","processData","setDataToLocalStorage","setItem","getAllKeys","length","META_KEY_REMOVE","removeFromKeysList","removeItem","i","clear","undefined","encodedData","compressedData","stringify","encode","encrypt","compressToUTF16","getMetaKey","get","secretPhrase","reason","DEFAULT_TEXT","console","salt","CryptoJSWordArray","random","key128Bits","keySize","k","map","keyData","isKeyAlreadyPresent","push","index","splice","module","exports","nBytes","words","r","mw","mz","mask","result","Math","rcache","_r","Set","sigBytes","Latin1","wordArray","latin1Chars","bite","fromCharCode","join","decodeURIComponent","escape","_keyStr","t","n","o","u","a","f","_utf8Encode","charCodeAt","isNaN","charAt","replace","indexOf","_utf8Decode","c2","c3"],"mappings":"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GAAgBA,QAAhB;AACD,IAFD,MAEO;AACL,UAAKA,QAAL,GAAgBV,MAAMlC,MAAN,GAAe,CAA/B;AACD;AACF,EARD;;AAUA+B,QAAOC,OAAP,GAAiBZ,iBAAjB,C;;;;;;AC9CA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,wBAAuB,OAAO;AAC9B,wBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA,wDAAuD,aAAa;AACpE,wDAAuD,+BAA+B;AACtF;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iCAAgC,gBAAgB;AAChD;AACA;;AAEA;AACA;;AAEA;AACA,qCAAoC,sBAAsB;AAC1D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC,iBAAgB,iBAAiB;AACjC,iBAAgB,OAAO;AACvB;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,aAAa;AACpE,wDAAuD,+BAA+B;AACtF;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;AChJD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,yBAAwB,OAAO;AAC/B;AACA,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,eAAc;;AAEd;AACA;AACA;AACA;AACA,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,eAAc;;AAEd;AACA;AACA;AACA,yBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;;AAEd;AACA;AACA;AACA,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA,oBAAmB,MAAM;AACzB,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,qBAAoB,MAAM;AAC1B,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,QAAQ;AAC5B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iCAAgC,kBAAkB;AAClD;AACA;AACA;AACA,eAAc;AACd;AACA,iCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;;AAEd,qCAAoC,YAAY;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,cAAc;AAC1C;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,kBAAkB;AAC9C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,cAAc;AAC1C;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,qBAAqB;AACjD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,qBAAoB,QAAQ;AAC5B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sCAAqC,sBAAsB;AAC3D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA,OAAM;;AAEN;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAU;;AAEV;;AAEA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACvvBD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA,mBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB;AAClB;AACA,mBAAkB;AAClB;AACA,mBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC,iBAAgB,iBAAiB;AACjC;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACrJD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,KAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAM;AACN,GAAE;;;AAGF,EAAC,G;;;;;;;;AC9ID;;;;;;AAMA,KAAIvF,MAAM,EAAV;;AAEAA,KAAIgH,MAAJ,GAAa;AACXpC,cAAW,mBAACqC,SAAD,EAAe;AACxB;AACA,SAAIZ,QAAQY,UAAUZ,KAAtB;AACA,SAAIU,WAAWE,UAAUF,QAAzB;AACA,SAAIG,cAAc,EAAlB;AAAA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G;AACH;AACA;AACA;AACA,+BAA8B;AAC9B,uCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAgB,0BAA0B;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,uBAAsB,oBAAoB;AAC1C;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,uBAAsB,MAAM;AAC5B;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,uBAAsB,oBAAoB;AAC1C;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,uBAAsB,OAAO;AAC7B;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,qBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,qBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,mBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc,oBAAoB;AAClC;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,4EAA2E,qCAAqC,EAAE;AAClH,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;;AAEhB,gBAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA,kDAAsB,iBAAiB,EAAE;AACzC,EAAC;AACD;AACA;;;;;;;ACpfA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAwB,SAAS;AACjC;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iCAAgC,gBAAgB;AAChD;AACA;AACA,mBAAkB;AAClB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oCAAmC,mBAAmB;AACtD;;AAEA;AACA;AACA,mBAAkB;AAClB;AACA;;AAEA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACvOD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,6BAA4B,cAAc;AAC1C;AACA;AACA;;AAEA;;AAEA,iCAAgC,sCAAsC;AACtE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qCAAoC,gBAAgB;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,WAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,uBAAsB,qBAAqB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACtID,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,yBAAwB,QAAQ;AAChC;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6BAA4B,OAAO;AACnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC,iBAAgB,iBAAiB;AACjC;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;AC3QD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,wBAAuB,OAAO;AAC9B,wBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA,wDAAuD,aAAa;AACpE,wDAAuD,+BAA+B;AACtF;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,gBAAgB;AAChD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC,iBAAgB,iBAAiB;AACjC,iBAAgB,OAAO;AACvB;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,aAAa;AACpE,wDAAuD,+BAA+B;AACtF;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACnID,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,wBAAuB,UAAU;AACjC;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA,+EAA8E,kBAAkB;AAChG;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA,+EAA8E,kBAAkB;AAChG;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA,yGAAwG,kBAAkB;AAC1H;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAU;;AAEV;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,OAAM;;AAEN;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,yBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,yBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA,6BAA4B,eAAe;AAC3C;AACA;AACA;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,6BAA4B,mBAAmB;AAC/C;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,wBAAuB,KAAK;AAC5B,wBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc;AACd;;AAEA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA,OAAM;;AAEN;AACA;AACA;AACA,oBAAmB,UAAU;AAC7B,oBAAmB,UAAU;AAC7B,oBAAmB,UAAU;AAC7B,oBAAmB,UAAU;AAC7B,oBAAmB,OAAO;AAC1B,oBAAmB,KAAK;AACxB,oBAAmB,QAAQ;AAC3B,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,aAAa;AACjC;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAAyC,qCAAqC;AAC9E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,UAAU;AACjC;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,iBAAiB;AACrC,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,kHAAiH,SAAS;AAC1H,kHAAiH,0CAA0C;AAC3J;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,oBAAoB;AACxC,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA,uHAAsH,0CAA0C;AAChK,oHAAmH,0CAA0C;AAC7J;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,qBAAoB,oBAAoB;AACxC,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,OAAO;AAC3B,qBAAoB,OAAO;AAC3B,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAsC,4BAA4B;;AAElE;AACA;AACA;;AAEA;AACA,0CAAyC,+BAA+B;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,IAAI;AAC3B;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,iBAAiB;AACrC,qBAAoB,OAAO;AAC3B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,0HAAyH,kCAAkC;AAC3J;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,oBAAoB;AACxC,qBAAoB,OAAO;AAC3B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA,+HAA8H,kCAAkC;AAChK,4HAA2H,kCAAkC;AAC7J;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAM;AACN,GAAE;;;AAGF,EAAC,G;;;;;;AC12BD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA;;AAEA;AACA;AACA,mCAAkC,cAAc;AAChD;AACA;;AAEA;AACA;;AAEA;AACA,iCAAgC,QAAQ;AACxC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAgC,OAAO;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,YAAY;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAgC,OAAO;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;;AAEA;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,WAAU;;AAEV;;AAEA;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACjwBD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B,OAAO;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,6BAA4B,OAAO;AACnC;AACA;;AAEA;AACA,6BAA4B,OAAO;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,OAAO;AACvC;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAA4B,OAAO;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA,yBAAwB,OAAO;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAwB,OAAO;AAC/B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;AC/LD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,SAAS;AACrC;AACA;;AAEA;AACA,oCAAmC,SAAS;AAC5C;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAwB,OAAO;AAC/B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B;AACA;AACA;AACA,WAAU;;AAEV;AACA;;AAEA;AACA,yCAAwC,OAAO;AAC/C;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G","file":"secure-ls.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SecureLS\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SecureLS\"] = factory();\n\telse\n\t\troot[\"SecureLS\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 8ad1579ae007ab8ea3e4\n **/","import utils from './utils';\r\nimport constants from './constants';\r\nimport enc from './enc-utf8';\r\n\r\nimport Base64 from './Base64';\r\nimport LZString from 'lz-string/libs/lz-string';\r\nimport AES from 'crypto-js/aes';\r\nimport DES from 'crypto-js/tripledes';\r\nimport RABBIT from 'crypto-js/rabbit';\r\nimport RC4 from 'crypto-js/rc4';\r\n\r\nexport default class SecureLS {\r\n constructor(config) {\r\n config = config || {};\r\n this._name = 'secure-ls';\r\n this.utils = utils;\r\n this.constants = constants;\r\n this.Base64 = Base64;\r\n this.LZString = LZString;\r\n this.AES = AES;\r\n this.DES = DES;\r\n this.RABBIT = RABBIT;\r\n this.RC4 = RC4;\r\n this.enc = enc;\r\n\r\n this.config = {\r\n isCompression: true,\r\n encodingType: constants.EncrytionTypes.BASE64,\r\n encryptionSecret: config.encryptionSecret,\r\n encryptionRealm: config.encryptionRealm\r\n };\r\n this.config.isCompression = typeof config.isCompression !== 'undefined' ?\r\n config.isCompression :\r\n true;\r\n this.config.encodingType = (typeof config.encodingType !== 'undefined' || config.encodingType === '') ?\r\n config.encodingType.toLowerCase() :\r\n constants.EncrytionTypes.BASE64;\r\n\r\n this.ls = localStorage;\r\n this.init();\r\n };\r\n\r\n init() {\r\n let metaData = this.getMetaData();\r\n\r\n this.WarningEnum = this.constants.WarningEnum;\r\n this.WarningTypes = this.constants.WarningTypes;\r\n this.EncrytionTypes = this.constants.EncrytionTypes;\r\n\r\n this._isBase64 = this._isBase64EncryptionType();\r\n this._isAES = this._isAESEncryptionType();\r\n this._isDES = this._isDESEncryptionType();\r\n this._isRabbit = this._isRabbitEncryptionType();\r\n this._isRC4 = this._isRC4EncryptionType();\r\n this._isCompression = this._isDataCompressionEnabled();\r\n\r\n // fill the already present keys to the list of keys being used by secure-ls\r\n this.utils.allKeys = metaData.keys || this.resetAllKeys();\r\n };\r\n\r\n _isBase64EncryptionType() {\r\n return Base64 &&\r\n (typeof this.config.encodingType === 'undefined' ||\r\n this.config.encodingType === this.constants.EncrytionTypes.BASE64);\r\n };\r\n\r\n _isAESEncryptionType() {\r\n return AES &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.AES);\r\n };\r\n\r\n _isDESEncryptionType() {\r\n return DES &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.DES);\r\n };\r\n\r\n _isRabbitEncryptionType() {\r\n return RABBIT &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.RABBIT);\r\n };\r\n\r\n _isRC4EncryptionType() {\r\n return RC4 &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.RC4);\r\n };\r\n\r\n _isDataCompressionEnabled() {\r\n return this.config.isCompression;\r\n }\r\n\r\n getEncryptionSecret(key) {\r\n let metaData = this.getMetaData();\r\n let obj = this.utils.getObjectFromKey(metaData.keys, key);\r\n\r\n if (!obj) {\r\n return;\r\n }\r\n\r\n if (this._isAES ||\r\n this._isDES ||\r\n this._isRabbit ||\r\n this._isRC4\r\n ) {\r\n if (typeof this.config.encryptionSecret === 'undefined') {\r\n this.utils.encryptionSecret = obj.s;\r\n\r\n if (!this.utils.encryptionSecret) {\r\n this.utils.encryptionSecret = this.utils.generateSecretKey();\r\n this.setMetaData();\r\n }\r\n } else {\r\n this.utils.encryptionSecret = this.config.encryptionSecret || obj.s || '';\r\n }\r\n }\r\n }\r\n\r\n get(key, isAllKeysData) {\r\n let decodedData = '',\r\n jsonData = '',\r\n deCompressedData,\r\n bytes,\r\n data;\r\n\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return jsonData;\r\n }\r\n\r\n data = this.getDataFromLocalStorage(key);\r\n\r\n if (!data) {\r\n return jsonData;\r\n }\r\n\r\n deCompressedData = data; // saves else\r\n if (this._isCompression || isAllKeysData) { // meta data always compressed\r\n deCompressedData = LZString.decompressFromUTF16(data);\r\n }\r\n\r\n decodedData = deCompressedData; // saves else\r\n if (this._isBase64 || isAllKeysData) { // meta data always Base64\r\n decodedData = Base64.decode(deCompressedData);\r\n } else {\r\n this.getEncryptionSecret(key);\r\n if (this._isAES) {\r\n bytes = AES.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isDES) {\r\n bytes = DES.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isRabbit) {\r\n bytes = RABBIT.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isRC4) {\r\n bytes = RC4.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n }\r\n\r\n if (bytes) {\r\n decodedData = bytes.toString(enc._Utf8);\r\n }\r\n }\r\n\r\n try {\r\n jsonData = JSON.parse(decodedData);\r\n } catch (e) {\r\n throw new Error('Could not parse JSON');\r\n }\r\n\r\n return jsonData;\r\n };\r\n\r\n getDataFromLocalStorage(key) {\r\n return this.ls.getItem(key, true);\r\n };\r\n\r\n getAllKeys() {\r\n let data = this.getMetaData();\r\n\r\n return this.utils.extractKeyNames(data) || [];\r\n };\r\n\r\n set(key, data) {\r\n let dataToStore = '';\r\n\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return;\r\n }\r\n\r\n this.getEncryptionSecret(key);\r\n\r\n // add key(s) to Array if not already added, only for keys other than meta key\r\n if (!(String(key) === String(this.utils.metaKey))) {\r\n if (!this.utils.isKeyPresent(key)) {\r\n this.utils.addToKeysList(key);\r\n this.setMetaData();\r\n }\r\n }\r\n\r\n dataToStore = this.processData(data);\r\n // Store the data to localStorage\r\n this.setDataToLocalStorage(key, dataToStore);\r\n };\r\n\r\n setDataToLocalStorage(key, data) {\r\n this.ls.setItem(key, data);\r\n };\r\n\r\n remove(key) {\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return;\r\n }\r\n\r\n if (key === this.utils.metaKey && this.getAllKeys().length) {\r\n this.utils.warn(this.WarningEnum.META_KEY_REMOVE);\r\n return;\r\n }\r\n\r\n if (this.utils.isKeyPresent(key)) {\r\n this.utils.removeFromKeysList(key);\r\n this.setMetaData();\r\n }\r\n this.ls.removeItem(key);\r\n };\r\n\r\n removeAll() {\r\n let keys, i;\r\n\r\n keys = this.getAllKeys();\r\n for (i = 0; i < keys.length; i++) {\r\n this.ls.removeItem(keys[i]);\r\n }\r\n this.ls.removeItem(this.utils.metaKey);\r\n\r\n this.resetAllKeys();\r\n };\r\n\r\n clear() {\r\n this.ls.clear();\r\n this.resetAllKeys();\r\n };\r\n\r\n resetAllKeys() {\r\n this.utils.allKeys = [];\r\n return [];\r\n }\r\n\r\n processData(data, isAllKeysData) {\r\n if (data === null || data === undefined || data === '') {\r\n return '';\r\n }\r\n\r\n let jsonData, encodedData, compressedData;\r\n\r\n try {\r\n jsonData = JSON.stringify(data);\r\n } catch (e) {\r\n throw new Error('Could not stringify data.');\r\n }\r\n\r\n // Encode Based on encoding type\r\n // If not set, default to Base64 for securing data\r\n encodedData = jsonData;\r\n if (this._isBase64 || isAllKeysData) {\r\n encodedData = Base64.encode(jsonData);\r\n } else {\r\n if (this._isAES) {\r\n encodedData = AES.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isDES) {\r\n encodedData = DES.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isRabbit) {\r\n encodedData = RABBIT.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isRC4) {\r\n encodedData = RC4.encrypt(jsonData, this.utils.encryptionSecret);\r\n }\r\n\r\n encodedData = encodedData && encodedData.toString();\r\n }\r\n\r\n // Compress data if set to true\r\n compressedData = encodedData;\r\n if (this._isCompression || isAllKeysData) {\r\n compressedData = LZString.compressToUTF16(encodedData);\r\n }\r\n\r\n return compressedData;\r\n };\r\n\r\n setMetaData() {\r\n let dataToStore = this.processData({\r\n keys: this.utils.allKeys\r\n }, true);\r\n\r\n // Store the data to localStorage\r\n this.setDataToLocalStorage(this.getMetaKey(), dataToStore);\r\n };\r\n\r\n getMetaData() {\r\n return this.get(this.getMetaKey(), true) || {};\r\n };\r\n\r\n getMetaKey() {\r\n return this.utils.metaKey + (this.config.encryptionRealm ? '__' + this.config.encryptionRealm : '');\r\n }\r\n\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/index.js\n **/","import constants from './constants';\r\nimport CryptoJSWordArray from './WordArray';\r\nimport PBKDF2 from 'crypto-js/pbkdf2';\r\n\r\nlet utils = {\r\n metaKey: '_secure__ls__metadata',\r\n encryptionSecret: '',\r\n secretPhrase: 's3cr3t$#@135^&*246',\r\n allKeys: [],\r\n is: function (key) {\r\n if (key) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n warn: function (reason) {\r\n reason = reason ? reason : constants.WarningEnum.DEFAULT_TEXT;\r\n console.warn(constants.WarningTypes[reason]);\r\n },\r\n generateSecretKey: function () {\r\n let salt = CryptoJSWordArray.random(128 / 8);\r\n let key128Bits = PBKDF2(this.secretPhrase, salt, {keySize: 128 / 32 });\r\n\r\n return key128Bits && key128Bits.toString();\r\n },\r\n getObjectFromKey: function (data, key) {\r\n if (!data || !data.length) {\r\n return {};\r\n }\r\n\r\n let i, obj = {};\r\n\r\n for (i = 0; i < data.length; i++) {\r\n if (data[i].k === key) {\r\n obj = data[i];\r\n break;\r\n }\r\n }\r\n\r\n return obj;\r\n },\r\n extractKeyNames: function (data) {\r\n if (!data || !data.keys || !data.keys.length) {\r\n return [];\r\n }\r\n\r\n return data.keys.map(keyData => {\r\n return keyData.k;\r\n });\r\n },\r\n getAllKeys: function () {\r\n return this.allKeys;\r\n },\r\n isKeyPresent: function (key) {\r\n let isKeyAlreadyPresent = false;\r\n\r\n for (let i = 0; i < this.allKeys.length; i++) {\r\n if (String(this.allKeys[i].k) === String(key)) {\r\n isKeyAlreadyPresent = true; // found\r\n break;\r\n }\r\n }\r\n\r\n return isKeyAlreadyPresent;\r\n },\r\n addToKeysList: function (key) {\r\n this.allKeys.push({\r\n k: key,\r\n s: this.encryptionSecret\r\n });\r\n },\r\n removeFromKeysList: function (key) {\r\n let i, index = -1;\r\n\r\n for (i = 0; i < this.allKeys.length; i++) {\r\n if (this.allKeys[i].k === key) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n if (index !== -1) {\r\n this.allKeys.splice(index, 1);\r\n }\r\n return index;\r\n }\r\n};\r\n\r\nmodule.exports = utils;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/utils.js\n **/","let WarningEnum = {\r\n KEY_NOT_PROVIDED: 'keyNotProvided',\r\n META_KEY_REMOVE: 'metaKeyRemove',\r\n DEFAULT_TEXT: 'defaultText'\r\n};\r\n\r\nlet WarningTypes = {};\r\n\r\nWarningTypes[WarningEnum.KEY_NOT_PROVIDED] = 'Secure LS: Key not provided. Aborting operation!';\r\nWarningTypes[WarningEnum.META_KEY_REMOVE] = `Secure LS: Meta key can not be removed\r\nunless all keys created by Secure LS are removed!`;\r\nWarningTypes[WarningEnum.DEFAULT_TEXT] = `Unexpected output`;\r\n\r\nlet constants = {\r\n WarningEnum: WarningEnum,\r\n WarningTypes: WarningTypes,\r\n EncrytionTypes: {\r\n BASE64: 'base64',\r\n AES: 'aes',\r\n DES: 'des',\r\n RABBIT: 'rabbit',\r\n RC4: 'rc4'\r\n }\r\n};\r\n\r\nmodule.exports = constants;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/constants.js\n **/","/*\r\n ES6 compatible port of CryptoJS - WordArray for PBKDF2 password key generation\r\n\r\n Source: https://github.com/brix/crypto-js\r\n LICENSE: MIT\r\n */\r\n\r\nlet CryptoJSWordArray = {};\r\n\r\nCryptoJSWordArray.random = function (nBytes) {\r\n let words = [];\r\n let r = (function (mw) {\r\n let mz = 0x3ade68b1;\r\n let mask = 0xffffffff;\r\n\r\n return function () {\r\n mz = (0x9069 * (mz & 0xFFFF) + (mz >> 0x10)) & mask;\r\n mw = (0x4650 * (mw & 0xFFFF) + (mw >> 0x10)) & mask;\r\n let result = ((mz << 0x10) + mw) & mask;\r\n\r\n result /= 0x100000000;\r\n result += 0.5;\r\n return result * (Math.random() > 0.5 ? 1 : -1);\r\n };\r\n });\r\n\r\n for (let i = 0, rcache; i < nBytes; i += 4) {\r\n let _r = r((rcache || Math.random()) * 0x100000000);\r\n\r\n rcache = _r() * 0x3ade67b7;\r\n words.push((_r() * 0x100000000) | 0);\r\n }\r\n\r\n return new this.Set(words, nBytes);\r\n};\r\n\r\nCryptoJSWordArray.Set = function (words, sigBytes) {\r\n words = this.words = words || [];\r\n\r\n if (sigBytes !== undefined) {\r\n this.sigBytes = sigBytes;\r\n } else {\r\n this.sigBytes = words.length * 8;\r\n }\r\n};\r\n\r\nmodule.exports = CryptoJSWordArray;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/WordArray.js\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/pbkdf2.js\n ** module id = 4\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t /*\n\t * Local polyfil of Object.create\n\t */\n\t var create = Object.create || (function () {\n\t function F() {};\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }())\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var i = 0; i < thatSigBytes; i += 4) {\n\t thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t var r = (function (m_w) {\n\t var m_w = m_w;\n\t var m_z = 0x3ade68b1;\n\t var mask = 0xffffffff;\n\n\t return function () {\n\t m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t var result = ((m_z << 0x10) + m_w) & mask;\n\t result /= 0x100000000;\n\t result += 0.5;\n\t return result * (Math.random() > .5 ? 1 : -1);\n\t }\n\t });\n\n\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t var _r = r((rcache || Math.random()) * 0x100000000);\n\n\t rcache = _r() * 0x3ade67b7;\n\t words.push((_r() * 0x100000000) | 0);\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t var processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/core.js\n ** module id = 5\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/sha1.js\n ** module id = 6\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/hmac.js\n ** module id = 7\n ** module chunks = 0\n **/","/*\r\n ES6 compatible port of CryptoJS - encoding\r\n\r\n Source: https://github.com/brix/crypto-js\r\n LICENSE: MIT\r\n */\r\nlet enc = {};\r\n\r\nenc.Latin1 = {\r\n stringify: (wordArray) => {\r\n // Shortcuts\r\n let words = wordArray.words;\r\n let sigBytes = wordArray.sigBytes;\r\n let latin1Chars = [], i, bite;\r\n\r\n // Convert\r\n for (i = 0; i < sigBytes; i++) {\r\n bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n latin1Chars.push(String.fromCharCode(bite));\r\n }\r\n\r\n return latin1Chars.join('');\r\n }\r\n};\r\n\r\nenc._Utf8 = {\r\n stringify: (wordArray) => {\r\n try {\r\n return decodeURIComponent(escape(enc.Latin1.stringify(wordArray)));\r\n } catch (e) {\r\n throw new Error('Malformed UTF-8 data');\r\n }\r\n }\r\n};\r\n\r\nmodule.exports = enc;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/enc-utf8.js\n **/","let Base64 = {\r\n _keyStr: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\r\n encode: function (e) {\r\n let t = '';\r\n let n, r, i, s, o, u, a;\r\n let f = 0;\r\n\r\n e = Base64._utf8Encode(e);\r\n while (f < e.length) {\r\n n = e.charCodeAt(f++);\r\n r = e.charCodeAt(f++);\r\n i = e.charCodeAt(f++);\r\n s = n >> 2;\r\n o = (n & 3) << 4 | r >> 4;\r\n u = (r & 15) << 2 | i >> 6;\r\n a = i & 63;\r\n if (isNaN(r)) {\r\n u = a = 64;\r\n } else if (isNaN(i)) {\r\n a = 64;\r\n }\r\n t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a);\r\n }\r\n return t;\r\n },\r\n decode: function (e) {\r\n let t = '';\r\n let n, r, i;\r\n let s, o, u, a;\r\n let f = 0;\r\n\r\n e = e.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\r\n while (f < e.length) {\r\n s = this._keyStr.indexOf(e.charAt(f++));\r\n o = this._keyStr.indexOf(e.charAt(f++));\r\n u = this._keyStr.indexOf(e.charAt(f++));\r\n a = this._keyStr.indexOf(e.charAt(f++));\r\n n = s << 2 | o >> 4;\r\n r = (o & 15) << 4 | u >> 2;\r\n i = (u & 3) << 6 | a;\r\n t = t + String.fromCharCode(n);\r\n if (u !== 64) {\r\n t = t + String.fromCharCode(r);\r\n }\r\n if (a !== 64) {\r\n t = t + String.fromCharCode(i);\r\n }\r\n }\r\n t = Base64._utf8Decode(t);\r\n return t;\r\n },\r\n _utf8Encode: function (e) {\r\n e = e.replace(/\\r\\n/g, '\\n');\r\n let t = '';\r\n\r\n for (let n = 0; n < e.length; n++) {\r\n let r = e.charCodeAt(n);\r\n\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n } else if (r > 127 && r < 2048) {\r\n t += String.fromCharCode(r >> 6 | 192);\r\n t += String.fromCharCode(r & 63 | 128);\r\n } else {\r\n t += String.fromCharCode(r >> 12 | 224);\r\n t += String.fromCharCode(r >> 6 & 63 | 128);\r\n t += String.fromCharCode(r & 63 | 128);\r\n }\r\n }\r\n return t;\r\n },\r\n _utf8Decode: function (e) {\r\n let t = '';\r\n let n = 0;\r\n let r, c2, c3;\r\n\r\n r = c2 = 0;\r\n while (n < e.length) {\r\n r = e.charCodeAt(n);\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n n++;\r\n } else if (r > 191 && r < 224) {\r\n c2 = e.charCodeAt(n + 1);\r\n t += String.fromCharCode((r & 31) << 6 | c2 & 63);\r\n n += 2;\r\n } else {\r\n c2 = e.charCodeAt(n + 1);\r\n c3 = e.charCodeAt(n + 2);\r\n t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\r\n n += 3;\r\n }\r\n }\r\n return t;\r\n }\r\n};\r\n\r\nmodule.exports = Base64;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/Base64.js\n **/","// Copyright (c) 2013 Pieroxy \n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lz-string/libs/lz-string.js\n ** module id = 10\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/aes.js\n ** module id = 11\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/enc-base64.js\n ** module id = 12\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/md5.js\n ** module id = 13\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t var block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/evpkdf.js\n ** module id = 14\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t var block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t var block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t var modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t var modeCreator = mode.createDecryptor;\n\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t var wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t var salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/cipher-core.js\n ** module id = 15\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));\n\t this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));\n\t this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/tripledes.js\n ** module id = 16\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/rabbit.js\n ** module id = 17\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/rc4.js\n ** module id = 18\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 69814dd7a1fad83615ea","webpack:///./src/index.js","webpack:///./src/utils.js","webpack:///./src/constants.js","webpack:///./src/WordArray.js","webpack:///./~/crypto-js/pbkdf2.js","webpack:///./~/crypto-js/core.js","webpack:///./~/crypto-js/sha1.js","webpack:///./~/crypto-js/hmac.js","webpack:///./src/enc-utf8.js","webpack:///./src/Base64.js","webpack:///./~/lz-string/libs/lz-string.js","webpack:///./~/crypto-js/aes.js","webpack:///./~/crypto-js/enc-base64.js","webpack:///./~/crypto-js/md5.js","webpack:///./~/crypto-js/evpkdf.js","webpack:///./~/crypto-js/cipher-core.js","webpack:///./~/crypto-js/tripledes.js","webpack:///./~/crypto-js/rabbit.js","webpack:///./~/crypto-js/rc4.js"],"names":["SecureLS","config","_name","utils","constants","Base64","LZString","AES","DES","RABBIT","RC4","enc","isCompression","encodingType","EncrytionTypes","BASE64","encryptionSecret","encryptionNamespace","toLowerCase","ls","localStorage","init","metaData","getMetaData","WarningEnum","WarningTypes","_isBase64","_isBase64EncryptionType","_isAES","_isAESEncryptionType","_isDES","_isDESEncryptionType","_isRabbit","_isRabbitEncryptionType","_isRC4","_isRC4EncryptionType","_isCompression","_isDataCompressionEnabled","allKeys","keys","resetAllKeys","key","obj","getObjectFromKey","s","generateSecretKey","setMetaData","isAllKeysData","decodedData","jsonData","deCompressedData","bytes","data","is","warn","KEY_NOT_PROVIDED","getDataFromLocalStorage","decompressFromUTF16","decode","getEncryptionSecret","decrypt","toString","_Utf8","JSON","parse","e","Error","getItem","extractKeyNames","dataToStore","String","metaKey","isKeyPresent","addToKeysList","processData","setDataToLocalStorage","setItem","getAllKeys","length","META_KEY_REMOVE","removeFromKeysList","removeItem","i","clear","undefined","encodedData","compressedData","stringify","encode","encrypt","compressToUTF16","getMetaKey","get","secretPhrase","reason","DEFAULT_TEXT","console","salt","CryptoJSWordArray","random","key128Bits","keySize","k","map","keyData","isKeyAlreadyPresent","push","index","splice","module","exports","nBytes","words","r","mw","mz","mask","result","Math","rcache","_r","Set","sigBytes","Latin1","wordArray","latin1Chars","bite","fromCharCode","join","decodeURIComponent","escape","_keyStr","t","n","o","u","a","f","_utf8Encode","charCodeAt","isNaN","charAt","replace","indexOf","_utf8Decode","c2","c3"],"mappings":"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AL,GAAgBA,QAAhB;AACD,IAFD,MAEO;AACL,UAAKA,QAAL,GAAgBV,MAAMlC,MAAN,GAAe,CAA/B;AACD;AACF,EARD;;AAUA+B,QAAOC,OAAP,GAAiBZ,iBAAjB,C;;;;;;AC9CA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,wBAAuB,OAAO;AAC9B,wBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA,wDAAuD,aAAa;AACpE,wDAAuD,+BAA+B;AACtF;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iCAAgC,gBAAgB;AAChD;AACA;;AAEA;AACA;;AAEA;AACA,qCAAoC,sBAAsB;AAC1D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC,iBAAgB,iBAAiB;AACjC,iBAAgB,OAAO;AACvB;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,aAAa;AACpE,wDAAuD,+BAA+B;AACtF;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;AChJD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,yBAAwB,OAAO;AAC/B;AACA,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,eAAc;;AAEd;AACA;AACA;AACA;AACA,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAc;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA,eAAc;;AAEd;AACA;AACA;AACA,yBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA,sBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;;AAEd;AACA;AACA;AACA,0BAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA,oBAAmB,MAAM;AACzB,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,qBAAoB,MAAM;AAC1B,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,QAAQ;AAC5B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iCAAgC,kBAAkB;AAClD;AACA;AACA;AACA,eAAc;AACd;AACA,iCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;;AAEd,qCAAoC,YAAY;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,cAAc;AAC1C;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,kBAAkB;AAC9C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,cAAc;AAC1C;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,qBAAqB;AACjD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA,qBAAoB,QAAQ;AAC5B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sCAAqC,sBAAsB;AAC3D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA,OAAM;;AAEN;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAU;;AAEV;;AAEA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACvvBD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA,mBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAkB;AAClB;AACA,mBAAkB;AAClB;AACA,mBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC,iBAAgB,iBAAiB;AACjC;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACrJD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,KAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAM;AACN,GAAE;;;AAGF,EAAC,G;;;;;;;;AC9ID;;;;;;AAMA,KAAIvF,MAAM,EAAV;;AAEAA,KAAIgH,MAAJ,GAAa;AACXpC,cAAW,mBAACqC,SAAD,EAAe;AACxB;AACA,SAAIZ,QAAQY,UAAUZ,KAAtB;AACA,SAAIU,WAAWE,UAAUF,QAAzB;AACA,SAAIG,cAAc,EAAlB;A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IAAG;AACH;AACA;AACA;AACA,+BAA8B;AAC9B,uCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAgB,0BAA0B;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA,uBAAsB,oBAAoB;AAC1C;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,uBAAsB,MAAM;AAC5B;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA,YAAW;AACX;AACA,uBAAsB,oBAAoB;AAC1C;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA,uBAAsB,OAAO;AAC7B;AACA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,qBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,qBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,mBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc,oBAAoB;AAClC;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA,4EAA2E,qCAAqC,EAAE;AAClH,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;;AAEhB,gBAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAO;AACP;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA,kDAAsB,iBAAiB,EAAE;AACzC,EAAC;AACD;AACA;;;;;;;ACpfA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yBAAwB,SAAS;AACjC;AACA;AACA,eAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iCAAgC,gBAAgB;AAChD;AACA;AACA,mBAAkB;AAClB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,uBAAsB;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oCAAmC,mBAAmB;AACtD;;AAEA;AACA;AACA,mBAAkB;AAClB;AACA;;AAEA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACvOD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,6BAA4B,cAAc;AAC1C;AACA;AACA;;AAEA;;AAEA,iCAAgC,sCAAsC;AACtE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qCAAoC,gBAAgB;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,WAAU;;AAEV;AACA;;AAEA;AACA;AACA;AACA,uBAAsB,qBAAqB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACtID,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,yBAAwB,QAAQ;AAChC;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6BAA4B,OAAO;AACnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC,iBAAgB,iBAAiB;AACjC;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;AC3QD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B,wBAAuB,OAAO;AAC9B,wBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA,wDAAuD,aAAa;AACpE,wDAAuD,+BAA+B;AACtF;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,gBAAgB;AAChD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA,iBAAgB,iBAAiB;AACjC,iBAAgB,iBAAiB;AACjC,iBAAgB,OAAO;AACvB;AACA,kBAAiB,UAAU;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,wDAAuD,aAAa;AACpE,wDAAuD,+BAA+B;AACtF;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACnID,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,wBAAuB,UAAU;AACjC;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA,+EAA8E,kBAAkB;AAChG;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA,+EAA8E,kBAAkB;AAChG;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA,yGAAwG,kBAAkB;AAC1H;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAU;;AAEV;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,OAAM;;AAEN;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,yBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,MAAM;AAC9B,yBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA,6BAA4B,eAAe;AAC3C;AACA;AACA;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,6BAA4B,mBAAmB;AAC/C;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,wBAAuB,KAAK;AAC5B,wBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc;AACd;;AAEA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA,OAAM;;AAEN;AACA;AACA;AACA,oBAAmB,UAAU;AAC7B,oBAAmB,UAAU;AAC7B,oBAAmB,UAAU;AAC7B,oBAAmB,UAAU;AAC7B,oBAAmB,OAAO;AAC1B,oBAAmB,KAAK;AACxB,oBAAmB,QAAQ;AAC3B,oBAAmB,OAAO;AAC1B,oBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,aAAa;AACjC;AACA,sBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAc;AACd;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAAyC,qCAAqC;AAC9E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,UAAU;AACjC;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,iBAAiB;AACrC,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,kHAAiH,SAAS;AAC1H,kHAAiH,0CAA0C;AAC3J;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,oBAAoB;AACxC,qBAAoB,UAAU;AAC9B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA,uHAAsH,0CAA0C;AAChK,oHAAmH,0CAA0C;AAC7J;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,qBAAoB,oBAAoB;AACxC,qBAAoB,UAAU;AAC9B;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,OAAO;AAC3B,qBAAoB,OAAO;AAC3B,qBAAoB,iBAAiB;AACrC;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAsC,4BAA4B;;AAElE;AACA;AACA;;AAEA;AACA,0CAAyC,+BAA+B;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,IAAI;AAC3B;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,iBAAiB;AACrC,qBAAoB,OAAO;AAC3B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,aAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,0HAAyH,kCAAkC;AAC3J;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,WAAU;;AAEV;AACA;AACA;AACA,qBAAoB,OAAO;AAC3B,qBAAoB,oBAAoB;AACxC,qBAAoB,OAAO;AAC3B,qBAAoB,OAAO;AAC3B;AACA,sBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA,+HAA8H,kCAAkC;AAChK,4HAA2H,kCAAkC;AAC7J;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAM;AACN,GAAE;;;AAGF,EAAC,G;;;;;;AC12BD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA;;AAEA;AACA;AACA,mCAAkC,cAAc;AAChD;AACA;;AAEA;AACA;;AAEA;AACA,iCAAgC,QAAQ;AACxC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAgC,OAAO;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,QAAQ;AACpC;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,YAAY;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAgC,OAAO;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;;AAEA;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;AACA;AACA,WAAU;;AAEV;;AAEA;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;ACjwBD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA4B,OAAO;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,6BAA4B,OAAO;AACnC;AACA;;AAEA;AACA,6BAA4B,OAAO;AACnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,OAAO;AACvC;AACA;AACA;AACA,WAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAA4B,OAAO;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAU;;AAEV;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA,yBAAwB,OAAO;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAwB,OAAO;AAC/B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G;;;;;;AC/LD,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA4B,SAAS;AACrC;AACA;;AAEA;AACA,oCAAmC,SAAS;AAC5C;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAU;;AAEV;AACA;AACA,WAAU;;AAEV;;AAEA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAwB,OAAO;AAC/B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB,OAAO;AAC9B;AACA;AACA;AACA,WAAU;;AAEV;AACA;;AAEA;AACA,yCAAwC,OAAO;AAC/C;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;;AAGF;;AAEA,EAAC,G","file":"secure-ls.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SecureLS\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SecureLS\"] = factory();\n\telse\n\t\troot[\"SecureLS\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 69814dd7a1fad83615ea\n **/","import utils from './utils';\r\nimport constants from './constants';\r\nimport enc from './enc-utf8';\r\n\r\nimport Base64 from './Base64';\r\nimport LZString from 'lz-string/libs/lz-string';\r\nimport AES from 'crypto-js/aes';\r\nimport DES from 'crypto-js/tripledes';\r\nimport RABBIT from 'crypto-js/rabbit';\r\nimport RC4 from 'crypto-js/rc4';\r\n\r\nexport default class SecureLS {\r\n constructor(config) {\r\n config = config || {};\r\n this._name = 'secure-ls';\r\n this.utils = utils;\r\n this.constants = constants;\r\n this.Base64 = Base64;\r\n this.LZString = LZString;\r\n this.AES = AES;\r\n this.DES = DES;\r\n this.RABBIT = RABBIT;\r\n this.RC4 = RC4;\r\n this.enc = enc;\r\n\r\n this.config = {\r\n isCompression: true,\r\n encodingType: constants.EncrytionTypes.BASE64,\r\n encryptionSecret: config.encryptionSecret,\r\n encryptionNamespace: config.encryptionNamespace\r\n };\r\n this.config.isCompression = typeof config.isCompression !== 'undefined' ?\r\n config.isCompression :\r\n true;\r\n this.config.encodingType = (typeof config.encodingType !== 'undefined' || config.encodingType === '') ?\r\n config.encodingType.toLowerCase() :\r\n constants.EncrytionTypes.BASE64;\r\n\r\n this.ls = localStorage;\r\n this.init();\r\n };\r\n\r\n init() {\r\n let metaData = this.getMetaData();\r\n\r\n this.WarningEnum = this.constants.WarningEnum;\r\n this.WarningTypes = this.constants.WarningTypes;\r\n this.EncrytionTypes = this.constants.EncrytionTypes;\r\n\r\n this._isBase64 = this._isBase64EncryptionType();\r\n this._isAES = this._isAESEncryptionType();\r\n this._isDES = this._isDESEncryptionType();\r\n this._isRabbit = this._isRabbitEncryptionType();\r\n this._isRC4 = this._isRC4EncryptionType();\r\n this._isCompression = this._isDataCompressionEnabled();\r\n\r\n // fill the already present keys to the list of keys being used by secure-ls\r\n this.utils.allKeys = metaData.keys || this.resetAllKeys();\r\n };\r\n\r\n _isBase64EncryptionType() {\r\n return Base64 &&\r\n (typeof this.config.encodingType === 'undefined' ||\r\n this.config.encodingType === this.constants.EncrytionTypes.BASE64);\r\n };\r\n\r\n _isAESEncryptionType() {\r\n return AES &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.AES);\r\n };\r\n\r\n _isDESEncryptionType() {\r\n return DES &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.DES);\r\n };\r\n\r\n _isRabbitEncryptionType() {\r\n return RABBIT &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.RABBIT);\r\n };\r\n\r\n _isRC4EncryptionType() {\r\n return RC4 &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.RC4);\r\n };\r\n\r\n _isDataCompressionEnabled() {\r\n return this.config.isCompression;\r\n }\r\n\r\n getEncryptionSecret(key) {\r\n let metaData = this.getMetaData();\r\n let obj = this.utils.getObjectFromKey(metaData.keys, key);\r\n\r\n if (!obj) {\r\n return;\r\n }\r\n\r\n if (this._isAES ||\r\n this._isDES ||\r\n this._isRabbit ||\r\n this._isRC4\r\n ) {\r\n if (typeof this.config.encryptionSecret === 'undefined') {\r\n this.utils.encryptionSecret = obj.s;\r\n\r\n if (!this.utils.encryptionSecret) {\r\n this.utils.encryptionSecret = this.utils.generateSecretKey();\r\n this.setMetaData();\r\n }\r\n } else {\r\n this.utils.encryptionSecret = this.config.encryptionSecret || obj.s || '';\r\n }\r\n }\r\n }\r\n\r\n get(key, isAllKeysData) {\r\n let decodedData = '',\r\n jsonData = '',\r\n deCompressedData,\r\n bytes,\r\n data;\r\n\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return jsonData;\r\n }\r\n\r\n data = this.getDataFromLocalStorage(key);\r\n\r\n if (!data) {\r\n return jsonData;\r\n }\r\n\r\n deCompressedData = data; // saves else\r\n if (this._isCompression || isAllKeysData) { // meta data always compressed\r\n deCompressedData = LZString.decompressFromUTF16(data);\r\n }\r\n\r\n decodedData = deCompressedData; // saves else\r\n if (this._isBase64 || isAllKeysData) { // meta data always Base64\r\n decodedData = Base64.decode(deCompressedData);\r\n } else {\r\n this.getEncryptionSecret(key);\r\n if (this._isAES) {\r\n bytes = AES.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isDES) {\r\n bytes = DES.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isRabbit) {\r\n bytes = RABBIT.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isRC4) {\r\n bytes = RC4.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n }\r\n\r\n if (bytes) {\r\n decodedData = bytes.toString(enc._Utf8);\r\n }\r\n }\r\n\r\n try {\r\n jsonData = JSON.parse(decodedData);\r\n } catch (e) {\r\n throw new Error('Could not parse JSON');\r\n }\r\n\r\n return jsonData;\r\n };\r\n\r\n getDataFromLocalStorage(key) {\r\n return this.ls.getItem(key, true);\r\n };\r\n\r\n getAllKeys() {\r\n let data = this.getMetaData();\r\n\r\n return this.utils.extractKeyNames(data) || [];\r\n };\r\n\r\n set(key, data) {\r\n let dataToStore = '';\r\n\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return;\r\n }\r\n\r\n this.getEncryptionSecret(key);\r\n\r\n // add key(s) to Array if not already added, only for keys other than meta key\r\n if (!(String(key) === String(this.utils.metaKey))) {\r\n if (!this.utils.isKeyPresent(key)) {\r\n this.utils.addToKeysList(key);\r\n this.setMetaData();\r\n }\r\n }\r\n\r\n dataToStore = this.processData(data);\r\n // Store the data to localStorage\r\n this.setDataToLocalStorage(key, dataToStore);\r\n };\r\n\r\n setDataToLocalStorage(key, data) {\r\n this.ls.setItem(key, data);\r\n };\r\n\r\n remove(key) {\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return;\r\n }\r\n\r\n if (key === this.utils.metaKey && this.getAllKeys().length) {\r\n this.utils.warn(this.WarningEnum.META_KEY_REMOVE);\r\n return;\r\n }\r\n\r\n if (this.utils.isKeyPresent(key)) {\r\n this.utils.removeFromKeysList(key);\r\n this.setMetaData();\r\n }\r\n this.ls.removeItem(key);\r\n };\r\n\r\n removeAll() {\r\n let keys, i;\r\n\r\n keys = this.getAllKeys();\r\n for (i = 0; i < keys.length; i++) {\r\n this.ls.removeItem(keys[i]);\r\n }\r\n this.ls.removeItem(this.utils.metaKey);\r\n\r\n this.resetAllKeys();\r\n };\r\n\r\n clear() {\r\n this.ls.clear();\r\n this.resetAllKeys();\r\n };\r\n\r\n resetAllKeys() {\r\n this.utils.allKeys = [];\r\n return [];\r\n }\r\n\r\n processData(data, isAllKeysData) {\r\n if (data === null || data === undefined || data === '') {\r\n return '';\r\n }\r\n\r\n let jsonData, encodedData, compressedData;\r\n\r\n try {\r\n jsonData = JSON.stringify(data);\r\n } catch (e) {\r\n throw new Error('Could not stringify data.');\r\n }\r\n\r\n // Encode Based on encoding type\r\n // If not set, default to Base64 for securing data\r\n encodedData = jsonData;\r\n if (this._isBase64 || isAllKeysData) {\r\n encodedData = Base64.encode(jsonData);\r\n } else {\r\n if (this._isAES) {\r\n encodedData = AES.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isDES) {\r\n encodedData = DES.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isRabbit) {\r\n encodedData = RABBIT.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isRC4) {\r\n encodedData = RC4.encrypt(jsonData, this.utils.encryptionSecret);\r\n }\r\n\r\n encodedData = encodedData && encodedData.toString();\r\n }\r\n\r\n // Compress data if set to true\r\n compressedData = encodedData;\r\n if (this._isCompression || isAllKeysData) {\r\n compressedData = LZString.compressToUTF16(encodedData);\r\n }\r\n\r\n return compressedData;\r\n };\r\n\r\n setMetaData() {\r\n let dataToStore = this.processData({\r\n keys: this.utils.allKeys\r\n }, true);\r\n\r\n // Store the data to localStorage\r\n this.setDataToLocalStorage(this.getMetaKey(), dataToStore);\r\n };\r\n\r\n getMetaData() {\r\n return this.get(this.getMetaKey(), true) || {};\r\n };\r\n\r\n getMetaKey() {\r\n return this.utils.metaKey + (this.config.encryptionNamespace ? '__' + this.config.encryptionNamespace : '');\r\n }\r\n\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/index.js\n **/","import constants from './constants';\r\nimport CryptoJSWordArray from './WordArray';\r\nimport PBKDF2 from 'crypto-js/pbkdf2';\r\n\r\nlet utils = {\r\n metaKey: '_secure__ls__metadata',\r\n encryptionSecret: '',\r\n secretPhrase: 's3cr3t$#@135^&*246',\r\n allKeys: [],\r\n is: function (key) {\r\n if (key) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n warn: function (reason) {\r\n reason = reason ? reason : constants.WarningEnum.DEFAULT_TEXT;\r\n console.warn(constants.WarningTypes[reason]);\r\n },\r\n generateSecretKey: function () {\r\n let salt = CryptoJSWordArray.random(128 / 8);\r\n let key128Bits = PBKDF2(this.secretPhrase, salt, {keySize: 128 / 32 });\r\n\r\n return key128Bits && key128Bits.toString();\r\n },\r\n getObjectFromKey: function (data, key) {\r\n if (!data || !data.length) {\r\n return {};\r\n }\r\n\r\n let i, obj = {};\r\n\r\n for (i = 0; i < data.length; i++) {\r\n if (data[i].k === key) {\r\n obj = data[i];\r\n break;\r\n }\r\n }\r\n\r\n return obj;\r\n },\r\n extractKeyNames: function (data) {\r\n if (!data || !data.keys || !data.keys.length) {\r\n return [];\r\n }\r\n\r\n return data.keys.map(keyData => {\r\n return keyData.k;\r\n });\r\n },\r\n getAllKeys: function () {\r\n return this.allKeys;\r\n },\r\n isKeyPresent: function (key) {\r\n let isKeyAlreadyPresent = false;\r\n\r\n for (let i = 0; i < this.allKeys.length; i++) {\r\n if (String(this.allKeys[i].k) === String(key)) {\r\n isKeyAlreadyPresent = true; // found\r\n break;\r\n }\r\n }\r\n\r\n return isKeyAlreadyPresent;\r\n },\r\n addToKeysList: function (key) {\r\n this.allKeys.push({\r\n k: key,\r\n s: this.encryptionSecret\r\n });\r\n },\r\n removeFromKeysList: function (key) {\r\n let i, index = -1;\r\n\r\n for (i = 0; i < this.allKeys.length; i++) {\r\n if (this.allKeys[i].k === key) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n if (index !== -1) {\r\n this.allKeys.splice(index, 1);\r\n }\r\n return index;\r\n }\r\n};\r\n\r\nmodule.exports = utils;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/utils.js\n **/","let WarningEnum = {\r\n KEY_NOT_PROVIDED: 'keyNotProvided',\r\n META_KEY_REMOVE: 'metaKeyRemove',\r\n DEFAULT_TEXT: 'defaultText'\r\n};\r\n\r\nlet WarningTypes = {};\r\n\r\nWarningTypes[WarningEnum.KEY_NOT_PROVIDED] = 'Secure LS: Key not provided. Aborting operation!';\r\nWarningTypes[WarningEnum.META_KEY_REMOVE] = `Secure LS: Meta key can not be removed\r\nunless all keys created by Secure LS are removed!`;\r\nWarningTypes[WarningEnum.DEFAULT_TEXT] = `Unexpected output`;\r\n\r\nlet constants = {\r\n WarningEnum: WarningEnum,\r\n WarningTypes: WarningTypes,\r\n EncrytionTypes: {\r\n BASE64: 'base64',\r\n AES: 'aes',\r\n DES: 'des',\r\n RABBIT: 'rabbit',\r\n RC4: 'rc4'\r\n }\r\n};\r\n\r\nmodule.exports = constants;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/constants.js\n **/","/*\r\n ES6 compatible port of CryptoJS - WordArray for PBKDF2 password key generation\r\n\r\n Source: https://github.com/brix/crypto-js\r\n LICENSE: MIT\r\n */\r\n\r\nlet CryptoJSWordArray = {};\r\n\r\nCryptoJSWordArray.random = function (nBytes) {\r\n let words = [];\r\n let r = (function (mw) {\r\n let mz = 0x3ade68b1;\r\n let mask = 0xffffffff;\r\n\r\n return function () {\r\n mz = (0x9069 * (mz & 0xFFFF) + (mz >> 0x10)) & mask;\r\n mw = (0x4650 * (mw & 0xFFFF) + (mw >> 0x10)) & mask;\r\n let result = ((mz << 0x10) + mw) & mask;\r\n\r\n result /= 0x100000000;\r\n result += 0.5;\r\n return result * (Math.random() > 0.5 ? 1 : -1);\r\n };\r\n });\r\n\r\n for (let i = 0, rcache; i < nBytes; i += 4) {\r\n let _r = r((rcache || Math.random()) * 0x100000000);\r\n\r\n rcache = _r() * 0x3ade67b7;\r\n words.push((_r() * 0x100000000) | 0);\r\n }\r\n\r\n return new this.Set(words, nBytes);\r\n};\r\n\r\nCryptoJSWordArray.Set = function (words, sigBytes) {\r\n words = this.words = words || [];\r\n\r\n if (sigBytes !== undefined) {\r\n this.sigBytes = sigBytes;\r\n } else {\r\n this.sigBytes = words.length * 8;\r\n }\r\n};\r\n\r\nmodule.exports = CryptoJSWordArray;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/WordArray.js\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/pbkdf2.js\n ** module id = 4\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t /*\n\t * Local polyfil of Object.create\n\t */\n\t var create = Object.create || (function () {\n\t function F() {};\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }())\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var i = 0; i < thatSigBytes; i += 4) {\n\t thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t var r = (function (m_w) {\n\t var m_w = m_w;\n\t var m_z = 0x3ade68b1;\n\t var mask = 0xffffffff;\n\n\t return function () {\n\t m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t var result = ((m_z << 0x10) + m_w) & mask;\n\t result /= 0x100000000;\n\t result += 0.5;\n\t return result * (Math.random() > .5 ? 1 : -1);\n\t }\n\t });\n\n\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t var _r = r((rcache || Math.random()) * 0x100000000);\n\n\t rcache = _r() * 0x3ade67b7;\n\t words.push((_r() * 0x100000000) | 0);\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t var processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/core.js\n ** module id = 5\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/sha1.js\n ** module id = 6\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/hmac.js\n ** module id = 7\n ** module chunks = 0\n **/","/*\r\n ES6 compatible port of CryptoJS - encoding\r\n\r\n Source: https://github.com/brix/crypto-js\r\n LICENSE: MIT\r\n */\r\nlet enc = {};\r\n\r\nenc.Latin1 = {\r\n stringify: (wordArray) => {\r\n // Shortcuts\r\n let words = wordArray.words;\r\n let sigBytes = wordArray.sigBytes;\r\n let latin1Chars = [], i, bite;\r\n\r\n // Convert\r\n for (i = 0; i < sigBytes; i++) {\r\n bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n latin1Chars.push(String.fromCharCode(bite));\r\n }\r\n\r\n return latin1Chars.join('');\r\n }\r\n};\r\n\r\nenc._Utf8 = {\r\n stringify: (wordArray) => {\r\n try {\r\n return decodeURIComponent(escape(enc.Latin1.stringify(wordArray)));\r\n } catch (e) {\r\n throw new Error('Malformed UTF-8 data');\r\n }\r\n }\r\n};\r\n\r\nmodule.exports = enc;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/enc-utf8.js\n **/","let Base64 = {\r\n _keyStr: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\r\n encode: function (e) {\r\n let t = '';\r\n let n, r, i, s, o, u, a;\r\n let f = 0;\r\n\r\n e = Base64._utf8Encode(e);\r\n while (f < e.length) {\r\n n = e.charCodeAt(f++);\r\n r = e.charCodeAt(f++);\r\n i = e.charCodeAt(f++);\r\n s = n >> 2;\r\n o = (n & 3) << 4 | r >> 4;\r\n u = (r & 15) << 2 | i >> 6;\r\n a = i & 63;\r\n if (isNaN(r)) {\r\n u = a = 64;\r\n } else if (isNaN(i)) {\r\n a = 64;\r\n }\r\n t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a);\r\n }\r\n return t;\r\n },\r\n decode: function (e) {\r\n let t = '';\r\n let n, r, i;\r\n let s, o, u, a;\r\n let f = 0;\r\n\r\n e = e.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\r\n while (f < e.length) {\r\n s = this._keyStr.indexOf(e.charAt(f++));\r\n o = this._keyStr.indexOf(e.charAt(f++));\r\n u = this._keyStr.indexOf(e.charAt(f++));\r\n a = this._keyStr.indexOf(e.charAt(f++));\r\n n = s << 2 | o >> 4;\r\n r = (o & 15) << 4 | u >> 2;\r\n i = (u & 3) << 6 | a;\r\n t = t + String.fromCharCode(n);\r\n if (u !== 64) {\r\n t = t + String.fromCharCode(r);\r\n }\r\n if (a !== 64) {\r\n t = t + String.fromCharCode(i);\r\n }\r\n }\r\n t = Base64._utf8Decode(t);\r\n return t;\r\n },\r\n _utf8Encode: function (e) {\r\n e = e.replace(/\\r\\n/g, '\\n');\r\n let t = '';\r\n\r\n for (let n = 0; n < e.length; n++) {\r\n let r = e.charCodeAt(n);\r\n\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n } else if (r > 127 && r < 2048) {\r\n t += String.fromCharCode(r >> 6 | 192);\r\n t += String.fromCharCode(r & 63 | 128);\r\n } else {\r\n t += String.fromCharCode(r >> 12 | 224);\r\n t += String.fromCharCode(r >> 6 & 63 | 128);\r\n t += String.fromCharCode(r & 63 | 128);\r\n }\r\n }\r\n return t;\r\n },\r\n _utf8Decode: function (e) {\r\n let t = '';\r\n let n = 0;\r\n let r, c2, c3;\r\n\r\n r = c2 = 0;\r\n while (n < e.length) {\r\n r = e.charCodeAt(n);\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n n++;\r\n } else if (r > 191 && r < 224) {\r\n c2 = e.charCodeAt(n + 1);\r\n t += String.fromCharCode((r & 31) << 6 | c2 & 63);\r\n n += 2;\r\n } else {\r\n c2 = e.charCodeAt(n + 1);\r\n c3 = e.charCodeAt(n + 2);\r\n t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\r\n n += 3;\r\n }\r\n }\r\n return t;\r\n }\r\n};\r\n\r\nmodule.exports = Base64;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/Base64.js\n **/","// Copyright (c) 2013 Pieroxy \n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lz-string/libs/lz-string.js\n ** module id = 10\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/aes.js\n ** module id = 11\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/enc-base64.js\n ** module id = 12\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/md5.js\n ** module id = 13\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t var block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/evpkdf.js\n ** module id = 14\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t var block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t var block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t var modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t var modeCreator = mode.createDecryptor;\n\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t var wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t var salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/cipher-core.js\n ** module id = 15\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));\n\t this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));\n\t this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/tripledes.js\n ** module id = 16\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/rabbit.js\n ** module id = 17\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/rc4.js\n ** module id = 18\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/secure-ls.min.js b/dist/secure-ls.min.js index 9148dc3..41a39a6 100644 --- a/dist/secure-ls.min.js +++ b/dist/secure-ls.min.js @@ -1,3 +1,3 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("SecureLS",[],e):"object"==typeof exports?exports.SecureLS=e():t.SecureLS=e()}(this,function(){return function(t){function e(i){if(r[i])return r[i].exports;var n=r[i]={exports:{},id:i,loaded:!1};return t[i].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var r={};return e.m=t,e.c=r,e.p="",e(0)}([function(t,e,r){"use strict";function i(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var r=0;r>16)&r,t=18e3*(65535&t)+(t>>16)&r;var i=(e<<16)+t&r;return i/=4294967296,i+=.5,i*(Math.random()>.5?1:-1)}},n=0;n>>2]>>>24-o%4*8&255;e[i+o>>>2]|=s<<24-(i+o)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=n,this},clamp:function(){var e=this.words,r=this.sigBytes;e[r>>>2]&=4294967295<<32-r%4*8,e.length=t.ceil(r/4)},clone:function(){var t=o.clone.call(this);return t.words=this.words.slice(0),t},random:function(e){for(var r,i=[],n=function(e){var e=e,r=987654321,i=4294967295;return function(){r=36969*(65535&r)+(r>>16)&i,e=18e3*(65535&e)+(e>>16)&i;var n=(r<<16)+e&i;return n/=4294967296,n+=.5,n*(t.random()>.5?1:-1)}},o=0;o>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new s.init(r,e/2)}},u=a.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(o))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new s.init(r,e)}},h=a.Utf8={stringify:function(t){try{return decodeURIComponent(escape(u.stringify(t)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(t){return u.parse(unescape(encodeURIComponent(t)))}},f=n.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new s.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=h.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var r=this._data,i=r.words,n=r.sigBytes,o=this.blockSize,a=4*o,c=n/a;c=e?t.ceil(c):t.max((0|c)-this._minBufferSize,0);var u=c*o,h=t.min(4*u,n);if(u){for(var f=0;f>>31}var f=(i<<5|i>>>27)+c+s[u];f+=u<20?(n&o|~n&a)+1518500249:u<40?(n^o^a)+1859775393:u<60?(n&o|n&a|o&a)-1894007588:(n^o^a)-899497514,c=a,a=o,o=n<<30|n>>>2,n=i,i=f}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+a|0,r[4]=r[4]+c|0},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return e[i>>>5]|=128<<24-i%32,e[(i+64>>>9<<4)+14]=Math.floor(r/4294967296),e[(i+64>>>9<<4)+15]=r,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA1=n._createHelper(a),e.HmacSHA1=n._createHmacHelper(a)}(),t.SHA1})},function(t,e,r){!function(i,n){t.exports=e=n(r(5))}(this,function(t){!function(){var e=t,r=e.lib,i=r.Base,n=e.enc,o=n.Utf8,s=e.algo;s.HMAC=i.extend({init:function(t,e){t=this._hasher=new t.init,"string"==typeof e&&(e=o.parse(e));var r=t.blockSize,i=4*r;e.sigBytes>i&&(e=t.finalize(e)),e.clamp();for(var n=this._oKey=e.clone(),s=this._iKey=e.clone(),a=n.words,c=s.words,u=0;u>>2]>>>24-n%4*8&255,i.push(String.fromCharCode(o));return i.join("")}},r._Utf8={stringify:function(t){try{return decodeURIComponent(escape(r.Latin1.stringify(t)))}catch(e){throw new Error("Malformed UTF-8 data")}}},t.exports=r},function(t,e){"use strict";var r={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(t){var e="",i=void 0,n=void 0,o=void 0,s=void 0,a=void 0,c=void 0,u=void 0,h=0;for(t=r._utf8Encode(t);h>2,a=(3&i)<<4|n>>4,c=(15&n)<<2|o>>6,u=63&o,isNaN(n)?c=u=64:isNaN(o)&&(u=64),e=e+this._keyStr.charAt(s)+this._keyStr.charAt(a)+this._keyStr.charAt(c)+this._keyStr.charAt(u);return e},decode:function(t){var e="",i=void 0,n=void 0,o=void 0,s=void 0,a=void 0,c=void 0,u=void 0,h=0;for(t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"");h>4,n=(15&a)<<4|c>>2,o=(3&c)<<6|u,e+=String.fromCharCode(i),64!==c&&(e+=String.fromCharCode(n)),64!==u&&(e+=String.fromCharCode(o));return e=r._utf8Decode(e)},_utf8Encode:function(t){t=t.replace(/\r\n/g,"\n");for(var e="",r=0;r127&&i<2048?(e+=String.fromCharCode(i>>6|192),e+=String.fromCharCode(63&i|128)):(e+=String.fromCharCode(i>>12|224),e+=String.fromCharCode(i>>6&63|128),e+=String.fromCharCode(63&i|128))}return e},_utf8Decode:function(t){var e="",r=0,i=void 0,n=void 0,o=void 0;for(i=n=0;r191&&i<224?(n=t.charCodeAt(r+1),e+=String.fromCharCode((31&i)<<6|63&n),r+=2):(n=t.charCodeAt(r+1),o=t.charCodeAt(r+2),e+=String.fromCharCode((15&i)<<12|(63&n)<<6|63&o),r+=3);return e}};t.exports=r},function(t,e,r){var i,n=function(){function t(t,e){if(!n[t]){n[t]={};for(var r=0;r>>8,r[2*i+1]=s%256}return r},decompressFromUint8Array:function(t){if(null===t||void 0===t)return o.decompress(t);for(var r=new Array(t.length/2),i=0,n=r.length;i>=1}else{for(n=1,i=0;i>=1}f--,0==f&&(f=Math.pow(2,p),p++),delete a[h]}else for(n=s[h],i=0;i>=1;f--,0==f&&(f=Math.pow(2,p),p++),s[u]=l++,h=String(c)}if(""!==h){if(Object.prototype.hasOwnProperty.call(a,h)){if(h.charCodeAt(0)<256){for(i=0;i>=1}else{for(n=1,i=0;i>=1}f--,0==f&&(f=Math.pow(2,p),p++),delete a[h]}else for(n=s[h],i=0;i>=1;f--,0==f&&(f=Math.pow(2,p),p++)}for(n=2,i=0;i>=1;for(;;){if(y<<=1,v==e-1){d.push(r(y));break}v++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:o._decompress(t.length,32768,function(e){return t.charCodeAt(e)})},_decompress:function(t,r,i){var n,o,s,a,c,u,h,f,l=[],p=4,d=4,y=3,v="",_=[],g={val:i(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,u=Math.pow(2,2),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;switch(n=a){case 0:for(a=0,u=Math.pow(2,8),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;f=e(a);break;case 1:for(a=0,u=Math.pow(2,16),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;f=e(a);break;case 2:return""}for(l[3]=f,s=f,_.push(f);;){if(g.index>t)return"";for(a=0,u=Math.pow(2,y),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;switch(f=a){case 0:for(a=0,u=Math.pow(2,8),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;l[d++]=e(a),f=d-1,p--;break;case 1:for(a=0,u=Math.pow(2,16),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;l[d++]=e(a),f=d-1,p--;break;case 2:return _.join("")}if(0==p&&(p=Math.pow(2,y),y++),l[f])v=l[f];else{if(f!==d)return null;v=s+s.charAt(0)}_.push(v),l[d++]=s+v.charAt(0),p--,s=v,0==p&&(p=Math.pow(2,y),y++)}}};return o}();i=function(){return n}.call(e,r,e,t),!(void 0!==i&&(t.exports=i))},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(12),r(13),r(14),r(15))}(this,function(t){return function(){var e=t,r=e.lib,i=r.BlockCipher,n=e.algo,o=[],s=[],a=[],c=[],u=[],h=[],f=[],l=[],p=[],d=[];!function(){for(var t=[],e=0;e<256;e++)e<128?t[e]=e<<1:t[e]=e<<1^283;for(var r=0,i=0,e=0;e<256;e++){var n=i^i<<1^i<<2^i<<3^i<<4;n=n>>>8^255&n^99,o[r]=n,s[n]=r;var y=t[r],v=t[y],_=t[v],g=257*t[n]^16843008*n;a[r]=g<<24|g>>>8,c[r]=g<<16|g>>>16,u[r]=g<<8|g>>>24,h[r]=g;var g=16843009*_^65537*v^257*y^16843008*r;f[n]=g<<24|g>>>8,l[n]=g<<16|g>>>16,p[n]=g<<8|g>>>24,d[n]=g,r?(r=y^t[t[t[_^y]]],i^=t[t[i]]):r=i=1}}();var y=[0,1,2,4,8,16,32,64,128,27,54],v=n.AES=i.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var t=this._keyPriorReset=this._key,e=t.words,r=t.sigBytes/4,i=this._nRounds=r+6,n=4*(i+1),s=this._keySchedule=[],a=0;a6&&a%r==4&&(c=o[c>>>24]<<24|o[c>>>16&255]<<16|o[c>>>8&255]<<8|o[255&c]):(c=c<<8|c>>>24,c=o[c>>>24]<<24|o[c>>>16&255]<<16|o[c>>>8&255]<<8|o[255&c],c^=y[a/r|0]<<24),s[a]=s[a-r]^c}for(var u=this._invKeySchedule=[],h=0;h>>24]]^l[o[c>>>16&255]]^p[o[c>>>8&255]]^d[o[255&c]]}}},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._keySchedule,a,c,u,h,o)},decryptBlock:function(t,e){var r=t[e+1];t[e+1]=t[e+3],t[e+3]=r,this._doCryptBlock(t,e,this._invKeySchedule,f,l,p,d,s);var r=t[e+1];t[e+1]=t[e+3],t[e+3]=r},_doCryptBlock:function(t,e,r,i,n,o,s,a){for(var c=this._nRounds,u=t[e]^r[0],h=t[e+1]^r[1],f=t[e+2]^r[2],l=t[e+3]^r[3],p=4,d=1;d>>24]^n[h>>>16&255]^o[f>>>8&255]^s[255&l]^r[p++],v=i[h>>>24]^n[f>>>16&255]^o[l>>>8&255]^s[255&u]^r[p++],_=i[f>>>24]^n[l>>>16&255]^o[u>>>8&255]^s[255&h]^r[p++],g=i[l>>>24]^n[u>>>16&255]^o[h>>>8&255]^s[255&f]^r[p++];u=y,h=v,f=_,l=g}var y=(a[u>>>24]<<24|a[h>>>16&255]<<16|a[f>>>8&255]<<8|a[255&l])^r[p++],v=(a[h>>>24]<<24|a[f>>>16&255]<<16|a[l>>>8&255]<<8|a[255&u])^r[p++],_=(a[f>>>24]<<24|a[l>>>16&255]<<16|a[u>>>8&255]<<8|a[255&h])^r[p++],g=(a[l>>>24]<<24|a[u>>>16&255]<<16|a[h>>>8&255]<<8|a[255&f])^r[p++];t[e]=y,t[e+1]=v,t[e+2]=_,t[e+3]=g},keySize:8});e.AES=i._createHelper(v)}(),t.AES})},function(t,e,r){!function(i,n){t.exports=e=n(r(5))}(this,function(t){return function(){function e(t,e,r){for(var i=[],o=0,s=0;s>>6-s%4*2;i[o>>>2]|=(a|c)<<24-o%4*8,o++}return n.create(i,o)}var r=t,i=r.lib,n=i.WordArray,o=r.enc;o.Base64={stringify:function(t){var e=t.words,r=t.sigBytes,i=this._map;t.clamp();for(var n=[],o=0;o>>2]>>>24-o%4*8&255,a=e[o+1>>>2]>>>24-(o+1)%4*8&255,c=e[o+2>>>2]>>>24-(o+2)%4*8&255,u=s<<16|a<<8|c,h=0;h<4&&o+.75*h>>6*(3-h)&63));var f=i.charAt(64);if(f)for(;n.length%4;)n.push(f);return n.join("")},parse:function(t){var r=t.length,i=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>32-o)+e}function i(t,e,r,i,n,o,s){var a=t+(e&i|r&~i)+n+s;return(a<>>32-o)+e}function n(t,e,r,i,n,o,s){var a=t+(e^r^i)+n+s;return(a<>>32-o)+e}function o(t,e,r,i,n,o,s){var a=t+(r^(e|~i))+n+s;return(a<>>32-o)+e}var s=t,a=s.lib,c=a.WordArray,u=a.Hasher,h=s.algo,f=[];!function(){for(var t=0;t<64;t++)f[t]=4294967296*e.abs(e.sin(t+1))|0}();var l=h.MD5=u.extend({_doReset:function(){this._hash=new c.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(t,e){for(var s=0;s<16;s++){var a=e+s,c=t[a];t[a]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}var u=this._hash.words,h=t[e+0],l=t[e+1],p=t[e+2],d=t[e+3],y=t[e+4],v=t[e+5],_=t[e+6],g=t[e+7],S=t[e+8],m=t[e+9],k=t[e+10],B=t[e+11],E=t[e+12],C=t[e+13],x=t[e+14],A=t[e+15],w=u[0],b=u[1],D=u[2],T=u[3];w=r(w,b,D,T,h,7,f[0]),T=r(T,w,b,D,l,12,f[1]),D=r(D,T,w,b,p,17,f[2]),b=r(b,D,T,w,d,22,f[3]),w=r(w,b,D,T,y,7,f[4]),T=r(T,w,b,D,v,12,f[5]),D=r(D,T,w,b,_,17,f[6]),b=r(b,D,T,w,g,22,f[7]),w=r(w,b,D,T,S,7,f[8]),T=r(T,w,b,D,m,12,f[9]),D=r(D,T,w,b,k,17,f[10]),b=r(b,D,T,w,B,22,f[11]),w=r(w,b,D,T,E,7,f[12]),T=r(T,w,b,D,C,12,f[13]),D=r(D,T,w,b,x,17,f[14]),b=r(b,D,T,w,A,22,f[15]),w=i(w,b,D,T,l,5,f[16]),T=i(T,w,b,D,_,9,f[17]),D=i(D,T,w,b,B,14,f[18]),b=i(b,D,T,w,h,20,f[19]),w=i(w,b,D,T,v,5,f[20]),T=i(T,w,b,D,k,9,f[21]),D=i(D,T,w,b,A,14,f[22]),b=i(b,D,T,w,y,20,f[23]),w=i(w,b,D,T,m,5,f[24]),T=i(T,w,b,D,x,9,f[25]),D=i(D,T,w,b,d,14,f[26]),b=i(b,D,T,w,S,20,f[27]),w=i(w,b,D,T,C,5,f[28]),T=i(T,w,b,D,p,9,f[29]),D=i(D,T,w,b,g,14,f[30]),b=i(b,D,T,w,E,20,f[31]),w=n(w,b,D,T,v,4,f[32]),T=n(T,w,b,D,S,11,f[33]),D=n(D,T,w,b,B,16,f[34]),b=n(b,D,T,w,x,23,f[35]),w=n(w,b,D,T,l,4,f[36]),T=n(T,w,b,D,y,11,f[37]),D=n(D,T,w,b,g,16,f[38]),b=n(b,D,T,w,k,23,f[39]),w=n(w,b,D,T,C,4,f[40]),T=n(T,w,b,D,h,11,f[41]),D=n(D,T,w,b,d,16,f[42]),b=n(b,D,T,w,_,23,f[43]),w=n(w,b,D,T,m,4,f[44]),T=n(T,w,b,D,E,11,f[45]),D=n(D,T,w,b,A,16,f[46]),b=n(b,D,T,w,p,23,f[47]),w=o(w,b,D,T,h,6,f[48]),T=o(T,w,b,D,g,10,f[49]),D=o(D,T,w,b,x,15,f[50]),b=o(b,D,T,w,v,21,f[51]),w=o(w,b,D,T,E,6,f[52]),T=o(T,w,b,D,d,10,f[53]),D=o(D,T,w,b,k,15,f[54]),b=o(b,D,T,w,l,21,f[55]),w=o(w,b,D,T,S,6,f[56]),T=o(T,w,b,D,A,10,f[57]),D=o(D,T,w,b,_,15,f[58]),b=o(b,D,T,w,C,21,f[59]),w=o(w,b,D,T,y,6,f[60]),T=o(T,w,b,D,B,10,f[61]),D=o(D,T,w,b,p,15,f[62]),b=o(b,D,T,w,m,21,f[63]),u[0]=u[0]+w|0,u[1]=u[1]+b|0,u[2]=u[2]+D|0,u[3]=u[3]+T|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var o=e.floor(i/4294967296),s=i;r[(n+64>>>9<<4)+15]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),r[(n+64>>>9<<4)+14]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),t.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,c=a.words,u=0;u<4;u++){var h=c[u];c[u]=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8)}return a},clone:function(){var t=u.clone.call(this);return t._hash=this._hash.clone(),t}});s.MD5=u._createHelper(l),s.HmacMD5=u._createHmacHelper(l)}(Math),t.MD5})},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(6),r(7))}(this,function(t){return function(){var e=t,r=e.lib,i=r.Base,n=r.WordArray,o=e.algo,s=o.MD5,a=o.EvpKDF=i.extend({cfg:i.extend({keySize:4,hasher:s,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){for(var r=this.cfg,i=r.hasher.create(),o=n.create(),s=o.words,a=r.keySize,c=r.iterations;s.length>>2];t.sigBytes-=e}},_=(i.BlockCipher=f.extend({cfg:f.cfg.extend({mode:d,padding:v}),reset:function(){f.reset.call(this);var t=this.cfg,e=t.iv,r=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var i=r.createEncryptor;else{var i=r.createDecryptor;this._minBufferSize=1}this._mode=i.call(r,this,e&&e.words)},_doProcessBlock:function(t,e){this._mode.processBlock(t,e)},_doFinalize:function(){var t=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){t.pad(this._data,this.blockSize);var e=this._process(!0)}else{var e=this._process(!0);t.unpad(e)}return e},blockSize:4}),i.CipherParams=n.extend({init:function(t){this.mixIn(t)},toString:function(t){return(t||this.formatter).stringify(this)}})),g=r.format={},S=g.OpenSSL={stringify:function(t){var e=t.ciphertext,r=t.salt;if(r)var i=o.create([1398893684,1701076831]).concat(r).concat(e);else var i=e;return i.toString(c)},parse:function(t){var e=c.parse(t),r=e.words;if(1398893684==r[0]&&1701076831==r[1]){var i=o.create(r.slice(2,4));r.splice(0,4),e.sigBytes-=16}return _.create({ciphertext:e,salt:i})}},m=i.SerializableCipher=n.extend({cfg:n.extend({format:S}),encrypt:function(t,e,r,i){i=this.cfg.extend(i);var n=t.createEncryptor(r,i),o=n.finalize(e),s=n.cfg;return _.create({ciphertext:o,key:r,iv:s.iv,algorithm:t,mode:s.mode,padding:s.padding,blockSize:t.blockSize,formatter:i.format})},decrypt:function(t,e,r,i){i=this.cfg.extend(i),e=this._parse(e,i.format);var n=t.createDecryptor(r,i).finalize(e.ciphertext);return n},_parse:function(t,e){return"string"==typeof t?e.parse(t,this):t}}),k=r.kdf={},B=k.OpenSSL={execute:function(t,e,r,i){i||(i=o.random(8));var n=h.create({keySize:e+r}).compute(t,i),s=o.create(n.words.slice(e),4*r);return n.sigBytes=4*e,_.create({key:n,iv:s,salt:i})}},E=i.PasswordBasedCipher=m.extend({cfg:m.cfg.extend({kdf:B}),encrypt:function(t,e,r,i){i=this.cfg.extend(i);var n=i.kdf.execute(r,t.keySize,t.ivSize); -i.iv=n.iv;var o=m.encrypt.call(this,t,e,n.key,i);return o.mixIn(n),o},decrypt:function(t,e,r,i){i=this.cfg.extend(i),e=this._parse(e,i.format);var n=i.kdf.execute(r,t.keySize,t.ivSize,e.salt);i.iv=n.iv;var o=m.decrypt.call(this,t,e,n.key,i);return o}})}()})},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(12),r(13),r(14),r(15))}(this,function(t){return function(){function e(t,e){var r=(this._lBlock>>>t^this._rBlock)&e;this._rBlock^=r,this._lBlock^=r<>>t^this._lBlock)&e;this._lBlock^=r,this._rBlock^=r<>>5]>>>31-n%32&1}for(var o=this._subKeys=[],s=0;s<16;s++){for(var a=o[s]=[],f=h[s],i=0;i<24;i++)a[i/6|0]|=r[(u[i]-1+f)%28]<<31-i%6,a[4+(i/6|0)]|=r[28+(u[i+24]-1+f)%28]<<31-i%6;a[0]=a[0]<<1|a[0]>>>31;for(var i=1;i<7;i++)a[i]=a[i]>>>4*(i-1)+3;a[7]=a[7]<<5|a[7]>>>27}for(var l=this._invSubKeys=[],i=0;i<16;i++)l[i]=o[15-i]},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._subKeys)},decryptBlock:function(t,e){this._doCryptBlock(t,e,this._invSubKeys)},_doCryptBlock:function(t,i,n){this._lBlock=t[i],this._rBlock=t[i+1],e.call(this,4,252645135),e.call(this,16,65535),r.call(this,2,858993459),r.call(this,8,16711935),e.call(this,1,1431655765);for(var o=0;o<16;o++){for(var s=n[o],a=this._lBlock,c=this._rBlock,u=0,h=0;h<8;h++)u|=f[h][((c^s[h])&l[h])>>>0];this._lBlock=c,this._rBlock=a^u}var p=this._lBlock;this._lBlock=this._rBlock,this._rBlock=p,e.call(this,1,1431655765),r.call(this,8,16711935),r.call(this,2,858993459),e.call(this,16,65535),e.call(this,4,252645135),t[i]=this._lBlock,t[i+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});i.DES=s._createHelper(p);var d=a.TripleDES=s.extend({_doReset:function(){var t=this._key,e=t.words;this._des1=p.createEncryptor(o.create(e.slice(0,2))),this._des2=p.createEncryptor(o.create(e.slice(2,4))),this._des3=p.createEncryptor(o.create(e.slice(4,6)))},encryptBlock:function(t,e){this._des1.encryptBlock(t,e),this._des2.decryptBlock(t,e),this._des3.encryptBlock(t,e)},decryptBlock:function(t,e){this._des3.decryptBlock(t,e),this._des2.encryptBlock(t,e),this._des1.decryptBlock(t,e)},keySize:6,ivSize:2,blockSize:2});i.TripleDES=s._createHelper(d)}(),t.TripleDES})},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(12),r(13),r(14),r(15))}(this,function(t){return function(){function e(){for(var t=this._X,e=this._C,r=0;r<8;r++)a[r]=e[r];e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0;for(var r=0;r<8;r++){var i=t[r]+e[r],n=65535&i,o=i>>>16,s=((n*n>>>17)+n*o>>>15)+o*o,u=((4294901760&i)*i|0)+((65535&i)*i|0);c[r]=s^u}t[0]=c[0]+(c[7]<<16|c[7]>>>16)+(c[6]<<16|c[6]>>>16)|0,t[1]=c[1]+(c[0]<<8|c[0]>>>24)+c[7]|0,t[2]=c[2]+(c[1]<<16|c[1]>>>16)+(c[0]<<16|c[0]>>>16)|0,t[3]=c[3]+(c[2]<<8|c[2]>>>24)+c[1]|0,t[4]=c[4]+(c[3]<<16|c[3]>>>16)+(c[2]<<16|c[2]>>>16)|0,t[5]=c[5]+(c[4]<<8|c[4]>>>24)+c[3]|0,t[6]=c[6]+(c[5]<<16|c[5]>>>16)+(c[4]<<16|c[4]>>>16)|0,t[7]=c[7]+(c[6]<<8|c[6]>>>24)+c[5]|0}var r=t,i=r.lib,n=i.StreamCipher,o=r.algo,s=[],a=[],c=[],u=o.Rabbit=n.extend({_doReset:function(){for(var t=this._key.words,r=this.cfg.iv,i=0;i<4;i++)t[i]=16711935&(t[i]<<8|t[i]>>>24)|4278255360&(t[i]<<24|t[i]>>>8);var n=this._X=[t[0],t[3]<<16|t[2]>>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],o=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];this._b=0;for(var i=0;i<4;i++)e.call(this);for(var i=0;i<8;i++)o[i]^=n[i+4&7];if(r){var s=r.words,a=s[0],c=s[1],u=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8),f=u>>>16|4294901760&h,l=h<<16|65535&u;o[0]^=u,o[1]^=f,o[2]^=h,o[3]^=l,o[4]^=u,o[5]^=f,o[6]^=h,o[7]^=l;for(var i=0;i<4;i++)e.call(this)}},_doProcessBlock:function(t,r){var i=this._X;e.call(this),s[0]=i[0]^i[5]>>>16^i[3]<<16,s[1]=i[2]^i[7]>>>16^i[5]<<16,s[2]=i[4]^i[1]>>>16^i[7]<<16,s[3]=i[6]^i[3]>>>16^i[1]<<16;for(var n=0;n<4;n++)s[n]=16711935&(s[n]<<8|s[n]>>>24)|4278255360&(s[n]<<24|s[n]>>>8),t[r+n]^=s[n]},blockSize:4,ivSize:2});r.Rabbit=n._createHelper(u)}(),t.Rabbit})},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(12),r(13),r(14),r(15))}(this,function(t){return function(){function e(){for(var t=this._S,e=this._i,r=this._j,i=0,n=0;n<4;n++){e=(e+1)%256,r=(r+t[e])%256;var o=t[e];t[e]=t[r],t[r]=o,i|=t[(t[e]+t[r])%256]<<24-8*n}return this._i=e,this._j=r,i}var r=t,i=r.lib,n=i.StreamCipher,o=r.algo,s=o.RC4=n.extend({_doReset:function(){for(var t=this._key,e=t.words,r=t.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;for(var n=0,o=0;n<256;n++){var s=n%r,a=e[s>>>2]>>>24-s%4*8&255;o=(o+i[n]+a)%256;var c=i[n];i[n]=i[o],i[o]=c}this._i=this._j=0},_doProcessBlock:function(t,r){t[r]^=e.call(this)},keySize:8,ivSize:0});r.RC4=n._createHelper(s);var a=o.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var t=this.cfg.drop;t>0;t--)e.call(this)}});r.RC4Drop=n._createHelper(a)}(),t.RC4})}])}); +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("SecureLS",[],e):"object"==typeof exports?exports.SecureLS=e():t.SecureLS=e()}(this,function(){return function(t){function e(i){if(r[i])return r[i].exports;var n=r[i]={exports:{},id:i,loaded:!1};return t[i].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var r={};return e.m=t,e.c=r,e.p="",e(0)}([function(t,e,r){"use strict";function i(t){return t&&t.__esModule?t:{"default":t}}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var r=0;r>16)&r,t=18e3*(65535&t)+(t>>16)&r;var i=(e<<16)+t&r;return i/=4294967296,i+=.5,i*(Math.random()>.5?1:-1)}},n=0;n>>2]>>>24-o%4*8&255;e[i+o>>>2]|=s<<24-(i+o)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=n,this},clamp:function(){var e=this.words,r=this.sigBytes;e[r>>>2]&=4294967295<<32-r%4*8,e.length=t.ceil(r/4)},clone:function(){var t=o.clone.call(this);return t.words=this.words.slice(0),t},random:function(e){for(var r,i=[],n=function(e){var e=e,r=987654321,i=4294967295;return function(){r=36969*(65535&r)+(r>>16)&i,e=18e3*(65535&e)+(e>>16)&i;var n=(r<<16)+e&i;return n/=4294967296,n+=.5,n*(t.random()>.5?1:-1)}},o=0;o>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>3]|=parseInt(t.substr(i,2),16)<<24-i%8*4;return new s.init(r,e/2)}},u=a.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(o))}return i.join("")},parse:function(t){for(var e=t.length,r=[],i=0;i>>2]|=(255&t.charCodeAt(i))<<24-i%4*8;return new s.init(r,e)}},h=a.Utf8={stringify:function(t){try{return decodeURIComponent(escape(u.stringify(t)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(t){return u.parse(unescape(encodeURIComponent(t)))}},f=n.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new s.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=h.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var r=this._data,i=r.words,n=r.sigBytes,o=this.blockSize,a=4*o,c=n/a;c=e?t.ceil(c):t.max((0|c)-this._minBufferSize,0);var u=c*o,h=t.min(4*u,n);if(u){for(var f=0;f>>31}var f=(i<<5|i>>>27)+c+s[u];f+=u<20?(n&o|~n&a)+1518500249:u<40?(n^o^a)+1859775393:u<60?(n&o|n&a|o&a)-1894007588:(n^o^a)-899497514,c=a,a=o,o=n<<30|n>>>2,n=i,i=f}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+a|0,r[4]=r[4]+c|0},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,i=8*t.sigBytes;return e[i>>>5]|=128<<24-i%32,e[(i+64>>>9<<4)+14]=Math.floor(r/4294967296),e[(i+64>>>9<<4)+15]=r,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA1=n._createHelper(a),e.HmacSHA1=n._createHmacHelper(a)}(),t.SHA1})},function(t,e,r){!function(i,n){t.exports=e=n(r(5))}(this,function(t){!function(){var e=t,r=e.lib,i=r.Base,n=e.enc,o=n.Utf8,s=e.algo;s.HMAC=i.extend({init:function(t,e){t=this._hasher=new t.init,"string"==typeof e&&(e=o.parse(e));var r=t.blockSize,i=4*r;e.sigBytes>i&&(e=t.finalize(e)),e.clamp();for(var n=this._oKey=e.clone(),s=this._iKey=e.clone(),a=n.words,c=s.words,u=0;u>>2]>>>24-n%4*8&255,i.push(String.fromCharCode(o));return i.join("")}},r._Utf8={stringify:function(t){try{return decodeURIComponent(escape(r.Latin1.stringify(t)))}catch(e){throw new Error("Malformed UTF-8 data")}}},t.exports=r},function(t,e){"use strict";var r={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(t){var e="",i=void 0,n=void 0,o=void 0,s=void 0,a=void 0,c=void 0,u=void 0,h=0;for(t=r._utf8Encode(t);h>2,a=(3&i)<<4|n>>4,c=(15&n)<<2|o>>6,u=63&o,isNaN(n)?c=u=64:isNaN(o)&&(u=64),e=e+this._keyStr.charAt(s)+this._keyStr.charAt(a)+this._keyStr.charAt(c)+this._keyStr.charAt(u);return e},decode:function(t){var e="",i=void 0,n=void 0,o=void 0,s=void 0,a=void 0,c=void 0,u=void 0,h=0;for(t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"");h>4,n=(15&a)<<4|c>>2,o=(3&c)<<6|u,e+=String.fromCharCode(i),64!==c&&(e+=String.fromCharCode(n)),64!==u&&(e+=String.fromCharCode(o));return e=r._utf8Decode(e)},_utf8Encode:function(t){t=t.replace(/\r\n/g,"\n");for(var e="",r=0;r127&&i<2048?(e+=String.fromCharCode(i>>6|192),e+=String.fromCharCode(63&i|128)):(e+=String.fromCharCode(i>>12|224),e+=String.fromCharCode(i>>6&63|128),e+=String.fromCharCode(63&i|128))}return e},_utf8Decode:function(t){var e="",r=0,i=void 0,n=void 0,o=void 0;for(i=n=0;r191&&i<224?(n=t.charCodeAt(r+1),e+=String.fromCharCode((31&i)<<6|63&n),r+=2):(n=t.charCodeAt(r+1),o=t.charCodeAt(r+2),e+=String.fromCharCode((15&i)<<12|(63&n)<<6|63&o),r+=3);return e}};t.exports=r},function(t,e,r){var i,n=function(){function t(t,e){if(!n[t]){n[t]={};for(var r=0;r>>8,r[2*i+1]=s%256}return r},decompressFromUint8Array:function(t){if(null===t||void 0===t)return o.decompress(t);for(var r=new Array(t.length/2),i=0,n=r.length;i>=1}else{for(n=1,i=0;i>=1}f--,0==f&&(f=Math.pow(2,p),p++),delete a[h]}else for(n=s[h],i=0;i>=1;f--,0==f&&(f=Math.pow(2,p),p++),s[u]=l++,h=String(c)}if(""!==h){if(Object.prototype.hasOwnProperty.call(a,h)){if(h.charCodeAt(0)<256){for(i=0;i>=1}else{for(n=1,i=0;i>=1}f--,0==f&&(f=Math.pow(2,p),p++),delete a[h]}else for(n=s[h],i=0;i>=1;f--,0==f&&(f=Math.pow(2,p),p++)}for(n=2,i=0;i>=1;for(;;){if(y<<=1,v==e-1){d.push(r(y));break}v++}return d.join("")},decompress:function(t){return null==t?"":""==t?null:o._decompress(t.length,32768,function(e){return t.charCodeAt(e)})},_decompress:function(t,r,i){var n,o,s,a,c,u,h,f,l=[],p=4,d=4,y=3,v="",_=[],g={val:i(0),position:r,index:1};for(o=0;o<3;o+=1)l[o]=o;for(a=0,u=Math.pow(2,2),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;switch(n=a){case 0:for(a=0,u=Math.pow(2,8),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;f=e(a);break;case 1:for(a=0,u=Math.pow(2,16),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;f=e(a);break;case 2:return""}for(l[3]=f,s=f,_.push(f);;){if(g.index>t)return"";for(a=0,u=Math.pow(2,y),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;switch(f=a){case 0:for(a=0,u=Math.pow(2,8),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;l[d++]=e(a),f=d-1,p--;break;case 1:for(a=0,u=Math.pow(2,16),h=1;h!=u;)c=g.val&g.position,g.position>>=1,0==g.position&&(g.position=r,g.val=i(g.index++)),a|=(c>0?1:0)*h,h<<=1;l[d++]=e(a),f=d-1,p--;break;case 2:return _.join("")}if(0==p&&(p=Math.pow(2,y),y++),l[f])v=l[f];else{if(f!==d)return null;v=s+s.charAt(0)}_.push(v),l[d++]=s+v.charAt(0),p--,s=v,0==p&&(p=Math.pow(2,y),y++)}}};return o}();i=function(){return n}.call(e,r,e,t),!(void 0!==i&&(t.exports=i))},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(12),r(13),r(14),r(15))}(this,function(t){return function(){var e=t,r=e.lib,i=r.BlockCipher,n=e.algo,o=[],s=[],a=[],c=[],u=[],h=[],f=[],l=[],p=[],d=[];!function(){for(var t=[],e=0;e<256;e++)e<128?t[e]=e<<1:t[e]=e<<1^283;for(var r=0,i=0,e=0;e<256;e++){var n=i^i<<1^i<<2^i<<3^i<<4;n=n>>>8^255&n^99,o[r]=n,s[n]=r;var y=t[r],v=t[y],_=t[v],g=257*t[n]^16843008*n;a[r]=g<<24|g>>>8,c[r]=g<<16|g>>>16,u[r]=g<<8|g>>>24,h[r]=g;var g=16843009*_^65537*v^257*y^16843008*r;f[n]=g<<24|g>>>8,l[n]=g<<16|g>>>16,p[n]=g<<8|g>>>24,d[n]=g,r?(r=y^t[t[t[_^y]]],i^=t[t[i]]):r=i=1}}();var y=[0,1,2,4,8,16,32,64,128,27,54],v=n.AES=i.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var t=this._keyPriorReset=this._key,e=t.words,r=t.sigBytes/4,i=this._nRounds=r+6,n=4*(i+1),s=this._keySchedule=[],a=0;a6&&a%r==4&&(c=o[c>>>24]<<24|o[c>>>16&255]<<16|o[c>>>8&255]<<8|o[255&c]):(c=c<<8|c>>>24,c=o[c>>>24]<<24|o[c>>>16&255]<<16|o[c>>>8&255]<<8|o[255&c],c^=y[a/r|0]<<24),s[a]=s[a-r]^c}for(var u=this._invKeySchedule=[],h=0;h>>24]]^l[o[c>>>16&255]]^p[o[c>>>8&255]]^d[o[255&c]]}}},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._keySchedule,a,c,u,h,o)},decryptBlock:function(t,e){var r=t[e+1];t[e+1]=t[e+3],t[e+3]=r,this._doCryptBlock(t,e,this._invKeySchedule,f,l,p,d,s);var r=t[e+1];t[e+1]=t[e+3],t[e+3]=r},_doCryptBlock:function(t,e,r,i,n,o,s,a){for(var c=this._nRounds,u=t[e]^r[0],h=t[e+1]^r[1],f=t[e+2]^r[2],l=t[e+3]^r[3],p=4,d=1;d>>24]^n[h>>>16&255]^o[f>>>8&255]^s[255&l]^r[p++],v=i[h>>>24]^n[f>>>16&255]^o[l>>>8&255]^s[255&u]^r[p++],_=i[f>>>24]^n[l>>>16&255]^o[u>>>8&255]^s[255&h]^r[p++],g=i[l>>>24]^n[u>>>16&255]^o[h>>>8&255]^s[255&f]^r[p++];u=y,h=v,f=_,l=g}var y=(a[u>>>24]<<24|a[h>>>16&255]<<16|a[f>>>8&255]<<8|a[255&l])^r[p++],v=(a[h>>>24]<<24|a[f>>>16&255]<<16|a[l>>>8&255]<<8|a[255&u])^r[p++],_=(a[f>>>24]<<24|a[l>>>16&255]<<16|a[u>>>8&255]<<8|a[255&h])^r[p++],g=(a[l>>>24]<<24|a[u>>>16&255]<<16|a[h>>>8&255]<<8|a[255&f])^r[p++];t[e]=y,t[e+1]=v,t[e+2]=_,t[e+3]=g},keySize:8});e.AES=i._createHelper(v)}(),t.AES})},function(t,e,r){!function(i,n){t.exports=e=n(r(5))}(this,function(t){return function(){function e(t,e,r){for(var i=[],o=0,s=0;s>>6-s%4*2;i[o>>>2]|=(a|c)<<24-o%4*8,o++}return n.create(i,o)}var r=t,i=r.lib,n=i.WordArray,o=r.enc;o.Base64={stringify:function(t){var e=t.words,r=t.sigBytes,i=this._map;t.clamp();for(var n=[],o=0;o>>2]>>>24-o%4*8&255,a=e[o+1>>>2]>>>24-(o+1)%4*8&255,c=e[o+2>>>2]>>>24-(o+2)%4*8&255,u=s<<16|a<<8|c,h=0;h<4&&o+.75*h>>6*(3-h)&63));var f=i.charAt(64);if(f)for(;n.length%4;)n.push(f);return n.join("")},parse:function(t){var r=t.length,i=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>32-o)+e}function i(t,e,r,i,n,o,s){var a=t+(e&i|r&~i)+n+s;return(a<>>32-o)+e}function n(t,e,r,i,n,o,s){var a=t+(e^r^i)+n+s;return(a<>>32-o)+e}function o(t,e,r,i,n,o,s){var a=t+(r^(e|~i))+n+s;return(a<>>32-o)+e}var s=t,a=s.lib,c=a.WordArray,u=a.Hasher,h=s.algo,f=[];!function(){for(var t=0;t<64;t++)f[t]=4294967296*e.abs(e.sin(t+1))|0}();var l=h.MD5=u.extend({_doReset:function(){this._hash=new c.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(t,e){for(var s=0;s<16;s++){var a=e+s,c=t[a];t[a]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}var u=this._hash.words,h=t[e+0],l=t[e+1],p=t[e+2],d=t[e+3],y=t[e+4],v=t[e+5],_=t[e+6],g=t[e+7],S=t[e+8],m=t[e+9],k=t[e+10],B=t[e+11],E=t[e+12],C=t[e+13],x=t[e+14],A=t[e+15],w=u[0],b=u[1],D=u[2],T=u[3];w=r(w,b,D,T,h,7,f[0]),T=r(T,w,b,D,l,12,f[1]),D=r(D,T,w,b,p,17,f[2]),b=r(b,D,T,w,d,22,f[3]),w=r(w,b,D,T,y,7,f[4]),T=r(T,w,b,D,v,12,f[5]),D=r(D,T,w,b,_,17,f[6]),b=r(b,D,T,w,g,22,f[7]),w=r(w,b,D,T,S,7,f[8]),T=r(T,w,b,D,m,12,f[9]),D=r(D,T,w,b,k,17,f[10]),b=r(b,D,T,w,B,22,f[11]),w=r(w,b,D,T,E,7,f[12]),T=r(T,w,b,D,C,12,f[13]),D=r(D,T,w,b,x,17,f[14]),b=r(b,D,T,w,A,22,f[15]),w=i(w,b,D,T,l,5,f[16]),T=i(T,w,b,D,_,9,f[17]),D=i(D,T,w,b,B,14,f[18]),b=i(b,D,T,w,h,20,f[19]),w=i(w,b,D,T,v,5,f[20]),T=i(T,w,b,D,k,9,f[21]),D=i(D,T,w,b,A,14,f[22]),b=i(b,D,T,w,y,20,f[23]),w=i(w,b,D,T,m,5,f[24]),T=i(T,w,b,D,x,9,f[25]),D=i(D,T,w,b,d,14,f[26]),b=i(b,D,T,w,S,20,f[27]),w=i(w,b,D,T,C,5,f[28]),T=i(T,w,b,D,p,9,f[29]),D=i(D,T,w,b,g,14,f[30]),b=i(b,D,T,w,E,20,f[31]),w=n(w,b,D,T,v,4,f[32]),T=n(T,w,b,D,S,11,f[33]),D=n(D,T,w,b,B,16,f[34]),b=n(b,D,T,w,x,23,f[35]),w=n(w,b,D,T,l,4,f[36]),T=n(T,w,b,D,y,11,f[37]),D=n(D,T,w,b,g,16,f[38]),b=n(b,D,T,w,k,23,f[39]),w=n(w,b,D,T,C,4,f[40]),T=n(T,w,b,D,h,11,f[41]),D=n(D,T,w,b,d,16,f[42]),b=n(b,D,T,w,_,23,f[43]),w=n(w,b,D,T,m,4,f[44]),T=n(T,w,b,D,E,11,f[45]),D=n(D,T,w,b,A,16,f[46]),b=n(b,D,T,w,p,23,f[47]),w=o(w,b,D,T,h,6,f[48]),T=o(T,w,b,D,g,10,f[49]),D=o(D,T,w,b,x,15,f[50]),b=o(b,D,T,w,v,21,f[51]),w=o(w,b,D,T,E,6,f[52]),T=o(T,w,b,D,d,10,f[53]),D=o(D,T,w,b,k,15,f[54]),b=o(b,D,T,w,l,21,f[55]),w=o(w,b,D,T,S,6,f[56]),T=o(T,w,b,D,A,10,f[57]),D=o(D,T,w,b,_,15,f[58]),b=o(b,D,T,w,C,21,f[59]),w=o(w,b,D,T,y,6,f[60]),T=o(T,w,b,D,B,10,f[61]),D=o(D,T,w,b,p,15,f[62]),b=o(b,D,T,w,m,21,f[63]),u[0]=u[0]+w|0,u[1]=u[1]+b|0,u[2]=u[2]+D|0,u[3]=u[3]+T|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var o=e.floor(i/4294967296),s=i;r[(n+64>>>9<<4)+15]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),r[(n+64>>>9<<4)+14]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),t.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,c=a.words,u=0;u<4;u++){var h=c[u];c[u]=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8)}return a},clone:function(){var t=u.clone.call(this);return t._hash=this._hash.clone(),t}});s.MD5=u._createHelper(l),s.HmacMD5=u._createHmacHelper(l)}(Math),t.MD5})},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(6),r(7))}(this,function(t){return function(){var e=t,r=e.lib,i=r.Base,n=r.WordArray,o=e.algo,s=o.MD5,a=o.EvpKDF=i.extend({cfg:i.extend({keySize:4,hasher:s,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){for(var r=this.cfg,i=r.hasher.create(),o=n.create(),s=o.words,a=r.keySize,c=r.iterations;s.length>>2];t.sigBytes-=e}},_=(i.BlockCipher=f.extend({cfg:f.cfg.extend({mode:d,padding:v}),reset:function(){f.reset.call(this);var t=this.cfg,e=t.iv,r=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var i=r.createEncryptor;else{var i=r.createDecryptor;this._minBufferSize=1}this._mode=i.call(r,this,e&&e.words)},_doProcessBlock:function(t,e){this._mode.processBlock(t,e)},_doFinalize:function(){var t=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){t.pad(this._data,this.blockSize);var e=this._process(!0)}else{var e=this._process(!0);t.unpad(e)}return e},blockSize:4}),i.CipherParams=n.extend({init:function(t){this.mixIn(t)},toString:function(t){return(t||this.formatter).stringify(this)}})),g=r.format={},S=g.OpenSSL={stringify:function(t){var e=t.ciphertext,r=t.salt;if(r)var i=o.create([1398893684,1701076831]).concat(r).concat(e);else var i=e;return i.toString(c)},parse:function(t){var e=c.parse(t),r=e.words;if(1398893684==r[0]&&1701076831==r[1]){var i=o.create(r.slice(2,4));r.splice(0,4),e.sigBytes-=16}return _.create({ciphertext:e,salt:i})}},m=i.SerializableCipher=n.extend({cfg:n.extend({format:S}),encrypt:function(t,e,r,i){i=this.cfg.extend(i);var n=t.createEncryptor(r,i),o=n.finalize(e),s=n.cfg;return _.create({ciphertext:o,key:r,iv:s.iv,algorithm:t,mode:s.mode,padding:s.padding,blockSize:t.blockSize,formatter:i.format})},decrypt:function(t,e,r,i){i=this.cfg.extend(i),e=this._parse(e,i.format);var n=t.createDecryptor(r,i).finalize(e.ciphertext);return n},_parse:function(t,e){return"string"==typeof t?e.parse(t,this):t}}),k=r.kdf={},B=k.OpenSSL={execute:function(t,e,r,i){i||(i=o.random(8));var n=h.create({keySize:e+r}).compute(t,i),s=o.create(n.words.slice(e),4*r);return n.sigBytes=4*e,_.create({key:n,iv:s,salt:i})}},E=i.PasswordBasedCipher=m.extend({cfg:m.cfg.extend({kdf:B}),encrypt:function(t,e,r,i){i=this.cfg.extend(i); +var n=i.kdf.execute(r,t.keySize,t.ivSize);i.iv=n.iv;var o=m.encrypt.call(this,t,e,n.key,i);return o.mixIn(n),o},decrypt:function(t,e,r,i){i=this.cfg.extend(i),e=this._parse(e,i.format);var n=i.kdf.execute(r,t.keySize,t.ivSize,e.salt);i.iv=n.iv;var o=m.decrypt.call(this,t,e,n.key,i);return o}})}()})},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(12),r(13),r(14),r(15))}(this,function(t){return function(){function e(t,e){var r=(this._lBlock>>>t^this._rBlock)&e;this._rBlock^=r,this._lBlock^=r<>>t^this._lBlock)&e;this._lBlock^=r,this._rBlock^=r<>>5]>>>31-n%32&1}for(var o=this._subKeys=[],s=0;s<16;s++){for(var a=o[s]=[],f=h[s],i=0;i<24;i++)a[i/6|0]|=r[(u[i]-1+f)%28]<<31-i%6,a[4+(i/6|0)]|=r[28+(u[i+24]-1+f)%28]<<31-i%6;a[0]=a[0]<<1|a[0]>>>31;for(var i=1;i<7;i++)a[i]=a[i]>>>4*(i-1)+3;a[7]=a[7]<<5|a[7]>>>27}for(var l=this._invSubKeys=[],i=0;i<16;i++)l[i]=o[15-i]},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._subKeys)},decryptBlock:function(t,e){this._doCryptBlock(t,e,this._invSubKeys)},_doCryptBlock:function(t,i,n){this._lBlock=t[i],this._rBlock=t[i+1],e.call(this,4,252645135),e.call(this,16,65535),r.call(this,2,858993459),r.call(this,8,16711935),e.call(this,1,1431655765);for(var o=0;o<16;o++){for(var s=n[o],a=this._lBlock,c=this._rBlock,u=0,h=0;h<8;h++)u|=f[h][((c^s[h])&l[h])>>>0];this._lBlock=c,this._rBlock=a^u}var p=this._lBlock;this._lBlock=this._rBlock,this._rBlock=p,e.call(this,1,1431655765),r.call(this,8,16711935),r.call(this,2,858993459),e.call(this,16,65535),e.call(this,4,252645135),t[i]=this._lBlock,t[i+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});i.DES=s._createHelper(p);var d=a.TripleDES=s.extend({_doReset:function(){var t=this._key,e=t.words;this._des1=p.createEncryptor(o.create(e.slice(0,2))),this._des2=p.createEncryptor(o.create(e.slice(2,4))),this._des3=p.createEncryptor(o.create(e.slice(4,6)))},encryptBlock:function(t,e){this._des1.encryptBlock(t,e),this._des2.decryptBlock(t,e),this._des3.encryptBlock(t,e)},decryptBlock:function(t,e){this._des3.decryptBlock(t,e),this._des2.encryptBlock(t,e),this._des1.decryptBlock(t,e)},keySize:6,ivSize:2,blockSize:2});i.TripleDES=s._createHelper(d)}(),t.TripleDES})},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(12),r(13),r(14),r(15))}(this,function(t){return function(){function e(){for(var t=this._X,e=this._C,r=0;r<8;r++)a[r]=e[r];e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0>>0?1:0)|0,this._b=e[7]>>>0>>0?1:0;for(var r=0;r<8;r++){var i=t[r]+e[r],n=65535&i,o=i>>>16,s=((n*n>>>17)+n*o>>>15)+o*o,u=((4294901760&i)*i|0)+((65535&i)*i|0);c[r]=s^u}t[0]=c[0]+(c[7]<<16|c[7]>>>16)+(c[6]<<16|c[6]>>>16)|0,t[1]=c[1]+(c[0]<<8|c[0]>>>24)+c[7]|0,t[2]=c[2]+(c[1]<<16|c[1]>>>16)+(c[0]<<16|c[0]>>>16)|0,t[3]=c[3]+(c[2]<<8|c[2]>>>24)+c[1]|0,t[4]=c[4]+(c[3]<<16|c[3]>>>16)+(c[2]<<16|c[2]>>>16)|0,t[5]=c[5]+(c[4]<<8|c[4]>>>24)+c[3]|0,t[6]=c[6]+(c[5]<<16|c[5]>>>16)+(c[4]<<16|c[4]>>>16)|0,t[7]=c[7]+(c[6]<<8|c[6]>>>24)+c[5]|0}var r=t,i=r.lib,n=i.StreamCipher,o=r.algo,s=[],a=[],c=[],u=o.Rabbit=n.extend({_doReset:function(){for(var t=this._key.words,r=this.cfg.iv,i=0;i<4;i++)t[i]=16711935&(t[i]<<8|t[i]>>>24)|4278255360&(t[i]<<24|t[i]>>>8);var n=this._X=[t[0],t[3]<<16|t[2]>>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],o=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];this._b=0;for(var i=0;i<4;i++)e.call(this);for(var i=0;i<8;i++)o[i]^=n[i+4&7];if(r){var s=r.words,a=s[0],c=s[1],u=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),h=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8),f=u>>>16|4294901760&h,l=h<<16|65535&u;o[0]^=u,o[1]^=f,o[2]^=h,o[3]^=l,o[4]^=u,o[5]^=f,o[6]^=h,o[7]^=l;for(var i=0;i<4;i++)e.call(this)}},_doProcessBlock:function(t,r){var i=this._X;e.call(this),s[0]=i[0]^i[5]>>>16^i[3]<<16,s[1]=i[2]^i[7]>>>16^i[5]<<16,s[2]=i[4]^i[1]>>>16^i[7]<<16,s[3]=i[6]^i[3]>>>16^i[1]<<16;for(var n=0;n<4;n++)s[n]=16711935&(s[n]<<8|s[n]>>>24)|4278255360&(s[n]<<24|s[n]>>>8),t[r+n]^=s[n]},blockSize:4,ivSize:2});r.Rabbit=n._createHelper(u)}(),t.Rabbit})},function(t,e,r){!function(i,n,o){t.exports=e=n(r(5),r(12),r(13),r(14),r(15))}(this,function(t){return function(){function e(){for(var t=this._S,e=this._i,r=this._j,i=0,n=0;n<4;n++){e=(e+1)%256,r=(r+t[e])%256;var o=t[e];t[e]=t[r],t[r]=o,i|=t[(t[e]+t[r])%256]<<24-8*n}return this._i=e,this._j=r,i}var r=t,i=r.lib,n=i.StreamCipher,o=r.algo,s=o.RC4=n.extend({_doReset:function(){for(var t=this._key,e=t.words,r=t.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;for(var n=0,o=0;n<256;n++){var s=n%r,a=e[s>>>2]>>>24-s%4*8&255;o=(o+i[n]+a)%256;var c=i[n];i[n]=i[o],i[o]=c}this._i=this._j=0},_doProcessBlock:function(t,r){t[r]^=e.call(this)},keySize:8,ivSize:0});r.RC4=n._createHelper(s);var a=o.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var t=this.cfg.drop;t>0;t--)e.call(this)}});r.RC4Drop=n._createHelper(a)}(),t.RC4})}])}); //# sourceMappingURL=secure-ls.min.js.map \ No newline at end of file diff --git a/dist/secure-ls.min.js.map b/dist/secure-ls.min.js.map index 1ae3a01..f1a770a 100644 --- a/dist/secure-ls.min.js.map +++ b/dist/secure-ls.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///secure-ls.min.js","webpack:///webpack/bootstrap 86f0cc5995c1466f85ee","webpack:///./src/index.js","webpack:///./src/utils.js","webpack:///./src/constants.js","webpack:///./src/WordArray.js","webpack:///./~/crypto-js/pbkdf2.js","webpack:///./~/crypto-js/core.js","webpack:///./~/crypto-js/sha1.js","webpack:///./~/crypto-js/hmac.js","webpack:///./src/enc-utf8.js","webpack:///./src/Base64.js","webpack:///./~/lz-string/libs/lz-string.js","webpack:///./~/crypto-js/aes.js","webpack:///./~/crypto-js/enc-base64.js","webpack:///./~/crypto-js/md5.js","webpack:///./~/crypto-js/evpkdf.js","webpack:///./~/crypto-js/cipher-core.js","webpack:///./~/crypto-js/tripledes.js","webpack:///./~/crypto-js/rabbit.js","webpack:///./~/crypto-js/rc4.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","_classCallCheck","instance","Constructor","TypeError","Object","defineProperty","value","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","key","protoProps","staticProps","prototype","_utils","_utils2","_constants","_constants2","_encUtf","_encUtf2","_Base","_Base2","_lzString","_lzString2","_aes","_aes2","_tripledes","_tripledes2","_rabbit","_rabbit2","_rc","_rc2","SecureLS","config","_name","utils","constants","Base64","LZString","AES","DES","RABBIT","RC4","enc","isCompression","encodingType","EncrytionTypes","BASE64","encryptionSecret","encryptionRealm","toLowerCase","ls","localStorage","init","metaData","getMetaData","WarningEnum","WarningTypes","_isBase64","_isBase64EncryptionType","_isAES","_isAESEncryptionType","_isDES","_isDESEncryptionType","_isRabbit","_isRabbitEncryptionType","_isRC4","_isRC4EncryptionType","_isCompression","_isDataCompressionEnabled","allKeys","keys","resetAllKeys","getObjectFromKey","s","generateSecretKey","setMetaData","isAllKeysData","decodedData","jsonData","deCompressedData","bytes","data","is","warn","KEY_NOT_PROVIDED","getDataFromLocalStorage","decompressFromUTF16","decode","getEncryptionSecret","decrypt","toString","_Utf8","JSON","parse","e","Error","getItem","extractKeyNames","dataToStore","String","metaKey","isKeyPresent","addToKeysList","processData","setDataToLocalStorage","setItem","getAllKeys","META_KEY_REMOVE","removeFromKeysList","removeItem","clear","undefined","encodedData","compressedData","stringify","encode","encrypt","compressToUTF16","getMetaKey","get","_WordArray","_WordArray2","_pbkdf","_pbkdf2","secretPhrase","reason","DEFAULT_TEXT","console","salt","CryptoJSWordArray","random","key128Bits","keySize","k","map","keyData","isKeyAlreadyPresent","push","index","splice","nBytes","rcache","words","r","mw","mz","mask","result","Math","_r","Set","sigBytes","undef","CryptoJS","C","C_lib","lib","Base","WordArray","C_algo","algo","SHA1","HMAC","PBKDF2","extend","cfg","hasher","iterations","compute","password","hmac","create","derivedKey","blockIndex","derivedKeyWords","blockIndexWords","block","update","finalize","reset","blockWords","blockWordsLength","intermediate","intermediateWords","j","concat","F","subtype","overrides","mixIn","hasOwnProperty","$super","apply","arguments","properties","propertyName","clone","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","ceil","slice","m_w","m_z","C_enc","hexChars","bite","join","hexStr","hexStrLength","parseInt","substr","Latin1","latin1Chars","fromCharCode","latin1Str","latin1StrLength","charCodeAt","Utf8","decodeURIComponent","escape","utf8Str","unescape","encodeURIComponent","BufferedBlockAlgorithm","_data","_nDataBytes","_append","_process","doFlush","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","max","_minBufferSize","nWordsReady","nBytesReady","min","offset","_doProcessBlock","processedWords","Hasher","_doReset","messageUpdate","hash","_doFinalize","_createHelper","message","_createHmacHelper","W","_hash","M","H","a","b","d","n","t","nBitsTotal","nBitsLeft","floor","HmacSHA1","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","_keyStr","o","u","f","_utf8Encode","isNaN","charAt","replace","indexOf","_utf8Decode","c2","c3","__WEBPACK_AMD_DEFINE_RESULT__","getBaseValue","alphabet","character","baseReverseDic","keyStrBase64","keyStrUriSafe","compressToBase64","input","res","_compress","decompressFromBase64","_decompress","compressed","compressToUint8Array","uncompressed","compress","buf","Uint8Array","TotalLen","current_value","decompressFromUint8Array","decompress","Array","forEach","compressToEncodedURIComponent","decompressFromEncodedURIComponent","bitsPerChar","getCharFromInt","ii","context_dictionary","context_dictionaryToCreate","context_c","context_wc","context_w","context_enlargeIn","context_dictSize","context_numBits","context_data","context_data_val","context_data_position","pow","resetValue","getNextValue","next","w","bits","resb","maxpower","power","dictionary","enlargeIn","dictSize","numBits","entry","val","position","BlockCipher","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","x","xi","sx","x2","x4","x8","RCON","_nRounds","_keyPriorReset","_key","keyWords","nRounds","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","encryptBlock","_doCryptBlock","decryptBlock","s0","s1","s2","s3","round","t0","t1","t2","t3","parseLoop","base64Str","base64StrLength","reverseMap","bits1","bits2","_map","base64Chars","byte1","byte2","byte3","triplet","paddingChar","_reverseMap","paddingIndex","FF","GG","HH","II","T","abs","sin","MD5","offset_i","M_offset_i","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","nBitsTotalH","nBitsTotalL","H_i","HmacMD5","EvpKDF","Cipher","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","process","dataUpdate","finalProcessedData","ivSize","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","ciphertext","C_mode","StreamCipher","finalProcessedBlocks","mode","BlockCipherMode","iv","Encryptor","Decryptor","_cipher","_iv","CBC","xorBlock","_prevBlock","processBlock","thisBlock","C_pad","pad","Pkcs7","nPaddingBytes","paddingWord","paddingWords","padding","unpad","CipherParams","modeCreator","_mode","cipherParams","formatter","C_format","format","OpenSSLFormatter","OpenSSL","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","plaintext","C_kdf","kdf","OpenSSLKdf","execute","derivedParams","exchangeLR","_lBlock","_rBlock","exchangeRL","PC1","PC2","BIT_SHIFTS","SBOX_P","0","268435456","536870912","805306368","1073741824","1342177280","1610612736","1879048192","2147483648","2415919104","2684354560","2952790016","3221225472","3489660928","3758096384","4026531840","134217728","402653184","671088640","939524096","1207959552","1476395008","1744830464","2013265920","2281701376","2550136832","2818572288","3087007744","3355443200","3623878656","3892314112","4160749568","1","268435457","536870913","805306369","1073741825","1342177281","1610612737","1879048193","2147483649","2415919105","2684354561","2952790017","3221225473","3489660929","3758096385","4026531841","134217729","402653185","671088641","939524097","1207959553","1476395009","1744830465","2013265921","2281701377","2550136833","2818572289","3087007745","3355443201","3623878657","3892314113","4160749569","16777216","33554432","50331648","67108864","83886080","100663296","117440512","150994944","167772160","184549376","201326592","218103808","234881024","251658240","8388608","25165824","41943040","58720256","75497472","92274688","109051904","125829120","142606336","159383552","176160768","192937984","209715200","226492416","243269632","260046848","285212672","301989888","318767104","335544320","352321536","369098752","385875968","419430400","436207616","452984832","469762048","486539264","503316480","520093696","276824064","293601280","310378496","327155712","343932928","360710144","377487360","394264576","411041792","427819008","444596224","461373440","478150656","494927872","511705088","528482304","1048576","2097152","3145728","4194304","5242880","6291456","7340032","9437184","10485760","11534336","12582912","13631488","14680064","15728640","524288","1572864","2621440","3670016","4718592","5767168","6815744","7864320","8912896","9961472","11010048","12058624","13107200","14155776","15204352","16252928","17825792","18874368","19922944","20971520","22020096","23068672","24117248","26214400","27262976","28311552","29360128","30408704","31457280","32505856","17301504","18350080","19398656","20447232","21495808","22544384","23592960","24641536","25690112","26738688","27787264","28835840","29884416","30932992","31981568","33030144","65536","131072","196608","262144","327680","393216","458752","589824","655360","720896","786432","851968","917504","983040","32768","98304","163840","229376","294912","360448","425984","491520","557056","622592","688128","753664","819200","884736","950272","1015808","1114112","1179648","1245184","1310720","1376256","1441792","1507328","1638400","1703936","1769472","1835008","1900544","1966080","2031616","1081344","1146880","1212416","1277952","1343488","1409024","1474560","1540096","1605632","1671168","1736704","1802240","1867776","1933312","1998848","2064384","4096","8192","12288","16384","20480","24576","28672","36864","40960","45056","49152","53248","57344","61440","2048","6144","10240","14336","18432","22528","26624","30720","34816","38912","43008","47104","51200","55296","59392","63488","69632","73728","77824","81920","86016","90112","94208","102400","106496","110592","114688","118784","122880","126976","67584","71680","75776","79872","83968","88064","92160","96256","100352","104448","108544","112640","116736","120832","124928","129024","256","512","768","1024","1280","1536","1792","2304","2560","2816","3072","3328","3584","3840","128","384","640","896","1152","1408","1664","1920","2176","2432","2688","2944","3200","3456","3712","3968","4352","4608","4864","5120","5376","5632","5888","6400","6656","6912","7168","7424","7680","7936","4224","4480","4736","4992","5248","5504","5760","6016","6272","6528","6784","7040","7296","7552","7808","8064","16","32","48","64","80","96","112","144","160","176","192","208","224","240","8","24","40","56","72","88","104","120","136","152","168","184","200","216","232","248","272","288","304","320","336","352","368","400","416","432","448","464","480","496","264","280","296","312","328","344","360","376","392","408","424","440","456","472","488","504","2","3","4","5","6","7","9","10","11","12","13","14","15","2147483650","2147483651","2147483652","2147483653","2147483654","2147483655","2147483656","2147483657","2147483658","2147483659","2147483660","2147483661","2147483662","2147483663","17","18","19","20","21","22","23","25","26","27","28","29","30","31","2147483664","2147483665","2147483666","2147483667","2147483668","2147483669","2147483670","2147483671","2147483672","2147483673","2147483674","2147483675","2147483676","2147483677","2147483678","2147483679","SBOX_MASK","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","lBlock","rBlock","TripleDES","_des1","_des2","_des3","nextState","X","_X","_C","C_","_b","gx","ga","gb","gh","gl","G","S","Rabbit","K","IV","IV_0","IV_1","i0","i2","i1","i3","generateKeystreamWord","_S","_i","_j","keystreamWord","keySigBytes","keyByteIndex","keyByte","RC4Drop","drop"],"mappings":"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","file":"secure-ls.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SecureLS\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SecureLS\"] = factory();\n\telse\n\t\troot[\"SecureLS\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SecureLS\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SecureLS\"] = factory();\n\telse\n\t\troot[\"SecureLS\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _utils = __webpack_require__(1);\n\t\n\tvar _utils2 = _interopRequireDefault(_utils);\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tvar _constants2 = _interopRequireDefault(_constants);\n\t\n\tvar _encUtf = __webpack_require__(8);\n\t\n\tvar _encUtf2 = _interopRequireDefault(_encUtf);\n\t\n\tvar _Base = __webpack_require__(9);\n\t\n\tvar _Base2 = _interopRequireDefault(_Base);\n\t\n\tvar _lzString = __webpack_require__(10);\n\t\n\tvar _lzString2 = _interopRequireDefault(_lzString);\n\t\n\tvar _aes = __webpack_require__(11);\n\t\n\tvar _aes2 = _interopRequireDefault(_aes);\n\t\n\tvar _tripledes = __webpack_require__(16);\n\t\n\tvar _tripledes2 = _interopRequireDefault(_tripledes);\n\t\n\tvar _rabbit = __webpack_require__(17);\n\t\n\tvar _rabbit2 = _interopRequireDefault(_rabbit);\n\t\n\tvar _rc = __webpack_require__(18);\n\t\n\tvar _rc2 = _interopRequireDefault(_rc);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar SecureLS = function () {\n\t function SecureLS(config) {\n\t _classCallCheck(this, SecureLS);\n\t\n\t config = config || {};\n\t this._name = 'secure-ls';\n\t this.utils = _utils2.default;\n\t this.constants = _constants2.default;\n\t this.Base64 = _Base2.default;\n\t this.LZString = _lzString2.default;\n\t this.AES = _aes2.default;\n\t this.DES = _tripledes2.default;\n\t this.RABBIT = _rabbit2.default;\n\t this.RC4 = _rc2.default;\n\t this.enc = _encUtf2.default;\n\t\n\t this.config = {\n\t isCompression: true,\n\t encodingType: _constants2.default.EncrytionTypes.BASE64,\n\t encryptionSecret: config.encryptionSecret,\n\t encryptionRealm: config.encryptionRealm\n\t };\n\t this.config.isCompression = typeof config.isCompression !== 'undefined' ? config.isCompression : true;\n\t this.config.encodingType = typeof config.encodingType !== 'undefined' || config.encodingType === '' ? config.encodingType.toLowerCase() : _constants2.default.EncrytionTypes.BASE64;\n\t\n\t this.ls = localStorage;\n\t this.init();\n\t }\n\t\n\t _createClass(SecureLS, [{\n\t key: 'init',\n\t value: function init() {\n\t var metaData = this.getMetaData();\n\t\n\t this.WarningEnum = this.constants.WarningEnum;\n\t this.WarningTypes = this.constants.WarningTypes;\n\t this.EncrytionTypes = this.constants.EncrytionTypes;\n\t\n\t this._isBase64 = this._isBase64EncryptionType();\n\t this._isAES = this._isAESEncryptionType();\n\t this._isDES = this._isDESEncryptionType();\n\t this._isRabbit = this._isRabbitEncryptionType();\n\t this._isRC4 = this._isRC4EncryptionType();\n\t this._isCompression = this._isDataCompressionEnabled();\n\t\n\t // fill the already present keys to the list of keys being used by secure-ls\n\t this.utils.allKeys = metaData.keys || this.resetAllKeys();\n\t }\n\t }, {\n\t key: '_isBase64EncryptionType',\n\t value: function _isBase64EncryptionType() {\n\t return _Base2.default && (typeof this.config.encodingType === 'undefined' || this.config.encodingType === this.constants.EncrytionTypes.BASE64);\n\t }\n\t }, {\n\t key: '_isAESEncryptionType',\n\t value: function _isAESEncryptionType() {\n\t return _aes2.default && this.config.encodingType === this.constants.EncrytionTypes.AES;\n\t }\n\t }, {\n\t key: '_isDESEncryptionType',\n\t value: function _isDESEncryptionType() {\n\t return _tripledes2.default && this.config.encodingType === this.constants.EncrytionTypes.DES;\n\t }\n\t }, {\n\t key: '_isRabbitEncryptionType',\n\t value: function _isRabbitEncryptionType() {\n\t return _rabbit2.default && this.config.encodingType === this.constants.EncrytionTypes.RABBIT;\n\t }\n\t }, {\n\t key: '_isRC4EncryptionType',\n\t value: function _isRC4EncryptionType() {\n\t return _rc2.default && this.config.encodingType === this.constants.EncrytionTypes.RC4;\n\t }\n\t }, {\n\t key: '_isDataCompressionEnabled',\n\t value: function _isDataCompressionEnabled() {\n\t return this.config.isCompression;\n\t }\n\t }, {\n\t key: 'getEncryptionSecret',\n\t value: function getEncryptionSecret(key) {\n\t var metaData = this.getMetaData();\n\t var obj = this.utils.getObjectFromKey(metaData.keys, key);\n\t\n\t if (!obj) {\n\t return;\n\t }\n\t\n\t if (this._isAES || this._isDES || this._isRabbit || this._isRC4) {\n\t if (typeof this.config.encryptionSecret === 'undefined') {\n\t this.utils.encryptionSecret = obj.s;\n\t\n\t if (!this.utils.encryptionSecret) {\n\t this.utils.encryptionSecret = this.utils.generateSecretKey();\n\t this.setMetaData();\n\t }\n\t } else {\n\t this.utils.encryptionSecret = this.config.encryptionSecret || obj.s || '';\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'get',\n\t value: function get(key, isAllKeysData) {\n\t var decodedData = '',\n\t jsonData = '',\n\t deCompressedData = void 0,\n\t bytes = void 0,\n\t data = void 0;\n\t\n\t if (!this.utils.is(key)) {\n\t this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\n\t return jsonData;\n\t }\n\t\n\t data = this.getDataFromLocalStorage(key);\n\t\n\t if (!data) {\n\t return jsonData;\n\t }\n\t\n\t deCompressedData = data; // saves else\n\t if (this._isCompression || isAllKeysData) {\n\t // meta data always compressed\n\t deCompressedData = _lzString2.default.decompressFromUTF16(data);\n\t }\n\t\n\t decodedData = deCompressedData; // saves else\n\t if (this._isBase64 || isAllKeysData) {\n\t // meta data always Base64\n\t decodedData = _Base2.default.decode(deCompressedData);\n\t } else {\n\t this.getEncryptionSecret(key);\n\t if (this._isAES) {\n\t bytes = _aes2.default.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\n\t } else if (this._isDES) {\n\t bytes = _tripledes2.default.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\n\t } else if (this._isRabbit) {\n\t bytes = _rabbit2.default.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\n\t } else if (this._isRC4) {\n\t bytes = _rc2.default.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\n\t }\n\t\n\t if (bytes) {\n\t decodedData = bytes.toString(_encUtf2.default._Utf8);\n\t }\n\t }\n\t\n\t try {\n\t jsonData = JSON.parse(decodedData);\n\t } catch (e) {\n\t throw new Error('Could not parse JSON');\n\t }\n\t\n\t return jsonData;\n\t }\n\t }, {\n\t key: 'getDataFromLocalStorage',\n\t value: function getDataFromLocalStorage(key) {\n\t return this.ls.getItem(key, true);\n\t }\n\t }, {\n\t key: 'getAllKeys',\n\t value: function getAllKeys() {\n\t var data = this.getMetaData();\n\t\n\t return this.utils.extractKeyNames(data) || [];\n\t }\n\t }, {\n\t key: 'set',\n\t value: function set(key, data) {\n\t var dataToStore = '';\n\t\n\t if (!this.utils.is(key)) {\n\t this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\n\t return;\n\t }\n\t\n\t this.getEncryptionSecret(key);\n\t\n\t // add key(s) to Array if not already added, only for keys other than meta key\n\t if (!(String(key) === String(this.utils.metaKey))) {\n\t if (!this.utils.isKeyPresent(key)) {\n\t this.utils.addToKeysList(key);\n\t this.setMetaData();\n\t }\n\t }\n\t\n\t dataToStore = this.processData(data);\n\t // Store the data to localStorage\n\t this.setDataToLocalStorage(key, dataToStore);\n\t }\n\t }, {\n\t key: 'setDataToLocalStorage',\n\t value: function setDataToLocalStorage(key, data) {\n\t this.ls.setItem(key, data);\n\t }\n\t }, {\n\t key: 'remove',\n\t value: function remove(key) {\n\t if (!this.utils.is(key)) {\n\t this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\n\t return;\n\t }\n\t\n\t if (key === this.utils.metaKey && this.getAllKeys().length) {\n\t this.utils.warn(this.WarningEnum.META_KEY_REMOVE);\n\t return;\n\t }\n\t\n\t if (this.utils.isKeyPresent(key)) {\n\t this.utils.removeFromKeysList(key);\n\t this.setMetaData();\n\t }\n\t this.ls.removeItem(key);\n\t }\n\t }, {\n\t key: 'removeAll',\n\t value: function removeAll() {\n\t var keys = void 0,\n\t i = void 0;\n\t\n\t keys = this.getAllKeys();\n\t for (i = 0; i < keys.length; i++) {\n\t this.ls.removeItem(keys[i]);\n\t }\n\t this.ls.removeItem(this.utils.metaKey);\n\t\n\t this.resetAllKeys();\n\t }\n\t }, {\n\t key: 'clear',\n\t value: function clear() {\n\t this.ls.clear();\n\t this.resetAllKeys();\n\t }\n\t }, {\n\t key: 'resetAllKeys',\n\t value: function resetAllKeys() {\n\t this.utils.allKeys = [];\n\t return [];\n\t }\n\t }, {\n\t key: 'processData',\n\t value: function processData(data, isAllKeysData) {\n\t if (data === null || data === undefined || data === '') {\n\t return '';\n\t }\n\t\n\t var jsonData = void 0,\n\t encodedData = void 0,\n\t compressedData = void 0;\n\t\n\t try {\n\t jsonData = JSON.stringify(data);\n\t } catch (e) {\n\t throw new Error('Could not stringify data.');\n\t }\n\t\n\t // Encode Based on encoding type\n\t // If not set, default to Base64 for securing data\n\t encodedData = jsonData;\n\t if (this._isBase64 || isAllKeysData) {\n\t encodedData = _Base2.default.encode(jsonData);\n\t } else {\n\t if (this._isAES) {\n\t encodedData = _aes2.default.encrypt(jsonData, this.utils.encryptionSecret);\n\t } else if (this._isDES) {\n\t encodedData = _tripledes2.default.encrypt(jsonData, this.utils.encryptionSecret);\n\t } else if (this._isRabbit) {\n\t encodedData = _rabbit2.default.encrypt(jsonData, this.utils.encryptionSecret);\n\t } else if (this._isRC4) {\n\t encodedData = _rc2.default.encrypt(jsonData, this.utils.encryptionSecret);\n\t }\n\t\n\t encodedData = encodedData && encodedData.toString();\n\t }\n\t\n\t // Compress data if set to true\n\t compressedData = encodedData;\n\t if (this._isCompression || isAllKeysData) {\n\t compressedData = _lzString2.default.compressToUTF16(encodedData);\n\t }\n\t\n\t return compressedData;\n\t }\n\t }, {\n\t key: 'setMetaData',\n\t value: function setMetaData() {\n\t var dataToStore = this.processData({\n\t keys: this.utils.allKeys\n\t }, true);\n\t\n\t // Store the data to localStorage\n\t this.setDataToLocalStorage(this.getMetaKey(), dataToStore);\n\t }\n\t }, {\n\t key: 'getMetaData',\n\t value: function getMetaData() {\n\t return this.get(this.getMetaKey(), true) || {};\n\t }\n\t }, {\n\t key: 'getMetaKey',\n\t value: function getMetaKey() {\n\t return this.utils.metaKey + (this.config.encryptionRealm ? '__' + this.config.encryptionRealm : '');\n\t }\n\t }]);\n\t\n\t return SecureLS;\n\t}();\n\t\n\texports.default = SecureLS;\n\t;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tvar _constants2 = _interopRequireDefault(_constants);\n\t\n\tvar _WordArray = __webpack_require__(3);\n\t\n\tvar _WordArray2 = _interopRequireDefault(_WordArray);\n\t\n\tvar _pbkdf = __webpack_require__(4);\n\t\n\tvar _pbkdf2 = _interopRequireDefault(_pbkdf);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar utils = {\n\t metaKey: '_secure__ls__metadata',\n\t encryptionSecret: '',\n\t secretPhrase: 's3cr3t$#@135^&*246',\n\t allKeys: [],\n\t is: function is(key) {\n\t if (key) {\n\t return true;\n\t }\n\t return false;\n\t },\n\t warn: function warn(reason) {\n\t reason = reason ? reason : _constants2.default.WarningEnum.DEFAULT_TEXT;\n\t console.warn(_constants2.default.WarningTypes[reason]);\n\t },\n\t generateSecretKey: function generateSecretKey() {\n\t var salt = _WordArray2.default.random(128 / 8);\n\t var key128Bits = (0, _pbkdf2.default)(this.secretPhrase, salt, { keySize: 128 / 32 });\n\t\n\t return key128Bits && key128Bits.toString();\n\t },\n\t getObjectFromKey: function getObjectFromKey(data, key) {\n\t if (!data || !data.length) {\n\t return {};\n\t }\n\t\n\t var i = void 0,\n\t obj = {};\n\t\n\t for (i = 0; i < data.length; i++) {\n\t if (data[i].k === key) {\n\t obj = data[i];\n\t break;\n\t }\n\t }\n\t\n\t return obj;\n\t },\n\t extractKeyNames: function extractKeyNames(data) {\n\t if (!data || !data.keys || !data.keys.length) {\n\t return [];\n\t }\n\t\n\t return data.keys.map(function (keyData) {\n\t return keyData.k;\n\t });\n\t },\n\t getAllKeys: function getAllKeys() {\n\t return this.allKeys;\n\t },\n\t isKeyPresent: function isKeyPresent(key) {\n\t var isKeyAlreadyPresent = false;\n\t\n\t for (var i = 0; i < this.allKeys.length; i++) {\n\t if (String(this.allKeys[i].k) === String(key)) {\n\t isKeyAlreadyPresent = true; // found\n\t break;\n\t }\n\t }\n\t\n\t return isKeyAlreadyPresent;\n\t },\n\t addToKeysList: function addToKeysList(key) {\n\t this.allKeys.push({\n\t k: key,\n\t s: this.encryptionSecret\n\t });\n\t },\n\t removeFromKeysList: function removeFromKeysList(key) {\n\t var i = void 0,\n\t index = -1;\n\t\n\t for (i = 0; i < this.allKeys.length; i++) {\n\t if (this.allKeys[i].k === key) {\n\t index = i;\n\t break;\n\t }\n\t }\n\t if (index !== -1) {\n\t this.allKeys.splice(index, 1);\n\t }\n\t return index;\n\t }\n\t};\n\t\n\tmodule.exports = utils;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar WarningEnum = {\n\t KEY_NOT_PROVIDED: 'keyNotProvided',\n\t META_KEY_REMOVE: 'metaKeyRemove',\n\t DEFAULT_TEXT: 'defaultText'\n\t};\n\t\n\tvar WarningTypes = {};\n\t\n\tWarningTypes[WarningEnum.KEY_NOT_PROVIDED] = 'Secure LS: Key not provided. Aborting operation!';\n\tWarningTypes[WarningEnum.META_KEY_REMOVE] = 'Secure LS: Meta key can not be removed\\nunless all keys created by Secure LS are removed!';\n\tWarningTypes[WarningEnum.DEFAULT_TEXT] = 'Unexpected output';\n\t\n\tvar constants = {\n\t WarningEnum: WarningEnum,\n\t WarningTypes: WarningTypes,\n\t EncrytionTypes: {\n\t BASE64: 'base64',\n\t AES: 'aes',\n\t DES: 'des',\n\t RABBIT: 'rabbit',\n\t RC4: 'rc4'\n\t }\n\t};\n\t\n\tmodule.exports = constants;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\t/*\r\n\t ES6 compatible port of CryptoJS - WordArray for PBKDF2 password key generation\r\n\t\r\n\t Source: https://github.com/brix/crypto-js\r\n\t LICENSE: MIT\r\n\t */\n\t\n\tvar CryptoJSWordArray = {};\n\t\n\tCryptoJSWordArray.random = function (nBytes) {\n\t var words = [];\n\t var r = function r(mw) {\n\t var mz = 0x3ade68b1;\n\t var mask = 0xffffffff;\n\t\n\t return function () {\n\t mz = 0x9069 * (mz & 0xFFFF) + (mz >> 0x10) & mask;\n\t mw = 0x4650 * (mw & 0xFFFF) + (mw >> 0x10) & mask;\n\t var result = (mz << 0x10) + mw & mask;\n\t\n\t result /= 0x100000000;\n\t result += 0.5;\n\t return result * (Math.random() > 0.5 ? 1 : -1);\n\t };\n\t };\n\t\n\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t var _r = r((rcache || Math.random()) * 0x100000000);\n\t\n\t rcache = _r() * 0x3ade67b7;\n\t words.push(_r() * 0x100000000 | 0);\n\t }\n\t\n\t return new this.Set(words, nBytes);\n\t};\n\t\n\tCryptoJSWordArray.Set = function (words, sigBytes) {\n\t words = this.words = words || [];\n\t\n\t if (sigBytes !== undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t};\n\t\n\tmodule.exports = CryptoJSWordArray;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(6), __webpack_require__(7));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var Base = C_lib.Base;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var C_algo = C.algo;\n\t\t var SHA1 = C_algo.SHA1;\n\t\t var HMAC = C_algo.HMAC;\n\t\n\t\t /**\n\t\t * Password-Based Key Derivation Function 2 algorithm.\n\t\t */\n\t\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t\t */\n\t\t cfg: Base.extend({\n\t\t keySize: 128/32,\n\t\t hasher: SHA1,\n\t\t iterations: 1\n\t\t }),\n\t\n\t\t /**\n\t\t * Initializes a newly created key derivation function.\n\t\t *\n\t\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t\t */\n\t\t init: function (cfg) {\n\t\t this.cfg = this.cfg.extend(cfg);\n\t\t },\n\t\n\t\t /**\n\t\t * Computes the Password-Based Key Derivation Function 2.\n\t\t *\n\t\t * @param {WordArray|string} password The password.\n\t\t * @param {WordArray|string} salt A salt.\n\t\t *\n\t\t * @return {WordArray} The derived key.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var key = kdf.compute(password, salt);\n\t\t */\n\t\t compute: function (password, salt) {\n\t\t // Shortcut\n\t\t var cfg = this.cfg;\n\t\n\t\t // Init HMAC\n\t\t var hmac = HMAC.create(cfg.hasher, password);\n\t\n\t\t // Initial values\n\t\t var derivedKey = WordArray.create();\n\t\t var blockIndex = WordArray.create([0x00000001]);\n\t\n\t\t // Shortcuts\n\t\t var derivedKeyWords = derivedKey.words;\n\t\t var blockIndexWords = blockIndex.words;\n\t\t var keySize = cfg.keySize;\n\t\t var iterations = cfg.iterations;\n\t\n\t\t // Generate key\n\t\t while (derivedKeyWords.length < keySize) {\n\t\t var block = hmac.update(salt).finalize(blockIndex);\n\t\t hmac.reset();\n\t\n\t\t // Shortcuts\n\t\t var blockWords = block.words;\n\t\t var blockWordsLength = blockWords.length;\n\t\n\t\t // Iterations\n\t\t var intermediate = block;\n\t\t for (var i = 1; i < iterations; i++) {\n\t\t intermediate = hmac.finalize(intermediate);\n\t\t hmac.reset();\n\t\n\t\t // Shortcut\n\t\t var intermediateWords = intermediate.words;\n\t\n\t\t // XOR intermediate with block\n\t\t for (var j = 0; j < blockWordsLength; j++) {\n\t\t blockWords[j] ^= intermediateWords[j];\n\t\t }\n\t\t }\n\t\n\t\t derivedKey.concat(block);\n\t\t blockIndexWords[0]++;\n\t\t }\n\t\t derivedKey.sigBytes = keySize * 4;\n\t\n\t\t return derivedKey;\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Computes the Password-Based Key Derivation Function 2.\n\t\t *\n\t\t * @param {WordArray|string} password The password.\n\t\t * @param {WordArray|string} salt A salt.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t\t *\n\t\t * @return {WordArray} The derived key.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var key = CryptoJS.PBKDF2(password, salt);\n\t\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t\t */\n\t\t C.PBKDF2 = function (password, salt, cfg) {\n\t\t return PBKDF2.create(cfg).compute(password, salt);\n\t\t };\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.PBKDF2;\n\t\n\t}));\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory();\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\troot.CryptoJS = factory();\n\t\t}\n\t}(this, function () {\n\t\n\t\t/**\n\t\t * CryptoJS core components.\n\t\t */\n\t\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t\t /*\n\t\t * Local polyfil of Object.create\n\t\t */\n\t\t var create = Object.create || (function () {\n\t\t function F() {};\n\t\n\t\t return function (obj) {\n\t\t var subtype;\n\t\n\t\t F.prototype = obj;\n\t\n\t\t subtype = new F();\n\t\n\t\t F.prototype = null;\n\t\n\t\t return subtype;\n\t\t };\n\t\t }())\n\t\n\t\t /**\n\t\t * CryptoJS namespace.\n\t\t */\n\t\t var C = {};\n\t\n\t\t /**\n\t\t * Library namespace.\n\t\t */\n\t\t var C_lib = C.lib = {};\n\t\n\t\t /**\n\t\t * Base object for prototypal inheritance.\n\t\t */\n\t\t var Base = C_lib.Base = (function () {\n\t\n\t\n\t\t return {\n\t\t /**\n\t\t * Creates a new object that inherits from this object.\n\t\t *\n\t\t * @param {Object} overrides Properties to copy into the new object.\n\t\t *\n\t\t * @return {Object} The new object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var MyType = CryptoJS.lib.Base.extend({\n\t\t * field: 'value',\n\t\t *\n\t\t * method: function () {\n\t\t * }\n\t\t * });\n\t\t */\n\t\t extend: function (overrides) {\n\t\t // Spawn\n\t\t var subtype = create(this);\n\t\n\t\t // Augment\n\t\t if (overrides) {\n\t\t subtype.mixIn(overrides);\n\t\t }\n\t\n\t\t // Create default initializer\n\t\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t\t subtype.init = function () {\n\t\t subtype.$super.init.apply(this, arguments);\n\t\t };\n\t\t }\n\t\n\t\t // Initializer's prototype is the subtype object\n\t\t subtype.init.prototype = subtype;\n\t\n\t\t // Reference supertype\n\t\t subtype.$super = this;\n\t\n\t\t return subtype;\n\t\t },\n\t\n\t\t /**\n\t\t * Extends this object and runs the init method.\n\t\t * Arguments to create() will be passed to init().\n\t\t *\n\t\t * @return {Object} The new object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var instance = MyType.create();\n\t\t */\n\t\t create: function () {\n\t\t var instance = this.extend();\n\t\t instance.init.apply(instance, arguments);\n\t\n\t\t return instance;\n\t\t },\n\t\n\t\t /**\n\t\t * Initializes a newly created object.\n\t\t * Override this method to add some logic when your objects are created.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var MyType = CryptoJS.lib.Base.extend({\n\t\t * init: function () {\n\t\t * // ...\n\t\t * }\n\t\t * });\n\t\t */\n\t\t init: function () {\n\t\t },\n\t\n\t\t /**\n\t\t * Copies properties into this object.\n\t\t *\n\t\t * @param {Object} properties The properties to mix in.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * MyType.mixIn({\n\t\t * field: 'value'\n\t\t * });\n\t\t */\n\t\t mixIn: function (properties) {\n\t\t for (var propertyName in properties) {\n\t\t if (properties.hasOwnProperty(propertyName)) {\n\t\t this[propertyName] = properties[propertyName];\n\t\t }\n\t\t }\n\t\n\t\t // IE won't copy toString using the loop above\n\t\t if (properties.hasOwnProperty('toString')) {\n\t\t this.toString = properties.toString;\n\t\t }\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a copy of this object.\n\t\t *\n\t\t * @return {Object} The clone.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var clone = instance.clone();\n\t\t */\n\t\t clone: function () {\n\t\t return this.init.prototype.extend(this);\n\t\t }\n\t\t };\n\t\t }());\n\t\n\t\t /**\n\t\t * An array of 32-bit words.\n\t\t *\n\t\t * @property {Array} words The array of 32-bit words.\n\t\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t\t */\n\t\t var WordArray = C_lib.WordArray = Base.extend({\n\t\t /**\n\t\t * Initializes a newly created word array.\n\t\t *\n\t\t * @param {Array} words (Optional) An array of 32-bit words.\n\t\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t\t */\n\t\t init: function (words, sigBytes) {\n\t\t words = this.words = words || [];\n\t\n\t\t if (sigBytes != undefined) {\n\t\t this.sigBytes = sigBytes;\n\t\t } else {\n\t\t this.sigBytes = words.length * 4;\n\t\t }\n\t\t },\n\t\n\t\t /**\n\t\t * Converts this word array to a string.\n\t\t *\n\t\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t\t *\n\t\t * @return {string} The stringified word array.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var string = wordArray + '';\n\t\t * var string = wordArray.toString();\n\t\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t\t */\n\t\t toString: function (encoder) {\n\t\t return (encoder || Hex).stringify(this);\n\t\t },\n\t\n\t\t /**\n\t\t * Concatenates a word array to this word array.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array to append.\n\t\t *\n\t\t * @return {WordArray} This word array.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * wordArray1.concat(wordArray2);\n\t\t */\n\t\t concat: function (wordArray) {\n\t\t // Shortcuts\n\t\t var thisWords = this.words;\n\t\t var thatWords = wordArray.words;\n\t\t var thisSigBytes = this.sigBytes;\n\t\t var thatSigBytes = wordArray.sigBytes;\n\t\n\t\t // Clamp excess bits\n\t\t this.clamp();\n\t\n\t\t // Concat\n\t\t if (thisSigBytes % 4) {\n\t\t // Copy one byte at a time\n\t\t for (var i = 0; i < thatSigBytes; i++) {\n\t\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t\t }\n\t\t } else {\n\t\t // Copy one word at a time\n\t\t for (var i = 0; i < thatSigBytes; i += 4) {\n\t\t thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t\t }\n\t\t }\n\t\t this.sigBytes += thatSigBytes;\n\t\n\t\t // Chainable\n\t\t return this;\n\t\t },\n\t\n\t\t /**\n\t\t * Removes insignificant bits.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * wordArray.clamp();\n\t\t */\n\t\t clamp: function () {\n\t\t // Shortcuts\n\t\t var words = this.words;\n\t\t var sigBytes = this.sigBytes;\n\t\n\t\t // Clamp\n\t\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t\t words.length = Math.ceil(sigBytes / 4);\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a copy of this word array.\n\t\t *\n\t\t * @return {WordArray} The clone.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var clone = wordArray.clone();\n\t\t */\n\t\t clone: function () {\n\t\t var clone = Base.clone.call(this);\n\t\t clone.words = this.words.slice(0);\n\t\n\t\t return clone;\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a word array filled with random bytes.\n\t\t *\n\t\t * @param {number} nBytes The number of random bytes to generate.\n\t\t *\n\t\t * @return {WordArray} The random word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t\t */\n\t\t random: function (nBytes) {\n\t\t var words = [];\n\t\n\t\t var r = (function (m_w) {\n\t\t var m_w = m_w;\n\t\t var m_z = 0x3ade68b1;\n\t\t var mask = 0xffffffff;\n\t\n\t\t return function () {\n\t\t m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t\t m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t\t var result = ((m_z << 0x10) + m_w) & mask;\n\t\t result /= 0x100000000;\n\t\t result += 0.5;\n\t\t return result * (Math.random() > .5 ? 1 : -1);\n\t\t }\n\t\t });\n\t\n\t\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t\t var _r = r((rcache || Math.random()) * 0x100000000);\n\t\n\t\t rcache = _r() * 0x3ade67b7;\n\t\t words.push((_r() * 0x100000000) | 0);\n\t\t }\n\t\n\t\t return new WordArray.init(words, nBytes);\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Encoder namespace.\n\t\t */\n\t\t var C_enc = C.enc = {};\n\t\n\t\t /**\n\t\t * Hex encoding strategy.\n\t\t */\n\t\t var Hex = C_enc.Hex = {\n\t\t /**\n\t\t * Converts a word array to a hex string.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array.\n\t\t *\n\t\t * @return {string} The hex string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t\t */\n\t\t stringify: function (wordArray) {\n\t\t // Shortcuts\n\t\t var words = wordArray.words;\n\t\t var sigBytes = wordArray.sigBytes;\n\t\n\t\t // Convert\n\t\t var hexChars = [];\n\t\t for (var i = 0; i < sigBytes; i++) {\n\t\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t\t hexChars.push((bite >>> 4).toString(16));\n\t\t hexChars.push((bite & 0x0f).toString(16));\n\t\t }\n\t\n\t\t return hexChars.join('');\n\t\t },\n\t\n\t\t /**\n\t\t * Converts a hex string to a word array.\n\t\t *\n\t\t * @param {string} hexStr The hex string.\n\t\t *\n\t\t * @return {WordArray} The word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t\t */\n\t\t parse: function (hexStr) {\n\t\t // Shortcut\n\t\t var hexStrLength = hexStr.length;\n\t\n\t\t // Convert\n\t\t var words = [];\n\t\t for (var i = 0; i < hexStrLength; i += 2) {\n\t\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t\t }\n\t\n\t\t return new WordArray.init(words, hexStrLength / 2);\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * Latin1 encoding strategy.\n\t\t */\n\t\t var Latin1 = C_enc.Latin1 = {\n\t\t /**\n\t\t * Converts a word array to a Latin1 string.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array.\n\t\t *\n\t\t * @return {string} The Latin1 string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t\t */\n\t\t stringify: function (wordArray) {\n\t\t // Shortcuts\n\t\t var words = wordArray.words;\n\t\t var sigBytes = wordArray.sigBytes;\n\t\n\t\t // Convert\n\t\t var latin1Chars = [];\n\t\t for (var i = 0; i < sigBytes; i++) {\n\t\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t\t latin1Chars.push(String.fromCharCode(bite));\n\t\t }\n\t\n\t\t return latin1Chars.join('');\n\t\t },\n\t\n\t\t /**\n\t\t * Converts a Latin1 string to a word array.\n\t\t *\n\t\t * @param {string} latin1Str The Latin1 string.\n\t\t *\n\t\t * @return {WordArray} The word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t\t */\n\t\t parse: function (latin1Str) {\n\t\t // Shortcut\n\t\t var latin1StrLength = latin1Str.length;\n\t\n\t\t // Convert\n\t\t var words = [];\n\t\t for (var i = 0; i < latin1StrLength; i++) {\n\t\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t\t }\n\t\n\t\t return new WordArray.init(words, latin1StrLength);\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * UTF-8 encoding strategy.\n\t\t */\n\t\t var Utf8 = C_enc.Utf8 = {\n\t\t /**\n\t\t * Converts a word array to a UTF-8 string.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array.\n\t\t *\n\t\t * @return {string} The UTF-8 string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t\t */\n\t\t stringify: function (wordArray) {\n\t\t try {\n\t\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t\t } catch (e) {\n\t\t throw new Error('Malformed UTF-8 data');\n\t\t }\n\t\t },\n\t\n\t\t /**\n\t\t * Converts a UTF-8 string to a word array.\n\t\t *\n\t\t * @param {string} utf8Str The UTF-8 string.\n\t\t *\n\t\t * @return {WordArray} The word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t\t */\n\t\t parse: function (utf8Str) {\n\t\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * Abstract buffered block algorithm template.\n\t\t *\n\t\t * The property blockSize must be implemented in a concrete subtype.\n\t\t *\n\t\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t\t */\n\t\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t\t /**\n\t\t * Resets this block algorithm's data buffer to its initial state.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * bufferedBlockAlgorithm.reset();\n\t\t */\n\t\t reset: function () {\n\t\t // Initial values\n\t\t this._data = new WordArray.init();\n\t\t this._nDataBytes = 0;\n\t\t },\n\t\n\t\t /**\n\t\t * Adds new data to this block algorithm's buffer.\n\t\t *\n\t\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * bufferedBlockAlgorithm._append('data');\n\t\t * bufferedBlockAlgorithm._append(wordArray);\n\t\t */\n\t\t _append: function (data) {\n\t\t // Convert string to WordArray, else assume WordArray already\n\t\t if (typeof data == 'string') {\n\t\t data = Utf8.parse(data);\n\t\t }\n\t\n\t\t // Append\n\t\t this._data.concat(data);\n\t\t this._nDataBytes += data.sigBytes;\n\t\t },\n\t\n\t\t /**\n\t\t * Processes available data blocks.\n\t\t *\n\t\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t\t *\n\t\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t\t *\n\t\t * @return {WordArray} The processed data.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var processedData = bufferedBlockAlgorithm._process();\n\t\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t\t */\n\t\t _process: function (doFlush) {\n\t\t // Shortcuts\n\t\t var data = this._data;\n\t\t var dataWords = data.words;\n\t\t var dataSigBytes = data.sigBytes;\n\t\t var blockSize = this.blockSize;\n\t\t var blockSizeBytes = blockSize * 4;\n\t\n\t\t // Count blocks ready\n\t\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t\t if (doFlush) {\n\t\t // Round up to include partial blocks\n\t\t nBlocksReady = Math.ceil(nBlocksReady);\n\t\t } else {\n\t\t // Round down to include only full blocks,\n\t\t // less the number of blocks that must remain in the buffer\n\t\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t\t }\n\t\n\t\t // Count words ready\n\t\t var nWordsReady = nBlocksReady * blockSize;\n\t\n\t\t // Count bytes ready\n\t\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\t\n\t\t // Process blocks\n\t\t if (nWordsReady) {\n\t\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t\t // Perform concrete-algorithm logic\n\t\t this._doProcessBlock(dataWords, offset);\n\t\t }\n\t\n\t\t // Remove processed words\n\t\t var processedWords = dataWords.splice(0, nWordsReady);\n\t\t data.sigBytes -= nBytesReady;\n\t\t }\n\t\n\t\t // Return processed words\n\t\t return new WordArray.init(processedWords, nBytesReady);\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a copy of this object.\n\t\t *\n\t\t * @return {Object} The clone.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var clone = bufferedBlockAlgorithm.clone();\n\t\t */\n\t\t clone: function () {\n\t\t var clone = Base.clone.call(this);\n\t\t clone._data = this._data.clone();\n\t\n\t\t return clone;\n\t\t },\n\t\n\t\t _minBufferSize: 0\n\t\t });\n\t\n\t\t /**\n\t\t * Abstract hasher template.\n\t\t *\n\t\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t\t */\n\t\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t */\n\t\t cfg: Base.extend(),\n\t\n\t\t /**\n\t\t * Initializes a newly created hasher.\n\t\t *\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hasher = CryptoJS.algo.SHA256.create();\n\t\t */\n\t\t init: function (cfg) {\n\t\t // Apply config defaults\n\t\t this.cfg = this.cfg.extend(cfg);\n\t\n\t\t // Set initial values\n\t\t this.reset();\n\t\t },\n\t\n\t\t /**\n\t\t * Resets this hasher to its initial state.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * hasher.reset();\n\t\t */\n\t\t reset: function () {\n\t\t // Reset data buffer\n\t\t BufferedBlockAlgorithm.reset.call(this);\n\t\n\t\t // Perform concrete-hasher logic\n\t\t this._doReset();\n\t\t },\n\t\n\t\t /**\n\t\t * Updates this hasher with a message.\n\t\t *\n\t\t * @param {WordArray|string} messageUpdate The message to append.\n\t\t *\n\t\t * @return {Hasher} This hasher.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * hasher.update('message');\n\t\t * hasher.update(wordArray);\n\t\t */\n\t\t update: function (messageUpdate) {\n\t\t // Append\n\t\t this._append(messageUpdate);\n\t\n\t\t // Update the hash\n\t\t this._process();\n\t\n\t\t // Chainable\n\t\t return this;\n\t\t },\n\t\n\t\t /**\n\t\t * Finalizes the hash computation.\n\t\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t\t *\n\t\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t\t *\n\t\t * @return {WordArray} The hash.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hash = hasher.finalize();\n\t\t * var hash = hasher.finalize('message');\n\t\t * var hash = hasher.finalize(wordArray);\n\t\t */\n\t\t finalize: function (messageUpdate) {\n\t\t // Final message update\n\t\t if (messageUpdate) {\n\t\t this._append(messageUpdate);\n\t\t }\n\t\n\t\t // Perform concrete-hasher logic\n\t\t var hash = this._doFinalize();\n\t\n\t\t return hash;\n\t\t },\n\t\n\t\t blockSize: 512/32,\n\t\n\t\t /**\n\t\t * Creates a shortcut function to a hasher's object interface.\n\t\t *\n\t\t * @param {Hasher} hasher The hasher to create a helper for.\n\t\t *\n\t\t * @return {Function} The shortcut function.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t\t */\n\t\t _createHelper: function (hasher) {\n\t\t return function (message, cfg) {\n\t\t return new hasher.init(cfg).finalize(message);\n\t\t };\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a shortcut function to the HMAC's object interface.\n\t\t *\n\t\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t\t *\n\t\t * @return {Function} The shortcut function.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t\t */\n\t\t _createHmacHelper: function (hasher) {\n\t\t return function (message, key) {\n\t\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t\t };\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Algorithm namespace.\n\t\t */\n\t\t var C_algo = C.algo = {};\n\t\n\t\t return C;\n\t\t}(Math));\n\t\n\t\n\t\treturn CryptoJS;\n\t\n\t}));\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var Hasher = C_lib.Hasher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Reusable object\n\t\t var W = [];\n\t\n\t\t /**\n\t\t * SHA-1 hash algorithm.\n\t\t */\n\t\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t\t _doReset: function () {\n\t\t this._hash = new WordArray.init([\n\t\t 0x67452301, 0xefcdab89,\n\t\t 0x98badcfe, 0x10325476,\n\t\t 0xc3d2e1f0\n\t\t ]);\n\t\t },\n\t\n\t\t _doProcessBlock: function (M, offset) {\n\t\t // Shortcut\n\t\t var H = this._hash.words;\n\t\n\t\t // Working variables\n\t\t var a = H[0];\n\t\t var b = H[1];\n\t\t var c = H[2];\n\t\t var d = H[3];\n\t\t var e = H[4];\n\t\n\t\t // Computation\n\t\t for (var i = 0; i < 80; i++) {\n\t\t if (i < 16) {\n\t\t W[i] = M[offset + i] | 0;\n\t\t } else {\n\t\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t\t W[i] = (n << 1) | (n >>> 31);\n\t\t }\n\t\n\t\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t\t if (i < 20) {\n\t\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t\t } else if (i < 40) {\n\t\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t\t } else if (i < 60) {\n\t\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t\t } else /* if (i < 80) */ {\n\t\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t\t }\n\t\n\t\t e = d;\n\t\t d = c;\n\t\t c = (b << 30) | (b >>> 2);\n\t\t b = a;\n\t\t a = t;\n\t\t }\n\t\n\t\t // Intermediate hash value\n\t\t H[0] = (H[0] + a) | 0;\n\t\t H[1] = (H[1] + b) | 0;\n\t\t H[2] = (H[2] + c) | 0;\n\t\t H[3] = (H[3] + d) | 0;\n\t\t H[4] = (H[4] + e) | 0;\n\t\t },\n\t\n\t\t _doFinalize: function () {\n\t\t // Shortcuts\n\t\t var data = this._data;\n\t\t var dataWords = data.words;\n\t\n\t\t var nBitsTotal = this._nDataBytes * 8;\n\t\t var nBitsLeft = data.sigBytes * 8;\n\t\n\t\t // Add padding\n\t\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t\t data.sigBytes = dataWords.length * 4;\n\t\n\t\t // Hash final blocks\n\t\t this._process();\n\t\n\t\t // Return final computed hash\n\t\t return this._hash;\n\t\t },\n\t\n\t\t clone: function () {\n\t\t var clone = Hasher.clone.call(this);\n\t\t clone._hash = this._hash.clone();\n\t\n\t\t return clone;\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Shortcut function to the hasher's object interface.\n\t\t *\n\t\t * @param {WordArray|string} message The message to hash.\n\t\t *\n\t\t * @return {WordArray} The hash.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hash = CryptoJS.SHA1('message');\n\t\t * var hash = CryptoJS.SHA1(wordArray);\n\t\t */\n\t\t C.SHA1 = Hasher._createHelper(SHA1);\n\t\n\t\t /**\n\t\t * Shortcut function to the HMAC's object interface.\n\t\t *\n\t\t * @param {WordArray|string} message The message to hash.\n\t\t * @param {WordArray|string} key The secret key.\n\t\t *\n\t\t * @return {WordArray} The HMAC.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t\t */\n\t\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.SHA1;\n\t\n\t}));\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var Base = C_lib.Base;\n\t\t var C_enc = C.enc;\n\t\t var Utf8 = C_enc.Utf8;\n\t\t var C_algo = C.algo;\n\t\n\t\t /**\n\t\t * HMAC algorithm.\n\t\t */\n\t\t var HMAC = C_algo.HMAC = Base.extend({\n\t\t /**\n\t\t * Initializes a newly created HMAC.\n\t\t *\n\t\t * @param {Hasher} hasher The hash algorithm to use.\n\t\t * @param {WordArray|string} key The secret key.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t\t */\n\t\t init: function (hasher, key) {\n\t\t // Init hasher\n\t\t hasher = this._hasher = new hasher.init();\n\t\n\t\t // Convert string to WordArray, else assume WordArray already\n\t\t if (typeof key == 'string') {\n\t\t key = Utf8.parse(key);\n\t\t }\n\t\n\t\t // Shortcuts\n\t\t var hasherBlockSize = hasher.blockSize;\n\t\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\t\n\t\t // Allow arbitrary length keys\n\t\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t\t key = hasher.finalize(key);\n\t\t }\n\t\n\t\t // Clamp excess bits\n\t\t key.clamp();\n\t\n\t\t // Clone key for inner and outer pads\n\t\t var oKey = this._oKey = key.clone();\n\t\t var iKey = this._iKey = key.clone();\n\t\n\t\t // Shortcuts\n\t\t var oKeyWords = oKey.words;\n\t\t var iKeyWords = iKey.words;\n\t\n\t\t // XOR keys with pad constants\n\t\t for (var i = 0; i < hasherBlockSize; i++) {\n\t\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t\t iKeyWords[i] ^= 0x36363636;\n\t\t }\n\t\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\t\n\t\t // Set initial values\n\t\t this.reset();\n\t\t },\n\t\n\t\t /**\n\t\t * Resets this HMAC to its initial state.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * hmacHasher.reset();\n\t\t */\n\t\t reset: function () {\n\t\t // Shortcut\n\t\t var hasher = this._hasher;\n\t\n\t\t // Reset\n\t\t hasher.reset();\n\t\t hasher.update(this._iKey);\n\t\t },\n\t\n\t\t /**\n\t\t * Updates this HMAC with a message.\n\t\t *\n\t\t * @param {WordArray|string} messageUpdate The message to append.\n\t\t *\n\t\t * @return {HMAC} This HMAC instance.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * hmacHasher.update('message');\n\t\t * hmacHasher.update(wordArray);\n\t\t */\n\t\t update: function (messageUpdate) {\n\t\t this._hasher.update(messageUpdate);\n\t\n\t\t // Chainable\n\t\t return this;\n\t\t },\n\t\n\t\t /**\n\t\t * Finalizes the HMAC computation.\n\t\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t\t *\n\t\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t\t *\n\t\t * @return {WordArray} The HMAC.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hmac = hmacHasher.finalize();\n\t\t * var hmac = hmacHasher.finalize('message');\n\t\t * var hmac = hmacHasher.finalize(wordArray);\n\t\t */\n\t\t finalize: function (messageUpdate) {\n\t\t // Shortcut\n\t\t var hasher = this._hasher;\n\t\n\t\t // Compute HMAC\n\t\t var innerHash = hasher.finalize(messageUpdate);\n\t\t hasher.reset();\n\t\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\t\n\t\t return hmac;\n\t\t }\n\t\t });\n\t\t}());\n\t\n\t\n\t}));\n\n/***/ },\n/* 8 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\t/*\r\n\t ES6 compatible port of CryptoJS - encoding\r\n\t\r\n\t Source: https://github.com/brix/crypto-js\r\n\t LICENSE: MIT\r\n\t */\n\tvar enc = {};\n\t\n\tenc.Latin1 = {\n\t stringify: function stringify(wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var latin1Chars = [],\n\t i = void 0,\n\t bite = void 0;\n\t\n\t // Convert\n\t for (i = 0; i < sigBytes; i++) {\n\t bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\t\n\t return latin1Chars.join('');\n\t }\n\t};\n\t\n\tenc._Utf8 = {\n\t stringify: function stringify(wordArray) {\n\t try {\n\t return decodeURIComponent(escape(enc.Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t }\n\t};\n\t\n\tmodule.exports = enc;\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar Base64 = {\n\t _keyStr: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t encode: function encode(e) {\n\t var t = '';\n\t var n = void 0,\n\t r = void 0,\n\t i = void 0,\n\t s = void 0,\n\t o = void 0,\n\t u = void 0,\n\t a = void 0;\n\t var f = 0;\n\t\n\t e = Base64._utf8Encode(e);\n\t while (f < e.length) {\n\t n = e.charCodeAt(f++);\n\t r = e.charCodeAt(f++);\n\t i = e.charCodeAt(f++);\n\t s = n >> 2;\n\t o = (n & 3) << 4 | r >> 4;\n\t u = (r & 15) << 2 | i >> 6;\n\t a = i & 63;\n\t if (isNaN(r)) {\n\t u = a = 64;\n\t } else if (isNaN(i)) {\n\t a = 64;\n\t }\n\t t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a);\n\t }\n\t return t;\n\t },\n\t decode: function decode(e) {\n\t var t = '';\n\t var n = void 0,\n\t r = void 0,\n\t i = void 0;\n\t var s = void 0,\n\t o = void 0,\n\t u = void 0,\n\t a = void 0;\n\t var f = 0;\n\t\n\t e = e.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n\t while (f < e.length) {\n\t s = this._keyStr.indexOf(e.charAt(f++));\n\t o = this._keyStr.indexOf(e.charAt(f++));\n\t u = this._keyStr.indexOf(e.charAt(f++));\n\t a = this._keyStr.indexOf(e.charAt(f++));\n\t n = s << 2 | o >> 4;\n\t r = (o & 15) << 4 | u >> 2;\n\t i = (u & 3) << 6 | a;\n\t t = t + String.fromCharCode(n);\n\t if (u !== 64) {\n\t t = t + String.fromCharCode(r);\n\t }\n\t if (a !== 64) {\n\t t = t + String.fromCharCode(i);\n\t }\n\t }\n\t t = Base64._utf8Decode(t);\n\t return t;\n\t },\n\t _utf8Encode: function _utf8Encode(e) {\n\t e = e.replace(/\\r\\n/g, '\\n');\n\t var t = '';\n\t\n\t for (var n = 0; n < e.length; n++) {\n\t var r = e.charCodeAt(n);\n\t\n\t if (r < 128) {\n\t t += String.fromCharCode(r);\n\t } else if (r > 127 && r < 2048) {\n\t t += String.fromCharCode(r >> 6 | 192);\n\t t += String.fromCharCode(r & 63 | 128);\n\t } else {\n\t t += String.fromCharCode(r >> 12 | 224);\n\t t += String.fromCharCode(r >> 6 & 63 | 128);\n\t t += String.fromCharCode(r & 63 | 128);\n\t }\n\t }\n\t return t;\n\t },\n\t _utf8Decode: function _utf8Decode(e) {\n\t var t = '';\n\t var n = 0;\n\t var r = void 0,\n\t c2 = void 0,\n\t c3 = void 0;\n\t\n\t r = c2 = 0;\n\t while (n < e.length) {\n\t r = e.charCodeAt(n);\n\t if (r < 128) {\n\t t += String.fromCharCode(r);\n\t n++;\n\t } else if (r > 191 && r < 224) {\n\t c2 = e.charCodeAt(n + 1);\n\t t += String.fromCharCode((r & 31) << 6 | c2 & 63);\n\t n += 2;\n\t } else {\n\t c2 = e.charCodeAt(n + 1);\n\t c3 = e.charCodeAt(n + 2);\n\t t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\n\t n += 3;\n\t }\n\t }\n\t return t;\n\t }\n\t};\n\t\n\tmodule.exports = Base64;\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;// Copyright (c) 2013 Pieroxy \n\t// This work is free. You can redistribute it and/or modify it\n\t// under the terms of the WTFPL, Version 2\n\t// For more information see LICENSE.txt or http://www.wtfpl.net/\n\t//\n\t// For more information, the home page:\n\t// http://pieroxy.net/blog/pages/lz-string/testing.html\n\t//\n\t// LZ-based compression algorithm, version 1.4.4\n\tvar LZString = (function() {\n\t\n\t// private property\n\tvar f = String.fromCharCode;\n\tvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\tvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\n\tvar baseReverseDic = {};\n\t\n\tfunction getBaseValue(alphabet, character) {\n\t if (!baseReverseDic[alphabet]) {\n\t baseReverseDic[alphabet] = {};\n\t for (var i=0 ; i>> 8;\n\t buf[i*2+1] = current_value % 256;\n\t }\n\t return buf;\n\t },\n\t\n\t //decompress from uint8array (UCS-2 big endian format)\n\t decompressFromUint8Array:function (compressed) {\n\t if (compressed===null || compressed===undefined){\n\t return LZString.decompress(compressed);\n\t } else {\n\t var buf=new Array(compressed.length/2); // 2 bytes per character\n\t for (var i=0, TotalLen=buf.length; i> 1;\n\t }\n\t } else {\n\t value = 1;\n\t for (i=0 ; i> 1;\n\t }\n\t }\n\t context_enlargeIn--;\n\t if (context_enlargeIn == 0) {\n\t context_enlargeIn = Math.pow(2, context_numBits);\n\t context_numBits++;\n\t }\n\t delete context_dictionaryToCreate[context_w];\n\t } else {\n\t value = context_dictionary[context_w];\n\t for (i=0 ; i> 1;\n\t }\n\t\n\t\n\t }\n\t context_enlargeIn--;\n\t if (context_enlargeIn == 0) {\n\t context_enlargeIn = Math.pow(2, context_numBits);\n\t context_numBits++;\n\t }\n\t // Add wc to the dictionary.\n\t context_dictionary[context_wc] = context_dictSize++;\n\t context_w = String(context_c);\n\t }\n\t }\n\t\n\t // Output the code for w.\n\t if (context_w !== \"\") {\n\t if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n\t if (context_w.charCodeAt(0)<256) {\n\t for (i=0 ; i> 1;\n\t }\n\t } else {\n\t value = 1;\n\t for (i=0 ; i> 1;\n\t }\n\t }\n\t context_enlargeIn--;\n\t if (context_enlargeIn == 0) {\n\t context_enlargeIn = Math.pow(2, context_numBits);\n\t context_numBits++;\n\t }\n\t delete context_dictionaryToCreate[context_w];\n\t } else {\n\t value = context_dictionary[context_w];\n\t for (i=0 ; i> 1;\n\t }\n\t\n\t\n\t }\n\t context_enlargeIn--;\n\t if (context_enlargeIn == 0) {\n\t context_enlargeIn = Math.pow(2, context_numBits);\n\t context_numBits++;\n\t }\n\t }\n\t\n\t // Mark the end of the stream\n\t value = 2;\n\t for (i=0 ; i> 1;\n\t }\n\t\n\t // Flush the last char\n\t while (true) {\n\t context_data_val = (context_data_val << 1);\n\t if (context_data_position == bitsPerChar-1) {\n\t context_data.push(getCharFromInt(context_data_val));\n\t break;\n\t }\n\t else context_data_position++;\n\t }\n\t return context_data.join('');\n\t },\n\t\n\t decompress: function (compressed) {\n\t if (compressed == null) return \"\";\n\t if (compressed == \"\") return null;\n\t return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n\t },\n\t\n\t _decompress: function (length, resetValue, getNextValue) {\n\t var dictionary = [],\n\t next,\n\t enlargeIn = 4,\n\t dictSize = 4,\n\t numBits = 3,\n\t entry = \"\",\n\t result = [],\n\t i,\n\t w,\n\t bits, resb, maxpower, power,\n\t c,\n\t data = {val:getNextValue(0), position:resetValue, index:1};\n\t\n\t for (i = 0; i < 3; i += 1) {\n\t dictionary[i] = i;\n\t }\n\t\n\t bits = 0;\n\t maxpower = Math.pow(2,2);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t\n\t switch (next = bits) {\n\t case 0:\n\t bits = 0;\n\t maxpower = Math.pow(2,8);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t c = f(bits);\n\t break;\n\t case 1:\n\t bits = 0;\n\t maxpower = Math.pow(2,16);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t c = f(bits);\n\t break;\n\t case 2:\n\t return \"\";\n\t }\n\t dictionary[3] = c;\n\t w = c;\n\t result.push(c);\n\t while (true) {\n\t if (data.index > length) {\n\t return \"\";\n\t }\n\t\n\t bits = 0;\n\t maxpower = Math.pow(2,numBits);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t\n\t switch (c = bits) {\n\t case 0:\n\t bits = 0;\n\t maxpower = Math.pow(2,8);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t\n\t dictionary[dictSize++] = f(bits);\n\t c = dictSize-1;\n\t enlargeIn--;\n\t break;\n\t case 1:\n\t bits = 0;\n\t maxpower = Math.pow(2,16);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t dictionary[dictSize++] = f(bits);\n\t c = dictSize-1;\n\t enlargeIn--;\n\t break;\n\t case 2:\n\t return result.join('');\n\t }\n\t\n\t if (enlargeIn == 0) {\n\t enlargeIn = Math.pow(2, numBits);\n\t numBits++;\n\t }\n\t\n\t if (dictionary[c]) {\n\t entry = dictionary[c];\n\t } else {\n\t if (c === dictSize) {\n\t entry = w + w.charAt(0);\n\t } else {\n\t return null;\n\t }\n\t }\n\t result.push(entry);\n\t\n\t // Add w+entry[0] to the dictionary.\n\t dictionary[dictSize++] = w + entry.charAt(0);\n\t enlargeIn--;\n\t\n\t w = entry;\n\t\n\t if (enlargeIn == 0) {\n\t enlargeIn = Math.pow(2, numBits);\n\t numBits++;\n\t }\n\t\n\t }\n\t }\n\t};\n\t return LZString;\n\t})();\n\t\n\tif (true) {\n\t !(__WEBPACK_AMD_DEFINE_RESULT__ = function () { return LZString; }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else if( typeof module !== 'undefined' && module != null ) {\n\t module.exports = LZString\n\t}\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(12), __webpack_require__(13), __webpack_require__(14), __webpack_require__(15));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var BlockCipher = C_lib.BlockCipher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Lookup tables\n\t\t var SBOX = [];\n\t\t var INV_SBOX = [];\n\t\t var SUB_MIX_0 = [];\n\t\t var SUB_MIX_1 = [];\n\t\t var SUB_MIX_2 = [];\n\t\t var SUB_MIX_3 = [];\n\t\t var INV_SUB_MIX_0 = [];\n\t\t var INV_SUB_MIX_1 = [];\n\t\t var INV_SUB_MIX_2 = [];\n\t\t var INV_SUB_MIX_3 = [];\n\t\n\t\t // Compute lookup tables\n\t\t (function () {\n\t\t // Compute double table\n\t\t var d = [];\n\t\t for (var i = 0; i < 256; i++) {\n\t\t if (i < 128) {\n\t\t d[i] = i << 1;\n\t\t } else {\n\t\t d[i] = (i << 1) ^ 0x11b;\n\t\t }\n\t\t }\n\t\n\t\t // Walk GF(2^8)\n\t\t var x = 0;\n\t\t var xi = 0;\n\t\t for (var i = 0; i < 256; i++) {\n\t\t // Compute sbox\n\t\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t\t SBOX[x] = sx;\n\t\t INV_SBOX[sx] = x;\n\t\n\t\t // Compute multiplication\n\t\t var x2 = d[x];\n\t\t var x4 = d[x2];\n\t\t var x8 = d[x4];\n\t\n\t\t // Compute sub bytes, mix columns tables\n\t\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t\t SUB_MIX_3[x] = t;\n\t\n\t\t // Compute inv sub bytes, inv mix columns tables\n\t\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t\t INV_SUB_MIX_3[sx] = t;\n\t\n\t\t // Compute next counter\n\t\t if (!x) {\n\t\t x = xi = 1;\n\t\t } else {\n\t\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t\t xi ^= d[d[xi]];\n\t\t }\n\t\t }\n\t\t }());\n\t\n\t\t // Precomputed Rcon lookup\n\t\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\t\n\t\t /**\n\t\t * AES block cipher algorithm.\n\t\t */\n\t\t var AES = C_algo.AES = BlockCipher.extend({\n\t\t _doReset: function () {\n\t\t // Skip reset of nRounds has been set before and key did not change\n\t\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t\t return;\n\t\t }\n\t\n\t\t // Shortcuts\n\t\t var key = this._keyPriorReset = this._key;\n\t\t var keyWords = key.words;\n\t\t var keySize = key.sigBytes / 4;\n\t\n\t\t // Compute number of rounds\n\t\t var nRounds = this._nRounds = keySize + 6;\n\t\n\t\t // Compute number of key schedule rows\n\t\t var ksRows = (nRounds + 1) * 4;\n\t\n\t\t // Compute key schedule\n\t\t var keySchedule = this._keySchedule = [];\n\t\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t\t if (ksRow < keySize) {\n\t\t keySchedule[ksRow] = keyWords[ksRow];\n\t\t } else {\n\t\t var t = keySchedule[ksRow - 1];\n\t\n\t\t if (!(ksRow % keySize)) {\n\t\t // Rot word\n\t\t t = (t << 8) | (t >>> 24);\n\t\n\t\t // Sub word\n\t\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t\n\t\t // Mix Rcon\n\t\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t\t // Sub word\n\t\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t\t }\n\t\n\t\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t\t }\n\t\t }\n\t\n\t\t // Compute inv key schedule\n\t\t var invKeySchedule = this._invKeySchedule = [];\n\t\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t\t var ksRow = ksRows - invKsRow;\n\t\n\t\t if (invKsRow % 4) {\n\t\t var t = keySchedule[ksRow];\n\t\t } else {\n\t\t var t = keySchedule[ksRow - 4];\n\t\t }\n\t\n\t\t if (invKsRow < 4 || ksRow <= 4) {\n\t\t invKeySchedule[invKsRow] = t;\n\t\t } else {\n\t\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t\t }\n\t\t }\n\t\t },\n\t\n\t\t encryptBlock: function (M, offset) {\n\t\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t\t },\n\t\n\t\t decryptBlock: function (M, offset) {\n\t\t // Swap 2nd and 4th rows\n\t\t var t = M[offset + 1];\n\t\t M[offset + 1] = M[offset + 3];\n\t\t M[offset + 3] = t;\n\t\n\t\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\t\n\t\t // Inv swap 2nd and 4th rows\n\t\t var t = M[offset + 1];\n\t\t M[offset + 1] = M[offset + 3];\n\t\t M[offset + 3] = t;\n\t\t },\n\t\n\t\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t\t // Shortcut\n\t\t var nRounds = this._nRounds;\n\t\n\t\t // Get input, add round key\n\t\t var s0 = M[offset] ^ keySchedule[0];\n\t\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t\t var s3 = M[offset + 3] ^ keySchedule[3];\n\t\n\t\t // Key schedule row counter\n\t\t var ksRow = 4;\n\t\n\t\t // Rounds\n\t\t for (var round = 1; round < nRounds; round++) {\n\t\t // Shift rows, sub bytes, mix columns, add round key\n\t\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\t\n\t\t // Update state\n\t\t s0 = t0;\n\t\t s1 = t1;\n\t\t s2 = t2;\n\t\t s3 = t3;\n\t\t }\n\t\n\t\t // Shift rows, sub bytes, add round key\n\t\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\t\n\t\t // Set output\n\t\t M[offset] = t0;\n\t\t M[offset + 1] = t1;\n\t\t M[offset + 2] = t2;\n\t\t M[offset + 3] = t3;\n\t\t },\n\t\n\t\t keySize: 256/32\n\t\t });\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.AES = BlockCipher._createHelper(AES);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.AES;\n\t\n\t}));\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var C_enc = C.enc;\n\t\n\t\t /**\n\t\t * Base64 encoding strategy.\n\t\t */\n\t\t var Base64 = C_enc.Base64 = {\n\t\t /**\n\t\t * Converts a word array to a Base64 string.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array.\n\t\t *\n\t\t * @return {string} The Base64 string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t\t */\n\t\t stringify: function (wordArray) {\n\t\t // Shortcuts\n\t\t var words = wordArray.words;\n\t\t var sigBytes = wordArray.sigBytes;\n\t\t var map = this._map;\n\t\n\t\t // Clamp excess bits\n\t\t wordArray.clamp();\n\t\n\t\t // Convert\n\t\t var base64Chars = [];\n\t\t for (var i = 0; i < sigBytes; i += 3) {\n\t\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\t\n\t\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\t\n\t\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t\t }\n\t\t }\n\t\n\t\t // Add padding\n\t\t var paddingChar = map.charAt(64);\n\t\t if (paddingChar) {\n\t\t while (base64Chars.length % 4) {\n\t\t base64Chars.push(paddingChar);\n\t\t }\n\t\t }\n\t\n\t\t return base64Chars.join('');\n\t\t },\n\t\n\t\t /**\n\t\t * Converts a Base64 string to a word array.\n\t\t *\n\t\t * @param {string} base64Str The Base64 string.\n\t\t *\n\t\t * @return {WordArray} The word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t\t */\n\t\t parse: function (base64Str) {\n\t\t // Shortcuts\n\t\t var base64StrLength = base64Str.length;\n\t\t var map = this._map;\n\t\t var reverseMap = this._reverseMap;\n\t\n\t\t if (!reverseMap) {\n\t\t reverseMap = this._reverseMap = [];\n\t\t for (var j = 0; j < map.length; j++) {\n\t\t reverseMap[map.charCodeAt(j)] = j;\n\t\t }\n\t\t }\n\t\n\t\t // Ignore padding\n\t\t var paddingChar = map.charAt(64);\n\t\t if (paddingChar) {\n\t\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t\t if (paddingIndex !== -1) {\n\t\t base64StrLength = paddingIndex;\n\t\t }\n\t\t }\n\t\n\t\t // Convert\n\t\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\t\n\t\t },\n\t\n\t\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t\t };\n\t\n\t\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t\t var words = [];\n\t\t var nBytes = 0;\n\t\t for (var i = 0; i < base64StrLength; i++) {\n\t\t if (i % 4) {\n\t\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t\t words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n\t\t nBytes++;\n\t\t }\n\t\t }\n\t\t return WordArray.create(words, nBytes);\n\t\t }\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.enc.Base64;\n\t\n\t}));\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function (Math) {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var Hasher = C_lib.Hasher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Constants table\n\t\t var T = [];\n\t\n\t\t // Compute constants\n\t\t (function () {\n\t\t for (var i = 0; i < 64; i++) {\n\t\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t\t }\n\t\t }());\n\t\n\t\t /**\n\t\t * MD5 hash algorithm.\n\t\t */\n\t\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t\t _doReset: function () {\n\t\t this._hash = new WordArray.init([\n\t\t 0x67452301, 0xefcdab89,\n\t\t 0x98badcfe, 0x10325476\n\t\t ]);\n\t\t },\n\t\n\t\t _doProcessBlock: function (M, offset) {\n\t\t // Swap endian\n\t\t for (var i = 0; i < 16; i++) {\n\t\t // Shortcuts\n\t\t var offset_i = offset + i;\n\t\t var M_offset_i = M[offset_i];\n\t\n\t\t M[offset_i] = (\n\t\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t\t );\n\t\t }\n\t\n\t\t // Shortcuts\n\t\t var H = this._hash.words;\n\t\n\t\t var M_offset_0 = M[offset + 0];\n\t\t var M_offset_1 = M[offset + 1];\n\t\t var M_offset_2 = M[offset + 2];\n\t\t var M_offset_3 = M[offset + 3];\n\t\t var M_offset_4 = M[offset + 4];\n\t\t var M_offset_5 = M[offset + 5];\n\t\t var M_offset_6 = M[offset + 6];\n\t\t var M_offset_7 = M[offset + 7];\n\t\t var M_offset_8 = M[offset + 8];\n\t\t var M_offset_9 = M[offset + 9];\n\t\t var M_offset_10 = M[offset + 10];\n\t\t var M_offset_11 = M[offset + 11];\n\t\t var M_offset_12 = M[offset + 12];\n\t\t var M_offset_13 = M[offset + 13];\n\t\t var M_offset_14 = M[offset + 14];\n\t\t var M_offset_15 = M[offset + 15];\n\t\n\t\t // Working varialbes\n\t\t var a = H[0];\n\t\t var b = H[1];\n\t\t var c = H[2];\n\t\t var d = H[3];\n\t\n\t\t // Computation\n\t\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\t\n\t\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\t\n\t\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\t\n\t\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\t\n\t\t // Intermediate hash value\n\t\t H[0] = (H[0] + a) | 0;\n\t\t H[1] = (H[1] + b) | 0;\n\t\t H[2] = (H[2] + c) | 0;\n\t\t H[3] = (H[3] + d) | 0;\n\t\t },\n\t\n\t\t _doFinalize: function () {\n\t\t // Shortcuts\n\t\t var data = this._data;\n\t\t var dataWords = data.words;\n\t\n\t\t var nBitsTotal = this._nDataBytes * 8;\n\t\t var nBitsLeft = data.sigBytes * 8;\n\t\n\t\t // Add padding\n\t\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t\n\t\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t\t var nBitsTotalL = nBitsTotal;\n\t\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t\t );\n\t\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t\t );\n\t\n\t\t data.sigBytes = (dataWords.length + 1) * 4;\n\t\n\t\t // Hash final blocks\n\t\t this._process();\n\t\n\t\t // Shortcuts\n\t\t var hash = this._hash;\n\t\t var H = hash.words;\n\t\n\t\t // Swap endian\n\t\t for (var i = 0; i < 4; i++) {\n\t\t // Shortcut\n\t\t var H_i = H[i];\n\t\n\t\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t\t }\n\t\n\t\t // Return final computed hash\n\t\t return hash;\n\t\t },\n\t\n\t\t clone: function () {\n\t\t var clone = Hasher.clone.call(this);\n\t\t clone._hash = this._hash.clone();\n\t\n\t\t return clone;\n\t\t }\n\t\t });\n\t\n\t\t function FF(a, b, c, d, x, s, t) {\n\t\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t\t return ((n << s) | (n >>> (32 - s))) + b;\n\t\t }\n\t\n\t\t function GG(a, b, c, d, x, s, t) {\n\t\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t\t return ((n << s) | (n >>> (32 - s))) + b;\n\t\t }\n\t\n\t\t function HH(a, b, c, d, x, s, t) {\n\t\t var n = a + (b ^ c ^ d) + x + t;\n\t\t return ((n << s) | (n >>> (32 - s))) + b;\n\t\t }\n\t\n\t\t function II(a, b, c, d, x, s, t) {\n\t\t var n = a + (c ^ (b | ~d)) + x + t;\n\t\t return ((n << s) | (n >>> (32 - s))) + b;\n\t\t }\n\t\n\t\t /**\n\t\t * Shortcut function to the hasher's object interface.\n\t\t *\n\t\t * @param {WordArray|string} message The message to hash.\n\t\t *\n\t\t * @return {WordArray} The hash.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hash = CryptoJS.MD5('message');\n\t\t * var hash = CryptoJS.MD5(wordArray);\n\t\t */\n\t\t C.MD5 = Hasher._createHelper(MD5);\n\t\n\t\t /**\n\t\t * Shortcut function to the HMAC's object interface.\n\t\t *\n\t\t * @param {WordArray|string} message The message to hash.\n\t\t * @param {WordArray|string} key The secret key.\n\t\t *\n\t\t * @return {WordArray} The HMAC.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t\t */\n\t\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t\t}(Math));\n\t\n\t\n\t\treturn CryptoJS.MD5;\n\t\n\t}));\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(6), __webpack_require__(7));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var Base = C_lib.Base;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var C_algo = C.algo;\n\t\t var MD5 = C_algo.MD5;\n\t\n\t\t /**\n\t\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t\t */\n\t\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t\t */\n\t\t cfg: Base.extend({\n\t\t keySize: 128/32,\n\t\t hasher: MD5,\n\t\t iterations: 1\n\t\t }),\n\t\n\t\t /**\n\t\t * Initializes a newly created key derivation function.\n\t\t *\n\t\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t\t */\n\t\t init: function (cfg) {\n\t\t this.cfg = this.cfg.extend(cfg);\n\t\t },\n\t\n\t\t /**\n\t\t * Derives a key from a password.\n\t\t *\n\t\t * @param {WordArray|string} password The password.\n\t\t * @param {WordArray|string} salt A salt.\n\t\t *\n\t\t * @return {WordArray} The derived key.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var key = kdf.compute(password, salt);\n\t\t */\n\t\t compute: function (password, salt) {\n\t\t // Shortcut\n\t\t var cfg = this.cfg;\n\t\n\t\t // Init hasher\n\t\t var hasher = cfg.hasher.create();\n\t\n\t\t // Initial values\n\t\t var derivedKey = WordArray.create();\n\t\n\t\t // Shortcuts\n\t\t var derivedKeyWords = derivedKey.words;\n\t\t var keySize = cfg.keySize;\n\t\t var iterations = cfg.iterations;\n\t\n\t\t // Generate key\n\t\t while (derivedKeyWords.length < keySize) {\n\t\t if (block) {\n\t\t hasher.update(block);\n\t\t }\n\t\t var block = hasher.update(password).finalize(salt);\n\t\t hasher.reset();\n\t\n\t\t // Iterations\n\t\t for (var i = 1; i < iterations; i++) {\n\t\t block = hasher.finalize(block);\n\t\t hasher.reset();\n\t\t }\n\t\n\t\t derivedKey.concat(block);\n\t\t }\n\t\t derivedKey.sigBytes = keySize * 4;\n\t\n\t\t return derivedKey;\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Derives a key from a password.\n\t\t *\n\t\t * @param {WordArray|string} password The password.\n\t\t * @param {WordArray|string} salt A salt.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t\t *\n\t\t * @return {WordArray} The derived key.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var key = CryptoJS.EvpKDF(password, salt);\n\t\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t\t */\n\t\t C.EvpKDF = function (password, salt, cfg) {\n\t\t return EvpKDF.create(cfg).compute(password, salt);\n\t\t };\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.EvpKDF;\n\t\n\t}));\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t/**\n\t\t * Cipher core components.\n\t\t */\n\t\tCryptoJS.lib.Cipher || (function (undefined) {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var Base = C_lib.Base;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t\t var C_enc = C.enc;\n\t\t var Utf8 = C_enc.Utf8;\n\t\t var Base64 = C_enc.Base64;\n\t\t var C_algo = C.algo;\n\t\t var EvpKDF = C_algo.EvpKDF;\n\t\n\t\t /**\n\t\t * Abstract base cipher template.\n\t\t *\n\t\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t\t */\n\t\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {WordArray} iv The IV to use for this operation.\n\t\t */\n\t\t cfg: Base.extend(),\n\t\n\t\t /**\n\t\t * Creates this cipher in encryption mode.\n\t\t *\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {Cipher} A cipher instance.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t\t */\n\t\t createEncryptor: function (key, cfg) {\n\t\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t\t },\n\t\n\t\t /**\n\t\t * Creates this cipher in decryption mode.\n\t\t *\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {Cipher} A cipher instance.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t\t */\n\t\t createDecryptor: function (key, cfg) {\n\t\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t\t },\n\t\n\t\t /**\n\t\t * Initializes a newly created cipher.\n\t\t *\n\t\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t\t */\n\t\t init: function (xformMode, key, cfg) {\n\t\t // Apply config defaults\n\t\t this.cfg = this.cfg.extend(cfg);\n\t\n\t\t // Store transform mode and key\n\t\t this._xformMode = xformMode;\n\t\t this._key = key;\n\t\n\t\t // Set initial values\n\t\t this.reset();\n\t\t },\n\t\n\t\t /**\n\t\t * Resets this cipher to its initial state.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * cipher.reset();\n\t\t */\n\t\t reset: function () {\n\t\t // Reset data buffer\n\t\t BufferedBlockAlgorithm.reset.call(this);\n\t\n\t\t // Perform concrete-cipher logic\n\t\t this._doReset();\n\t\t },\n\t\n\t\t /**\n\t\t * Adds data to be encrypted or decrypted.\n\t\t *\n\t\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t\t *\n\t\t * @return {WordArray} The data after processing.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var encrypted = cipher.process('data');\n\t\t * var encrypted = cipher.process(wordArray);\n\t\t */\n\t\t process: function (dataUpdate) {\n\t\t // Append\n\t\t this._append(dataUpdate);\n\t\n\t\t // Process available blocks\n\t\t return this._process();\n\t\t },\n\t\n\t\t /**\n\t\t * Finalizes the encryption or decryption process.\n\t\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t\t *\n\t\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t\t *\n\t\t * @return {WordArray} The data after final processing.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var encrypted = cipher.finalize();\n\t\t * var encrypted = cipher.finalize('data');\n\t\t * var encrypted = cipher.finalize(wordArray);\n\t\t */\n\t\t finalize: function (dataUpdate) {\n\t\t // Final data update\n\t\t if (dataUpdate) {\n\t\t this._append(dataUpdate);\n\t\t }\n\t\n\t\t // Perform concrete-cipher logic\n\t\t var finalProcessedData = this._doFinalize();\n\t\n\t\t return finalProcessedData;\n\t\t },\n\t\n\t\t keySize: 128/32,\n\t\n\t\t ivSize: 128/32,\n\t\n\t\t _ENC_XFORM_MODE: 1,\n\t\n\t\t _DEC_XFORM_MODE: 2,\n\t\n\t\t /**\n\t\t * Creates shortcut functions to a cipher's object interface.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher to create a helper for.\n\t\t *\n\t\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t\t */\n\t\t _createHelper: (function () {\n\t\t function selectCipherStrategy(key) {\n\t\t if (typeof key == 'string') {\n\t\t return PasswordBasedCipher;\n\t\t } else {\n\t\t return SerializableCipher;\n\t\t }\n\t\t }\n\t\n\t\t return function (cipher) {\n\t\t return {\n\t\t encrypt: function (message, key, cfg) {\n\t\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t\t },\n\t\n\t\t decrypt: function (ciphertext, key, cfg) {\n\t\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t\t }\n\t\t };\n\t\t };\n\t\t }())\n\t\t });\n\t\n\t\t /**\n\t\t * Abstract base stream cipher template.\n\t\t *\n\t\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t\t */\n\t\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t\t _doFinalize: function () {\n\t\t // Process partial blocks\n\t\t var finalProcessedBlocks = this._process(!!'flush');\n\t\n\t\t return finalProcessedBlocks;\n\t\t },\n\t\n\t\t blockSize: 1\n\t\t });\n\t\n\t\t /**\n\t\t * Mode namespace.\n\t\t */\n\t\t var C_mode = C.mode = {};\n\t\n\t\t /**\n\t\t * Abstract base block cipher mode template.\n\t\t */\n\t\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t\t /**\n\t\t * Creates this mode for encryption.\n\t\t *\n\t\t * @param {Cipher} cipher A block cipher instance.\n\t\t * @param {Array} iv The IV words.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t\t */\n\t\t createEncryptor: function (cipher, iv) {\n\t\t return this.Encryptor.create(cipher, iv);\n\t\t },\n\t\n\t\t /**\n\t\t * Creates this mode for decryption.\n\t\t *\n\t\t * @param {Cipher} cipher A block cipher instance.\n\t\t * @param {Array} iv The IV words.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t\t */\n\t\t createDecryptor: function (cipher, iv) {\n\t\t return this.Decryptor.create(cipher, iv);\n\t\t },\n\t\n\t\t /**\n\t\t * Initializes a newly created mode.\n\t\t *\n\t\t * @param {Cipher} cipher A block cipher instance.\n\t\t * @param {Array} iv The IV words.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t\t */\n\t\t init: function (cipher, iv) {\n\t\t this._cipher = cipher;\n\t\t this._iv = iv;\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Cipher Block Chaining mode.\n\t\t */\n\t\t var CBC = C_mode.CBC = (function () {\n\t\t /**\n\t\t * Abstract base CBC mode.\n\t\t */\n\t\t var CBC = BlockCipherMode.extend();\n\t\n\t\t /**\n\t\t * CBC encryptor.\n\t\t */\n\t\t CBC.Encryptor = CBC.extend({\n\t\t /**\n\t\t * Processes the data block at offset.\n\t\t *\n\t\t * @param {Array} words The data words to operate on.\n\t\t * @param {number} offset The offset where the block starts.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * mode.processBlock(data.words, offset);\n\t\t */\n\t\t processBlock: function (words, offset) {\n\t\t // Shortcuts\n\t\t var cipher = this._cipher;\n\t\t var blockSize = cipher.blockSize;\n\t\n\t\t // XOR and encrypt\n\t\t xorBlock.call(this, words, offset, blockSize);\n\t\t cipher.encryptBlock(words, offset);\n\t\n\t\t // Remember this block to use with next block\n\t\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * CBC decryptor.\n\t\t */\n\t\t CBC.Decryptor = CBC.extend({\n\t\t /**\n\t\t * Processes the data block at offset.\n\t\t *\n\t\t * @param {Array} words The data words to operate on.\n\t\t * @param {number} offset The offset where the block starts.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * mode.processBlock(data.words, offset);\n\t\t */\n\t\t processBlock: function (words, offset) {\n\t\t // Shortcuts\n\t\t var cipher = this._cipher;\n\t\t var blockSize = cipher.blockSize;\n\t\n\t\t // Remember this block to use with next block\n\t\t var thisBlock = words.slice(offset, offset + blockSize);\n\t\n\t\t // Decrypt and XOR\n\t\t cipher.decryptBlock(words, offset);\n\t\t xorBlock.call(this, words, offset, blockSize);\n\t\n\t\t // This block becomes the previous block\n\t\t this._prevBlock = thisBlock;\n\t\t }\n\t\t });\n\t\n\t\t function xorBlock(words, offset, blockSize) {\n\t\t // Shortcut\n\t\t var iv = this._iv;\n\t\n\t\t // Choose mixing block\n\t\t if (iv) {\n\t\t var block = iv;\n\t\n\t\t // Remove IV for subsequent blocks\n\t\t this._iv = undefined;\n\t\t } else {\n\t\t var block = this._prevBlock;\n\t\t }\n\t\n\t\t // XOR blocks\n\t\t for (var i = 0; i < blockSize; i++) {\n\t\t words[offset + i] ^= block[i];\n\t\t }\n\t\t }\n\t\n\t\t return CBC;\n\t\t }());\n\t\n\t\t /**\n\t\t * Padding namespace.\n\t\t */\n\t\t var C_pad = C.pad = {};\n\t\n\t\t /**\n\t\t * PKCS #5/7 padding strategy.\n\t\t */\n\t\t var Pkcs7 = C_pad.Pkcs7 = {\n\t\t /**\n\t\t * Pads data using the algorithm defined in PKCS #5/7.\n\t\t *\n\t\t * @param {WordArray} data The data to pad.\n\t\t * @param {number} blockSize The multiple that the data should be padded to.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t\t */\n\t\t pad: function (data, blockSize) {\n\t\t // Shortcut\n\t\t var blockSizeBytes = blockSize * 4;\n\t\n\t\t // Count padding bytes\n\t\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\t\n\t\t // Create padding word\n\t\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\t\n\t\t // Create padding\n\t\t var paddingWords = [];\n\t\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t\t paddingWords.push(paddingWord);\n\t\t }\n\t\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\t\n\t\t // Add padding\n\t\t data.concat(padding);\n\t\t },\n\t\n\t\t /**\n\t\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t\t *\n\t\t * @param {WordArray} data The data to unpad.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t\t */\n\t\t unpad: function (data) {\n\t\t // Get number of padding bytes from last byte\n\t\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\t\n\t\t // Remove padding\n\t\t data.sigBytes -= nPaddingBytes;\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * Abstract base block cipher template.\n\t\t *\n\t\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t\t */\n\t\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {Mode} mode The block mode to use. Default: CBC\n\t\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t\t */\n\t\t cfg: Cipher.cfg.extend({\n\t\t mode: CBC,\n\t\t padding: Pkcs7\n\t\t }),\n\t\n\t\t reset: function () {\n\t\t // Reset cipher\n\t\t Cipher.reset.call(this);\n\t\n\t\t // Shortcuts\n\t\t var cfg = this.cfg;\n\t\t var iv = cfg.iv;\n\t\t var mode = cfg.mode;\n\t\n\t\t // Reset block mode\n\t\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t\t var modeCreator = mode.createEncryptor;\n\t\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t\t var modeCreator = mode.createDecryptor;\n\t\n\t\t // Keep at least one block in the buffer for unpadding\n\t\t this._minBufferSize = 1;\n\t\t }\n\t\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t\t },\n\t\n\t\t _doProcessBlock: function (words, offset) {\n\t\t this._mode.processBlock(words, offset);\n\t\t },\n\t\n\t\t _doFinalize: function () {\n\t\t // Shortcut\n\t\t var padding = this.cfg.padding;\n\t\n\t\t // Finalize\n\t\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t\t // Pad data\n\t\t padding.pad(this._data, this.blockSize);\n\t\n\t\t // Process final blocks\n\t\t var finalProcessedBlocks = this._process(!!'flush');\n\t\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t\t // Process final blocks\n\t\t var finalProcessedBlocks = this._process(!!'flush');\n\t\n\t\t // Unpad data\n\t\t padding.unpad(finalProcessedBlocks);\n\t\t }\n\t\n\t\t return finalProcessedBlocks;\n\t\t },\n\t\n\t\t blockSize: 128/32\n\t\t });\n\t\n\t\t /**\n\t\t * A collection of cipher parameters.\n\t\t *\n\t\t * @property {WordArray} ciphertext The raw ciphertext.\n\t\t * @property {WordArray} key The key to this ciphertext.\n\t\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t\t * @property {WordArray} salt The salt used with a key derivation function.\n\t\t * @property {Cipher} algorithm The cipher algorithm.\n\t\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t\t * @property {number} blockSize The block size of the cipher.\n\t\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t\t */\n\t\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t\t /**\n\t\t * Initializes a newly created cipher params object.\n\t\t *\n\t\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t\t * ciphertext: ciphertextWordArray,\n\t\t * key: keyWordArray,\n\t\t * iv: ivWordArray,\n\t\t * salt: saltWordArray,\n\t\t * algorithm: CryptoJS.algo.AES,\n\t\t * mode: CryptoJS.mode.CBC,\n\t\t * padding: CryptoJS.pad.PKCS7,\n\t\t * blockSize: 4,\n\t\t * formatter: CryptoJS.format.OpenSSL\n\t\t * });\n\t\t */\n\t\t init: function (cipherParams) {\n\t\t this.mixIn(cipherParams);\n\t\t },\n\t\n\t\t /**\n\t\t * Converts this cipher params object to a string.\n\t\t *\n\t\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t\t *\n\t\t * @return {string} The stringified cipher params.\n\t\t *\n\t\t * @throws Error If neither the formatter nor the default formatter is set.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var string = cipherParams + '';\n\t\t * var string = cipherParams.toString();\n\t\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t\t */\n\t\t toString: function (formatter) {\n\t\t return (formatter || this.formatter).stringify(this);\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Format namespace.\n\t\t */\n\t\t var C_format = C.format = {};\n\t\n\t\t /**\n\t\t * OpenSSL formatting strategy.\n\t\t */\n\t\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t\t /**\n\t\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t\t *\n\t\t * @param {CipherParams} cipherParams The cipher params object.\n\t\t *\n\t\t * @return {string} The OpenSSL-compatible string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t\t */\n\t\t stringify: function (cipherParams) {\n\t\t // Shortcuts\n\t\t var ciphertext = cipherParams.ciphertext;\n\t\t var salt = cipherParams.salt;\n\t\n\t\t // Format\n\t\t if (salt) {\n\t\t var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t\t } else {\n\t\t var wordArray = ciphertext;\n\t\t }\n\t\n\t\t return wordArray.toString(Base64);\n\t\t },\n\t\n\t\t /**\n\t\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t\t *\n\t\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t\t *\n\t\t * @return {CipherParams} The cipher params object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t\t */\n\t\t parse: function (openSSLStr) {\n\t\t // Parse base64\n\t\t var ciphertext = Base64.parse(openSSLStr);\n\t\n\t\t // Shortcut\n\t\t var ciphertextWords = ciphertext.words;\n\t\n\t\t // Test for salt\n\t\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t\t // Extract salt\n\t\t var salt = WordArray.create(ciphertextWords.slice(2, 4));\n\t\n\t\t // Remove salt from ciphertext\n\t\t ciphertextWords.splice(0, 4);\n\t\t ciphertext.sigBytes -= 16;\n\t\t }\n\t\n\t\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t\t */\n\t\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t\t */\n\t\t cfg: Base.extend({\n\t\t format: OpenSSLFormatter\n\t\t }),\n\t\n\t\t /**\n\t\t * Encrypts a message.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher algorithm to use.\n\t\t * @param {WordArray|string} message The message to encrypt.\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {CipherParams} A cipher params object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t\t */\n\t\t encrypt: function (cipher, message, key, cfg) {\n\t\t // Apply config defaults\n\t\t cfg = this.cfg.extend(cfg);\n\t\n\t\t // Encrypt\n\t\t var encryptor = cipher.createEncryptor(key, cfg);\n\t\t var ciphertext = encryptor.finalize(message);\n\t\n\t\t // Shortcut\n\t\t var cipherCfg = encryptor.cfg;\n\t\n\t\t // Create and return serializable cipher params\n\t\t return CipherParams.create({\n\t\t ciphertext: ciphertext,\n\t\t key: key,\n\t\t iv: cipherCfg.iv,\n\t\t algorithm: cipher,\n\t\t mode: cipherCfg.mode,\n\t\t padding: cipherCfg.padding,\n\t\t blockSize: cipher.blockSize,\n\t\t formatter: cfg.format\n\t\t });\n\t\t },\n\t\n\t\t /**\n\t\t * Decrypts serialized ciphertext.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher algorithm to use.\n\t\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {WordArray} The plaintext.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t\t */\n\t\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t\t // Apply config defaults\n\t\t cfg = this.cfg.extend(cfg);\n\t\n\t\t // Convert string to CipherParams\n\t\t ciphertext = this._parse(ciphertext, cfg.format);\n\t\n\t\t // Decrypt\n\t\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\t\n\t\t return plaintext;\n\t\t },\n\t\n\t\t /**\n\t\t * Converts serialized ciphertext to CipherParams,\n\t\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t\t *\n\t\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t\t *\n\t\t * @return {CipherParams} The unserialized ciphertext.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t\t */\n\t\t _parse: function (ciphertext, format) {\n\t\t if (typeof ciphertext == 'string') {\n\t\t return format.parse(ciphertext, this);\n\t\t } else {\n\t\t return ciphertext;\n\t\t }\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Key derivation function namespace.\n\t\t */\n\t\t var C_kdf = C.kdf = {};\n\t\n\t\t /**\n\t\t * OpenSSL key derivation function.\n\t\t */\n\t\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t\t /**\n\t\t * Derives a key and IV from a password.\n\t\t *\n\t\t * @param {string} password The password to derive from.\n\t\t * @param {number} keySize The size in words of the key to generate.\n\t\t * @param {number} ivSize The size in words of the IV to generate.\n\t\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t\t *\n\t\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t\t */\n\t\t execute: function (password, keySize, ivSize, salt) {\n\t\t // Generate random salt\n\t\t if (!salt) {\n\t\t salt = WordArray.random(64/8);\n\t\t }\n\t\n\t\t // Derive key and IV\n\t\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\t\n\t\t // Separate key and IV\n\t\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t\t key.sigBytes = keySize * 4;\n\t\n\t\t // Return params\n\t\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * A serializable cipher wrapper that derives the key from a password,\n\t\t * and returns ciphertext as a serializable cipher params object.\n\t\t */\n\t\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t\t */\n\t\t cfg: SerializableCipher.cfg.extend({\n\t\t kdf: OpenSSLKdf\n\t\t }),\n\t\n\t\t /**\n\t\t * Encrypts a message using a password.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher algorithm to use.\n\t\t * @param {WordArray|string} message The message to encrypt.\n\t\t * @param {string} password The password.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {CipherParams} A cipher params object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t\t */\n\t\t encrypt: function (cipher, message, password, cfg) {\n\t\t // Apply config defaults\n\t\t cfg = this.cfg.extend(cfg);\n\t\n\t\t // Derive key and other params\n\t\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\t\n\t\t // Add IV to config\n\t\t cfg.iv = derivedParams.iv;\n\t\n\t\t // Encrypt\n\t\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\t\n\t\t // Mix in derived params\n\t\t ciphertext.mixIn(derivedParams);\n\t\n\t\t return ciphertext;\n\t\t },\n\t\n\t\t /**\n\t\t * Decrypts serialized ciphertext using a password.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher algorithm to use.\n\t\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t\t * @param {string} password The password.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {WordArray} The plaintext.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t\t */\n\t\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t\t // Apply config defaults\n\t\t cfg = this.cfg.extend(cfg);\n\t\n\t\t // Convert string to CipherParams\n\t\t ciphertext = this._parse(ciphertext, cfg.format);\n\t\n\t\t // Derive key and other params\n\t\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\t\n\t\t // Add IV to config\n\t\t cfg.iv = derivedParams.iv;\n\t\n\t\t // Decrypt\n\t\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\t\n\t\t return plaintext;\n\t\t }\n\t\t });\n\t\t}());\n\t\n\t\n\t}));\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(12), __webpack_require__(13), __webpack_require__(14), __webpack_require__(15));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var BlockCipher = C_lib.BlockCipher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Permuted Choice 1 constants\n\t\t var PC1 = [\n\t\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t\t 29, 21, 13, 5, 28, 20, 12, 4\n\t\t ];\n\t\n\t\t // Permuted Choice 2 constants\n\t\t var PC2 = [\n\t\t 14, 17, 11, 24, 1, 5,\n\t\t 3, 28, 15, 6, 21, 10,\n\t\t 23, 19, 12, 4, 26, 8,\n\t\t 16, 7, 27, 20, 13, 2,\n\t\t 41, 52, 31, 37, 47, 55,\n\t\t 30, 40, 51, 45, 33, 48,\n\t\t 44, 49, 39, 56, 34, 53,\n\t\t 46, 42, 50, 36, 29, 32\n\t\t ];\n\t\n\t\t // Cumulative bit shift constants\n\t\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\t\n\t\t // SBOXes and round permutation constants\n\t\t var SBOX_P = [\n\t\t {\n\t\t 0x0: 0x808200,\n\t\t 0x10000000: 0x8000,\n\t\t 0x20000000: 0x808002,\n\t\t 0x30000000: 0x2,\n\t\t 0x40000000: 0x200,\n\t\t 0x50000000: 0x808202,\n\t\t 0x60000000: 0x800202,\n\t\t 0x70000000: 0x800000,\n\t\t 0x80000000: 0x202,\n\t\t 0x90000000: 0x800200,\n\t\t 0xa0000000: 0x8200,\n\t\t 0xb0000000: 0x808000,\n\t\t 0xc0000000: 0x8002,\n\t\t 0xd0000000: 0x800002,\n\t\t 0xe0000000: 0x0,\n\t\t 0xf0000000: 0x8202,\n\t\t 0x8000000: 0x0,\n\t\t 0x18000000: 0x808202,\n\t\t 0x28000000: 0x8202,\n\t\t 0x38000000: 0x8000,\n\t\t 0x48000000: 0x808200,\n\t\t 0x58000000: 0x200,\n\t\t 0x68000000: 0x808002,\n\t\t 0x78000000: 0x2,\n\t\t 0x88000000: 0x800200,\n\t\t 0x98000000: 0x8200,\n\t\t 0xa8000000: 0x808000,\n\t\t 0xb8000000: 0x800202,\n\t\t 0xc8000000: 0x800002,\n\t\t 0xd8000000: 0x8002,\n\t\t 0xe8000000: 0x202,\n\t\t 0xf8000000: 0x800000,\n\t\t 0x1: 0x8000,\n\t\t 0x10000001: 0x2,\n\t\t 0x20000001: 0x808200,\n\t\t 0x30000001: 0x800000,\n\t\t 0x40000001: 0x808002,\n\t\t 0x50000001: 0x8200,\n\t\t 0x60000001: 0x200,\n\t\t 0x70000001: 0x800202,\n\t\t 0x80000001: 0x808202,\n\t\t 0x90000001: 0x808000,\n\t\t 0xa0000001: 0x800002,\n\t\t 0xb0000001: 0x8202,\n\t\t 0xc0000001: 0x202,\n\t\t 0xd0000001: 0x800200,\n\t\t 0xe0000001: 0x8002,\n\t\t 0xf0000001: 0x0,\n\t\t 0x8000001: 0x808202,\n\t\t 0x18000001: 0x808000,\n\t\t 0x28000001: 0x800000,\n\t\t 0x38000001: 0x200,\n\t\t 0x48000001: 0x8000,\n\t\t 0x58000001: 0x800002,\n\t\t 0x68000001: 0x2,\n\t\t 0x78000001: 0x8202,\n\t\t 0x88000001: 0x8002,\n\t\t 0x98000001: 0x800202,\n\t\t 0xa8000001: 0x202,\n\t\t 0xb8000001: 0x808200,\n\t\t 0xc8000001: 0x800200,\n\t\t 0xd8000001: 0x0,\n\t\t 0xe8000001: 0x8200,\n\t\t 0xf8000001: 0x808002\n\t\t },\n\t\t {\n\t\t 0x0: 0x40084010,\n\t\t 0x1000000: 0x4000,\n\t\t 0x2000000: 0x80000,\n\t\t 0x3000000: 0x40080010,\n\t\t 0x4000000: 0x40000010,\n\t\t 0x5000000: 0x40084000,\n\t\t 0x6000000: 0x40004000,\n\t\t 0x7000000: 0x10,\n\t\t 0x8000000: 0x84000,\n\t\t 0x9000000: 0x40004010,\n\t\t 0xa000000: 0x40000000,\n\t\t 0xb000000: 0x84010,\n\t\t 0xc000000: 0x80010,\n\t\t 0xd000000: 0x0,\n\t\t 0xe000000: 0x4010,\n\t\t 0xf000000: 0x40080000,\n\t\t 0x800000: 0x40004000,\n\t\t 0x1800000: 0x84010,\n\t\t 0x2800000: 0x10,\n\t\t 0x3800000: 0x40004010,\n\t\t 0x4800000: 0x40084010,\n\t\t 0x5800000: 0x40000000,\n\t\t 0x6800000: 0x80000,\n\t\t 0x7800000: 0x40080010,\n\t\t 0x8800000: 0x80010,\n\t\t 0x9800000: 0x0,\n\t\t 0xa800000: 0x4000,\n\t\t 0xb800000: 0x40080000,\n\t\t 0xc800000: 0x40000010,\n\t\t 0xd800000: 0x84000,\n\t\t 0xe800000: 0x40084000,\n\t\t 0xf800000: 0x4010,\n\t\t 0x10000000: 0x0,\n\t\t 0x11000000: 0x40080010,\n\t\t 0x12000000: 0x40004010,\n\t\t 0x13000000: 0x40084000,\n\t\t 0x14000000: 0x40080000,\n\t\t 0x15000000: 0x10,\n\t\t 0x16000000: 0x84010,\n\t\t 0x17000000: 0x4000,\n\t\t 0x18000000: 0x4010,\n\t\t 0x19000000: 0x80000,\n\t\t 0x1a000000: 0x80010,\n\t\t 0x1b000000: 0x40000010,\n\t\t 0x1c000000: 0x84000,\n\t\t 0x1d000000: 0x40004000,\n\t\t 0x1e000000: 0x40000000,\n\t\t 0x1f000000: 0x40084010,\n\t\t 0x10800000: 0x84010,\n\t\t 0x11800000: 0x80000,\n\t\t 0x12800000: 0x40080000,\n\t\t 0x13800000: 0x4000,\n\t\t 0x14800000: 0x40004000,\n\t\t 0x15800000: 0x40084010,\n\t\t 0x16800000: 0x10,\n\t\t 0x17800000: 0x40000000,\n\t\t 0x18800000: 0x40084000,\n\t\t 0x19800000: 0x40000010,\n\t\t 0x1a800000: 0x40004010,\n\t\t 0x1b800000: 0x80010,\n\t\t 0x1c800000: 0x0,\n\t\t 0x1d800000: 0x4010,\n\t\t 0x1e800000: 0x40080010,\n\t\t 0x1f800000: 0x84000\n\t\t },\n\t\t {\n\t\t 0x0: 0x104,\n\t\t 0x100000: 0x0,\n\t\t 0x200000: 0x4000100,\n\t\t 0x300000: 0x10104,\n\t\t 0x400000: 0x10004,\n\t\t 0x500000: 0x4000004,\n\t\t 0x600000: 0x4010104,\n\t\t 0x700000: 0x4010000,\n\t\t 0x800000: 0x4000000,\n\t\t 0x900000: 0x4010100,\n\t\t 0xa00000: 0x10100,\n\t\t 0xb00000: 0x4010004,\n\t\t 0xc00000: 0x4000104,\n\t\t 0xd00000: 0x10000,\n\t\t 0xe00000: 0x4,\n\t\t 0xf00000: 0x100,\n\t\t 0x80000: 0x4010100,\n\t\t 0x180000: 0x4010004,\n\t\t 0x280000: 0x0,\n\t\t 0x380000: 0x4000100,\n\t\t 0x480000: 0x4000004,\n\t\t 0x580000: 0x10000,\n\t\t 0x680000: 0x10004,\n\t\t 0x780000: 0x104,\n\t\t 0x880000: 0x4,\n\t\t 0x980000: 0x100,\n\t\t 0xa80000: 0x4010000,\n\t\t 0xb80000: 0x10104,\n\t\t 0xc80000: 0x10100,\n\t\t 0xd80000: 0x4000104,\n\t\t 0xe80000: 0x4010104,\n\t\t 0xf80000: 0x4000000,\n\t\t 0x1000000: 0x4010100,\n\t\t 0x1100000: 0x10004,\n\t\t 0x1200000: 0x10000,\n\t\t 0x1300000: 0x4000100,\n\t\t 0x1400000: 0x100,\n\t\t 0x1500000: 0x4010104,\n\t\t 0x1600000: 0x4000004,\n\t\t 0x1700000: 0x0,\n\t\t 0x1800000: 0x4000104,\n\t\t 0x1900000: 0x4000000,\n\t\t 0x1a00000: 0x4,\n\t\t 0x1b00000: 0x10100,\n\t\t 0x1c00000: 0x4010000,\n\t\t 0x1d00000: 0x104,\n\t\t 0x1e00000: 0x10104,\n\t\t 0x1f00000: 0x4010004,\n\t\t 0x1080000: 0x4000000,\n\t\t 0x1180000: 0x104,\n\t\t 0x1280000: 0x4010100,\n\t\t 0x1380000: 0x0,\n\t\t 0x1480000: 0x10004,\n\t\t 0x1580000: 0x4000100,\n\t\t 0x1680000: 0x100,\n\t\t 0x1780000: 0x4010004,\n\t\t 0x1880000: 0x10000,\n\t\t 0x1980000: 0x4010104,\n\t\t 0x1a80000: 0x10104,\n\t\t 0x1b80000: 0x4000004,\n\t\t 0x1c80000: 0x4000104,\n\t\t 0x1d80000: 0x4010000,\n\t\t 0x1e80000: 0x4,\n\t\t 0x1f80000: 0x10100\n\t\t },\n\t\t {\n\t\t 0x0: 0x80401000,\n\t\t 0x10000: 0x80001040,\n\t\t 0x20000: 0x401040,\n\t\t 0x30000: 0x80400000,\n\t\t 0x40000: 0x0,\n\t\t 0x50000: 0x401000,\n\t\t 0x60000: 0x80000040,\n\t\t 0x70000: 0x400040,\n\t\t 0x80000: 0x80000000,\n\t\t 0x90000: 0x400000,\n\t\t 0xa0000: 0x40,\n\t\t 0xb0000: 0x80001000,\n\t\t 0xc0000: 0x80400040,\n\t\t 0xd0000: 0x1040,\n\t\t 0xe0000: 0x1000,\n\t\t 0xf0000: 0x80401040,\n\t\t 0x8000: 0x80001040,\n\t\t 0x18000: 0x40,\n\t\t 0x28000: 0x80400040,\n\t\t 0x38000: 0x80001000,\n\t\t 0x48000: 0x401000,\n\t\t 0x58000: 0x80401040,\n\t\t 0x68000: 0x0,\n\t\t 0x78000: 0x80400000,\n\t\t 0x88000: 0x1000,\n\t\t 0x98000: 0x80401000,\n\t\t 0xa8000: 0x400000,\n\t\t 0xb8000: 0x1040,\n\t\t 0xc8000: 0x80000000,\n\t\t 0xd8000: 0x400040,\n\t\t 0xe8000: 0x401040,\n\t\t 0xf8000: 0x80000040,\n\t\t 0x100000: 0x400040,\n\t\t 0x110000: 0x401000,\n\t\t 0x120000: 0x80000040,\n\t\t 0x130000: 0x0,\n\t\t 0x140000: 0x1040,\n\t\t 0x150000: 0x80400040,\n\t\t 0x160000: 0x80401000,\n\t\t 0x170000: 0x80001040,\n\t\t 0x180000: 0x80401040,\n\t\t 0x190000: 0x80000000,\n\t\t 0x1a0000: 0x80400000,\n\t\t 0x1b0000: 0x401040,\n\t\t 0x1c0000: 0x80001000,\n\t\t 0x1d0000: 0x400000,\n\t\t 0x1e0000: 0x40,\n\t\t 0x1f0000: 0x1000,\n\t\t 0x108000: 0x80400000,\n\t\t 0x118000: 0x80401040,\n\t\t 0x128000: 0x0,\n\t\t 0x138000: 0x401000,\n\t\t 0x148000: 0x400040,\n\t\t 0x158000: 0x80000000,\n\t\t 0x168000: 0x80001040,\n\t\t 0x178000: 0x40,\n\t\t 0x188000: 0x80000040,\n\t\t 0x198000: 0x1000,\n\t\t 0x1a8000: 0x80001000,\n\t\t 0x1b8000: 0x80400040,\n\t\t 0x1c8000: 0x1040,\n\t\t 0x1d8000: 0x80401000,\n\t\t 0x1e8000: 0x400000,\n\t\t 0x1f8000: 0x401040\n\t\t },\n\t\t {\n\t\t 0x0: 0x80,\n\t\t 0x1000: 0x1040000,\n\t\t 0x2000: 0x40000,\n\t\t 0x3000: 0x20000000,\n\t\t 0x4000: 0x20040080,\n\t\t 0x5000: 0x1000080,\n\t\t 0x6000: 0x21000080,\n\t\t 0x7000: 0x40080,\n\t\t 0x8000: 0x1000000,\n\t\t 0x9000: 0x20040000,\n\t\t 0xa000: 0x20000080,\n\t\t 0xb000: 0x21040080,\n\t\t 0xc000: 0x21040000,\n\t\t 0xd000: 0x0,\n\t\t 0xe000: 0x1040080,\n\t\t 0xf000: 0x21000000,\n\t\t 0x800: 0x1040080,\n\t\t 0x1800: 0x21000080,\n\t\t 0x2800: 0x80,\n\t\t 0x3800: 0x1040000,\n\t\t 0x4800: 0x40000,\n\t\t 0x5800: 0x20040080,\n\t\t 0x6800: 0x21040000,\n\t\t 0x7800: 0x20000000,\n\t\t 0x8800: 0x20040000,\n\t\t 0x9800: 0x0,\n\t\t 0xa800: 0x21040080,\n\t\t 0xb800: 0x1000080,\n\t\t 0xc800: 0x20000080,\n\t\t 0xd800: 0x21000000,\n\t\t 0xe800: 0x1000000,\n\t\t 0xf800: 0x40080,\n\t\t 0x10000: 0x40000,\n\t\t 0x11000: 0x80,\n\t\t 0x12000: 0x20000000,\n\t\t 0x13000: 0x21000080,\n\t\t 0x14000: 0x1000080,\n\t\t 0x15000: 0x21040000,\n\t\t 0x16000: 0x20040080,\n\t\t 0x17000: 0x1000000,\n\t\t 0x18000: 0x21040080,\n\t\t 0x19000: 0x21000000,\n\t\t 0x1a000: 0x1040000,\n\t\t 0x1b000: 0x20040000,\n\t\t 0x1c000: 0x40080,\n\t\t 0x1d000: 0x20000080,\n\t\t 0x1e000: 0x0,\n\t\t 0x1f000: 0x1040080,\n\t\t 0x10800: 0x21000080,\n\t\t 0x11800: 0x1000000,\n\t\t 0x12800: 0x1040000,\n\t\t 0x13800: 0x20040080,\n\t\t 0x14800: 0x20000000,\n\t\t 0x15800: 0x1040080,\n\t\t 0x16800: 0x80,\n\t\t 0x17800: 0x21040000,\n\t\t 0x18800: 0x40080,\n\t\t 0x19800: 0x21040080,\n\t\t 0x1a800: 0x0,\n\t\t 0x1b800: 0x21000000,\n\t\t 0x1c800: 0x1000080,\n\t\t 0x1d800: 0x40000,\n\t\t 0x1e800: 0x20040000,\n\t\t 0x1f800: 0x20000080\n\t\t },\n\t\t {\n\t\t 0x0: 0x10000008,\n\t\t 0x100: 0x2000,\n\t\t 0x200: 0x10200000,\n\t\t 0x300: 0x10202008,\n\t\t 0x400: 0x10002000,\n\t\t 0x500: 0x200000,\n\t\t 0x600: 0x200008,\n\t\t 0x700: 0x10000000,\n\t\t 0x800: 0x0,\n\t\t 0x900: 0x10002008,\n\t\t 0xa00: 0x202000,\n\t\t 0xb00: 0x8,\n\t\t 0xc00: 0x10200008,\n\t\t 0xd00: 0x202008,\n\t\t 0xe00: 0x2008,\n\t\t 0xf00: 0x10202000,\n\t\t 0x80: 0x10200000,\n\t\t 0x180: 0x10202008,\n\t\t 0x280: 0x8,\n\t\t 0x380: 0x200000,\n\t\t 0x480: 0x202008,\n\t\t 0x580: 0x10000008,\n\t\t 0x680: 0x10002000,\n\t\t 0x780: 0x2008,\n\t\t 0x880: 0x200008,\n\t\t 0x980: 0x2000,\n\t\t 0xa80: 0x10002008,\n\t\t 0xb80: 0x10200008,\n\t\t 0xc80: 0x0,\n\t\t 0xd80: 0x10202000,\n\t\t 0xe80: 0x202000,\n\t\t 0xf80: 0x10000000,\n\t\t 0x1000: 0x10002000,\n\t\t 0x1100: 0x10200008,\n\t\t 0x1200: 0x10202008,\n\t\t 0x1300: 0x2008,\n\t\t 0x1400: 0x200000,\n\t\t 0x1500: 0x10000000,\n\t\t 0x1600: 0x10000008,\n\t\t 0x1700: 0x202000,\n\t\t 0x1800: 0x202008,\n\t\t 0x1900: 0x0,\n\t\t 0x1a00: 0x8,\n\t\t 0x1b00: 0x10200000,\n\t\t 0x1c00: 0x2000,\n\t\t 0x1d00: 0x10002008,\n\t\t 0x1e00: 0x10202000,\n\t\t 0x1f00: 0x200008,\n\t\t 0x1080: 0x8,\n\t\t 0x1180: 0x202000,\n\t\t 0x1280: 0x200000,\n\t\t 0x1380: 0x10000008,\n\t\t 0x1480: 0x10002000,\n\t\t 0x1580: 0x2008,\n\t\t 0x1680: 0x10202008,\n\t\t 0x1780: 0x10200000,\n\t\t 0x1880: 0x10202000,\n\t\t 0x1980: 0x10200008,\n\t\t 0x1a80: 0x2000,\n\t\t 0x1b80: 0x202008,\n\t\t 0x1c80: 0x200008,\n\t\t 0x1d80: 0x0,\n\t\t 0x1e80: 0x10000000,\n\t\t 0x1f80: 0x10002008\n\t\t },\n\t\t {\n\t\t 0x0: 0x100000,\n\t\t 0x10: 0x2000401,\n\t\t 0x20: 0x400,\n\t\t 0x30: 0x100401,\n\t\t 0x40: 0x2100401,\n\t\t 0x50: 0x0,\n\t\t 0x60: 0x1,\n\t\t 0x70: 0x2100001,\n\t\t 0x80: 0x2000400,\n\t\t 0x90: 0x100001,\n\t\t 0xa0: 0x2000001,\n\t\t 0xb0: 0x2100400,\n\t\t 0xc0: 0x2100000,\n\t\t 0xd0: 0x401,\n\t\t 0xe0: 0x100400,\n\t\t 0xf0: 0x2000000,\n\t\t 0x8: 0x2100001,\n\t\t 0x18: 0x0,\n\t\t 0x28: 0x2000401,\n\t\t 0x38: 0x2100400,\n\t\t 0x48: 0x100000,\n\t\t 0x58: 0x2000001,\n\t\t 0x68: 0x2000000,\n\t\t 0x78: 0x401,\n\t\t 0x88: 0x100401,\n\t\t 0x98: 0x2000400,\n\t\t 0xa8: 0x2100000,\n\t\t 0xb8: 0x100001,\n\t\t 0xc8: 0x400,\n\t\t 0xd8: 0x2100401,\n\t\t 0xe8: 0x1,\n\t\t 0xf8: 0x100400,\n\t\t 0x100: 0x2000000,\n\t\t 0x110: 0x100000,\n\t\t 0x120: 0x2000401,\n\t\t 0x130: 0x2100001,\n\t\t 0x140: 0x100001,\n\t\t 0x150: 0x2000400,\n\t\t 0x160: 0x2100400,\n\t\t 0x170: 0x100401,\n\t\t 0x180: 0x401,\n\t\t 0x190: 0x2100401,\n\t\t 0x1a0: 0x100400,\n\t\t 0x1b0: 0x1,\n\t\t 0x1c0: 0x0,\n\t\t 0x1d0: 0x2100000,\n\t\t 0x1e0: 0x2000001,\n\t\t 0x1f0: 0x400,\n\t\t 0x108: 0x100400,\n\t\t 0x118: 0x2000401,\n\t\t 0x128: 0x2100001,\n\t\t 0x138: 0x1,\n\t\t 0x148: 0x2000000,\n\t\t 0x158: 0x100000,\n\t\t 0x168: 0x401,\n\t\t 0x178: 0x2100400,\n\t\t 0x188: 0x2000001,\n\t\t 0x198: 0x2100000,\n\t\t 0x1a8: 0x0,\n\t\t 0x1b8: 0x2100401,\n\t\t 0x1c8: 0x100401,\n\t\t 0x1d8: 0x400,\n\t\t 0x1e8: 0x2000400,\n\t\t 0x1f8: 0x100001\n\t\t },\n\t\t {\n\t\t 0x0: 0x8000820,\n\t\t 0x1: 0x20000,\n\t\t 0x2: 0x8000000,\n\t\t 0x3: 0x20,\n\t\t 0x4: 0x20020,\n\t\t 0x5: 0x8020820,\n\t\t 0x6: 0x8020800,\n\t\t 0x7: 0x800,\n\t\t 0x8: 0x8020000,\n\t\t 0x9: 0x8000800,\n\t\t 0xa: 0x20800,\n\t\t 0xb: 0x8020020,\n\t\t 0xc: 0x820,\n\t\t 0xd: 0x0,\n\t\t 0xe: 0x8000020,\n\t\t 0xf: 0x20820,\n\t\t 0x80000000: 0x800,\n\t\t 0x80000001: 0x8020820,\n\t\t 0x80000002: 0x8000820,\n\t\t 0x80000003: 0x8000000,\n\t\t 0x80000004: 0x8020000,\n\t\t 0x80000005: 0x20800,\n\t\t 0x80000006: 0x20820,\n\t\t 0x80000007: 0x20,\n\t\t 0x80000008: 0x8000020,\n\t\t 0x80000009: 0x820,\n\t\t 0x8000000a: 0x20020,\n\t\t 0x8000000b: 0x8020800,\n\t\t 0x8000000c: 0x0,\n\t\t 0x8000000d: 0x8020020,\n\t\t 0x8000000e: 0x8000800,\n\t\t 0x8000000f: 0x20000,\n\t\t 0x10: 0x20820,\n\t\t 0x11: 0x8020800,\n\t\t 0x12: 0x20,\n\t\t 0x13: 0x800,\n\t\t 0x14: 0x8000800,\n\t\t 0x15: 0x8000020,\n\t\t 0x16: 0x8020020,\n\t\t 0x17: 0x20000,\n\t\t 0x18: 0x0,\n\t\t 0x19: 0x20020,\n\t\t 0x1a: 0x8020000,\n\t\t 0x1b: 0x8000820,\n\t\t 0x1c: 0x8020820,\n\t\t 0x1d: 0x20800,\n\t\t 0x1e: 0x820,\n\t\t 0x1f: 0x8000000,\n\t\t 0x80000010: 0x20000,\n\t\t 0x80000011: 0x800,\n\t\t 0x80000012: 0x8020020,\n\t\t 0x80000013: 0x20820,\n\t\t 0x80000014: 0x20,\n\t\t 0x80000015: 0x8020000,\n\t\t 0x80000016: 0x8000000,\n\t\t 0x80000017: 0x8000820,\n\t\t 0x80000018: 0x8020820,\n\t\t 0x80000019: 0x8000020,\n\t\t 0x8000001a: 0x8000800,\n\t\t 0x8000001b: 0x0,\n\t\t 0x8000001c: 0x20800,\n\t\t 0x8000001d: 0x820,\n\t\t 0x8000001e: 0x20020,\n\t\t 0x8000001f: 0x8020800\n\t\t }\n\t\t ];\n\t\n\t\t // Masks that select the SBOX input\n\t\t var SBOX_MASK = [\n\t\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t\t ];\n\t\n\t\t /**\n\t\t * DES block cipher algorithm.\n\t\t */\n\t\t var DES = C_algo.DES = BlockCipher.extend({\n\t\t _doReset: function () {\n\t\t // Shortcuts\n\t\t var key = this._key;\n\t\t var keyWords = key.words;\n\t\n\t\t // Select 56 bits according to PC1\n\t\t var keyBits = [];\n\t\t for (var i = 0; i < 56; i++) {\n\t\t var keyBitPos = PC1[i] - 1;\n\t\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t\t }\n\t\n\t\t // Assemble 16 subkeys\n\t\t var subKeys = this._subKeys = [];\n\t\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t\t // Create subkey\n\t\t var subKey = subKeys[nSubKey] = [];\n\t\n\t\t // Shortcut\n\t\t var bitShift = BIT_SHIFTS[nSubKey];\n\t\n\t\t // Select 48 bits according to PC2\n\t\t for (var i = 0; i < 24; i++) {\n\t\t // Select from the left 28 key bits\n\t\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\t\n\t\t // Select from the right 28 key bits\n\t\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t\t }\n\t\n\t\t // Since each subkey is applied to an expanded 32-bit input,\n\t\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t\t // which allows the key to be used without expansion\n\t\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t\t for (var i = 1; i < 7; i++) {\n\t\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t\t }\n\t\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t\t }\n\t\n\t\t // Compute inverse subkeys\n\t\t var invSubKeys = this._invSubKeys = [];\n\t\t for (var i = 0; i < 16; i++) {\n\t\t invSubKeys[i] = subKeys[15 - i];\n\t\t }\n\t\t },\n\t\n\t\t encryptBlock: function (M, offset) {\n\t\t this._doCryptBlock(M, offset, this._subKeys);\n\t\t },\n\t\n\t\t decryptBlock: function (M, offset) {\n\t\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t\t },\n\t\n\t\t _doCryptBlock: function (M, offset, subKeys) {\n\t\t // Get input\n\t\t this._lBlock = M[offset];\n\t\t this._rBlock = M[offset + 1];\n\t\n\t\t // Initial permutation\n\t\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t\t exchangeLR.call(this, 16, 0x0000ffff);\n\t\t exchangeRL.call(this, 2, 0x33333333);\n\t\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t\t exchangeLR.call(this, 1, 0x55555555);\n\t\n\t\t // Rounds\n\t\t for (var round = 0; round < 16; round++) {\n\t\t // Shortcuts\n\t\t var subKey = subKeys[round];\n\t\t var lBlock = this._lBlock;\n\t\t var rBlock = this._rBlock;\n\t\n\t\t // Feistel function\n\t\t var f = 0;\n\t\t for (var i = 0; i < 8; i++) {\n\t\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t\t }\n\t\t this._lBlock = rBlock;\n\t\t this._rBlock = lBlock ^ f;\n\t\t }\n\t\n\t\t // Undo swap from last round\n\t\t var t = this._lBlock;\n\t\t this._lBlock = this._rBlock;\n\t\t this._rBlock = t;\n\t\n\t\t // Final permutation\n\t\t exchangeLR.call(this, 1, 0x55555555);\n\t\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t\t exchangeRL.call(this, 2, 0x33333333);\n\t\t exchangeLR.call(this, 16, 0x0000ffff);\n\t\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t\n\t\t // Set output\n\t\t M[offset] = this._lBlock;\n\t\t M[offset + 1] = this._rBlock;\n\t\t },\n\t\n\t\t keySize: 64/32,\n\t\n\t\t ivSize: 64/32,\n\t\n\t\t blockSize: 64/32\n\t\t });\n\t\n\t\t // Swap bits across the left and right words\n\t\t function exchangeLR(offset, mask) {\n\t\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t\t this._rBlock ^= t;\n\t\t this._lBlock ^= t << offset;\n\t\t }\n\t\n\t\t function exchangeRL(offset, mask) {\n\t\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t\t this._lBlock ^= t;\n\t\t this._rBlock ^= t << offset;\n\t\t }\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.DES = BlockCipher._createHelper(DES);\n\t\n\t\t /**\n\t\t * Triple-DES block cipher algorithm.\n\t\t */\n\t\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t\t _doReset: function () {\n\t\t // Shortcuts\n\t\t var key = this._key;\n\t\t var keyWords = key.words;\n\t\n\t\t // Create DES instances\n\t\t this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));\n\t\t this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));\n\t\t this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));\n\t\t },\n\t\n\t\t encryptBlock: function (M, offset) {\n\t\t this._des1.encryptBlock(M, offset);\n\t\t this._des2.decryptBlock(M, offset);\n\t\t this._des3.encryptBlock(M, offset);\n\t\t },\n\t\n\t\t decryptBlock: function (M, offset) {\n\t\t this._des3.decryptBlock(M, offset);\n\t\t this._des2.encryptBlock(M, offset);\n\t\t this._des1.decryptBlock(M, offset);\n\t\t },\n\t\n\t\t keySize: 192/32,\n\t\n\t\t ivSize: 64/32,\n\t\n\t\t blockSize: 64/32\n\t\t });\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.TripleDES;\n\t\n\t}));\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(12), __webpack_require__(13), __webpack_require__(14), __webpack_require__(15));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var StreamCipher = C_lib.StreamCipher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Reusable objects\n\t\t var S = [];\n\t\t var C_ = [];\n\t\t var G = [];\n\t\n\t\t /**\n\t\t * Rabbit stream cipher algorithm\n\t\t */\n\t\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t\t _doReset: function () {\n\t\t // Shortcuts\n\t\t var K = this._key.words;\n\t\t var iv = this.cfg.iv;\n\t\n\t\t // Swap endian\n\t\t for (var i = 0; i < 4; i++) {\n\t\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t\t }\n\t\n\t\t // Generate initial state values\n\t\t var X = this._X = [\n\t\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t\t ];\n\t\n\t\t // Generate initial counter values\n\t\t var C = this._C = [\n\t\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t\t ];\n\t\n\t\t // Carry bit\n\t\t this._b = 0;\n\t\n\t\t // Iterate the system four times\n\t\t for (var i = 0; i < 4; i++) {\n\t\t nextState.call(this);\n\t\t }\n\t\n\t\t // Modify the counters\n\t\t for (var i = 0; i < 8; i++) {\n\t\t C[i] ^= X[(i + 4) & 7];\n\t\t }\n\t\n\t\t // IV setup\n\t\t if (iv) {\n\t\t // Shortcuts\n\t\t var IV = iv.words;\n\t\t var IV_0 = IV[0];\n\t\t var IV_1 = IV[1];\n\t\n\t\t // Generate four subvectors\n\t\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\t\n\t\t // Modify counter values\n\t\t C[0] ^= i0;\n\t\t C[1] ^= i1;\n\t\t C[2] ^= i2;\n\t\t C[3] ^= i3;\n\t\t C[4] ^= i0;\n\t\t C[5] ^= i1;\n\t\t C[6] ^= i2;\n\t\t C[7] ^= i3;\n\t\n\t\t // Iterate the system four times\n\t\t for (var i = 0; i < 4; i++) {\n\t\t nextState.call(this);\n\t\t }\n\t\t }\n\t\t },\n\t\n\t\t _doProcessBlock: function (M, offset) {\n\t\t // Shortcut\n\t\t var X = this._X;\n\t\n\t\t // Iterate the system\n\t\t nextState.call(this);\n\t\n\t\t // Generate four keystream words\n\t\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\t\n\t\t for (var i = 0; i < 4; i++) {\n\t\t // Swap endian\n\t\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\t\n\t\t // Encrypt\n\t\t M[offset + i] ^= S[i];\n\t\t }\n\t\t },\n\t\n\t\t blockSize: 128/32,\n\t\n\t\t ivSize: 64/32\n\t\t });\n\t\n\t\t function nextState() {\n\t\t // Shortcuts\n\t\t var X = this._X;\n\t\t var C = this._C;\n\t\n\t\t // Save old counter values\n\t\t for (var i = 0; i < 8; i++) {\n\t\t C_[i] = C[i];\n\t\t }\n\t\n\t\t // Calculate new counter values\n\t\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\t\n\t\t // Calculate the g-values\n\t\t for (var i = 0; i < 8; i++) {\n\t\t var gx = X[i] + C[i];\n\t\n\t\t // Construct high and low argument for squaring\n\t\t var ga = gx & 0xffff;\n\t\t var gb = gx >>> 16;\n\t\n\t\t // Calculate high and low result of squaring\n\t\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\t\n\t\t // High XOR low\n\t\t G[i] = gh ^ gl;\n\t\t }\n\t\n\t\t // Calculate new state values\n\t\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t\t }\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.Rabbit;\n\t\n\t}));\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(12), __webpack_require__(13), __webpack_require__(14), __webpack_require__(15));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var StreamCipher = C_lib.StreamCipher;\n\t\t var C_algo = C.algo;\n\t\n\t\t /**\n\t\t * RC4 stream cipher algorithm.\n\t\t */\n\t\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t\t _doReset: function () {\n\t\t // Shortcuts\n\t\t var key = this._key;\n\t\t var keyWords = key.words;\n\t\t var keySigBytes = key.sigBytes;\n\t\n\t\t // Init sbox\n\t\t var S = this._S = [];\n\t\t for (var i = 0; i < 256; i++) {\n\t\t S[i] = i;\n\t\t }\n\t\n\t\t // Key setup\n\t\t for (var i = 0, j = 0; i < 256; i++) {\n\t\t var keyByteIndex = i % keySigBytes;\n\t\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\t\n\t\t j = (j + S[i] + keyByte) % 256;\n\t\n\t\t // Swap\n\t\t var t = S[i];\n\t\t S[i] = S[j];\n\t\t S[j] = t;\n\t\t }\n\t\n\t\t // Counters\n\t\t this._i = this._j = 0;\n\t\t },\n\t\n\t\t _doProcessBlock: function (M, offset) {\n\t\t M[offset] ^= generateKeystreamWord.call(this);\n\t\t },\n\t\n\t\t keySize: 256/32,\n\t\n\t\t ivSize: 0\n\t\t });\n\t\n\t\t function generateKeystreamWord() {\n\t\t // Shortcuts\n\t\t var S = this._S;\n\t\t var i = this._i;\n\t\t var j = this._j;\n\t\n\t\t // Generate keystream word\n\t\t var keystreamWord = 0;\n\t\t for (var n = 0; n < 4; n++) {\n\t\t i = (i + 1) % 256;\n\t\t j = (j + S[i]) % 256;\n\t\n\t\t // Swap\n\t\t var t = S[i];\n\t\t S[i] = S[j];\n\t\t S[j] = t;\n\t\n\t\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t\t }\n\t\n\t\t // Update counters\n\t\t this._i = i;\n\t\t this._j = j;\n\t\n\t\t return keystreamWord;\n\t\t }\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.RC4 = StreamCipher._createHelper(RC4);\n\t\n\t\t /**\n\t\t * Modified RC4 stream cipher algorithm.\n\t\t */\n\t\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {number} drop The number of keystream words to drop. Default 192\n\t\t */\n\t\t cfg: RC4.cfg.extend({\n\t\t drop: 192\n\t\t }),\n\t\n\t\t _doReset: function () {\n\t\t RC4._doReset.call(this);\n\t\n\t\t // Drop\n\t\t for (var i = this.cfg.drop; i > 0; i--) {\n\t\t generateKeystreamWord.call(this);\n\t\t }\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.RC4;\n\t\n\t}));\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** secure-ls.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 86f0cc5995c1466f85ee\n **/","import utils from './utils';\r\nimport constants from './constants';\r\nimport enc from './enc-utf8';\r\n\r\nimport Base64 from './Base64';\r\nimport LZString from 'lz-string/libs/lz-string';\r\nimport AES from 'crypto-js/aes';\r\nimport DES from 'crypto-js/tripledes';\r\nimport RABBIT from 'crypto-js/rabbit';\r\nimport RC4 from 'crypto-js/rc4';\r\n\r\nexport default class SecureLS {\r\n constructor(config) {\r\n config = config || {};\r\n this._name = 'secure-ls';\r\n this.utils = utils;\r\n this.constants = constants;\r\n this.Base64 = Base64;\r\n this.LZString = LZString;\r\n this.AES = AES;\r\n this.DES = DES;\r\n this.RABBIT = RABBIT;\r\n this.RC4 = RC4;\r\n this.enc = enc;\r\n\r\n this.config = {\r\n isCompression: true,\r\n encodingType: constants.EncrytionTypes.BASE64,\r\n encryptionSecret: config.encryptionSecret,\r\n encryptionRealm: config.encryptionRealm\r\n };\r\n this.config.isCompression = typeof config.isCompression !== 'undefined' ?\r\n config.isCompression :\r\n true;\r\n this.config.encodingType = (typeof config.encodingType !== 'undefined' || config.encodingType === '') ?\r\n config.encodingType.toLowerCase() :\r\n constants.EncrytionTypes.BASE64;\r\n\r\n this.ls = localStorage;\r\n this.init();\r\n };\r\n\r\n init() {\r\n let metaData = this.getMetaData();\r\n\r\n this.WarningEnum = this.constants.WarningEnum;\r\n this.WarningTypes = this.constants.WarningTypes;\r\n this.EncrytionTypes = this.constants.EncrytionTypes;\r\n\r\n this._isBase64 = this._isBase64EncryptionType();\r\n this._isAES = this._isAESEncryptionType();\r\n this._isDES = this._isDESEncryptionType();\r\n this._isRabbit = this._isRabbitEncryptionType();\r\n this._isRC4 = this._isRC4EncryptionType();\r\n this._isCompression = this._isDataCompressionEnabled();\r\n\r\n // fill the already present keys to the list of keys being used by secure-ls\r\n this.utils.allKeys = metaData.keys || this.resetAllKeys();\r\n };\r\n\r\n _isBase64EncryptionType() {\r\n return Base64 &&\r\n (typeof this.config.encodingType === 'undefined' ||\r\n this.config.encodingType === this.constants.EncrytionTypes.BASE64);\r\n };\r\n\r\n _isAESEncryptionType() {\r\n return AES &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.AES);\r\n };\r\n\r\n _isDESEncryptionType() {\r\n return DES &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.DES);\r\n };\r\n\r\n _isRabbitEncryptionType() {\r\n return RABBIT &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.RABBIT);\r\n };\r\n\r\n _isRC4EncryptionType() {\r\n return RC4 &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.RC4);\r\n };\r\n\r\n _isDataCompressionEnabled() {\r\n return this.config.isCompression;\r\n }\r\n\r\n getEncryptionSecret(key) {\r\n let metaData = this.getMetaData();\r\n let obj = this.utils.getObjectFromKey(metaData.keys, key);\r\n\r\n if (!obj) {\r\n return;\r\n }\r\n\r\n if (this._isAES ||\r\n this._isDES ||\r\n this._isRabbit ||\r\n this._isRC4\r\n ) {\r\n if (typeof this.config.encryptionSecret === 'undefined') {\r\n this.utils.encryptionSecret = obj.s;\r\n\r\n if (!this.utils.encryptionSecret) {\r\n this.utils.encryptionSecret = this.utils.generateSecretKey();\r\n this.setMetaData();\r\n }\r\n } else {\r\n this.utils.encryptionSecret = this.config.encryptionSecret || obj.s || '';\r\n }\r\n }\r\n }\r\n\r\n get(key, isAllKeysData) {\r\n let decodedData = '',\r\n jsonData = '',\r\n deCompressedData,\r\n bytes,\r\n data;\r\n\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return jsonData;\r\n }\r\n\r\n data = this.getDataFromLocalStorage(key);\r\n\r\n if (!data) {\r\n return jsonData;\r\n }\r\n\r\n deCompressedData = data; // saves else\r\n if (this._isCompression || isAllKeysData) { // meta data always compressed\r\n deCompressedData = LZString.decompressFromUTF16(data);\r\n }\r\n\r\n decodedData = deCompressedData; // saves else\r\n if (this._isBase64 || isAllKeysData) { // meta data always Base64\r\n decodedData = Base64.decode(deCompressedData);\r\n } else {\r\n this.getEncryptionSecret(key);\r\n if (this._isAES) {\r\n bytes = AES.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isDES) {\r\n bytes = DES.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isRabbit) {\r\n bytes = RABBIT.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isRC4) {\r\n bytes = RC4.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n }\r\n\r\n if (bytes) {\r\n decodedData = bytes.toString(enc._Utf8);\r\n }\r\n }\r\n\r\n try {\r\n jsonData = JSON.parse(decodedData);\r\n } catch (e) {\r\n throw new Error('Could not parse JSON');\r\n }\r\n\r\n return jsonData;\r\n };\r\n\r\n getDataFromLocalStorage(key) {\r\n return this.ls.getItem(key, true);\r\n };\r\n\r\n getAllKeys() {\r\n let data = this.getMetaData();\r\n\r\n return this.utils.extractKeyNames(data) || [];\r\n };\r\n\r\n set(key, data) {\r\n let dataToStore = '';\r\n\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return;\r\n }\r\n\r\n this.getEncryptionSecret(key);\r\n\r\n // add key(s) to Array if not already added, only for keys other than meta key\r\n if (!(String(key) === String(this.utils.metaKey))) {\r\n if (!this.utils.isKeyPresent(key)) {\r\n this.utils.addToKeysList(key);\r\n this.setMetaData();\r\n }\r\n }\r\n\r\n dataToStore = this.processData(data);\r\n // Store the data to localStorage\r\n this.setDataToLocalStorage(key, dataToStore);\r\n };\r\n\r\n setDataToLocalStorage(key, data) {\r\n this.ls.setItem(key, data);\r\n };\r\n\r\n remove(key) {\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return;\r\n }\r\n\r\n if (key === this.utils.metaKey && this.getAllKeys().length) {\r\n this.utils.warn(this.WarningEnum.META_KEY_REMOVE);\r\n return;\r\n }\r\n\r\n if (this.utils.isKeyPresent(key)) {\r\n this.utils.removeFromKeysList(key);\r\n this.setMetaData();\r\n }\r\n this.ls.removeItem(key);\r\n };\r\n\r\n removeAll() {\r\n let keys, i;\r\n\r\n keys = this.getAllKeys();\r\n for (i = 0; i < keys.length; i++) {\r\n this.ls.removeItem(keys[i]);\r\n }\r\n this.ls.removeItem(this.utils.metaKey);\r\n\r\n this.resetAllKeys();\r\n };\r\n\r\n clear() {\r\n this.ls.clear();\r\n this.resetAllKeys();\r\n };\r\n\r\n resetAllKeys() {\r\n this.utils.allKeys = [];\r\n return [];\r\n }\r\n\r\n processData(data, isAllKeysData) {\r\n if (data === null || data === undefined || data === '') {\r\n return '';\r\n }\r\n\r\n let jsonData, encodedData, compressedData;\r\n\r\n try {\r\n jsonData = JSON.stringify(data);\r\n } catch (e) {\r\n throw new Error('Could not stringify data.');\r\n }\r\n\r\n // Encode Based on encoding type\r\n // If not set, default to Base64 for securing data\r\n encodedData = jsonData;\r\n if (this._isBase64 || isAllKeysData) {\r\n encodedData = Base64.encode(jsonData);\r\n } else {\r\n if (this._isAES) {\r\n encodedData = AES.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isDES) {\r\n encodedData = DES.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isRabbit) {\r\n encodedData = RABBIT.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isRC4) {\r\n encodedData = RC4.encrypt(jsonData, this.utils.encryptionSecret);\r\n }\r\n\r\n encodedData = encodedData && encodedData.toString();\r\n }\r\n\r\n // Compress data if set to true\r\n compressedData = encodedData;\r\n if (this._isCompression || isAllKeysData) {\r\n compressedData = LZString.compressToUTF16(encodedData);\r\n }\r\n\r\n return compressedData;\r\n };\r\n\r\n setMetaData() {\r\n let dataToStore = this.processData({\r\n keys: this.utils.allKeys\r\n }, true);\r\n\r\n // Store the data to localStorage\r\n this.setDataToLocalStorage(this.getMetaKey(), dataToStore);\r\n };\r\n\r\n getMetaData() {\r\n return this.get(this.getMetaKey(), true) || {};\r\n };\r\n\r\n getMetaKey() {\r\n return this.utils.metaKey + (this.config.encryptionRealm ? '__' + this.config.encryptionRealm : '');\r\n }\r\n\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/index.js\n **/","import constants from './constants';\r\nimport CryptoJSWordArray from './WordArray';\r\nimport PBKDF2 from 'crypto-js/pbkdf2';\r\n\r\nlet utils = {\r\n metaKey: '_secure__ls__metadata',\r\n encryptionSecret: '',\r\n secretPhrase: 's3cr3t$#@135^&*246',\r\n allKeys: [],\r\n is: function (key) {\r\n if (key) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n warn: function (reason) {\r\n reason = reason ? reason : constants.WarningEnum.DEFAULT_TEXT;\r\n console.warn(constants.WarningTypes[reason]);\r\n },\r\n generateSecretKey: function () {\r\n let salt = CryptoJSWordArray.random(128 / 8);\r\n let key128Bits = PBKDF2(this.secretPhrase, salt, {keySize: 128 / 32 });\r\n\r\n return key128Bits && key128Bits.toString();\r\n },\r\n getObjectFromKey: function (data, key) {\r\n if (!data || !data.length) {\r\n return {};\r\n }\r\n\r\n let i, obj = {};\r\n\r\n for (i = 0; i < data.length; i++) {\r\n if (data[i].k === key) {\r\n obj = data[i];\r\n break;\r\n }\r\n }\r\n\r\n return obj;\r\n },\r\n extractKeyNames: function (data) {\r\n if (!data || !data.keys || !data.keys.length) {\r\n return [];\r\n }\r\n\r\n return data.keys.map(keyData => {\r\n return keyData.k;\r\n });\r\n },\r\n getAllKeys: function () {\r\n return this.allKeys;\r\n },\r\n isKeyPresent: function (key) {\r\n let isKeyAlreadyPresent = false;\r\n\r\n for (let i = 0; i < this.allKeys.length; i++) {\r\n if (String(this.allKeys[i].k) === String(key)) {\r\n isKeyAlreadyPresent = true; // found\r\n break;\r\n }\r\n }\r\n\r\n return isKeyAlreadyPresent;\r\n },\r\n addToKeysList: function (key) {\r\n this.allKeys.push({\r\n k: key,\r\n s: this.encryptionSecret\r\n });\r\n },\r\n removeFromKeysList: function (key) {\r\n let i, index = -1;\r\n\r\n for (i = 0; i < this.allKeys.length; i++) {\r\n if (this.allKeys[i].k === key) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n if (index !== -1) {\r\n this.allKeys.splice(index, 1);\r\n }\r\n return index;\r\n }\r\n};\r\n\r\nmodule.exports = utils;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/utils.js\n **/","let WarningEnum = {\r\n KEY_NOT_PROVIDED: 'keyNotProvided',\r\n META_KEY_REMOVE: 'metaKeyRemove',\r\n DEFAULT_TEXT: 'defaultText'\r\n};\r\n\r\nlet WarningTypes = {};\r\n\r\nWarningTypes[WarningEnum.KEY_NOT_PROVIDED] = 'Secure LS: Key not provided. Aborting operation!';\r\nWarningTypes[WarningEnum.META_KEY_REMOVE] = `Secure LS: Meta key can not be removed\r\nunless all keys created by Secure LS are removed!`;\r\nWarningTypes[WarningEnum.DEFAULT_TEXT] = `Unexpected output`;\r\n\r\nlet constants = {\r\n WarningEnum: WarningEnum,\r\n WarningTypes: WarningTypes,\r\n EncrytionTypes: {\r\n BASE64: 'base64',\r\n AES: 'aes',\r\n DES: 'des',\r\n RABBIT: 'rabbit',\r\n RC4: 'rc4'\r\n }\r\n};\r\n\r\nmodule.exports = constants;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/constants.js\n **/","/*\r\n ES6 compatible port of CryptoJS - WordArray for PBKDF2 password key generation\r\n\r\n Source: https://github.com/brix/crypto-js\r\n LICENSE: MIT\r\n */\r\n\r\nlet CryptoJSWordArray = {};\r\n\r\nCryptoJSWordArray.random = function (nBytes) {\r\n let words = [];\r\n let r = (function (mw) {\r\n let mz = 0x3ade68b1;\r\n let mask = 0xffffffff;\r\n\r\n return function () {\r\n mz = (0x9069 * (mz & 0xFFFF) + (mz >> 0x10)) & mask;\r\n mw = (0x4650 * (mw & 0xFFFF) + (mw >> 0x10)) & mask;\r\n let result = ((mz << 0x10) + mw) & mask;\r\n\r\n result /= 0x100000000;\r\n result += 0.5;\r\n return result * (Math.random() > 0.5 ? 1 : -1);\r\n };\r\n });\r\n\r\n for (let i = 0, rcache; i < nBytes; i += 4) {\r\n let _r = r((rcache || Math.random()) * 0x100000000);\r\n\r\n rcache = _r() * 0x3ade67b7;\r\n words.push((_r() * 0x100000000) | 0);\r\n }\r\n\r\n return new this.Set(words, nBytes);\r\n};\r\n\r\nCryptoJSWordArray.Set = function (words, sigBytes) {\r\n words = this.words = words || [];\r\n\r\n if (sigBytes !== undefined) {\r\n this.sigBytes = sigBytes;\r\n } else {\r\n this.sigBytes = words.length * 8;\r\n }\r\n};\r\n\r\nmodule.exports = CryptoJSWordArray;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/WordArray.js\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/pbkdf2.js\n ** module id = 4\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t /*\n\t * Local polyfil of Object.create\n\t */\n\t var create = Object.create || (function () {\n\t function F() {};\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }())\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var i = 0; i < thatSigBytes; i += 4) {\n\t thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t var r = (function (m_w) {\n\t var m_w = m_w;\n\t var m_z = 0x3ade68b1;\n\t var mask = 0xffffffff;\n\n\t return function () {\n\t m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t var result = ((m_z << 0x10) + m_w) & mask;\n\t result /= 0x100000000;\n\t result += 0.5;\n\t return result * (Math.random() > .5 ? 1 : -1);\n\t }\n\t });\n\n\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t var _r = r((rcache || Math.random()) * 0x100000000);\n\n\t rcache = _r() * 0x3ade67b7;\n\t words.push((_r() * 0x100000000) | 0);\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t var processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/core.js\n ** module id = 5\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/sha1.js\n ** module id = 6\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/hmac.js\n ** module id = 7\n ** module chunks = 0\n **/","/*\r\n ES6 compatible port of CryptoJS - encoding\r\n\r\n Source: https://github.com/brix/crypto-js\r\n LICENSE: MIT\r\n */\r\nlet enc = {};\r\n\r\nenc.Latin1 = {\r\n stringify: (wordArray) => {\r\n // Shortcuts\r\n let words = wordArray.words;\r\n let sigBytes = wordArray.sigBytes;\r\n let latin1Chars = [], i, bite;\r\n\r\n // Convert\r\n for (i = 0; i < sigBytes; i++) {\r\n bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n latin1Chars.push(String.fromCharCode(bite));\r\n }\r\n\r\n return latin1Chars.join('');\r\n }\r\n};\r\n\r\nenc._Utf8 = {\r\n stringify: (wordArray) => {\r\n try {\r\n return decodeURIComponent(escape(enc.Latin1.stringify(wordArray)));\r\n } catch (e) {\r\n throw new Error('Malformed UTF-8 data');\r\n }\r\n }\r\n};\r\n\r\nmodule.exports = enc;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/enc-utf8.js\n **/","let Base64 = {\r\n _keyStr: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\r\n encode: function (e) {\r\n let t = '';\r\n let n, r, i, s, o, u, a;\r\n let f = 0;\r\n\r\n e = Base64._utf8Encode(e);\r\n while (f < e.length) {\r\n n = e.charCodeAt(f++);\r\n r = e.charCodeAt(f++);\r\n i = e.charCodeAt(f++);\r\n s = n >> 2;\r\n o = (n & 3) << 4 | r >> 4;\r\n u = (r & 15) << 2 | i >> 6;\r\n a = i & 63;\r\n if (isNaN(r)) {\r\n u = a = 64;\r\n } else if (isNaN(i)) {\r\n a = 64;\r\n }\r\n t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a);\r\n }\r\n return t;\r\n },\r\n decode: function (e) {\r\n let t = '';\r\n let n, r, i;\r\n let s, o, u, a;\r\n let f = 0;\r\n\r\n e = e.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\r\n while (f < e.length) {\r\n s = this._keyStr.indexOf(e.charAt(f++));\r\n o = this._keyStr.indexOf(e.charAt(f++));\r\n u = this._keyStr.indexOf(e.charAt(f++));\r\n a = this._keyStr.indexOf(e.charAt(f++));\r\n n = s << 2 | o >> 4;\r\n r = (o & 15) << 4 | u >> 2;\r\n i = (u & 3) << 6 | a;\r\n t = t + String.fromCharCode(n);\r\n if (u !== 64) {\r\n t = t + String.fromCharCode(r);\r\n }\r\n if (a !== 64) {\r\n t = t + String.fromCharCode(i);\r\n }\r\n }\r\n t = Base64._utf8Decode(t);\r\n return t;\r\n },\r\n _utf8Encode: function (e) {\r\n e = e.replace(/\\r\\n/g, '\\n');\r\n let t = '';\r\n\r\n for (let n = 0; n < e.length; n++) {\r\n let r = e.charCodeAt(n);\r\n\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n } else if (r > 127 && r < 2048) {\r\n t += String.fromCharCode(r >> 6 | 192);\r\n t += String.fromCharCode(r & 63 | 128);\r\n } else {\r\n t += String.fromCharCode(r >> 12 | 224);\r\n t += String.fromCharCode(r >> 6 & 63 | 128);\r\n t += String.fromCharCode(r & 63 | 128);\r\n }\r\n }\r\n return t;\r\n },\r\n _utf8Decode: function (e) {\r\n let t = '';\r\n let n = 0;\r\n let r, c2, c3;\r\n\r\n r = c2 = 0;\r\n while (n < e.length) {\r\n r = e.charCodeAt(n);\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n n++;\r\n } else if (r > 191 && r < 224) {\r\n c2 = e.charCodeAt(n + 1);\r\n t += String.fromCharCode((r & 31) << 6 | c2 & 63);\r\n n += 2;\r\n } else {\r\n c2 = e.charCodeAt(n + 1);\r\n c3 = e.charCodeAt(n + 2);\r\n t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\r\n n += 3;\r\n }\r\n }\r\n return t;\r\n }\r\n};\r\n\r\nmodule.exports = Base64;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/Base64.js\n **/","// Copyright (c) 2013 Pieroxy \n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lz-string/libs/lz-string.js\n ** module id = 10\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/aes.js\n ** module id = 11\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/enc-base64.js\n ** module id = 12\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/md5.js\n ** module id = 13\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t var block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/evpkdf.js\n ** module id = 14\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t var block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t var block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t var modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t var modeCreator = mode.createDecryptor;\n\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t var wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t var salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/cipher-core.js\n ** module id = 15\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));\n\t this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));\n\t this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/tripledes.js\n ** module id = 16\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/rabbit.js\n ** module id = 17\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/rc4.js\n ** module id = 18\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///secure-ls.min.js","webpack:///webpack/bootstrap a86576cdc12587cd75c6","webpack:///./src/index.js","webpack:///./src/utils.js","webpack:///./src/constants.js","webpack:///./src/WordArray.js","webpack:///./~/crypto-js/pbkdf2.js","webpack:///./~/crypto-js/core.js","webpack:///./~/crypto-js/sha1.js","webpack:///./~/crypto-js/hmac.js","webpack:///./src/enc-utf8.js","webpack:///./src/Base64.js","webpack:///./~/lz-string/libs/lz-string.js","webpack:///./~/crypto-js/aes.js","webpack:///./~/crypto-js/enc-base64.js","webpack:///./~/crypto-js/md5.js","webpack:///./~/crypto-js/evpkdf.js","webpack:///./~/crypto-js/cipher-core.js","webpack:///./~/crypto-js/tripledes.js","webpack:///./~/crypto-js/rabbit.js","webpack:///./~/crypto-js/rc4.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","_classCallCheck","instance","Constructor","TypeError","Object","defineProperty","value","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","key","protoProps","staticProps","prototype","_utils","_utils2","_constants","_constants2","_encUtf","_encUtf2","_Base","_Base2","_lzString","_lzString2","_aes","_aes2","_tripledes","_tripledes2","_rabbit","_rabbit2","_rc","_rc2","SecureLS","config","_name","utils","constants","Base64","LZString","AES","DES","RABBIT","RC4","enc","isCompression","encodingType","EncrytionTypes","BASE64","encryptionSecret","encryptionNamespace","toLowerCase","ls","localStorage","init","metaData","getMetaData","WarningEnum","WarningTypes","_isBase64","_isBase64EncryptionType","_isAES","_isAESEncryptionType","_isDES","_isDESEncryptionType","_isRabbit","_isRabbitEncryptionType","_isRC4","_isRC4EncryptionType","_isCompression","_isDataCompressionEnabled","allKeys","keys","resetAllKeys","getObjectFromKey","s","generateSecretKey","setMetaData","isAllKeysData","decodedData","jsonData","deCompressedData","bytes","data","is","warn","KEY_NOT_PROVIDED","getDataFromLocalStorage","decompressFromUTF16","decode","getEncryptionSecret","decrypt","toString","_Utf8","JSON","parse","e","Error","getItem","extractKeyNames","dataToStore","String","metaKey","isKeyPresent","addToKeysList","processData","setDataToLocalStorage","setItem","getAllKeys","META_KEY_REMOVE","removeFromKeysList","removeItem","clear","undefined","encodedData","compressedData","stringify","encode","encrypt","compressToUTF16","getMetaKey","get","_WordArray","_WordArray2","_pbkdf","_pbkdf2","secretPhrase","reason","DEFAULT_TEXT","console","salt","CryptoJSWordArray","random","key128Bits","keySize","k","map","keyData","isKeyAlreadyPresent","push","index","splice","nBytes","rcache","words","r","mw","mz","mask","result","Math","_r","Set","sigBytes","undef","CryptoJS","C","C_lib","lib","Base","WordArray","C_algo","algo","SHA1","HMAC","PBKDF2","extend","cfg","hasher","iterations","compute","password","hmac","create","derivedKey","blockIndex","derivedKeyWords","blockIndexWords","block","update","finalize","reset","blockWords","blockWordsLength","intermediate","intermediateWords","j","concat","F","subtype","overrides","mixIn","hasOwnProperty","$super","apply","arguments","properties","propertyName","clone","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","ceil","slice","m_w","m_z","C_enc","hexChars","bite","join","hexStr","hexStrLength","parseInt","substr","Latin1","latin1Chars","fromCharCode","latin1Str","latin1StrLength","charCodeAt","Utf8","decodeURIComponent","escape","utf8Str","unescape","encodeURIComponent","BufferedBlockAlgorithm","_data","_nDataBytes","_append","_process","doFlush","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","max","_minBufferSize","nWordsReady","nBytesReady","min","offset","_doProcessBlock","processedWords","Hasher","_doReset","messageUpdate","hash","_doFinalize","_createHelper","message","_createHmacHelper","W","_hash","M","H","a","b","d","n","t","nBitsTotal","nBitsLeft","floor","HmacSHA1","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","_keyStr","o","u","f","_utf8Encode","isNaN","charAt","replace","indexOf","_utf8Decode","c2","c3","__WEBPACK_AMD_DEFINE_RESULT__","getBaseValue","alphabet","character","baseReverseDic","keyStrBase64","keyStrUriSafe","compressToBase64","input","res","_compress","decompressFromBase64","_decompress","compressed","compressToUint8Array","uncompressed","compress","buf","Uint8Array","TotalLen","current_value","decompressFromUint8Array","decompress","Array","forEach","compressToEncodedURIComponent","decompressFromEncodedURIComponent","bitsPerChar","getCharFromInt","ii","context_dictionary","context_dictionaryToCreate","context_c","context_wc","context_w","context_enlargeIn","context_dictSize","context_numBits","context_data","context_data_val","context_data_position","pow","resetValue","getNextValue","next","w","bits","resb","maxpower","power","dictionary","enlargeIn","dictSize","numBits","entry","val","position","BlockCipher","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","x","xi","sx","x2","x4","x8","RCON","_nRounds","_keyPriorReset","_key","keyWords","nRounds","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","encryptBlock","_doCryptBlock","decryptBlock","s0","s1","s2","s3","round","t0","t1","t2","t3","parseLoop","base64Str","base64StrLength","reverseMap","bits1","bits2","_map","base64Chars","byte1","byte2","byte3","triplet","paddingChar","_reverseMap","paddingIndex","FF","GG","HH","II","T","abs","sin","MD5","offset_i","M_offset_i","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","nBitsTotalH","nBitsTotalL","H_i","HmacMD5","EvpKDF","Cipher","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","process","dataUpdate","finalProcessedData","ivSize","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","ciphertext","C_mode","StreamCipher","finalProcessedBlocks","mode","BlockCipherMode","iv","Encryptor","Decryptor","_cipher","_iv","CBC","xorBlock","_prevBlock","processBlock","thisBlock","C_pad","pad","Pkcs7","nPaddingBytes","paddingWord","paddingWords","padding","unpad","CipherParams","modeCreator","_mode","cipherParams","formatter","C_format","format","OpenSSLFormatter","OpenSSL","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","plaintext","C_kdf","kdf","OpenSSLKdf","execute","derivedParams","exchangeLR","_lBlock","_rBlock","exchangeRL","PC1","PC2","BIT_SHIFTS","SBOX_P","0","268435456","536870912","805306368","1073741824","1342177280","1610612736","1879048192","2147483648","2415919104","2684354560","2952790016","3221225472","3489660928","3758096384","4026531840","134217728","402653184","671088640","939524096","1207959552","1476395008","1744830464","2013265920","2281701376","2550136832","2818572288","3087007744","3355443200","3623878656","3892314112","4160749568","1","268435457","536870913","805306369","1073741825","1342177281","1610612737","1879048193","2147483649","2415919105","2684354561","2952790017","3221225473","3489660929","3758096385","4026531841","134217729","402653185","671088641","939524097","1207959553","1476395009","1744830465","2013265921","2281701377","2550136833","2818572289","3087007745","3355443201","3623878657","3892314113","4160749569","16777216","33554432","50331648","67108864","83886080","100663296","117440512","150994944","167772160","184549376","201326592","218103808","234881024","251658240","8388608","25165824","41943040","58720256","75497472","92274688","109051904","125829120","142606336","159383552","176160768","192937984","209715200","226492416","243269632","260046848","285212672","301989888","318767104","335544320","352321536","369098752","385875968","419430400","436207616","452984832","469762048","486539264","503316480","520093696","276824064","293601280","310378496","327155712","343932928","360710144","377487360","394264576","411041792","427819008","444596224","461373440","478150656","494927872","511705088","528482304","1048576","2097152","3145728","4194304","5242880","6291456","7340032","9437184","10485760","11534336","12582912","13631488","14680064","15728640","524288","1572864","2621440","3670016","4718592","5767168","6815744","7864320","8912896","9961472","11010048","12058624","13107200","14155776","15204352","16252928","17825792","18874368","19922944","20971520","22020096","23068672","24117248","26214400","27262976","28311552","29360128","30408704","31457280","32505856","17301504","18350080","19398656","20447232","21495808","22544384","23592960","24641536","25690112","26738688","27787264","28835840","29884416","30932992","31981568","33030144","65536","131072","196608","262144","327680","393216","458752","589824","655360","720896","786432","851968","917504","983040","32768","98304","163840","229376","294912","360448","425984","491520","557056","622592","688128","753664","819200","884736","950272","1015808","1114112","1179648","1245184","1310720","1376256","1441792","1507328","1638400","1703936","1769472","1835008","1900544","1966080","2031616","1081344","1146880","1212416","1277952","1343488","1409024","1474560","1540096","1605632","1671168","1736704","1802240","1867776","1933312","1998848","2064384","4096","8192","12288","16384","20480","24576","28672","36864","40960","45056","49152","53248","57344","61440","2048","6144","10240","14336","18432","22528","26624","30720","34816","38912","43008","47104","51200","55296","59392","63488","69632","73728","77824","81920","86016","90112","94208","102400","106496","110592","114688","118784","122880","126976","67584","71680","75776","79872","83968","88064","92160","96256","100352","104448","108544","112640","116736","120832","124928","129024","256","512","768","1024","1280","1536","1792","2304","2560","2816","3072","3328","3584","3840","128","384","640","896","1152","1408","1664","1920","2176","2432","2688","2944","3200","3456","3712","3968","4352","4608","4864","5120","5376","5632","5888","6400","6656","6912","7168","7424","7680","7936","4224","4480","4736","4992","5248","5504","5760","6016","6272","6528","6784","7040","7296","7552","7808","8064","16","32","48","64","80","96","112","144","160","176","192","208","224","240","8","24","40","56","72","88","104","120","136","152","168","184","200","216","232","248","272","288","304","320","336","352","368","400","416","432","448","464","480","496","264","280","296","312","328","344","360","376","392","408","424","440","456","472","488","504","2","3","4","5","6","7","9","10","11","12","13","14","15","2147483650","2147483651","2147483652","2147483653","2147483654","2147483655","2147483656","2147483657","2147483658","2147483659","2147483660","2147483661","2147483662","2147483663","17","18","19","20","21","22","23","25","26","27","28","29","30","31","2147483664","2147483665","2147483666","2147483667","2147483668","2147483669","2147483670","2147483671","2147483672","2147483673","2147483674","2147483675","2147483676","2147483677","2147483678","2147483679","SBOX_MASK","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","lBlock","rBlock","TripleDES","_des1","_des2","_des3","nextState","X","_X","_C","C_","_b","gx","ga","gb","gh","gl","G","S","Rabbit","K","IV","IV_0","IV_1","i0","i2","i1","i3","generateKeystreamWord","_S","_i","_j","keystreamWord","keySigBytes","keyByteIndex","keyByte","RC4Drop","drop"],"mappings":"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","file":"secure-ls.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SecureLS\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SecureLS\"] = factory();\n\telse\n\t\troot[\"SecureLS\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SecureLS\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SecureLS\"] = factory();\n\telse\n\t\troot[\"SecureLS\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _utils = __webpack_require__(1);\n\t\n\tvar _utils2 = _interopRequireDefault(_utils);\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tvar _constants2 = _interopRequireDefault(_constants);\n\t\n\tvar _encUtf = __webpack_require__(8);\n\t\n\tvar _encUtf2 = _interopRequireDefault(_encUtf);\n\t\n\tvar _Base = __webpack_require__(9);\n\t\n\tvar _Base2 = _interopRequireDefault(_Base);\n\t\n\tvar _lzString = __webpack_require__(10);\n\t\n\tvar _lzString2 = _interopRequireDefault(_lzString);\n\t\n\tvar _aes = __webpack_require__(11);\n\t\n\tvar _aes2 = _interopRequireDefault(_aes);\n\t\n\tvar _tripledes = __webpack_require__(16);\n\t\n\tvar _tripledes2 = _interopRequireDefault(_tripledes);\n\t\n\tvar _rabbit = __webpack_require__(17);\n\t\n\tvar _rabbit2 = _interopRequireDefault(_rabbit);\n\t\n\tvar _rc = __webpack_require__(18);\n\t\n\tvar _rc2 = _interopRequireDefault(_rc);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar SecureLS = function () {\n\t function SecureLS(config) {\n\t _classCallCheck(this, SecureLS);\n\t\n\t config = config || {};\n\t this._name = 'secure-ls';\n\t this.utils = _utils2.default;\n\t this.constants = _constants2.default;\n\t this.Base64 = _Base2.default;\n\t this.LZString = _lzString2.default;\n\t this.AES = _aes2.default;\n\t this.DES = _tripledes2.default;\n\t this.RABBIT = _rabbit2.default;\n\t this.RC4 = _rc2.default;\n\t this.enc = _encUtf2.default;\n\t\n\t this.config = {\n\t isCompression: true,\n\t encodingType: _constants2.default.EncrytionTypes.BASE64,\n\t encryptionSecret: config.encryptionSecret,\n\t encryptionNamespace: config.encryptionNamespace\n\t };\n\t this.config.isCompression = typeof config.isCompression !== 'undefined' ? config.isCompression : true;\n\t this.config.encodingType = typeof config.encodingType !== 'undefined' || config.encodingType === '' ? config.encodingType.toLowerCase() : _constants2.default.EncrytionTypes.BASE64;\n\t\n\t this.ls = localStorage;\n\t this.init();\n\t }\n\t\n\t _createClass(SecureLS, [{\n\t key: 'init',\n\t value: function init() {\n\t var metaData = this.getMetaData();\n\t\n\t this.WarningEnum = this.constants.WarningEnum;\n\t this.WarningTypes = this.constants.WarningTypes;\n\t this.EncrytionTypes = this.constants.EncrytionTypes;\n\t\n\t this._isBase64 = this._isBase64EncryptionType();\n\t this._isAES = this._isAESEncryptionType();\n\t this._isDES = this._isDESEncryptionType();\n\t this._isRabbit = this._isRabbitEncryptionType();\n\t this._isRC4 = this._isRC4EncryptionType();\n\t this._isCompression = this._isDataCompressionEnabled();\n\t\n\t // fill the already present keys to the list of keys being used by secure-ls\n\t this.utils.allKeys = metaData.keys || this.resetAllKeys();\n\t }\n\t }, {\n\t key: '_isBase64EncryptionType',\n\t value: function _isBase64EncryptionType() {\n\t return _Base2.default && (typeof this.config.encodingType === 'undefined' || this.config.encodingType === this.constants.EncrytionTypes.BASE64);\n\t }\n\t }, {\n\t key: '_isAESEncryptionType',\n\t value: function _isAESEncryptionType() {\n\t return _aes2.default && this.config.encodingType === this.constants.EncrytionTypes.AES;\n\t }\n\t }, {\n\t key: '_isDESEncryptionType',\n\t value: function _isDESEncryptionType() {\n\t return _tripledes2.default && this.config.encodingType === this.constants.EncrytionTypes.DES;\n\t }\n\t }, {\n\t key: '_isRabbitEncryptionType',\n\t value: function _isRabbitEncryptionType() {\n\t return _rabbit2.default && this.config.encodingType === this.constants.EncrytionTypes.RABBIT;\n\t }\n\t }, {\n\t key: '_isRC4EncryptionType',\n\t value: function _isRC4EncryptionType() {\n\t return _rc2.default && this.config.encodingType === this.constants.EncrytionTypes.RC4;\n\t }\n\t }, {\n\t key: '_isDataCompressionEnabled',\n\t value: function _isDataCompressionEnabled() {\n\t return this.config.isCompression;\n\t }\n\t }, {\n\t key: 'getEncryptionSecret',\n\t value: function getEncryptionSecret(key) {\n\t var metaData = this.getMetaData();\n\t var obj = this.utils.getObjectFromKey(metaData.keys, key);\n\t\n\t if (!obj) {\n\t return;\n\t }\n\t\n\t if (this._isAES || this._isDES || this._isRabbit || this._isRC4) {\n\t if (typeof this.config.encryptionSecret === 'undefined') {\n\t this.utils.encryptionSecret = obj.s;\n\t\n\t if (!this.utils.encryptionSecret) {\n\t this.utils.encryptionSecret = this.utils.generateSecretKey();\n\t this.setMetaData();\n\t }\n\t } else {\n\t this.utils.encryptionSecret = this.config.encryptionSecret || obj.s || '';\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'get',\n\t value: function get(key, isAllKeysData) {\n\t var decodedData = '',\n\t jsonData = '',\n\t deCompressedData = void 0,\n\t bytes = void 0,\n\t data = void 0;\n\t\n\t if (!this.utils.is(key)) {\n\t this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\n\t return jsonData;\n\t }\n\t\n\t data = this.getDataFromLocalStorage(key);\n\t\n\t if (!data) {\n\t return jsonData;\n\t }\n\t\n\t deCompressedData = data; // saves else\n\t if (this._isCompression || isAllKeysData) {\n\t // meta data always compressed\n\t deCompressedData = _lzString2.default.decompressFromUTF16(data);\n\t }\n\t\n\t decodedData = deCompressedData; // saves else\n\t if (this._isBase64 || isAllKeysData) {\n\t // meta data always Base64\n\t decodedData = _Base2.default.decode(deCompressedData);\n\t } else {\n\t this.getEncryptionSecret(key);\n\t if (this._isAES) {\n\t bytes = _aes2.default.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\n\t } else if (this._isDES) {\n\t bytes = _tripledes2.default.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\n\t } else if (this._isRabbit) {\n\t bytes = _rabbit2.default.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\n\t } else if (this._isRC4) {\n\t bytes = _rc2.default.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\n\t }\n\t\n\t if (bytes) {\n\t decodedData = bytes.toString(_encUtf2.default._Utf8);\n\t }\n\t }\n\t\n\t try {\n\t jsonData = JSON.parse(decodedData);\n\t } catch (e) {\n\t throw new Error('Could not parse JSON');\n\t }\n\t\n\t return jsonData;\n\t }\n\t }, {\n\t key: 'getDataFromLocalStorage',\n\t value: function getDataFromLocalStorage(key) {\n\t return this.ls.getItem(key, true);\n\t }\n\t }, {\n\t key: 'getAllKeys',\n\t value: function getAllKeys() {\n\t var data = this.getMetaData();\n\t\n\t return this.utils.extractKeyNames(data) || [];\n\t }\n\t }, {\n\t key: 'set',\n\t value: function set(key, data) {\n\t var dataToStore = '';\n\t\n\t if (!this.utils.is(key)) {\n\t this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\n\t return;\n\t }\n\t\n\t this.getEncryptionSecret(key);\n\t\n\t // add key(s) to Array if not already added, only for keys other than meta key\n\t if (!(String(key) === String(this.utils.metaKey))) {\n\t if (!this.utils.isKeyPresent(key)) {\n\t this.utils.addToKeysList(key);\n\t this.setMetaData();\n\t }\n\t }\n\t\n\t dataToStore = this.processData(data);\n\t // Store the data to localStorage\n\t this.setDataToLocalStorage(key, dataToStore);\n\t }\n\t }, {\n\t key: 'setDataToLocalStorage',\n\t value: function setDataToLocalStorage(key, data) {\n\t this.ls.setItem(key, data);\n\t }\n\t }, {\n\t key: 'remove',\n\t value: function remove(key) {\n\t if (!this.utils.is(key)) {\n\t this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\n\t return;\n\t }\n\t\n\t if (key === this.utils.metaKey && this.getAllKeys().length) {\n\t this.utils.warn(this.WarningEnum.META_KEY_REMOVE);\n\t return;\n\t }\n\t\n\t if (this.utils.isKeyPresent(key)) {\n\t this.utils.removeFromKeysList(key);\n\t this.setMetaData();\n\t }\n\t this.ls.removeItem(key);\n\t }\n\t }, {\n\t key: 'removeAll',\n\t value: function removeAll() {\n\t var keys = void 0,\n\t i = void 0;\n\t\n\t keys = this.getAllKeys();\n\t for (i = 0; i < keys.length; i++) {\n\t this.ls.removeItem(keys[i]);\n\t }\n\t this.ls.removeItem(this.utils.metaKey);\n\t\n\t this.resetAllKeys();\n\t }\n\t }, {\n\t key: 'clear',\n\t value: function clear() {\n\t this.ls.clear();\n\t this.resetAllKeys();\n\t }\n\t }, {\n\t key: 'resetAllKeys',\n\t value: function resetAllKeys() {\n\t this.utils.allKeys = [];\n\t return [];\n\t }\n\t }, {\n\t key: 'processData',\n\t value: function processData(data, isAllKeysData) {\n\t if (data === null || data === undefined || data === '') {\n\t return '';\n\t }\n\t\n\t var jsonData = void 0,\n\t encodedData = void 0,\n\t compressedData = void 0;\n\t\n\t try {\n\t jsonData = JSON.stringify(data);\n\t } catch (e) {\n\t throw new Error('Could not stringify data.');\n\t }\n\t\n\t // Encode Based on encoding type\n\t // If not set, default to Base64 for securing data\n\t encodedData = jsonData;\n\t if (this._isBase64 || isAllKeysData) {\n\t encodedData = _Base2.default.encode(jsonData);\n\t } else {\n\t if (this._isAES) {\n\t encodedData = _aes2.default.encrypt(jsonData, this.utils.encryptionSecret);\n\t } else if (this._isDES) {\n\t encodedData = _tripledes2.default.encrypt(jsonData, this.utils.encryptionSecret);\n\t } else if (this._isRabbit) {\n\t encodedData = _rabbit2.default.encrypt(jsonData, this.utils.encryptionSecret);\n\t } else if (this._isRC4) {\n\t encodedData = _rc2.default.encrypt(jsonData, this.utils.encryptionSecret);\n\t }\n\t\n\t encodedData = encodedData && encodedData.toString();\n\t }\n\t\n\t // Compress data if set to true\n\t compressedData = encodedData;\n\t if (this._isCompression || isAllKeysData) {\n\t compressedData = _lzString2.default.compressToUTF16(encodedData);\n\t }\n\t\n\t return compressedData;\n\t }\n\t }, {\n\t key: 'setMetaData',\n\t value: function setMetaData() {\n\t var dataToStore = this.processData({\n\t keys: this.utils.allKeys\n\t }, true);\n\t\n\t // Store the data to localStorage\n\t this.setDataToLocalStorage(this.getMetaKey(), dataToStore);\n\t }\n\t }, {\n\t key: 'getMetaData',\n\t value: function getMetaData() {\n\t return this.get(this.getMetaKey(), true) || {};\n\t }\n\t }, {\n\t key: 'getMetaKey',\n\t value: function getMetaKey() {\n\t return this.utils.metaKey + (this.config.encryptionNamespace ? '__' + this.config.encryptionNamespace : '');\n\t }\n\t }]);\n\t\n\t return SecureLS;\n\t}();\n\t\n\texports.default = SecureLS;\n\t;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _constants = __webpack_require__(2);\n\t\n\tvar _constants2 = _interopRequireDefault(_constants);\n\t\n\tvar _WordArray = __webpack_require__(3);\n\t\n\tvar _WordArray2 = _interopRequireDefault(_WordArray);\n\t\n\tvar _pbkdf = __webpack_require__(4);\n\t\n\tvar _pbkdf2 = _interopRequireDefault(_pbkdf);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar utils = {\n\t metaKey: '_secure__ls__metadata',\n\t encryptionSecret: '',\n\t secretPhrase: 's3cr3t$#@135^&*246',\n\t allKeys: [],\n\t is: function is(key) {\n\t if (key) {\n\t return true;\n\t }\n\t return false;\n\t },\n\t warn: function warn(reason) {\n\t reason = reason ? reason : _constants2.default.WarningEnum.DEFAULT_TEXT;\n\t console.warn(_constants2.default.WarningTypes[reason]);\n\t },\n\t generateSecretKey: function generateSecretKey() {\n\t var salt = _WordArray2.default.random(128 / 8);\n\t var key128Bits = (0, _pbkdf2.default)(this.secretPhrase, salt, { keySize: 128 / 32 });\n\t\n\t return key128Bits && key128Bits.toString();\n\t },\n\t getObjectFromKey: function getObjectFromKey(data, key) {\n\t if (!data || !data.length) {\n\t return {};\n\t }\n\t\n\t var i = void 0,\n\t obj = {};\n\t\n\t for (i = 0; i < data.length; i++) {\n\t if (data[i].k === key) {\n\t obj = data[i];\n\t break;\n\t }\n\t }\n\t\n\t return obj;\n\t },\n\t extractKeyNames: function extractKeyNames(data) {\n\t if (!data || !data.keys || !data.keys.length) {\n\t return [];\n\t }\n\t\n\t return data.keys.map(function (keyData) {\n\t return keyData.k;\n\t });\n\t },\n\t getAllKeys: function getAllKeys() {\n\t return this.allKeys;\n\t },\n\t isKeyPresent: function isKeyPresent(key) {\n\t var isKeyAlreadyPresent = false;\n\t\n\t for (var i = 0; i < this.allKeys.length; i++) {\n\t if (String(this.allKeys[i].k) === String(key)) {\n\t isKeyAlreadyPresent = true; // found\n\t break;\n\t }\n\t }\n\t\n\t return isKeyAlreadyPresent;\n\t },\n\t addToKeysList: function addToKeysList(key) {\n\t this.allKeys.push({\n\t k: key,\n\t s: this.encryptionSecret\n\t });\n\t },\n\t removeFromKeysList: function removeFromKeysList(key) {\n\t var i = void 0,\n\t index = -1;\n\t\n\t for (i = 0; i < this.allKeys.length; i++) {\n\t if (this.allKeys[i].k === key) {\n\t index = i;\n\t break;\n\t }\n\t }\n\t if (index !== -1) {\n\t this.allKeys.splice(index, 1);\n\t }\n\t return index;\n\t }\n\t};\n\t\n\tmodule.exports = utils;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar WarningEnum = {\n\t KEY_NOT_PROVIDED: 'keyNotProvided',\n\t META_KEY_REMOVE: 'metaKeyRemove',\n\t DEFAULT_TEXT: 'defaultText'\n\t};\n\t\n\tvar WarningTypes = {};\n\t\n\tWarningTypes[WarningEnum.KEY_NOT_PROVIDED] = 'Secure LS: Key not provided. Aborting operation!';\n\tWarningTypes[WarningEnum.META_KEY_REMOVE] = 'Secure LS: Meta key can not be removed\\nunless all keys created by Secure LS are removed!';\n\tWarningTypes[WarningEnum.DEFAULT_TEXT] = 'Unexpected output';\n\t\n\tvar constants = {\n\t WarningEnum: WarningEnum,\n\t WarningTypes: WarningTypes,\n\t EncrytionTypes: {\n\t BASE64: 'base64',\n\t AES: 'aes',\n\t DES: 'des',\n\t RABBIT: 'rabbit',\n\t RC4: 'rc4'\n\t }\n\t};\n\t\n\tmodule.exports = constants;\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\t/*\r\n\t ES6 compatible port of CryptoJS - WordArray for PBKDF2 password key generation\r\n\t\r\n\t Source: https://github.com/brix/crypto-js\r\n\t LICENSE: MIT\r\n\t */\n\t\n\tvar CryptoJSWordArray = {};\n\t\n\tCryptoJSWordArray.random = function (nBytes) {\n\t var words = [];\n\t var r = function r(mw) {\n\t var mz = 0x3ade68b1;\n\t var mask = 0xffffffff;\n\t\n\t return function () {\n\t mz = 0x9069 * (mz & 0xFFFF) + (mz >> 0x10) & mask;\n\t mw = 0x4650 * (mw & 0xFFFF) + (mw >> 0x10) & mask;\n\t var result = (mz << 0x10) + mw & mask;\n\t\n\t result /= 0x100000000;\n\t result += 0.5;\n\t return result * (Math.random() > 0.5 ? 1 : -1);\n\t };\n\t };\n\t\n\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t var _r = r((rcache || Math.random()) * 0x100000000);\n\t\n\t rcache = _r() * 0x3ade67b7;\n\t words.push(_r() * 0x100000000 | 0);\n\t }\n\t\n\t return new this.Set(words, nBytes);\n\t};\n\t\n\tCryptoJSWordArray.Set = function (words, sigBytes) {\n\t words = this.words = words || [];\n\t\n\t if (sigBytes !== undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t};\n\t\n\tmodule.exports = CryptoJSWordArray;\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(6), __webpack_require__(7));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var Base = C_lib.Base;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var C_algo = C.algo;\n\t\t var SHA1 = C_algo.SHA1;\n\t\t var HMAC = C_algo.HMAC;\n\t\n\t\t /**\n\t\t * Password-Based Key Derivation Function 2 algorithm.\n\t\t */\n\t\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t\t */\n\t\t cfg: Base.extend({\n\t\t keySize: 128/32,\n\t\t hasher: SHA1,\n\t\t iterations: 1\n\t\t }),\n\t\n\t\t /**\n\t\t * Initializes a newly created key derivation function.\n\t\t *\n\t\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t\t */\n\t\t init: function (cfg) {\n\t\t this.cfg = this.cfg.extend(cfg);\n\t\t },\n\t\n\t\t /**\n\t\t * Computes the Password-Based Key Derivation Function 2.\n\t\t *\n\t\t * @param {WordArray|string} password The password.\n\t\t * @param {WordArray|string} salt A salt.\n\t\t *\n\t\t * @return {WordArray} The derived key.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var key = kdf.compute(password, salt);\n\t\t */\n\t\t compute: function (password, salt) {\n\t\t // Shortcut\n\t\t var cfg = this.cfg;\n\t\n\t\t // Init HMAC\n\t\t var hmac = HMAC.create(cfg.hasher, password);\n\t\n\t\t // Initial values\n\t\t var derivedKey = WordArray.create();\n\t\t var blockIndex = WordArray.create([0x00000001]);\n\t\n\t\t // Shortcuts\n\t\t var derivedKeyWords = derivedKey.words;\n\t\t var blockIndexWords = blockIndex.words;\n\t\t var keySize = cfg.keySize;\n\t\t var iterations = cfg.iterations;\n\t\n\t\t // Generate key\n\t\t while (derivedKeyWords.length < keySize) {\n\t\t var block = hmac.update(salt).finalize(blockIndex);\n\t\t hmac.reset();\n\t\n\t\t // Shortcuts\n\t\t var blockWords = block.words;\n\t\t var blockWordsLength = blockWords.length;\n\t\n\t\t // Iterations\n\t\t var intermediate = block;\n\t\t for (var i = 1; i < iterations; i++) {\n\t\t intermediate = hmac.finalize(intermediate);\n\t\t hmac.reset();\n\t\n\t\t // Shortcut\n\t\t var intermediateWords = intermediate.words;\n\t\n\t\t // XOR intermediate with block\n\t\t for (var j = 0; j < blockWordsLength; j++) {\n\t\t blockWords[j] ^= intermediateWords[j];\n\t\t }\n\t\t }\n\t\n\t\t derivedKey.concat(block);\n\t\t blockIndexWords[0]++;\n\t\t }\n\t\t derivedKey.sigBytes = keySize * 4;\n\t\n\t\t return derivedKey;\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Computes the Password-Based Key Derivation Function 2.\n\t\t *\n\t\t * @param {WordArray|string} password The password.\n\t\t * @param {WordArray|string} salt A salt.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t\t *\n\t\t * @return {WordArray} The derived key.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var key = CryptoJS.PBKDF2(password, salt);\n\t\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t\t */\n\t\t C.PBKDF2 = function (password, salt, cfg) {\n\t\t return PBKDF2.create(cfg).compute(password, salt);\n\t\t };\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.PBKDF2;\n\t\n\t}));\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory();\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\troot.CryptoJS = factory();\n\t\t}\n\t}(this, function () {\n\t\n\t\t/**\n\t\t * CryptoJS core components.\n\t\t */\n\t\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t\t /*\n\t\t * Local polyfil of Object.create\n\t\t */\n\t\t var create = Object.create || (function () {\n\t\t function F() {};\n\t\n\t\t return function (obj) {\n\t\t var subtype;\n\t\n\t\t F.prototype = obj;\n\t\n\t\t subtype = new F();\n\t\n\t\t F.prototype = null;\n\t\n\t\t return subtype;\n\t\t };\n\t\t }())\n\t\n\t\t /**\n\t\t * CryptoJS namespace.\n\t\t */\n\t\t var C = {};\n\t\n\t\t /**\n\t\t * Library namespace.\n\t\t */\n\t\t var C_lib = C.lib = {};\n\t\n\t\t /**\n\t\t * Base object for prototypal inheritance.\n\t\t */\n\t\t var Base = C_lib.Base = (function () {\n\t\n\t\n\t\t return {\n\t\t /**\n\t\t * Creates a new object that inherits from this object.\n\t\t *\n\t\t * @param {Object} overrides Properties to copy into the new object.\n\t\t *\n\t\t * @return {Object} The new object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var MyType = CryptoJS.lib.Base.extend({\n\t\t * field: 'value',\n\t\t *\n\t\t * method: function () {\n\t\t * }\n\t\t * });\n\t\t */\n\t\t extend: function (overrides) {\n\t\t // Spawn\n\t\t var subtype = create(this);\n\t\n\t\t // Augment\n\t\t if (overrides) {\n\t\t subtype.mixIn(overrides);\n\t\t }\n\t\n\t\t // Create default initializer\n\t\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t\t subtype.init = function () {\n\t\t subtype.$super.init.apply(this, arguments);\n\t\t };\n\t\t }\n\t\n\t\t // Initializer's prototype is the subtype object\n\t\t subtype.init.prototype = subtype;\n\t\n\t\t // Reference supertype\n\t\t subtype.$super = this;\n\t\n\t\t return subtype;\n\t\t },\n\t\n\t\t /**\n\t\t * Extends this object and runs the init method.\n\t\t * Arguments to create() will be passed to init().\n\t\t *\n\t\t * @return {Object} The new object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var instance = MyType.create();\n\t\t */\n\t\t create: function () {\n\t\t var instance = this.extend();\n\t\t instance.init.apply(instance, arguments);\n\t\n\t\t return instance;\n\t\t },\n\t\n\t\t /**\n\t\t * Initializes a newly created object.\n\t\t * Override this method to add some logic when your objects are created.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var MyType = CryptoJS.lib.Base.extend({\n\t\t * init: function () {\n\t\t * // ...\n\t\t * }\n\t\t * });\n\t\t */\n\t\t init: function () {\n\t\t },\n\t\n\t\t /**\n\t\t * Copies properties into this object.\n\t\t *\n\t\t * @param {Object} properties The properties to mix in.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * MyType.mixIn({\n\t\t * field: 'value'\n\t\t * });\n\t\t */\n\t\t mixIn: function (properties) {\n\t\t for (var propertyName in properties) {\n\t\t if (properties.hasOwnProperty(propertyName)) {\n\t\t this[propertyName] = properties[propertyName];\n\t\t }\n\t\t }\n\t\n\t\t // IE won't copy toString using the loop above\n\t\t if (properties.hasOwnProperty('toString')) {\n\t\t this.toString = properties.toString;\n\t\t }\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a copy of this object.\n\t\t *\n\t\t * @return {Object} The clone.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var clone = instance.clone();\n\t\t */\n\t\t clone: function () {\n\t\t return this.init.prototype.extend(this);\n\t\t }\n\t\t };\n\t\t }());\n\t\n\t\t /**\n\t\t * An array of 32-bit words.\n\t\t *\n\t\t * @property {Array} words The array of 32-bit words.\n\t\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t\t */\n\t\t var WordArray = C_lib.WordArray = Base.extend({\n\t\t /**\n\t\t * Initializes a newly created word array.\n\t\t *\n\t\t * @param {Array} words (Optional) An array of 32-bit words.\n\t\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t\t */\n\t\t init: function (words, sigBytes) {\n\t\t words = this.words = words || [];\n\t\n\t\t if (sigBytes != undefined) {\n\t\t this.sigBytes = sigBytes;\n\t\t } else {\n\t\t this.sigBytes = words.length * 4;\n\t\t }\n\t\t },\n\t\n\t\t /**\n\t\t * Converts this word array to a string.\n\t\t *\n\t\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t\t *\n\t\t * @return {string} The stringified word array.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var string = wordArray + '';\n\t\t * var string = wordArray.toString();\n\t\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t\t */\n\t\t toString: function (encoder) {\n\t\t return (encoder || Hex).stringify(this);\n\t\t },\n\t\n\t\t /**\n\t\t * Concatenates a word array to this word array.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array to append.\n\t\t *\n\t\t * @return {WordArray} This word array.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * wordArray1.concat(wordArray2);\n\t\t */\n\t\t concat: function (wordArray) {\n\t\t // Shortcuts\n\t\t var thisWords = this.words;\n\t\t var thatWords = wordArray.words;\n\t\t var thisSigBytes = this.sigBytes;\n\t\t var thatSigBytes = wordArray.sigBytes;\n\t\n\t\t // Clamp excess bits\n\t\t this.clamp();\n\t\n\t\t // Concat\n\t\t if (thisSigBytes % 4) {\n\t\t // Copy one byte at a time\n\t\t for (var i = 0; i < thatSigBytes; i++) {\n\t\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t\t }\n\t\t } else {\n\t\t // Copy one word at a time\n\t\t for (var i = 0; i < thatSigBytes; i += 4) {\n\t\t thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t\t }\n\t\t }\n\t\t this.sigBytes += thatSigBytes;\n\t\n\t\t // Chainable\n\t\t return this;\n\t\t },\n\t\n\t\t /**\n\t\t * Removes insignificant bits.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * wordArray.clamp();\n\t\t */\n\t\t clamp: function () {\n\t\t // Shortcuts\n\t\t var words = this.words;\n\t\t var sigBytes = this.sigBytes;\n\t\n\t\t // Clamp\n\t\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t\t words.length = Math.ceil(sigBytes / 4);\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a copy of this word array.\n\t\t *\n\t\t * @return {WordArray} The clone.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var clone = wordArray.clone();\n\t\t */\n\t\t clone: function () {\n\t\t var clone = Base.clone.call(this);\n\t\t clone.words = this.words.slice(0);\n\t\n\t\t return clone;\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a word array filled with random bytes.\n\t\t *\n\t\t * @param {number} nBytes The number of random bytes to generate.\n\t\t *\n\t\t * @return {WordArray} The random word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t\t */\n\t\t random: function (nBytes) {\n\t\t var words = [];\n\t\n\t\t var r = (function (m_w) {\n\t\t var m_w = m_w;\n\t\t var m_z = 0x3ade68b1;\n\t\t var mask = 0xffffffff;\n\t\n\t\t return function () {\n\t\t m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t\t m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t\t var result = ((m_z << 0x10) + m_w) & mask;\n\t\t result /= 0x100000000;\n\t\t result += 0.5;\n\t\t return result * (Math.random() > .5 ? 1 : -1);\n\t\t }\n\t\t });\n\t\n\t\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t\t var _r = r((rcache || Math.random()) * 0x100000000);\n\t\n\t\t rcache = _r() * 0x3ade67b7;\n\t\t words.push((_r() * 0x100000000) | 0);\n\t\t }\n\t\n\t\t return new WordArray.init(words, nBytes);\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Encoder namespace.\n\t\t */\n\t\t var C_enc = C.enc = {};\n\t\n\t\t /**\n\t\t * Hex encoding strategy.\n\t\t */\n\t\t var Hex = C_enc.Hex = {\n\t\t /**\n\t\t * Converts a word array to a hex string.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array.\n\t\t *\n\t\t * @return {string} The hex string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t\t */\n\t\t stringify: function (wordArray) {\n\t\t // Shortcuts\n\t\t var words = wordArray.words;\n\t\t var sigBytes = wordArray.sigBytes;\n\t\n\t\t // Convert\n\t\t var hexChars = [];\n\t\t for (var i = 0; i < sigBytes; i++) {\n\t\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t\t hexChars.push((bite >>> 4).toString(16));\n\t\t hexChars.push((bite & 0x0f).toString(16));\n\t\t }\n\t\n\t\t return hexChars.join('');\n\t\t },\n\t\n\t\t /**\n\t\t * Converts a hex string to a word array.\n\t\t *\n\t\t * @param {string} hexStr The hex string.\n\t\t *\n\t\t * @return {WordArray} The word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t\t */\n\t\t parse: function (hexStr) {\n\t\t // Shortcut\n\t\t var hexStrLength = hexStr.length;\n\t\n\t\t // Convert\n\t\t var words = [];\n\t\t for (var i = 0; i < hexStrLength; i += 2) {\n\t\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t\t }\n\t\n\t\t return new WordArray.init(words, hexStrLength / 2);\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * Latin1 encoding strategy.\n\t\t */\n\t\t var Latin1 = C_enc.Latin1 = {\n\t\t /**\n\t\t * Converts a word array to a Latin1 string.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array.\n\t\t *\n\t\t * @return {string} The Latin1 string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t\t */\n\t\t stringify: function (wordArray) {\n\t\t // Shortcuts\n\t\t var words = wordArray.words;\n\t\t var sigBytes = wordArray.sigBytes;\n\t\n\t\t // Convert\n\t\t var latin1Chars = [];\n\t\t for (var i = 0; i < sigBytes; i++) {\n\t\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t\t latin1Chars.push(String.fromCharCode(bite));\n\t\t }\n\t\n\t\t return latin1Chars.join('');\n\t\t },\n\t\n\t\t /**\n\t\t * Converts a Latin1 string to a word array.\n\t\t *\n\t\t * @param {string} latin1Str The Latin1 string.\n\t\t *\n\t\t * @return {WordArray} The word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t\t */\n\t\t parse: function (latin1Str) {\n\t\t // Shortcut\n\t\t var latin1StrLength = latin1Str.length;\n\t\n\t\t // Convert\n\t\t var words = [];\n\t\t for (var i = 0; i < latin1StrLength; i++) {\n\t\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t\t }\n\t\n\t\t return new WordArray.init(words, latin1StrLength);\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * UTF-8 encoding strategy.\n\t\t */\n\t\t var Utf8 = C_enc.Utf8 = {\n\t\t /**\n\t\t * Converts a word array to a UTF-8 string.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array.\n\t\t *\n\t\t * @return {string} The UTF-8 string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t\t */\n\t\t stringify: function (wordArray) {\n\t\t try {\n\t\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t\t } catch (e) {\n\t\t throw new Error('Malformed UTF-8 data');\n\t\t }\n\t\t },\n\t\n\t\t /**\n\t\t * Converts a UTF-8 string to a word array.\n\t\t *\n\t\t * @param {string} utf8Str The UTF-8 string.\n\t\t *\n\t\t * @return {WordArray} The word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t\t */\n\t\t parse: function (utf8Str) {\n\t\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * Abstract buffered block algorithm template.\n\t\t *\n\t\t * The property blockSize must be implemented in a concrete subtype.\n\t\t *\n\t\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t\t */\n\t\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t\t /**\n\t\t * Resets this block algorithm's data buffer to its initial state.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * bufferedBlockAlgorithm.reset();\n\t\t */\n\t\t reset: function () {\n\t\t // Initial values\n\t\t this._data = new WordArray.init();\n\t\t this._nDataBytes = 0;\n\t\t },\n\t\n\t\t /**\n\t\t * Adds new data to this block algorithm's buffer.\n\t\t *\n\t\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * bufferedBlockAlgorithm._append('data');\n\t\t * bufferedBlockAlgorithm._append(wordArray);\n\t\t */\n\t\t _append: function (data) {\n\t\t // Convert string to WordArray, else assume WordArray already\n\t\t if (typeof data == 'string') {\n\t\t data = Utf8.parse(data);\n\t\t }\n\t\n\t\t // Append\n\t\t this._data.concat(data);\n\t\t this._nDataBytes += data.sigBytes;\n\t\t },\n\t\n\t\t /**\n\t\t * Processes available data blocks.\n\t\t *\n\t\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t\t *\n\t\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t\t *\n\t\t * @return {WordArray} The processed data.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var processedData = bufferedBlockAlgorithm._process();\n\t\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t\t */\n\t\t _process: function (doFlush) {\n\t\t // Shortcuts\n\t\t var data = this._data;\n\t\t var dataWords = data.words;\n\t\t var dataSigBytes = data.sigBytes;\n\t\t var blockSize = this.blockSize;\n\t\t var blockSizeBytes = blockSize * 4;\n\t\n\t\t // Count blocks ready\n\t\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t\t if (doFlush) {\n\t\t // Round up to include partial blocks\n\t\t nBlocksReady = Math.ceil(nBlocksReady);\n\t\t } else {\n\t\t // Round down to include only full blocks,\n\t\t // less the number of blocks that must remain in the buffer\n\t\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t\t }\n\t\n\t\t // Count words ready\n\t\t var nWordsReady = nBlocksReady * blockSize;\n\t\n\t\t // Count bytes ready\n\t\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\t\n\t\t // Process blocks\n\t\t if (nWordsReady) {\n\t\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t\t // Perform concrete-algorithm logic\n\t\t this._doProcessBlock(dataWords, offset);\n\t\t }\n\t\n\t\t // Remove processed words\n\t\t var processedWords = dataWords.splice(0, nWordsReady);\n\t\t data.sigBytes -= nBytesReady;\n\t\t }\n\t\n\t\t // Return processed words\n\t\t return new WordArray.init(processedWords, nBytesReady);\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a copy of this object.\n\t\t *\n\t\t * @return {Object} The clone.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var clone = bufferedBlockAlgorithm.clone();\n\t\t */\n\t\t clone: function () {\n\t\t var clone = Base.clone.call(this);\n\t\t clone._data = this._data.clone();\n\t\n\t\t return clone;\n\t\t },\n\t\n\t\t _minBufferSize: 0\n\t\t });\n\t\n\t\t /**\n\t\t * Abstract hasher template.\n\t\t *\n\t\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t\t */\n\t\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t */\n\t\t cfg: Base.extend(),\n\t\n\t\t /**\n\t\t * Initializes a newly created hasher.\n\t\t *\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hasher = CryptoJS.algo.SHA256.create();\n\t\t */\n\t\t init: function (cfg) {\n\t\t // Apply config defaults\n\t\t this.cfg = this.cfg.extend(cfg);\n\t\n\t\t // Set initial values\n\t\t this.reset();\n\t\t },\n\t\n\t\t /**\n\t\t * Resets this hasher to its initial state.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * hasher.reset();\n\t\t */\n\t\t reset: function () {\n\t\t // Reset data buffer\n\t\t BufferedBlockAlgorithm.reset.call(this);\n\t\n\t\t // Perform concrete-hasher logic\n\t\t this._doReset();\n\t\t },\n\t\n\t\t /**\n\t\t * Updates this hasher with a message.\n\t\t *\n\t\t * @param {WordArray|string} messageUpdate The message to append.\n\t\t *\n\t\t * @return {Hasher} This hasher.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * hasher.update('message');\n\t\t * hasher.update(wordArray);\n\t\t */\n\t\t update: function (messageUpdate) {\n\t\t // Append\n\t\t this._append(messageUpdate);\n\t\n\t\t // Update the hash\n\t\t this._process();\n\t\n\t\t // Chainable\n\t\t return this;\n\t\t },\n\t\n\t\t /**\n\t\t * Finalizes the hash computation.\n\t\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t\t *\n\t\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t\t *\n\t\t * @return {WordArray} The hash.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hash = hasher.finalize();\n\t\t * var hash = hasher.finalize('message');\n\t\t * var hash = hasher.finalize(wordArray);\n\t\t */\n\t\t finalize: function (messageUpdate) {\n\t\t // Final message update\n\t\t if (messageUpdate) {\n\t\t this._append(messageUpdate);\n\t\t }\n\t\n\t\t // Perform concrete-hasher logic\n\t\t var hash = this._doFinalize();\n\t\n\t\t return hash;\n\t\t },\n\t\n\t\t blockSize: 512/32,\n\t\n\t\t /**\n\t\t * Creates a shortcut function to a hasher's object interface.\n\t\t *\n\t\t * @param {Hasher} hasher The hasher to create a helper for.\n\t\t *\n\t\t * @return {Function} The shortcut function.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t\t */\n\t\t _createHelper: function (hasher) {\n\t\t return function (message, cfg) {\n\t\t return new hasher.init(cfg).finalize(message);\n\t\t };\n\t\t },\n\t\n\t\t /**\n\t\t * Creates a shortcut function to the HMAC's object interface.\n\t\t *\n\t\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t\t *\n\t\t * @return {Function} The shortcut function.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t\t */\n\t\t _createHmacHelper: function (hasher) {\n\t\t return function (message, key) {\n\t\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t\t };\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Algorithm namespace.\n\t\t */\n\t\t var C_algo = C.algo = {};\n\t\n\t\t return C;\n\t\t}(Math));\n\t\n\t\n\t\treturn CryptoJS;\n\t\n\t}));\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var Hasher = C_lib.Hasher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Reusable object\n\t\t var W = [];\n\t\n\t\t /**\n\t\t * SHA-1 hash algorithm.\n\t\t */\n\t\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t\t _doReset: function () {\n\t\t this._hash = new WordArray.init([\n\t\t 0x67452301, 0xefcdab89,\n\t\t 0x98badcfe, 0x10325476,\n\t\t 0xc3d2e1f0\n\t\t ]);\n\t\t },\n\t\n\t\t _doProcessBlock: function (M, offset) {\n\t\t // Shortcut\n\t\t var H = this._hash.words;\n\t\n\t\t // Working variables\n\t\t var a = H[0];\n\t\t var b = H[1];\n\t\t var c = H[2];\n\t\t var d = H[3];\n\t\t var e = H[4];\n\t\n\t\t // Computation\n\t\t for (var i = 0; i < 80; i++) {\n\t\t if (i < 16) {\n\t\t W[i] = M[offset + i] | 0;\n\t\t } else {\n\t\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t\t W[i] = (n << 1) | (n >>> 31);\n\t\t }\n\t\n\t\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t\t if (i < 20) {\n\t\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t\t } else if (i < 40) {\n\t\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t\t } else if (i < 60) {\n\t\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t\t } else /* if (i < 80) */ {\n\t\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t\t }\n\t\n\t\t e = d;\n\t\t d = c;\n\t\t c = (b << 30) | (b >>> 2);\n\t\t b = a;\n\t\t a = t;\n\t\t }\n\t\n\t\t // Intermediate hash value\n\t\t H[0] = (H[0] + a) | 0;\n\t\t H[1] = (H[1] + b) | 0;\n\t\t H[2] = (H[2] + c) | 0;\n\t\t H[3] = (H[3] + d) | 0;\n\t\t H[4] = (H[4] + e) | 0;\n\t\t },\n\t\n\t\t _doFinalize: function () {\n\t\t // Shortcuts\n\t\t var data = this._data;\n\t\t var dataWords = data.words;\n\t\n\t\t var nBitsTotal = this._nDataBytes * 8;\n\t\t var nBitsLeft = data.sigBytes * 8;\n\t\n\t\t // Add padding\n\t\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t\t data.sigBytes = dataWords.length * 4;\n\t\n\t\t // Hash final blocks\n\t\t this._process();\n\t\n\t\t // Return final computed hash\n\t\t return this._hash;\n\t\t },\n\t\n\t\t clone: function () {\n\t\t var clone = Hasher.clone.call(this);\n\t\t clone._hash = this._hash.clone();\n\t\n\t\t return clone;\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Shortcut function to the hasher's object interface.\n\t\t *\n\t\t * @param {WordArray|string} message The message to hash.\n\t\t *\n\t\t * @return {WordArray} The hash.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hash = CryptoJS.SHA1('message');\n\t\t * var hash = CryptoJS.SHA1(wordArray);\n\t\t */\n\t\t C.SHA1 = Hasher._createHelper(SHA1);\n\t\n\t\t /**\n\t\t * Shortcut function to the HMAC's object interface.\n\t\t *\n\t\t * @param {WordArray|string} message The message to hash.\n\t\t * @param {WordArray|string} key The secret key.\n\t\t *\n\t\t * @return {WordArray} The HMAC.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t\t */\n\t\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.SHA1;\n\t\n\t}));\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var Base = C_lib.Base;\n\t\t var C_enc = C.enc;\n\t\t var Utf8 = C_enc.Utf8;\n\t\t var C_algo = C.algo;\n\t\n\t\t /**\n\t\t * HMAC algorithm.\n\t\t */\n\t\t var HMAC = C_algo.HMAC = Base.extend({\n\t\t /**\n\t\t * Initializes a newly created HMAC.\n\t\t *\n\t\t * @param {Hasher} hasher The hash algorithm to use.\n\t\t * @param {WordArray|string} key The secret key.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t\t */\n\t\t init: function (hasher, key) {\n\t\t // Init hasher\n\t\t hasher = this._hasher = new hasher.init();\n\t\n\t\t // Convert string to WordArray, else assume WordArray already\n\t\t if (typeof key == 'string') {\n\t\t key = Utf8.parse(key);\n\t\t }\n\t\n\t\t // Shortcuts\n\t\t var hasherBlockSize = hasher.blockSize;\n\t\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\t\n\t\t // Allow arbitrary length keys\n\t\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t\t key = hasher.finalize(key);\n\t\t }\n\t\n\t\t // Clamp excess bits\n\t\t key.clamp();\n\t\n\t\t // Clone key for inner and outer pads\n\t\t var oKey = this._oKey = key.clone();\n\t\t var iKey = this._iKey = key.clone();\n\t\n\t\t // Shortcuts\n\t\t var oKeyWords = oKey.words;\n\t\t var iKeyWords = iKey.words;\n\t\n\t\t // XOR keys with pad constants\n\t\t for (var i = 0; i < hasherBlockSize; i++) {\n\t\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t\t iKeyWords[i] ^= 0x36363636;\n\t\t }\n\t\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\t\n\t\t // Set initial values\n\t\t this.reset();\n\t\t },\n\t\n\t\t /**\n\t\t * Resets this HMAC to its initial state.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * hmacHasher.reset();\n\t\t */\n\t\t reset: function () {\n\t\t // Shortcut\n\t\t var hasher = this._hasher;\n\t\n\t\t // Reset\n\t\t hasher.reset();\n\t\t hasher.update(this._iKey);\n\t\t },\n\t\n\t\t /**\n\t\t * Updates this HMAC with a message.\n\t\t *\n\t\t * @param {WordArray|string} messageUpdate The message to append.\n\t\t *\n\t\t * @return {HMAC} This HMAC instance.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * hmacHasher.update('message');\n\t\t * hmacHasher.update(wordArray);\n\t\t */\n\t\t update: function (messageUpdate) {\n\t\t this._hasher.update(messageUpdate);\n\t\n\t\t // Chainable\n\t\t return this;\n\t\t },\n\t\n\t\t /**\n\t\t * Finalizes the HMAC computation.\n\t\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t\t *\n\t\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t\t *\n\t\t * @return {WordArray} The HMAC.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hmac = hmacHasher.finalize();\n\t\t * var hmac = hmacHasher.finalize('message');\n\t\t * var hmac = hmacHasher.finalize(wordArray);\n\t\t */\n\t\t finalize: function (messageUpdate) {\n\t\t // Shortcut\n\t\t var hasher = this._hasher;\n\t\n\t\t // Compute HMAC\n\t\t var innerHash = hasher.finalize(messageUpdate);\n\t\t hasher.reset();\n\t\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\t\n\t\t return hmac;\n\t\t }\n\t\t });\n\t\t}());\n\t\n\t\n\t}));\n\n/***/ },\n/* 8 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\t/*\r\n\t ES6 compatible port of CryptoJS - encoding\r\n\t\r\n\t Source: https://github.com/brix/crypto-js\r\n\t LICENSE: MIT\r\n\t */\n\tvar enc = {};\n\t\n\tenc.Latin1 = {\n\t stringify: function stringify(wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var latin1Chars = [],\n\t i = void 0,\n\t bite = void 0;\n\t\n\t // Convert\n\t for (i = 0; i < sigBytes; i++) {\n\t bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\t\n\t return latin1Chars.join('');\n\t }\n\t};\n\t\n\tenc._Utf8 = {\n\t stringify: function stringify(wordArray) {\n\t try {\n\t return decodeURIComponent(escape(enc.Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t }\n\t};\n\t\n\tmodule.exports = enc;\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar Base64 = {\n\t _keyStr: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t encode: function encode(e) {\n\t var t = '';\n\t var n = void 0,\n\t r = void 0,\n\t i = void 0,\n\t s = void 0,\n\t o = void 0,\n\t u = void 0,\n\t a = void 0;\n\t var f = 0;\n\t\n\t e = Base64._utf8Encode(e);\n\t while (f < e.length) {\n\t n = e.charCodeAt(f++);\n\t r = e.charCodeAt(f++);\n\t i = e.charCodeAt(f++);\n\t s = n >> 2;\n\t o = (n & 3) << 4 | r >> 4;\n\t u = (r & 15) << 2 | i >> 6;\n\t a = i & 63;\n\t if (isNaN(r)) {\n\t u = a = 64;\n\t } else if (isNaN(i)) {\n\t a = 64;\n\t }\n\t t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a);\n\t }\n\t return t;\n\t },\n\t decode: function decode(e) {\n\t var t = '';\n\t var n = void 0,\n\t r = void 0,\n\t i = void 0;\n\t var s = void 0,\n\t o = void 0,\n\t u = void 0,\n\t a = void 0;\n\t var f = 0;\n\t\n\t e = e.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n\t while (f < e.length) {\n\t s = this._keyStr.indexOf(e.charAt(f++));\n\t o = this._keyStr.indexOf(e.charAt(f++));\n\t u = this._keyStr.indexOf(e.charAt(f++));\n\t a = this._keyStr.indexOf(e.charAt(f++));\n\t n = s << 2 | o >> 4;\n\t r = (o & 15) << 4 | u >> 2;\n\t i = (u & 3) << 6 | a;\n\t t = t + String.fromCharCode(n);\n\t if (u !== 64) {\n\t t = t + String.fromCharCode(r);\n\t }\n\t if (a !== 64) {\n\t t = t + String.fromCharCode(i);\n\t }\n\t }\n\t t = Base64._utf8Decode(t);\n\t return t;\n\t },\n\t _utf8Encode: function _utf8Encode(e) {\n\t e = e.replace(/\\r\\n/g, '\\n');\n\t var t = '';\n\t\n\t for (var n = 0; n < e.length; n++) {\n\t var r = e.charCodeAt(n);\n\t\n\t if (r < 128) {\n\t t += String.fromCharCode(r);\n\t } else if (r > 127 && r < 2048) {\n\t t += String.fromCharCode(r >> 6 | 192);\n\t t += String.fromCharCode(r & 63 | 128);\n\t } else {\n\t t += String.fromCharCode(r >> 12 | 224);\n\t t += String.fromCharCode(r >> 6 & 63 | 128);\n\t t += String.fromCharCode(r & 63 | 128);\n\t }\n\t }\n\t return t;\n\t },\n\t _utf8Decode: function _utf8Decode(e) {\n\t var t = '';\n\t var n = 0;\n\t var r = void 0,\n\t c2 = void 0,\n\t c3 = void 0;\n\t\n\t r = c2 = 0;\n\t while (n < e.length) {\n\t r = e.charCodeAt(n);\n\t if (r < 128) {\n\t t += String.fromCharCode(r);\n\t n++;\n\t } else if (r > 191 && r < 224) {\n\t c2 = e.charCodeAt(n + 1);\n\t t += String.fromCharCode((r & 31) << 6 | c2 & 63);\n\t n += 2;\n\t } else {\n\t c2 = e.charCodeAt(n + 1);\n\t c3 = e.charCodeAt(n + 2);\n\t t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\n\t n += 3;\n\t }\n\t }\n\t return t;\n\t }\n\t};\n\t\n\tmodule.exports = Base64;\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;// Copyright (c) 2013 Pieroxy \n\t// This work is free. You can redistribute it and/or modify it\n\t// under the terms of the WTFPL, Version 2\n\t// For more information see LICENSE.txt or http://www.wtfpl.net/\n\t//\n\t// For more information, the home page:\n\t// http://pieroxy.net/blog/pages/lz-string/testing.html\n\t//\n\t// LZ-based compression algorithm, version 1.4.4\n\tvar LZString = (function() {\n\t\n\t// private property\n\tvar f = String.fromCharCode;\n\tvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\tvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\n\tvar baseReverseDic = {};\n\t\n\tfunction getBaseValue(alphabet, character) {\n\t if (!baseReverseDic[alphabet]) {\n\t baseReverseDic[alphabet] = {};\n\t for (var i=0 ; i>> 8;\n\t buf[i*2+1] = current_value % 256;\n\t }\n\t return buf;\n\t },\n\t\n\t //decompress from uint8array (UCS-2 big endian format)\n\t decompressFromUint8Array:function (compressed) {\n\t if (compressed===null || compressed===undefined){\n\t return LZString.decompress(compressed);\n\t } else {\n\t var buf=new Array(compressed.length/2); // 2 bytes per character\n\t for (var i=0, TotalLen=buf.length; i> 1;\n\t }\n\t } else {\n\t value = 1;\n\t for (i=0 ; i> 1;\n\t }\n\t }\n\t context_enlargeIn--;\n\t if (context_enlargeIn == 0) {\n\t context_enlargeIn = Math.pow(2, context_numBits);\n\t context_numBits++;\n\t }\n\t delete context_dictionaryToCreate[context_w];\n\t } else {\n\t value = context_dictionary[context_w];\n\t for (i=0 ; i> 1;\n\t }\n\t\n\t\n\t }\n\t context_enlargeIn--;\n\t if (context_enlargeIn == 0) {\n\t context_enlargeIn = Math.pow(2, context_numBits);\n\t context_numBits++;\n\t }\n\t // Add wc to the dictionary.\n\t context_dictionary[context_wc] = context_dictSize++;\n\t context_w = String(context_c);\n\t }\n\t }\n\t\n\t // Output the code for w.\n\t if (context_w !== \"\") {\n\t if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n\t if (context_w.charCodeAt(0)<256) {\n\t for (i=0 ; i> 1;\n\t }\n\t } else {\n\t value = 1;\n\t for (i=0 ; i> 1;\n\t }\n\t }\n\t context_enlargeIn--;\n\t if (context_enlargeIn == 0) {\n\t context_enlargeIn = Math.pow(2, context_numBits);\n\t context_numBits++;\n\t }\n\t delete context_dictionaryToCreate[context_w];\n\t } else {\n\t value = context_dictionary[context_w];\n\t for (i=0 ; i> 1;\n\t }\n\t\n\t\n\t }\n\t context_enlargeIn--;\n\t if (context_enlargeIn == 0) {\n\t context_enlargeIn = Math.pow(2, context_numBits);\n\t context_numBits++;\n\t }\n\t }\n\t\n\t // Mark the end of the stream\n\t value = 2;\n\t for (i=0 ; i> 1;\n\t }\n\t\n\t // Flush the last char\n\t while (true) {\n\t context_data_val = (context_data_val << 1);\n\t if (context_data_position == bitsPerChar-1) {\n\t context_data.push(getCharFromInt(context_data_val));\n\t break;\n\t }\n\t else context_data_position++;\n\t }\n\t return context_data.join('');\n\t },\n\t\n\t decompress: function (compressed) {\n\t if (compressed == null) return \"\";\n\t if (compressed == \"\") return null;\n\t return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n\t },\n\t\n\t _decompress: function (length, resetValue, getNextValue) {\n\t var dictionary = [],\n\t next,\n\t enlargeIn = 4,\n\t dictSize = 4,\n\t numBits = 3,\n\t entry = \"\",\n\t result = [],\n\t i,\n\t w,\n\t bits, resb, maxpower, power,\n\t c,\n\t data = {val:getNextValue(0), position:resetValue, index:1};\n\t\n\t for (i = 0; i < 3; i += 1) {\n\t dictionary[i] = i;\n\t }\n\t\n\t bits = 0;\n\t maxpower = Math.pow(2,2);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t\n\t switch (next = bits) {\n\t case 0:\n\t bits = 0;\n\t maxpower = Math.pow(2,8);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t c = f(bits);\n\t break;\n\t case 1:\n\t bits = 0;\n\t maxpower = Math.pow(2,16);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t c = f(bits);\n\t break;\n\t case 2:\n\t return \"\";\n\t }\n\t dictionary[3] = c;\n\t w = c;\n\t result.push(c);\n\t while (true) {\n\t if (data.index > length) {\n\t return \"\";\n\t }\n\t\n\t bits = 0;\n\t maxpower = Math.pow(2,numBits);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t\n\t switch (c = bits) {\n\t case 0:\n\t bits = 0;\n\t maxpower = Math.pow(2,8);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t\n\t dictionary[dictSize++] = f(bits);\n\t c = dictSize-1;\n\t enlargeIn--;\n\t break;\n\t case 1:\n\t bits = 0;\n\t maxpower = Math.pow(2,16);\n\t power=1;\n\t while (power!=maxpower) {\n\t resb = data.val & data.position;\n\t data.position >>= 1;\n\t if (data.position == 0) {\n\t data.position = resetValue;\n\t data.val = getNextValue(data.index++);\n\t }\n\t bits |= (resb>0 ? 1 : 0) * power;\n\t power <<= 1;\n\t }\n\t dictionary[dictSize++] = f(bits);\n\t c = dictSize-1;\n\t enlargeIn--;\n\t break;\n\t case 2:\n\t return result.join('');\n\t }\n\t\n\t if (enlargeIn == 0) {\n\t enlargeIn = Math.pow(2, numBits);\n\t numBits++;\n\t }\n\t\n\t if (dictionary[c]) {\n\t entry = dictionary[c];\n\t } else {\n\t if (c === dictSize) {\n\t entry = w + w.charAt(0);\n\t } else {\n\t return null;\n\t }\n\t }\n\t result.push(entry);\n\t\n\t // Add w+entry[0] to the dictionary.\n\t dictionary[dictSize++] = w + entry.charAt(0);\n\t enlargeIn--;\n\t\n\t w = entry;\n\t\n\t if (enlargeIn == 0) {\n\t enlargeIn = Math.pow(2, numBits);\n\t numBits++;\n\t }\n\t\n\t }\n\t }\n\t};\n\t return LZString;\n\t})();\n\t\n\tif (true) {\n\t !(__WEBPACK_AMD_DEFINE_RESULT__ = function () { return LZString; }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else if( typeof module !== 'undefined' && module != null ) {\n\t module.exports = LZString\n\t}\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(12), __webpack_require__(13), __webpack_require__(14), __webpack_require__(15));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var BlockCipher = C_lib.BlockCipher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Lookup tables\n\t\t var SBOX = [];\n\t\t var INV_SBOX = [];\n\t\t var SUB_MIX_0 = [];\n\t\t var SUB_MIX_1 = [];\n\t\t var SUB_MIX_2 = [];\n\t\t var SUB_MIX_3 = [];\n\t\t var INV_SUB_MIX_0 = [];\n\t\t var INV_SUB_MIX_1 = [];\n\t\t var INV_SUB_MIX_2 = [];\n\t\t var INV_SUB_MIX_3 = [];\n\t\n\t\t // Compute lookup tables\n\t\t (function () {\n\t\t // Compute double table\n\t\t var d = [];\n\t\t for (var i = 0; i < 256; i++) {\n\t\t if (i < 128) {\n\t\t d[i] = i << 1;\n\t\t } else {\n\t\t d[i] = (i << 1) ^ 0x11b;\n\t\t }\n\t\t }\n\t\n\t\t // Walk GF(2^8)\n\t\t var x = 0;\n\t\t var xi = 0;\n\t\t for (var i = 0; i < 256; i++) {\n\t\t // Compute sbox\n\t\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t\t SBOX[x] = sx;\n\t\t INV_SBOX[sx] = x;\n\t\n\t\t // Compute multiplication\n\t\t var x2 = d[x];\n\t\t var x4 = d[x2];\n\t\t var x8 = d[x4];\n\t\n\t\t // Compute sub bytes, mix columns tables\n\t\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t\t SUB_MIX_3[x] = t;\n\t\n\t\t // Compute inv sub bytes, inv mix columns tables\n\t\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t\t INV_SUB_MIX_3[sx] = t;\n\t\n\t\t // Compute next counter\n\t\t if (!x) {\n\t\t x = xi = 1;\n\t\t } else {\n\t\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t\t xi ^= d[d[xi]];\n\t\t }\n\t\t }\n\t\t }());\n\t\n\t\t // Precomputed Rcon lookup\n\t\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\t\n\t\t /**\n\t\t * AES block cipher algorithm.\n\t\t */\n\t\t var AES = C_algo.AES = BlockCipher.extend({\n\t\t _doReset: function () {\n\t\t // Skip reset of nRounds has been set before and key did not change\n\t\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t\t return;\n\t\t }\n\t\n\t\t // Shortcuts\n\t\t var key = this._keyPriorReset = this._key;\n\t\t var keyWords = key.words;\n\t\t var keySize = key.sigBytes / 4;\n\t\n\t\t // Compute number of rounds\n\t\t var nRounds = this._nRounds = keySize + 6;\n\t\n\t\t // Compute number of key schedule rows\n\t\t var ksRows = (nRounds + 1) * 4;\n\t\n\t\t // Compute key schedule\n\t\t var keySchedule = this._keySchedule = [];\n\t\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t\t if (ksRow < keySize) {\n\t\t keySchedule[ksRow] = keyWords[ksRow];\n\t\t } else {\n\t\t var t = keySchedule[ksRow - 1];\n\t\n\t\t if (!(ksRow % keySize)) {\n\t\t // Rot word\n\t\t t = (t << 8) | (t >>> 24);\n\t\n\t\t // Sub word\n\t\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t\n\t\t // Mix Rcon\n\t\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t\t // Sub word\n\t\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t\t }\n\t\n\t\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t\t }\n\t\t }\n\t\n\t\t // Compute inv key schedule\n\t\t var invKeySchedule = this._invKeySchedule = [];\n\t\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t\t var ksRow = ksRows - invKsRow;\n\t\n\t\t if (invKsRow % 4) {\n\t\t var t = keySchedule[ksRow];\n\t\t } else {\n\t\t var t = keySchedule[ksRow - 4];\n\t\t }\n\t\n\t\t if (invKsRow < 4 || ksRow <= 4) {\n\t\t invKeySchedule[invKsRow] = t;\n\t\t } else {\n\t\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t\t }\n\t\t }\n\t\t },\n\t\n\t\t encryptBlock: function (M, offset) {\n\t\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t\t },\n\t\n\t\t decryptBlock: function (M, offset) {\n\t\t // Swap 2nd and 4th rows\n\t\t var t = M[offset + 1];\n\t\t M[offset + 1] = M[offset + 3];\n\t\t M[offset + 3] = t;\n\t\n\t\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\t\n\t\t // Inv swap 2nd and 4th rows\n\t\t var t = M[offset + 1];\n\t\t M[offset + 1] = M[offset + 3];\n\t\t M[offset + 3] = t;\n\t\t },\n\t\n\t\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t\t // Shortcut\n\t\t var nRounds = this._nRounds;\n\t\n\t\t // Get input, add round key\n\t\t var s0 = M[offset] ^ keySchedule[0];\n\t\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t\t var s3 = M[offset + 3] ^ keySchedule[3];\n\t\n\t\t // Key schedule row counter\n\t\t var ksRow = 4;\n\t\n\t\t // Rounds\n\t\t for (var round = 1; round < nRounds; round++) {\n\t\t // Shift rows, sub bytes, mix columns, add round key\n\t\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\t\n\t\t // Update state\n\t\t s0 = t0;\n\t\t s1 = t1;\n\t\t s2 = t2;\n\t\t s3 = t3;\n\t\t }\n\t\n\t\t // Shift rows, sub bytes, add round key\n\t\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\t\n\t\t // Set output\n\t\t M[offset] = t0;\n\t\t M[offset + 1] = t1;\n\t\t M[offset + 2] = t2;\n\t\t M[offset + 3] = t3;\n\t\t },\n\t\n\t\t keySize: 256/32\n\t\t });\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.AES = BlockCipher._createHelper(AES);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.AES;\n\t\n\t}));\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var C_enc = C.enc;\n\t\n\t\t /**\n\t\t * Base64 encoding strategy.\n\t\t */\n\t\t var Base64 = C_enc.Base64 = {\n\t\t /**\n\t\t * Converts a word array to a Base64 string.\n\t\t *\n\t\t * @param {WordArray} wordArray The word array.\n\t\t *\n\t\t * @return {string} The Base64 string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t\t */\n\t\t stringify: function (wordArray) {\n\t\t // Shortcuts\n\t\t var words = wordArray.words;\n\t\t var sigBytes = wordArray.sigBytes;\n\t\t var map = this._map;\n\t\n\t\t // Clamp excess bits\n\t\t wordArray.clamp();\n\t\n\t\t // Convert\n\t\t var base64Chars = [];\n\t\t for (var i = 0; i < sigBytes; i += 3) {\n\t\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\t\n\t\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\t\n\t\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t\t }\n\t\t }\n\t\n\t\t // Add padding\n\t\t var paddingChar = map.charAt(64);\n\t\t if (paddingChar) {\n\t\t while (base64Chars.length % 4) {\n\t\t base64Chars.push(paddingChar);\n\t\t }\n\t\t }\n\t\n\t\t return base64Chars.join('');\n\t\t },\n\t\n\t\t /**\n\t\t * Converts a Base64 string to a word array.\n\t\t *\n\t\t * @param {string} base64Str The Base64 string.\n\t\t *\n\t\t * @return {WordArray} The word array.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t\t */\n\t\t parse: function (base64Str) {\n\t\t // Shortcuts\n\t\t var base64StrLength = base64Str.length;\n\t\t var map = this._map;\n\t\t var reverseMap = this._reverseMap;\n\t\n\t\t if (!reverseMap) {\n\t\t reverseMap = this._reverseMap = [];\n\t\t for (var j = 0; j < map.length; j++) {\n\t\t reverseMap[map.charCodeAt(j)] = j;\n\t\t }\n\t\t }\n\t\n\t\t // Ignore padding\n\t\t var paddingChar = map.charAt(64);\n\t\t if (paddingChar) {\n\t\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t\t if (paddingIndex !== -1) {\n\t\t base64StrLength = paddingIndex;\n\t\t }\n\t\t }\n\t\n\t\t // Convert\n\t\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\t\n\t\t },\n\t\n\t\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t\t };\n\t\n\t\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t\t var words = [];\n\t\t var nBytes = 0;\n\t\t for (var i = 0; i < base64StrLength; i++) {\n\t\t if (i % 4) {\n\t\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t\t words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n\t\t nBytes++;\n\t\t }\n\t\t }\n\t\t return WordArray.create(words, nBytes);\n\t\t }\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.enc.Base64;\n\t\n\t}));\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function (Math) {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var Hasher = C_lib.Hasher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Constants table\n\t\t var T = [];\n\t\n\t\t // Compute constants\n\t\t (function () {\n\t\t for (var i = 0; i < 64; i++) {\n\t\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t\t }\n\t\t }());\n\t\n\t\t /**\n\t\t * MD5 hash algorithm.\n\t\t */\n\t\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t\t _doReset: function () {\n\t\t this._hash = new WordArray.init([\n\t\t 0x67452301, 0xefcdab89,\n\t\t 0x98badcfe, 0x10325476\n\t\t ]);\n\t\t },\n\t\n\t\t _doProcessBlock: function (M, offset) {\n\t\t // Swap endian\n\t\t for (var i = 0; i < 16; i++) {\n\t\t // Shortcuts\n\t\t var offset_i = offset + i;\n\t\t var M_offset_i = M[offset_i];\n\t\n\t\t M[offset_i] = (\n\t\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t\t );\n\t\t }\n\t\n\t\t // Shortcuts\n\t\t var H = this._hash.words;\n\t\n\t\t var M_offset_0 = M[offset + 0];\n\t\t var M_offset_1 = M[offset + 1];\n\t\t var M_offset_2 = M[offset + 2];\n\t\t var M_offset_3 = M[offset + 3];\n\t\t var M_offset_4 = M[offset + 4];\n\t\t var M_offset_5 = M[offset + 5];\n\t\t var M_offset_6 = M[offset + 6];\n\t\t var M_offset_7 = M[offset + 7];\n\t\t var M_offset_8 = M[offset + 8];\n\t\t var M_offset_9 = M[offset + 9];\n\t\t var M_offset_10 = M[offset + 10];\n\t\t var M_offset_11 = M[offset + 11];\n\t\t var M_offset_12 = M[offset + 12];\n\t\t var M_offset_13 = M[offset + 13];\n\t\t var M_offset_14 = M[offset + 14];\n\t\t var M_offset_15 = M[offset + 15];\n\t\n\t\t // Working varialbes\n\t\t var a = H[0];\n\t\t var b = H[1];\n\t\t var c = H[2];\n\t\t var d = H[3];\n\t\n\t\t // Computation\n\t\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\t\n\t\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\t\n\t\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\t\n\t\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\t\n\t\t // Intermediate hash value\n\t\t H[0] = (H[0] + a) | 0;\n\t\t H[1] = (H[1] + b) | 0;\n\t\t H[2] = (H[2] + c) | 0;\n\t\t H[3] = (H[3] + d) | 0;\n\t\t },\n\t\n\t\t _doFinalize: function () {\n\t\t // Shortcuts\n\t\t var data = this._data;\n\t\t var dataWords = data.words;\n\t\n\t\t var nBitsTotal = this._nDataBytes * 8;\n\t\t var nBitsLeft = data.sigBytes * 8;\n\t\n\t\t // Add padding\n\t\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t\n\t\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t\t var nBitsTotalL = nBitsTotal;\n\t\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t\t );\n\t\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t\t );\n\t\n\t\t data.sigBytes = (dataWords.length + 1) * 4;\n\t\n\t\t // Hash final blocks\n\t\t this._process();\n\t\n\t\t // Shortcuts\n\t\t var hash = this._hash;\n\t\t var H = hash.words;\n\t\n\t\t // Swap endian\n\t\t for (var i = 0; i < 4; i++) {\n\t\t // Shortcut\n\t\t var H_i = H[i];\n\t\n\t\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t\t }\n\t\n\t\t // Return final computed hash\n\t\t return hash;\n\t\t },\n\t\n\t\t clone: function () {\n\t\t var clone = Hasher.clone.call(this);\n\t\t clone._hash = this._hash.clone();\n\t\n\t\t return clone;\n\t\t }\n\t\t });\n\t\n\t\t function FF(a, b, c, d, x, s, t) {\n\t\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t\t return ((n << s) | (n >>> (32 - s))) + b;\n\t\t }\n\t\n\t\t function GG(a, b, c, d, x, s, t) {\n\t\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t\t return ((n << s) | (n >>> (32 - s))) + b;\n\t\t }\n\t\n\t\t function HH(a, b, c, d, x, s, t) {\n\t\t var n = a + (b ^ c ^ d) + x + t;\n\t\t return ((n << s) | (n >>> (32 - s))) + b;\n\t\t }\n\t\n\t\t function II(a, b, c, d, x, s, t) {\n\t\t var n = a + (c ^ (b | ~d)) + x + t;\n\t\t return ((n << s) | (n >>> (32 - s))) + b;\n\t\t }\n\t\n\t\t /**\n\t\t * Shortcut function to the hasher's object interface.\n\t\t *\n\t\t * @param {WordArray|string} message The message to hash.\n\t\t *\n\t\t * @return {WordArray} The hash.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hash = CryptoJS.MD5('message');\n\t\t * var hash = CryptoJS.MD5(wordArray);\n\t\t */\n\t\t C.MD5 = Hasher._createHelper(MD5);\n\t\n\t\t /**\n\t\t * Shortcut function to the HMAC's object interface.\n\t\t *\n\t\t * @param {WordArray|string} message The message to hash.\n\t\t * @param {WordArray|string} key The secret key.\n\t\t *\n\t\t * @return {WordArray} The HMAC.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t\t */\n\t\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t\t}(Math));\n\t\n\t\n\t\treturn CryptoJS.MD5;\n\t\n\t}));\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(6), __webpack_require__(7));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var Base = C_lib.Base;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var C_algo = C.algo;\n\t\t var MD5 = C_algo.MD5;\n\t\n\t\t /**\n\t\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t\t */\n\t\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t\t */\n\t\t cfg: Base.extend({\n\t\t keySize: 128/32,\n\t\t hasher: MD5,\n\t\t iterations: 1\n\t\t }),\n\t\n\t\t /**\n\t\t * Initializes a newly created key derivation function.\n\t\t *\n\t\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t\t */\n\t\t init: function (cfg) {\n\t\t this.cfg = this.cfg.extend(cfg);\n\t\t },\n\t\n\t\t /**\n\t\t * Derives a key from a password.\n\t\t *\n\t\t * @param {WordArray|string} password The password.\n\t\t * @param {WordArray|string} salt A salt.\n\t\t *\n\t\t * @return {WordArray} The derived key.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var key = kdf.compute(password, salt);\n\t\t */\n\t\t compute: function (password, salt) {\n\t\t // Shortcut\n\t\t var cfg = this.cfg;\n\t\n\t\t // Init hasher\n\t\t var hasher = cfg.hasher.create();\n\t\n\t\t // Initial values\n\t\t var derivedKey = WordArray.create();\n\t\n\t\t // Shortcuts\n\t\t var derivedKeyWords = derivedKey.words;\n\t\t var keySize = cfg.keySize;\n\t\t var iterations = cfg.iterations;\n\t\n\t\t // Generate key\n\t\t while (derivedKeyWords.length < keySize) {\n\t\t if (block) {\n\t\t hasher.update(block);\n\t\t }\n\t\t var block = hasher.update(password).finalize(salt);\n\t\t hasher.reset();\n\t\n\t\t // Iterations\n\t\t for (var i = 1; i < iterations; i++) {\n\t\t block = hasher.finalize(block);\n\t\t hasher.reset();\n\t\t }\n\t\n\t\t derivedKey.concat(block);\n\t\t }\n\t\t derivedKey.sigBytes = keySize * 4;\n\t\n\t\t return derivedKey;\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Derives a key from a password.\n\t\t *\n\t\t * @param {WordArray|string} password The password.\n\t\t * @param {WordArray|string} salt A salt.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t\t *\n\t\t * @return {WordArray} The derived key.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var key = CryptoJS.EvpKDF(password, salt);\n\t\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t\t */\n\t\t C.EvpKDF = function (password, salt, cfg) {\n\t\t return EvpKDF.create(cfg).compute(password, salt);\n\t\t };\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.EvpKDF;\n\t\n\t}));\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t/**\n\t\t * Cipher core components.\n\t\t */\n\t\tCryptoJS.lib.Cipher || (function (undefined) {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var Base = C_lib.Base;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t\t var C_enc = C.enc;\n\t\t var Utf8 = C_enc.Utf8;\n\t\t var Base64 = C_enc.Base64;\n\t\t var C_algo = C.algo;\n\t\t var EvpKDF = C_algo.EvpKDF;\n\t\n\t\t /**\n\t\t * Abstract base cipher template.\n\t\t *\n\t\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t\t */\n\t\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {WordArray} iv The IV to use for this operation.\n\t\t */\n\t\t cfg: Base.extend(),\n\t\n\t\t /**\n\t\t * Creates this cipher in encryption mode.\n\t\t *\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {Cipher} A cipher instance.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t\t */\n\t\t createEncryptor: function (key, cfg) {\n\t\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t\t },\n\t\n\t\t /**\n\t\t * Creates this cipher in decryption mode.\n\t\t *\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {Cipher} A cipher instance.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t\t */\n\t\t createDecryptor: function (key, cfg) {\n\t\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t\t },\n\t\n\t\t /**\n\t\t * Initializes a newly created cipher.\n\t\t *\n\t\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t\t */\n\t\t init: function (xformMode, key, cfg) {\n\t\t // Apply config defaults\n\t\t this.cfg = this.cfg.extend(cfg);\n\t\n\t\t // Store transform mode and key\n\t\t this._xformMode = xformMode;\n\t\t this._key = key;\n\t\n\t\t // Set initial values\n\t\t this.reset();\n\t\t },\n\t\n\t\t /**\n\t\t * Resets this cipher to its initial state.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * cipher.reset();\n\t\t */\n\t\t reset: function () {\n\t\t // Reset data buffer\n\t\t BufferedBlockAlgorithm.reset.call(this);\n\t\n\t\t // Perform concrete-cipher logic\n\t\t this._doReset();\n\t\t },\n\t\n\t\t /**\n\t\t * Adds data to be encrypted or decrypted.\n\t\t *\n\t\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t\t *\n\t\t * @return {WordArray} The data after processing.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var encrypted = cipher.process('data');\n\t\t * var encrypted = cipher.process(wordArray);\n\t\t */\n\t\t process: function (dataUpdate) {\n\t\t // Append\n\t\t this._append(dataUpdate);\n\t\n\t\t // Process available blocks\n\t\t return this._process();\n\t\t },\n\t\n\t\t /**\n\t\t * Finalizes the encryption or decryption process.\n\t\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t\t *\n\t\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t\t *\n\t\t * @return {WordArray} The data after final processing.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var encrypted = cipher.finalize();\n\t\t * var encrypted = cipher.finalize('data');\n\t\t * var encrypted = cipher.finalize(wordArray);\n\t\t */\n\t\t finalize: function (dataUpdate) {\n\t\t // Final data update\n\t\t if (dataUpdate) {\n\t\t this._append(dataUpdate);\n\t\t }\n\t\n\t\t // Perform concrete-cipher logic\n\t\t var finalProcessedData = this._doFinalize();\n\t\n\t\t return finalProcessedData;\n\t\t },\n\t\n\t\t keySize: 128/32,\n\t\n\t\t ivSize: 128/32,\n\t\n\t\t _ENC_XFORM_MODE: 1,\n\t\n\t\t _DEC_XFORM_MODE: 2,\n\t\n\t\t /**\n\t\t * Creates shortcut functions to a cipher's object interface.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher to create a helper for.\n\t\t *\n\t\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t\t */\n\t\t _createHelper: (function () {\n\t\t function selectCipherStrategy(key) {\n\t\t if (typeof key == 'string') {\n\t\t return PasswordBasedCipher;\n\t\t } else {\n\t\t return SerializableCipher;\n\t\t }\n\t\t }\n\t\n\t\t return function (cipher) {\n\t\t return {\n\t\t encrypt: function (message, key, cfg) {\n\t\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t\t },\n\t\n\t\t decrypt: function (ciphertext, key, cfg) {\n\t\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t\t }\n\t\t };\n\t\t };\n\t\t }())\n\t\t });\n\t\n\t\t /**\n\t\t * Abstract base stream cipher template.\n\t\t *\n\t\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t\t */\n\t\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t\t _doFinalize: function () {\n\t\t // Process partial blocks\n\t\t var finalProcessedBlocks = this._process(!!'flush');\n\t\n\t\t return finalProcessedBlocks;\n\t\t },\n\t\n\t\t blockSize: 1\n\t\t });\n\t\n\t\t /**\n\t\t * Mode namespace.\n\t\t */\n\t\t var C_mode = C.mode = {};\n\t\n\t\t /**\n\t\t * Abstract base block cipher mode template.\n\t\t */\n\t\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t\t /**\n\t\t * Creates this mode for encryption.\n\t\t *\n\t\t * @param {Cipher} cipher A block cipher instance.\n\t\t * @param {Array} iv The IV words.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t\t */\n\t\t createEncryptor: function (cipher, iv) {\n\t\t return this.Encryptor.create(cipher, iv);\n\t\t },\n\t\n\t\t /**\n\t\t * Creates this mode for decryption.\n\t\t *\n\t\t * @param {Cipher} cipher A block cipher instance.\n\t\t * @param {Array} iv The IV words.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t\t */\n\t\t createDecryptor: function (cipher, iv) {\n\t\t return this.Decryptor.create(cipher, iv);\n\t\t },\n\t\n\t\t /**\n\t\t * Initializes a newly created mode.\n\t\t *\n\t\t * @param {Cipher} cipher A block cipher instance.\n\t\t * @param {Array} iv The IV words.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t\t */\n\t\t init: function (cipher, iv) {\n\t\t this._cipher = cipher;\n\t\t this._iv = iv;\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Cipher Block Chaining mode.\n\t\t */\n\t\t var CBC = C_mode.CBC = (function () {\n\t\t /**\n\t\t * Abstract base CBC mode.\n\t\t */\n\t\t var CBC = BlockCipherMode.extend();\n\t\n\t\t /**\n\t\t * CBC encryptor.\n\t\t */\n\t\t CBC.Encryptor = CBC.extend({\n\t\t /**\n\t\t * Processes the data block at offset.\n\t\t *\n\t\t * @param {Array} words The data words to operate on.\n\t\t * @param {number} offset The offset where the block starts.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * mode.processBlock(data.words, offset);\n\t\t */\n\t\t processBlock: function (words, offset) {\n\t\t // Shortcuts\n\t\t var cipher = this._cipher;\n\t\t var blockSize = cipher.blockSize;\n\t\n\t\t // XOR and encrypt\n\t\t xorBlock.call(this, words, offset, blockSize);\n\t\t cipher.encryptBlock(words, offset);\n\t\n\t\t // Remember this block to use with next block\n\t\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * CBC decryptor.\n\t\t */\n\t\t CBC.Decryptor = CBC.extend({\n\t\t /**\n\t\t * Processes the data block at offset.\n\t\t *\n\t\t * @param {Array} words The data words to operate on.\n\t\t * @param {number} offset The offset where the block starts.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * mode.processBlock(data.words, offset);\n\t\t */\n\t\t processBlock: function (words, offset) {\n\t\t // Shortcuts\n\t\t var cipher = this._cipher;\n\t\t var blockSize = cipher.blockSize;\n\t\n\t\t // Remember this block to use with next block\n\t\t var thisBlock = words.slice(offset, offset + blockSize);\n\t\n\t\t // Decrypt and XOR\n\t\t cipher.decryptBlock(words, offset);\n\t\t xorBlock.call(this, words, offset, blockSize);\n\t\n\t\t // This block becomes the previous block\n\t\t this._prevBlock = thisBlock;\n\t\t }\n\t\t });\n\t\n\t\t function xorBlock(words, offset, blockSize) {\n\t\t // Shortcut\n\t\t var iv = this._iv;\n\t\n\t\t // Choose mixing block\n\t\t if (iv) {\n\t\t var block = iv;\n\t\n\t\t // Remove IV for subsequent blocks\n\t\t this._iv = undefined;\n\t\t } else {\n\t\t var block = this._prevBlock;\n\t\t }\n\t\n\t\t // XOR blocks\n\t\t for (var i = 0; i < blockSize; i++) {\n\t\t words[offset + i] ^= block[i];\n\t\t }\n\t\t }\n\t\n\t\t return CBC;\n\t\t }());\n\t\n\t\t /**\n\t\t * Padding namespace.\n\t\t */\n\t\t var C_pad = C.pad = {};\n\t\n\t\t /**\n\t\t * PKCS #5/7 padding strategy.\n\t\t */\n\t\t var Pkcs7 = C_pad.Pkcs7 = {\n\t\t /**\n\t\t * Pads data using the algorithm defined in PKCS #5/7.\n\t\t *\n\t\t * @param {WordArray} data The data to pad.\n\t\t * @param {number} blockSize The multiple that the data should be padded to.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t\t */\n\t\t pad: function (data, blockSize) {\n\t\t // Shortcut\n\t\t var blockSizeBytes = blockSize * 4;\n\t\n\t\t // Count padding bytes\n\t\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\t\n\t\t // Create padding word\n\t\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\t\n\t\t // Create padding\n\t\t var paddingWords = [];\n\t\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t\t paddingWords.push(paddingWord);\n\t\t }\n\t\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\t\n\t\t // Add padding\n\t\t data.concat(padding);\n\t\t },\n\t\n\t\t /**\n\t\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t\t *\n\t\t * @param {WordArray} data The data to unpad.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t\t */\n\t\t unpad: function (data) {\n\t\t // Get number of padding bytes from last byte\n\t\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\t\n\t\t // Remove padding\n\t\t data.sigBytes -= nPaddingBytes;\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * Abstract base block cipher template.\n\t\t *\n\t\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t\t */\n\t\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {Mode} mode The block mode to use. Default: CBC\n\t\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t\t */\n\t\t cfg: Cipher.cfg.extend({\n\t\t mode: CBC,\n\t\t padding: Pkcs7\n\t\t }),\n\t\n\t\t reset: function () {\n\t\t // Reset cipher\n\t\t Cipher.reset.call(this);\n\t\n\t\t // Shortcuts\n\t\t var cfg = this.cfg;\n\t\t var iv = cfg.iv;\n\t\t var mode = cfg.mode;\n\t\n\t\t // Reset block mode\n\t\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t\t var modeCreator = mode.createEncryptor;\n\t\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t\t var modeCreator = mode.createDecryptor;\n\t\n\t\t // Keep at least one block in the buffer for unpadding\n\t\t this._minBufferSize = 1;\n\t\t }\n\t\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t\t },\n\t\n\t\t _doProcessBlock: function (words, offset) {\n\t\t this._mode.processBlock(words, offset);\n\t\t },\n\t\n\t\t _doFinalize: function () {\n\t\t // Shortcut\n\t\t var padding = this.cfg.padding;\n\t\n\t\t // Finalize\n\t\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t\t // Pad data\n\t\t padding.pad(this._data, this.blockSize);\n\t\n\t\t // Process final blocks\n\t\t var finalProcessedBlocks = this._process(!!'flush');\n\t\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t\t // Process final blocks\n\t\t var finalProcessedBlocks = this._process(!!'flush');\n\t\n\t\t // Unpad data\n\t\t padding.unpad(finalProcessedBlocks);\n\t\t }\n\t\n\t\t return finalProcessedBlocks;\n\t\t },\n\t\n\t\t blockSize: 128/32\n\t\t });\n\t\n\t\t /**\n\t\t * A collection of cipher parameters.\n\t\t *\n\t\t * @property {WordArray} ciphertext The raw ciphertext.\n\t\t * @property {WordArray} key The key to this ciphertext.\n\t\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t\t * @property {WordArray} salt The salt used with a key derivation function.\n\t\t * @property {Cipher} algorithm The cipher algorithm.\n\t\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t\t * @property {number} blockSize The block size of the cipher.\n\t\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t\t */\n\t\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t\t /**\n\t\t * Initializes a newly created cipher params object.\n\t\t *\n\t\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t\t * ciphertext: ciphertextWordArray,\n\t\t * key: keyWordArray,\n\t\t * iv: ivWordArray,\n\t\t * salt: saltWordArray,\n\t\t * algorithm: CryptoJS.algo.AES,\n\t\t * mode: CryptoJS.mode.CBC,\n\t\t * padding: CryptoJS.pad.PKCS7,\n\t\t * blockSize: 4,\n\t\t * formatter: CryptoJS.format.OpenSSL\n\t\t * });\n\t\t */\n\t\t init: function (cipherParams) {\n\t\t this.mixIn(cipherParams);\n\t\t },\n\t\n\t\t /**\n\t\t * Converts this cipher params object to a string.\n\t\t *\n\t\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t\t *\n\t\t * @return {string} The stringified cipher params.\n\t\t *\n\t\t * @throws Error If neither the formatter nor the default formatter is set.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var string = cipherParams + '';\n\t\t * var string = cipherParams.toString();\n\t\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t\t */\n\t\t toString: function (formatter) {\n\t\t return (formatter || this.formatter).stringify(this);\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Format namespace.\n\t\t */\n\t\t var C_format = C.format = {};\n\t\n\t\t /**\n\t\t * OpenSSL formatting strategy.\n\t\t */\n\t\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t\t /**\n\t\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t\t *\n\t\t * @param {CipherParams} cipherParams The cipher params object.\n\t\t *\n\t\t * @return {string} The OpenSSL-compatible string.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t\t */\n\t\t stringify: function (cipherParams) {\n\t\t // Shortcuts\n\t\t var ciphertext = cipherParams.ciphertext;\n\t\t var salt = cipherParams.salt;\n\t\n\t\t // Format\n\t\t if (salt) {\n\t\t var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t\t } else {\n\t\t var wordArray = ciphertext;\n\t\t }\n\t\n\t\t return wordArray.toString(Base64);\n\t\t },\n\t\n\t\t /**\n\t\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t\t *\n\t\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t\t *\n\t\t * @return {CipherParams} The cipher params object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t\t */\n\t\t parse: function (openSSLStr) {\n\t\t // Parse base64\n\t\t var ciphertext = Base64.parse(openSSLStr);\n\t\n\t\t // Shortcut\n\t\t var ciphertextWords = ciphertext.words;\n\t\n\t\t // Test for salt\n\t\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t\t // Extract salt\n\t\t var salt = WordArray.create(ciphertextWords.slice(2, 4));\n\t\n\t\t // Remove salt from ciphertext\n\t\t ciphertextWords.splice(0, 4);\n\t\t ciphertext.sigBytes -= 16;\n\t\t }\n\t\n\t\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t\t */\n\t\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t\t */\n\t\t cfg: Base.extend({\n\t\t format: OpenSSLFormatter\n\t\t }),\n\t\n\t\t /**\n\t\t * Encrypts a message.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher algorithm to use.\n\t\t * @param {WordArray|string} message The message to encrypt.\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {CipherParams} A cipher params object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t\t */\n\t\t encrypt: function (cipher, message, key, cfg) {\n\t\t // Apply config defaults\n\t\t cfg = this.cfg.extend(cfg);\n\t\n\t\t // Encrypt\n\t\t var encryptor = cipher.createEncryptor(key, cfg);\n\t\t var ciphertext = encryptor.finalize(message);\n\t\n\t\t // Shortcut\n\t\t var cipherCfg = encryptor.cfg;\n\t\n\t\t // Create and return serializable cipher params\n\t\t return CipherParams.create({\n\t\t ciphertext: ciphertext,\n\t\t key: key,\n\t\t iv: cipherCfg.iv,\n\t\t algorithm: cipher,\n\t\t mode: cipherCfg.mode,\n\t\t padding: cipherCfg.padding,\n\t\t blockSize: cipher.blockSize,\n\t\t formatter: cfg.format\n\t\t });\n\t\t },\n\t\n\t\t /**\n\t\t * Decrypts serialized ciphertext.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher algorithm to use.\n\t\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t\t * @param {WordArray} key The key.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {WordArray} The plaintext.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t\t */\n\t\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t\t // Apply config defaults\n\t\t cfg = this.cfg.extend(cfg);\n\t\n\t\t // Convert string to CipherParams\n\t\t ciphertext = this._parse(ciphertext, cfg.format);\n\t\n\t\t // Decrypt\n\t\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\t\n\t\t return plaintext;\n\t\t },\n\t\n\t\t /**\n\t\t * Converts serialized ciphertext to CipherParams,\n\t\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t\t *\n\t\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t\t *\n\t\t * @return {CipherParams} The unserialized ciphertext.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t\t */\n\t\t _parse: function (ciphertext, format) {\n\t\t if (typeof ciphertext == 'string') {\n\t\t return format.parse(ciphertext, this);\n\t\t } else {\n\t\t return ciphertext;\n\t\t }\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Key derivation function namespace.\n\t\t */\n\t\t var C_kdf = C.kdf = {};\n\t\n\t\t /**\n\t\t * OpenSSL key derivation function.\n\t\t */\n\t\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t\t /**\n\t\t * Derives a key and IV from a password.\n\t\t *\n\t\t * @param {string} password The password to derive from.\n\t\t * @param {number} keySize The size in words of the key to generate.\n\t\t * @param {number} ivSize The size in words of the IV to generate.\n\t\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t\t *\n\t\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t\t */\n\t\t execute: function (password, keySize, ivSize, salt) {\n\t\t // Generate random salt\n\t\t if (!salt) {\n\t\t salt = WordArray.random(64/8);\n\t\t }\n\t\n\t\t // Derive key and IV\n\t\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\t\n\t\t // Separate key and IV\n\t\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t\t key.sigBytes = keySize * 4;\n\t\n\t\t // Return params\n\t\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t\t }\n\t\t };\n\t\n\t\t /**\n\t\t * A serializable cipher wrapper that derives the key from a password,\n\t\t * and returns ciphertext as a serializable cipher params object.\n\t\t */\n\t\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t\t */\n\t\t cfg: SerializableCipher.cfg.extend({\n\t\t kdf: OpenSSLKdf\n\t\t }),\n\t\n\t\t /**\n\t\t * Encrypts a message using a password.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher algorithm to use.\n\t\t * @param {WordArray|string} message The message to encrypt.\n\t\t * @param {string} password The password.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {CipherParams} A cipher params object.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t\t */\n\t\t encrypt: function (cipher, message, password, cfg) {\n\t\t // Apply config defaults\n\t\t cfg = this.cfg.extend(cfg);\n\t\n\t\t // Derive key and other params\n\t\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\t\n\t\t // Add IV to config\n\t\t cfg.iv = derivedParams.iv;\n\t\n\t\t // Encrypt\n\t\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\t\n\t\t // Mix in derived params\n\t\t ciphertext.mixIn(derivedParams);\n\t\n\t\t return ciphertext;\n\t\t },\n\t\n\t\t /**\n\t\t * Decrypts serialized ciphertext using a password.\n\t\t *\n\t\t * @param {Cipher} cipher The cipher algorithm to use.\n\t\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t\t * @param {string} password The password.\n\t\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t\t *\n\t\t * @return {WordArray} The plaintext.\n\t\t *\n\t\t * @static\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t\t */\n\t\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t\t // Apply config defaults\n\t\t cfg = this.cfg.extend(cfg);\n\t\n\t\t // Convert string to CipherParams\n\t\t ciphertext = this._parse(ciphertext, cfg.format);\n\t\n\t\t // Derive key and other params\n\t\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\t\n\t\t // Add IV to config\n\t\t cfg.iv = derivedParams.iv;\n\t\n\t\t // Decrypt\n\t\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\t\n\t\t return plaintext;\n\t\t }\n\t\t });\n\t\t}());\n\t\n\t\n\t}));\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(12), __webpack_require__(13), __webpack_require__(14), __webpack_require__(15));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var WordArray = C_lib.WordArray;\n\t\t var BlockCipher = C_lib.BlockCipher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Permuted Choice 1 constants\n\t\t var PC1 = [\n\t\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t\t 29, 21, 13, 5, 28, 20, 12, 4\n\t\t ];\n\t\n\t\t // Permuted Choice 2 constants\n\t\t var PC2 = [\n\t\t 14, 17, 11, 24, 1, 5,\n\t\t 3, 28, 15, 6, 21, 10,\n\t\t 23, 19, 12, 4, 26, 8,\n\t\t 16, 7, 27, 20, 13, 2,\n\t\t 41, 52, 31, 37, 47, 55,\n\t\t 30, 40, 51, 45, 33, 48,\n\t\t 44, 49, 39, 56, 34, 53,\n\t\t 46, 42, 50, 36, 29, 32\n\t\t ];\n\t\n\t\t // Cumulative bit shift constants\n\t\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\t\n\t\t // SBOXes and round permutation constants\n\t\t var SBOX_P = [\n\t\t {\n\t\t 0x0: 0x808200,\n\t\t 0x10000000: 0x8000,\n\t\t 0x20000000: 0x808002,\n\t\t 0x30000000: 0x2,\n\t\t 0x40000000: 0x200,\n\t\t 0x50000000: 0x808202,\n\t\t 0x60000000: 0x800202,\n\t\t 0x70000000: 0x800000,\n\t\t 0x80000000: 0x202,\n\t\t 0x90000000: 0x800200,\n\t\t 0xa0000000: 0x8200,\n\t\t 0xb0000000: 0x808000,\n\t\t 0xc0000000: 0x8002,\n\t\t 0xd0000000: 0x800002,\n\t\t 0xe0000000: 0x0,\n\t\t 0xf0000000: 0x8202,\n\t\t 0x8000000: 0x0,\n\t\t 0x18000000: 0x808202,\n\t\t 0x28000000: 0x8202,\n\t\t 0x38000000: 0x8000,\n\t\t 0x48000000: 0x808200,\n\t\t 0x58000000: 0x200,\n\t\t 0x68000000: 0x808002,\n\t\t 0x78000000: 0x2,\n\t\t 0x88000000: 0x800200,\n\t\t 0x98000000: 0x8200,\n\t\t 0xa8000000: 0x808000,\n\t\t 0xb8000000: 0x800202,\n\t\t 0xc8000000: 0x800002,\n\t\t 0xd8000000: 0x8002,\n\t\t 0xe8000000: 0x202,\n\t\t 0xf8000000: 0x800000,\n\t\t 0x1: 0x8000,\n\t\t 0x10000001: 0x2,\n\t\t 0x20000001: 0x808200,\n\t\t 0x30000001: 0x800000,\n\t\t 0x40000001: 0x808002,\n\t\t 0x50000001: 0x8200,\n\t\t 0x60000001: 0x200,\n\t\t 0x70000001: 0x800202,\n\t\t 0x80000001: 0x808202,\n\t\t 0x90000001: 0x808000,\n\t\t 0xa0000001: 0x800002,\n\t\t 0xb0000001: 0x8202,\n\t\t 0xc0000001: 0x202,\n\t\t 0xd0000001: 0x800200,\n\t\t 0xe0000001: 0x8002,\n\t\t 0xf0000001: 0x0,\n\t\t 0x8000001: 0x808202,\n\t\t 0x18000001: 0x808000,\n\t\t 0x28000001: 0x800000,\n\t\t 0x38000001: 0x200,\n\t\t 0x48000001: 0x8000,\n\t\t 0x58000001: 0x800002,\n\t\t 0x68000001: 0x2,\n\t\t 0x78000001: 0x8202,\n\t\t 0x88000001: 0x8002,\n\t\t 0x98000001: 0x800202,\n\t\t 0xa8000001: 0x202,\n\t\t 0xb8000001: 0x808200,\n\t\t 0xc8000001: 0x800200,\n\t\t 0xd8000001: 0x0,\n\t\t 0xe8000001: 0x8200,\n\t\t 0xf8000001: 0x808002\n\t\t },\n\t\t {\n\t\t 0x0: 0x40084010,\n\t\t 0x1000000: 0x4000,\n\t\t 0x2000000: 0x80000,\n\t\t 0x3000000: 0x40080010,\n\t\t 0x4000000: 0x40000010,\n\t\t 0x5000000: 0x40084000,\n\t\t 0x6000000: 0x40004000,\n\t\t 0x7000000: 0x10,\n\t\t 0x8000000: 0x84000,\n\t\t 0x9000000: 0x40004010,\n\t\t 0xa000000: 0x40000000,\n\t\t 0xb000000: 0x84010,\n\t\t 0xc000000: 0x80010,\n\t\t 0xd000000: 0x0,\n\t\t 0xe000000: 0x4010,\n\t\t 0xf000000: 0x40080000,\n\t\t 0x800000: 0x40004000,\n\t\t 0x1800000: 0x84010,\n\t\t 0x2800000: 0x10,\n\t\t 0x3800000: 0x40004010,\n\t\t 0x4800000: 0x40084010,\n\t\t 0x5800000: 0x40000000,\n\t\t 0x6800000: 0x80000,\n\t\t 0x7800000: 0x40080010,\n\t\t 0x8800000: 0x80010,\n\t\t 0x9800000: 0x0,\n\t\t 0xa800000: 0x4000,\n\t\t 0xb800000: 0x40080000,\n\t\t 0xc800000: 0x40000010,\n\t\t 0xd800000: 0x84000,\n\t\t 0xe800000: 0x40084000,\n\t\t 0xf800000: 0x4010,\n\t\t 0x10000000: 0x0,\n\t\t 0x11000000: 0x40080010,\n\t\t 0x12000000: 0x40004010,\n\t\t 0x13000000: 0x40084000,\n\t\t 0x14000000: 0x40080000,\n\t\t 0x15000000: 0x10,\n\t\t 0x16000000: 0x84010,\n\t\t 0x17000000: 0x4000,\n\t\t 0x18000000: 0x4010,\n\t\t 0x19000000: 0x80000,\n\t\t 0x1a000000: 0x80010,\n\t\t 0x1b000000: 0x40000010,\n\t\t 0x1c000000: 0x84000,\n\t\t 0x1d000000: 0x40004000,\n\t\t 0x1e000000: 0x40000000,\n\t\t 0x1f000000: 0x40084010,\n\t\t 0x10800000: 0x84010,\n\t\t 0x11800000: 0x80000,\n\t\t 0x12800000: 0x40080000,\n\t\t 0x13800000: 0x4000,\n\t\t 0x14800000: 0x40004000,\n\t\t 0x15800000: 0x40084010,\n\t\t 0x16800000: 0x10,\n\t\t 0x17800000: 0x40000000,\n\t\t 0x18800000: 0x40084000,\n\t\t 0x19800000: 0x40000010,\n\t\t 0x1a800000: 0x40004010,\n\t\t 0x1b800000: 0x80010,\n\t\t 0x1c800000: 0x0,\n\t\t 0x1d800000: 0x4010,\n\t\t 0x1e800000: 0x40080010,\n\t\t 0x1f800000: 0x84000\n\t\t },\n\t\t {\n\t\t 0x0: 0x104,\n\t\t 0x100000: 0x0,\n\t\t 0x200000: 0x4000100,\n\t\t 0x300000: 0x10104,\n\t\t 0x400000: 0x10004,\n\t\t 0x500000: 0x4000004,\n\t\t 0x600000: 0x4010104,\n\t\t 0x700000: 0x4010000,\n\t\t 0x800000: 0x4000000,\n\t\t 0x900000: 0x4010100,\n\t\t 0xa00000: 0x10100,\n\t\t 0xb00000: 0x4010004,\n\t\t 0xc00000: 0x4000104,\n\t\t 0xd00000: 0x10000,\n\t\t 0xe00000: 0x4,\n\t\t 0xf00000: 0x100,\n\t\t 0x80000: 0x4010100,\n\t\t 0x180000: 0x4010004,\n\t\t 0x280000: 0x0,\n\t\t 0x380000: 0x4000100,\n\t\t 0x480000: 0x4000004,\n\t\t 0x580000: 0x10000,\n\t\t 0x680000: 0x10004,\n\t\t 0x780000: 0x104,\n\t\t 0x880000: 0x4,\n\t\t 0x980000: 0x100,\n\t\t 0xa80000: 0x4010000,\n\t\t 0xb80000: 0x10104,\n\t\t 0xc80000: 0x10100,\n\t\t 0xd80000: 0x4000104,\n\t\t 0xe80000: 0x4010104,\n\t\t 0xf80000: 0x4000000,\n\t\t 0x1000000: 0x4010100,\n\t\t 0x1100000: 0x10004,\n\t\t 0x1200000: 0x10000,\n\t\t 0x1300000: 0x4000100,\n\t\t 0x1400000: 0x100,\n\t\t 0x1500000: 0x4010104,\n\t\t 0x1600000: 0x4000004,\n\t\t 0x1700000: 0x0,\n\t\t 0x1800000: 0x4000104,\n\t\t 0x1900000: 0x4000000,\n\t\t 0x1a00000: 0x4,\n\t\t 0x1b00000: 0x10100,\n\t\t 0x1c00000: 0x4010000,\n\t\t 0x1d00000: 0x104,\n\t\t 0x1e00000: 0x10104,\n\t\t 0x1f00000: 0x4010004,\n\t\t 0x1080000: 0x4000000,\n\t\t 0x1180000: 0x104,\n\t\t 0x1280000: 0x4010100,\n\t\t 0x1380000: 0x0,\n\t\t 0x1480000: 0x10004,\n\t\t 0x1580000: 0x4000100,\n\t\t 0x1680000: 0x100,\n\t\t 0x1780000: 0x4010004,\n\t\t 0x1880000: 0x10000,\n\t\t 0x1980000: 0x4010104,\n\t\t 0x1a80000: 0x10104,\n\t\t 0x1b80000: 0x4000004,\n\t\t 0x1c80000: 0x4000104,\n\t\t 0x1d80000: 0x4010000,\n\t\t 0x1e80000: 0x4,\n\t\t 0x1f80000: 0x10100\n\t\t },\n\t\t {\n\t\t 0x0: 0x80401000,\n\t\t 0x10000: 0x80001040,\n\t\t 0x20000: 0x401040,\n\t\t 0x30000: 0x80400000,\n\t\t 0x40000: 0x0,\n\t\t 0x50000: 0x401000,\n\t\t 0x60000: 0x80000040,\n\t\t 0x70000: 0x400040,\n\t\t 0x80000: 0x80000000,\n\t\t 0x90000: 0x400000,\n\t\t 0xa0000: 0x40,\n\t\t 0xb0000: 0x80001000,\n\t\t 0xc0000: 0x80400040,\n\t\t 0xd0000: 0x1040,\n\t\t 0xe0000: 0x1000,\n\t\t 0xf0000: 0x80401040,\n\t\t 0x8000: 0x80001040,\n\t\t 0x18000: 0x40,\n\t\t 0x28000: 0x80400040,\n\t\t 0x38000: 0x80001000,\n\t\t 0x48000: 0x401000,\n\t\t 0x58000: 0x80401040,\n\t\t 0x68000: 0x0,\n\t\t 0x78000: 0x80400000,\n\t\t 0x88000: 0x1000,\n\t\t 0x98000: 0x80401000,\n\t\t 0xa8000: 0x400000,\n\t\t 0xb8000: 0x1040,\n\t\t 0xc8000: 0x80000000,\n\t\t 0xd8000: 0x400040,\n\t\t 0xe8000: 0x401040,\n\t\t 0xf8000: 0x80000040,\n\t\t 0x100000: 0x400040,\n\t\t 0x110000: 0x401000,\n\t\t 0x120000: 0x80000040,\n\t\t 0x130000: 0x0,\n\t\t 0x140000: 0x1040,\n\t\t 0x150000: 0x80400040,\n\t\t 0x160000: 0x80401000,\n\t\t 0x170000: 0x80001040,\n\t\t 0x180000: 0x80401040,\n\t\t 0x190000: 0x80000000,\n\t\t 0x1a0000: 0x80400000,\n\t\t 0x1b0000: 0x401040,\n\t\t 0x1c0000: 0x80001000,\n\t\t 0x1d0000: 0x400000,\n\t\t 0x1e0000: 0x40,\n\t\t 0x1f0000: 0x1000,\n\t\t 0x108000: 0x80400000,\n\t\t 0x118000: 0x80401040,\n\t\t 0x128000: 0x0,\n\t\t 0x138000: 0x401000,\n\t\t 0x148000: 0x400040,\n\t\t 0x158000: 0x80000000,\n\t\t 0x168000: 0x80001040,\n\t\t 0x178000: 0x40,\n\t\t 0x188000: 0x80000040,\n\t\t 0x198000: 0x1000,\n\t\t 0x1a8000: 0x80001000,\n\t\t 0x1b8000: 0x80400040,\n\t\t 0x1c8000: 0x1040,\n\t\t 0x1d8000: 0x80401000,\n\t\t 0x1e8000: 0x400000,\n\t\t 0x1f8000: 0x401040\n\t\t },\n\t\t {\n\t\t 0x0: 0x80,\n\t\t 0x1000: 0x1040000,\n\t\t 0x2000: 0x40000,\n\t\t 0x3000: 0x20000000,\n\t\t 0x4000: 0x20040080,\n\t\t 0x5000: 0x1000080,\n\t\t 0x6000: 0x21000080,\n\t\t 0x7000: 0x40080,\n\t\t 0x8000: 0x1000000,\n\t\t 0x9000: 0x20040000,\n\t\t 0xa000: 0x20000080,\n\t\t 0xb000: 0x21040080,\n\t\t 0xc000: 0x21040000,\n\t\t 0xd000: 0x0,\n\t\t 0xe000: 0x1040080,\n\t\t 0xf000: 0x21000000,\n\t\t 0x800: 0x1040080,\n\t\t 0x1800: 0x21000080,\n\t\t 0x2800: 0x80,\n\t\t 0x3800: 0x1040000,\n\t\t 0x4800: 0x40000,\n\t\t 0x5800: 0x20040080,\n\t\t 0x6800: 0x21040000,\n\t\t 0x7800: 0x20000000,\n\t\t 0x8800: 0x20040000,\n\t\t 0x9800: 0x0,\n\t\t 0xa800: 0x21040080,\n\t\t 0xb800: 0x1000080,\n\t\t 0xc800: 0x20000080,\n\t\t 0xd800: 0x21000000,\n\t\t 0xe800: 0x1000000,\n\t\t 0xf800: 0x40080,\n\t\t 0x10000: 0x40000,\n\t\t 0x11000: 0x80,\n\t\t 0x12000: 0x20000000,\n\t\t 0x13000: 0x21000080,\n\t\t 0x14000: 0x1000080,\n\t\t 0x15000: 0x21040000,\n\t\t 0x16000: 0x20040080,\n\t\t 0x17000: 0x1000000,\n\t\t 0x18000: 0x21040080,\n\t\t 0x19000: 0x21000000,\n\t\t 0x1a000: 0x1040000,\n\t\t 0x1b000: 0x20040000,\n\t\t 0x1c000: 0x40080,\n\t\t 0x1d000: 0x20000080,\n\t\t 0x1e000: 0x0,\n\t\t 0x1f000: 0x1040080,\n\t\t 0x10800: 0x21000080,\n\t\t 0x11800: 0x1000000,\n\t\t 0x12800: 0x1040000,\n\t\t 0x13800: 0x20040080,\n\t\t 0x14800: 0x20000000,\n\t\t 0x15800: 0x1040080,\n\t\t 0x16800: 0x80,\n\t\t 0x17800: 0x21040000,\n\t\t 0x18800: 0x40080,\n\t\t 0x19800: 0x21040080,\n\t\t 0x1a800: 0x0,\n\t\t 0x1b800: 0x21000000,\n\t\t 0x1c800: 0x1000080,\n\t\t 0x1d800: 0x40000,\n\t\t 0x1e800: 0x20040000,\n\t\t 0x1f800: 0x20000080\n\t\t },\n\t\t {\n\t\t 0x0: 0x10000008,\n\t\t 0x100: 0x2000,\n\t\t 0x200: 0x10200000,\n\t\t 0x300: 0x10202008,\n\t\t 0x400: 0x10002000,\n\t\t 0x500: 0x200000,\n\t\t 0x600: 0x200008,\n\t\t 0x700: 0x10000000,\n\t\t 0x800: 0x0,\n\t\t 0x900: 0x10002008,\n\t\t 0xa00: 0x202000,\n\t\t 0xb00: 0x8,\n\t\t 0xc00: 0x10200008,\n\t\t 0xd00: 0x202008,\n\t\t 0xe00: 0x2008,\n\t\t 0xf00: 0x10202000,\n\t\t 0x80: 0x10200000,\n\t\t 0x180: 0x10202008,\n\t\t 0x280: 0x8,\n\t\t 0x380: 0x200000,\n\t\t 0x480: 0x202008,\n\t\t 0x580: 0x10000008,\n\t\t 0x680: 0x10002000,\n\t\t 0x780: 0x2008,\n\t\t 0x880: 0x200008,\n\t\t 0x980: 0x2000,\n\t\t 0xa80: 0x10002008,\n\t\t 0xb80: 0x10200008,\n\t\t 0xc80: 0x0,\n\t\t 0xd80: 0x10202000,\n\t\t 0xe80: 0x202000,\n\t\t 0xf80: 0x10000000,\n\t\t 0x1000: 0x10002000,\n\t\t 0x1100: 0x10200008,\n\t\t 0x1200: 0x10202008,\n\t\t 0x1300: 0x2008,\n\t\t 0x1400: 0x200000,\n\t\t 0x1500: 0x10000000,\n\t\t 0x1600: 0x10000008,\n\t\t 0x1700: 0x202000,\n\t\t 0x1800: 0x202008,\n\t\t 0x1900: 0x0,\n\t\t 0x1a00: 0x8,\n\t\t 0x1b00: 0x10200000,\n\t\t 0x1c00: 0x2000,\n\t\t 0x1d00: 0x10002008,\n\t\t 0x1e00: 0x10202000,\n\t\t 0x1f00: 0x200008,\n\t\t 0x1080: 0x8,\n\t\t 0x1180: 0x202000,\n\t\t 0x1280: 0x200000,\n\t\t 0x1380: 0x10000008,\n\t\t 0x1480: 0x10002000,\n\t\t 0x1580: 0x2008,\n\t\t 0x1680: 0x10202008,\n\t\t 0x1780: 0x10200000,\n\t\t 0x1880: 0x10202000,\n\t\t 0x1980: 0x10200008,\n\t\t 0x1a80: 0x2000,\n\t\t 0x1b80: 0x202008,\n\t\t 0x1c80: 0x200008,\n\t\t 0x1d80: 0x0,\n\t\t 0x1e80: 0x10000000,\n\t\t 0x1f80: 0x10002008\n\t\t },\n\t\t {\n\t\t 0x0: 0x100000,\n\t\t 0x10: 0x2000401,\n\t\t 0x20: 0x400,\n\t\t 0x30: 0x100401,\n\t\t 0x40: 0x2100401,\n\t\t 0x50: 0x0,\n\t\t 0x60: 0x1,\n\t\t 0x70: 0x2100001,\n\t\t 0x80: 0x2000400,\n\t\t 0x90: 0x100001,\n\t\t 0xa0: 0x2000001,\n\t\t 0xb0: 0x2100400,\n\t\t 0xc0: 0x2100000,\n\t\t 0xd0: 0x401,\n\t\t 0xe0: 0x100400,\n\t\t 0xf0: 0x2000000,\n\t\t 0x8: 0x2100001,\n\t\t 0x18: 0x0,\n\t\t 0x28: 0x2000401,\n\t\t 0x38: 0x2100400,\n\t\t 0x48: 0x100000,\n\t\t 0x58: 0x2000001,\n\t\t 0x68: 0x2000000,\n\t\t 0x78: 0x401,\n\t\t 0x88: 0x100401,\n\t\t 0x98: 0x2000400,\n\t\t 0xa8: 0x2100000,\n\t\t 0xb8: 0x100001,\n\t\t 0xc8: 0x400,\n\t\t 0xd8: 0x2100401,\n\t\t 0xe8: 0x1,\n\t\t 0xf8: 0x100400,\n\t\t 0x100: 0x2000000,\n\t\t 0x110: 0x100000,\n\t\t 0x120: 0x2000401,\n\t\t 0x130: 0x2100001,\n\t\t 0x140: 0x100001,\n\t\t 0x150: 0x2000400,\n\t\t 0x160: 0x2100400,\n\t\t 0x170: 0x100401,\n\t\t 0x180: 0x401,\n\t\t 0x190: 0x2100401,\n\t\t 0x1a0: 0x100400,\n\t\t 0x1b0: 0x1,\n\t\t 0x1c0: 0x0,\n\t\t 0x1d0: 0x2100000,\n\t\t 0x1e0: 0x2000001,\n\t\t 0x1f0: 0x400,\n\t\t 0x108: 0x100400,\n\t\t 0x118: 0x2000401,\n\t\t 0x128: 0x2100001,\n\t\t 0x138: 0x1,\n\t\t 0x148: 0x2000000,\n\t\t 0x158: 0x100000,\n\t\t 0x168: 0x401,\n\t\t 0x178: 0x2100400,\n\t\t 0x188: 0x2000001,\n\t\t 0x198: 0x2100000,\n\t\t 0x1a8: 0x0,\n\t\t 0x1b8: 0x2100401,\n\t\t 0x1c8: 0x100401,\n\t\t 0x1d8: 0x400,\n\t\t 0x1e8: 0x2000400,\n\t\t 0x1f8: 0x100001\n\t\t },\n\t\t {\n\t\t 0x0: 0x8000820,\n\t\t 0x1: 0x20000,\n\t\t 0x2: 0x8000000,\n\t\t 0x3: 0x20,\n\t\t 0x4: 0x20020,\n\t\t 0x5: 0x8020820,\n\t\t 0x6: 0x8020800,\n\t\t 0x7: 0x800,\n\t\t 0x8: 0x8020000,\n\t\t 0x9: 0x8000800,\n\t\t 0xa: 0x20800,\n\t\t 0xb: 0x8020020,\n\t\t 0xc: 0x820,\n\t\t 0xd: 0x0,\n\t\t 0xe: 0x8000020,\n\t\t 0xf: 0x20820,\n\t\t 0x80000000: 0x800,\n\t\t 0x80000001: 0x8020820,\n\t\t 0x80000002: 0x8000820,\n\t\t 0x80000003: 0x8000000,\n\t\t 0x80000004: 0x8020000,\n\t\t 0x80000005: 0x20800,\n\t\t 0x80000006: 0x20820,\n\t\t 0x80000007: 0x20,\n\t\t 0x80000008: 0x8000020,\n\t\t 0x80000009: 0x820,\n\t\t 0x8000000a: 0x20020,\n\t\t 0x8000000b: 0x8020800,\n\t\t 0x8000000c: 0x0,\n\t\t 0x8000000d: 0x8020020,\n\t\t 0x8000000e: 0x8000800,\n\t\t 0x8000000f: 0x20000,\n\t\t 0x10: 0x20820,\n\t\t 0x11: 0x8020800,\n\t\t 0x12: 0x20,\n\t\t 0x13: 0x800,\n\t\t 0x14: 0x8000800,\n\t\t 0x15: 0x8000020,\n\t\t 0x16: 0x8020020,\n\t\t 0x17: 0x20000,\n\t\t 0x18: 0x0,\n\t\t 0x19: 0x20020,\n\t\t 0x1a: 0x8020000,\n\t\t 0x1b: 0x8000820,\n\t\t 0x1c: 0x8020820,\n\t\t 0x1d: 0x20800,\n\t\t 0x1e: 0x820,\n\t\t 0x1f: 0x8000000,\n\t\t 0x80000010: 0x20000,\n\t\t 0x80000011: 0x800,\n\t\t 0x80000012: 0x8020020,\n\t\t 0x80000013: 0x20820,\n\t\t 0x80000014: 0x20,\n\t\t 0x80000015: 0x8020000,\n\t\t 0x80000016: 0x8000000,\n\t\t 0x80000017: 0x8000820,\n\t\t 0x80000018: 0x8020820,\n\t\t 0x80000019: 0x8000020,\n\t\t 0x8000001a: 0x8000800,\n\t\t 0x8000001b: 0x0,\n\t\t 0x8000001c: 0x20800,\n\t\t 0x8000001d: 0x820,\n\t\t 0x8000001e: 0x20020,\n\t\t 0x8000001f: 0x8020800\n\t\t }\n\t\t ];\n\t\n\t\t // Masks that select the SBOX input\n\t\t var SBOX_MASK = [\n\t\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t\t ];\n\t\n\t\t /**\n\t\t * DES block cipher algorithm.\n\t\t */\n\t\t var DES = C_algo.DES = BlockCipher.extend({\n\t\t _doReset: function () {\n\t\t // Shortcuts\n\t\t var key = this._key;\n\t\t var keyWords = key.words;\n\t\n\t\t // Select 56 bits according to PC1\n\t\t var keyBits = [];\n\t\t for (var i = 0; i < 56; i++) {\n\t\t var keyBitPos = PC1[i] - 1;\n\t\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t\t }\n\t\n\t\t // Assemble 16 subkeys\n\t\t var subKeys = this._subKeys = [];\n\t\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t\t // Create subkey\n\t\t var subKey = subKeys[nSubKey] = [];\n\t\n\t\t // Shortcut\n\t\t var bitShift = BIT_SHIFTS[nSubKey];\n\t\n\t\t // Select 48 bits according to PC2\n\t\t for (var i = 0; i < 24; i++) {\n\t\t // Select from the left 28 key bits\n\t\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\t\n\t\t // Select from the right 28 key bits\n\t\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t\t }\n\t\n\t\t // Since each subkey is applied to an expanded 32-bit input,\n\t\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t\t // which allows the key to be used without expansion\n\t\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t\t for (var i = 1; i < 7; i++) {\n\t\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t\t }\n\t\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t\t }\n\t\n\t\t // Compute inverse subkeys\n\t\t var invSubKeys = this._invSubKeys = [];\n\t\t for (var i = 0; i < 16; i++) {\n\t\t invSubKeys[i] = subKeys[15 - i];\n\t\t }\n\t\t },\n\t\n\t\t encryptBlock: function (M, offset) {\n\t\t this._doCryptBlock(M, offset, this._subKeys);\n\t\t },\n\t\n\t\t decryptBlock: function (M, offset) {\n\t\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t\t },\n\t\n\t\t _doCryptBlock: function (M, offset, subKeys) {\n\t\t // Get input\n\t\t this._lBlock = M[offset];\n\t\t this._rBlock = M[offset + 1];\n\t\n\t\t // Initial permutation\n\t\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t\t exchangeLR.call(this, 16, 0x0000ffff);\n\t\t exchangeRL.call(this, 2, 0x33333333);\n\t\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t\t exchangeLR.call(this, 1, 0x55555555);\n\t\n\t\t // Rounds\n\t\t for (var round = 0; round < 16; round++) {\n\t\t // Shortcuts\n\t\t var subKey = subKeys[round];\n\t\t var lBlock = this._lBlock;\n\t\t var rBlock = this._rBlock;\n\t\n\t\t // Feistel function\n\t\t var f = 0;\n\t\t for (var i = 0; i < 8; i++) {\n\t\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t\t }\n\t\t this._lBlock = rBlock;\n\t\t this._rBlock = lBlock ^ f;\n\t\t }\n\t\n\t\t // Undo swap from last round\n\t\t var t = this._lBlock;\n\t\t this._lBlock = this._rBlock;\n\t\t this._rBlock = t;\n\t\n\t\t // Final permutation\n\t\t exchangeLR.call(this, 1, 0x55555555);\n\t\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t\t exchangeRL.call(this, 2, 0x33333333);\n\t\t exchangeLR.call(this, 16, 0x0000ffff);\n\t\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t\n\t\t // Set output\n\t\t M[offset] = this._lBlock;\n\t\t M[offset + 1] = this._rBlock;\n\t\t },\n\t\n\t\t keySize: 64/32,\n\t\n\t\t ivSize: 64/32,\n\t\n\t\t blockSize: 64/32\n\t\t });\n\t\n\t\t // Swap bits across the left and right words\n\t\t function exchangeLR(offset, mask) {\n\t\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t\t this._rBlock ^= t;\n\t\t this._lBlock ^= t << offset;\n\t\t }\n\t\n\t\t function exchangeRL(offset, mask) {\n\t\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t\t this._lBlock ^= t;\n\t\t this._rBlock ^= t << offset;\n\t\t }\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.DES = BlockCipher._createHelper(DES);\n\t\n\t\t /**\n\t\t * Triple-DES block cipher algorithm.\n\t\t */\n\t\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t\t _doReset: function () {\n\t\t // Shortcuts\n\t\t var key = this._key;\n\t\t var keyWords = key.words;\n\t\n\t\t // Create DES instances\n\t\t this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));\n\t\t this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));\n\t\t this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));\n\t\t },\n\t\n\t\t encryptBlock: function (M, offset) {\n\t\t this._des1.encryptBlock(M, offset);\n\t\t this._des2.decryptBlock(M, offset);\n\t\t this._des3.encryptBlock(M, offset);\n\t\t },\n\t\n\t\t decryptBlock: function (M, offset) {\n\t\t this._des3.decryptBlock(M, offset);\n\t\t this._des2.encryptBlock(M, offset);\n\t\t this._des1.decryptBlock(M, offset);\n\t\t },\n\t\n\t\t keySize: 192/32,\n\t\n\t\t ivSize: 64/32,\n\t\n\t\t blockSize: 64/32\n\t\t });\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.TripleDES;\n\t\n\t}));\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(12), __webpack_require__(13), __webpack_require__(14), __webpack_require__(15));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var StreamCipher = C_lib.StreamCipher;\n\t\t var C_algo = C.algo;\n\t\n\t\t // Reusable objects\n\t\t var S = [];\n\t\t var C_ = [];\n\t\t var G = [];\n\t\n\t\t /**\n\t\t * Rabbit stream cipher algorithm\n\t\t */\n\t\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t\t _doReset: function () {\n\t\t // Shortcuts\n\t\t var K = this._key.words;\n\t\t var iv = this.cfg.iv;\n\t\n\t\t // Swap endian\n\t\t for (var i = 0; i < 4; i++) {\n\t\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t\t }\n\t\n\t\t // Generate initial state values\n\t\t var X = this._X = [\n\t\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t\t ];\n\t\n\t\t // Generate initial counter values\n\t\t var C = this._C = [\n\t\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t\t ];\n\t\n\t\t // Carry bit\n\t\t this._b = 0;\n\t\n\t\t // Iterate the system four times\n\t\t for (var i = 0; i < 4; i++) {\n\t\t nextState.call(this);\n\t\t }\n\t\n\t\t // Modify the counters\n\t\t for (var i = 0; i < 8; i++) {\n\t\t C[i] ^= X[(i + 4) & 7];\n\t\t }\n\t\n\t\t // IV setup\n\t\t if (iv) {\n\t\t // Shortcuts\n\t\t var IV = iv.words;\n\t\t var IV_0 = IV[0];\n\t\t var IV_1 = IV[1];\n\t\n\t\t // Generate four subvectors\n\t\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\t\n\t\t // Modify counter values\n\t\t C[0] ^= i0;\n\t\t C[1] ^= i1;\n\t\t C[2] ^= i2;\n\t\t C[3] ^= i3;\n\t\t C[4] ^= i0;\n\t\t C[5] ^= i1;\n\t\t C[6] ^= i2;\n\t\t C[7] ^= i3;\n\t\n\t\t // Iterate the system four times\n\t\t for (var i = 0; i < 4; i++) {\n\t\t nextState.call(this);\n\t\t }\n\t\t }\n\t\t },\n\t\n\t\t _doProcessBlock: function (M, offset) {\n\t\t // Shortcut\n\t\t var X = this._X;\n\t\n\t\t // Iterate the system\n\t\t nextState.call(this);\n\t\n\t\t // Generate four keystream words\n\t\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\t\n\t\t for (var i = 0; i < 4; i++) {\n\t\t // Swap endian\n\t\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\t\n\t\t // Encrypt\n\t\t M[offset + i] ^= S[i];\n\t\t }\n\t\t },\n\t\n\t\t blockSize: 128/32,\n\t\n\t\t ivSize: 64/32\n\t\t });\n\t\n\t\t function nextState() {\n\t\t // Shortcuts\n\t\t var X = this._X;\n\t\t var C = this._C;\n\t\n\t\t // Save old counter values\n\t\t for (var i = 0; i < 8; i++) {\n\t\t C_[i] = C[i];\n\t\t }\n\t\n\t\t // Calculate new counter values\n\t\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\t\n\t\t // Calculate the g-values\n\t\t for (var i = 0; i < 8; i++) {\n\t\t var gx = X[i] + C[i];\n\t\n\t\t // Construct high and low argument for squaring\n\t\t var ga = gx & 0xffff;\n\t\t var gb = gx >>> 16;\n\t\n\t\t // Calculate high and low result of squaring\n\t\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\t\n\t\t // High XOR low\n\t\t G[i] = gh ^ gl;\n\t\t }\n\t\n\t\t // Calculate new state values\n\t\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t\t }\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.Rabbit;\n\t\n\t}));\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t;(function (root, factory, undef) {\n\t\tif (true) {\n\t\t\t// CommonJS\n\t\t\tmodule.exports = exports = factory(__webpack_require__(5), __webpack_require__(12), __webpack_require__(13), __webpack_require__(14), __webpack_require__(15));\n\t\t}\n\t\telse if (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD\n\t\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t\t}\n\t\telse {\n\t\t\t// Global (browser)\n\t\t\tfactory(root.CryptoJS);\n\t\t}\n\t}(this, function (CryptoJS) {\n\t\n\t\t(function () {\n\t\t // Shortcuts\n\t\t var C = CryptoJS;\n\t\t var C_lib = C.lib;\n\t\t var StreamCipher = C_lib.StreamCipher;\n\t\t var C_algo = C.algo;\n\t\n\t\t /**\n\t\t * RC4 stream cipher algorithm.\n\t\t */\n\t\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t\t _doReset: function () {\n\t\t // Shortcuts\n\t\t var key = this._key;\n\t\t var keyWords = key.words;\n\t\t var keySigBytes = key.sigBytes;\n\t\n\t\t // Init sbox\n\t\t var S = this._S = [];\n\t\t for (var i = 0; i < 256; i++) {\n\t\t S[i] = i;\n\t\t }\n\t\n\t\t // Key setup\n\t\t for (var i = 0, j = 0; i < 256; i++) {\n\t\t var keyByteIndex = i % keySigBytes;\n\t\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\t\n\t\t j = (j + S[i] + keyByte) % 256;\n\t\n\t\t // Swap\n\t\t var t = S[i];\n\t\t S[i] = S[j];\n\t\t S[j] = t;\n\t\t }\n\t\n\t\t // Counters\n\t\t this._i = this._j = 0;\n\t\t },\n\t\n\t\t _doProcessBlock: function (M, offset) {\n\t\t M[offset] ^= generateKeystreamWord.call(this);\n\t\t },\n\t\n\t\t keySize: 256/32,\n\t\n\t\t ivSize: 0\n\t\t });\n\t\n\t\t function generateKeystreamWord() {\n\t\t // Shortcuts\n\t\t var S = this._S;\n\t\t var i = this._i;\n\t\t var j = this._j;\n\t\n\t\t // Generate keystream word\n\t\t var keystreamWord = 0;\n\t\t for (var n = 0; n < 4; n++) {\n\t\t i = (i + 1) % 256;\n\t\t j = (j + S[i]) % 256;\n\t\n\t\t // Swap\n\t\t var t = S[i];\n\t\t S[i] = S[j];\n\t\t S[j] = t;\n\t\n\t\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t\t }\n\t\n\t\t // Update counters\n\t\t this._i = i;\n\t\t this._j = j;\n\t\n\t\t return keystreamWord;\n\t\t }\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.RC4 = StreamCipher._createHelper(RC4);\n\t\n\t\t /**\n\t\t * Modified RC4 stream cipher algorithm.\n\t\t */\n\t\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t\t /**\n\t\t * Configuration options.\n\t\t *\n\t\t * @property {number} drop The number of keystream words to drop. Default 192\n\t\t */\n\t\t cfg: RC4.cfg.extend({\n\t\t drop: 192\n\t\t }),\n\t\n\t\t _doReset: function () {\n\t\t RC4._doReset.call(this);\n\t\n\t\t // Drop\n\t\t for (var i = this.cfg.drop; i > 0; i--) {\n\t\t generateKeystreamWord.call(this);\n\t\t }\n\t\t }\n\t\t });\n\t\n\t\t /**\n\t\t * Shortcut functions to the cipher's object interface.\n\t\t *\n\t\t * @example\n\t\t *\n\t\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t\t */\n\t\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t\t}());\n\t\n\t\n\t\treturn CryptoJS.RC4;\n\t\n\t}));\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** secure-ls.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap a86576cdc12587cd75c6\n **/","import utils from './utils';\r\nimport constants from './constants';\r\nimport enc from './enc-utf8';\r\n\r\nimport Base64 from './Base64';\r\nimport LZString from 'lz-string/libs/lz-string';\r\nimport AES from 'crypto-js/aes';\r\nimport DES from 'crypto-js/tripledes';\r\nimport RABBIT from 'crypto-js/rabbit';\r\nimport RC4 from 'crypto-js/rc4';\r\n\r\nexport default class SecureLS {\r\n constructor(config) {\r\n config = config || {};\r\n this._name = 'secure-ls';\r\n this.utils = utils;\r\n this.constants = constants;\r\n this.Base64 = Base64;\r\n this.LZString = LZString;\r\n this.AES = AES;\r\n this.DES = DES;\r\n this.RABBIT = RABBIT;\r\n this.RC4 = RC4;\r\n this.enc = enc;\r\n\r\n this.config = {\r\n isCompression: true,\r\n encodingType: constants.EncrytionTypes.BASE64,\r\n encryptionSecret: config.encryptionSecret,\r\n encryptionNamespace: config.encryptionNamespace\r\n };\r\n this.config.isCompression = typeof config.isCompression !== 'undefined' ?\r\n config.isCompression :\r\n true;\r\n this.config.encodingType = (typeof config.encodingType !== 'undefined' || config.encodingType === '') ?\r\n config.encodingType.toLowerCase() :\r\n constants.EncrytionTypes.BASE64;\r\n\r\n this.ls = localStorage;\r\n this.init();\r\n };\r\n\r\n init() {\r\n let metaData = this.getMetaData();\r\n\r\n this.WarningEnum = this.constants.WarningEnum;\r\n this.WarningTypes = this.constants.WarningTypes;\r\n this.EncrytionTypes = this.constants.EncrytionTypes;\r\n\r\n this._isBase64 = this._isBase64EncryptionType();\r\n this._isAES = this._isAESEncryptionType();\r\n this._isDES = this._isDESEncryptionType();\r\n this._isRabbit = this._isRabbitEncryptionType();\r\n this._isRC4 = this._isRC4EncryptionType();\r\n this._isCompression = this._isDataCompressionEnabled();\r\n\r\n // fill the already present keys to the list of keys being used by secure-ls\r\n this.utils.allKeys = metaData.keys || this.resetAllKeys();\r\n };\r\n\r\n _isBase64EncryptionType() {\r\n return Base64 &&\r\n (typeof this.config.encodingType === 'undefined' ||\r\n this.config.encodingType === this.constants.EncrytionTypes.BASE64);\r\n };\r\n\r\n _isAESEncryptionType() {\r\n return AES &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.AES);\r\n };\r\n\r\n _isDESEncryptionType() {\r\n return DES &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.DES);\r\n };\r\n\r\n _isRabbitEncryptionType() {\r\n return RABBIT &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.RABBIT);\r\n };\r\n\r\n _isRC4EncryptionType() {\r\n return RC4 &&\r\n (this.config.encodingType === this.constants.EncrytionTypes.RC4);\r\n };\r\n\r\n _isDataCompressionEnabled() {\r\n return this.config.isCompression;\r\n }\r\n\r\n getEncryptionSecret(key) {\r\n let metaData = this.getMetaData();\r\n let obj = this.utils.getObjectFromKey(metaData.keys, key);\r\n\r\n if (!obj) {\r\n return;\r\n }\r\n\r\n if (this._isAES ||\r\n this._isDES ||\r\n this._isRabbit ||\r\n this._isRC4\r\n ) {\r\n if (typeof this.config.encryptionSecret === 'undefined') {\r\n this.utils.encryptionSecret = obj.s;\r\n\r\n if (!this.utils.encryptionSecret) {\r\n this.utils.encryptionSecret = this.utils.generateSecretKey();\r\n this.setMetaData();\r\n }\r\n } else {\r\n this.utils.encryptionSecret = this.config.encryptionSecret || obj.s || '';\r\n }\r\n }\r\n }\r\n\r\n get(key, isAllKeysData) {\r\n let decodedData = '',\r\n jsonData = '',\r\n deCompressedData,\r\n bytes,\r\n data;\r\n\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return jsonData;\r\n }\r\n\r\n data = this.getDataFromLocalStorage(key);\r\n\r\n if (!data) {\r\n return jsonData;\r\n }\r\n\r\n deCompressedData = data; // saves else\r\n if (this._isCompression || isAllKeysData) { // meta data always compressed\r\n deCompressedData = LZString.decompressFromUTF16(data);\r\n }\r\n\r\n decodedData = deCompressedData; // saves else\r\n if (this._isBase64 || isAllKeysData) { // meta data always Base64\r\n decodedData = Base64.decode(deCompressedData);\r\n } else {\r\n this.getEncryptionSecret(key);\r\n if (this._isAES) {\r\n bytes = AES.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isDES) {\r\n bytes = DES.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isRabbit) {\r\n bytes = RABBIT.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n } else if (this._isRC4) {\r\n bytes = RC4.decrypt(deCompressedData.toString(), this.utils.encryptionSecret);\r\n }\r\n\r\n if (bytes) {\r\n decodedData = bytes.toString(enc._Utf8);\r\n }\r\n }\r\n\r\n try {\r\n jsonData = JSON.parse(decodedData);\r\n } catch (e) {\r\n throw new Error('Could not parse JSON');\r\n }\r\n\r\n return jsonData;\r\n };\r\n\r\n getDataFromLocalStorage(key) {\r\n return this.ls.getItem(key, true);\r\n };\r\n\r\n getAllKeys() {\r\n let data = this.getMetaData();\r\n\r\n return this.utils.extractKeyNames(data) || [];\r\n };\r\n\r\n set(key, data) {\r\n let dataToStore = '';\r\n\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return;\r\n }\r\n\r\n this.getEncryptionSecret(key);\r\n\r\n // add key(s) to Array if not already added, only for keys other than meta key\r\n if (!(String(key) === String(this.utils.metaKey))) {\r\n if (!this.utils.isKeyPresent(key)) {\r\n this.utils.addToKeysList(key);\r\n this.setMetaData();\r\n }\r\n }\r\n\r\n dataToStore = this.processData(data);\r\n // Store the data to localStorage\r\n this.setDataToLocalStorage(key, dataToStore);\r\n };\r\n\r\n setDataToLocalStorage(key, data) {\r\n this.ls.setItem(key, data);\r\n };\r\n\r\n remove(key) {\r\n if (!this.utils.is(key)) {\r\n this.utils.warn(this.WarningEnum.KEY_NOT_PROVIDED);\r\n return;\r\n }\r\n\r\n if (key === this.utils.metaKey && this.getAllKeys().length) {\r\n this.utils.warn(this.WarningEnum.META_KEY_REMOVE);\r\n return;\r\n }\r\n\r\n if (this.utils.isKeyPresent(key)) {\r\n this.utils.removeFromKeysList(key);\r\n this.setMetaData();\r\n }\r\n this.ls.removeItem(key);\r\n };\r\n\r\n removeAll() {\r\n let keys, i;\r\n\r\n keys = this.getAllKeys();\r\n for (i = 0; i < keys.length; i++) {\r\n this.ls.removeItem(keys[i]);\r\n }\r\n this.ls.removeItem(this.utils.metaKey);\r\n\r\n this.resetAllKeys();\r\n };\r\n\r\n clear() {\r\n this.ls.clear();\r\n this.resetAllKeys();\r\n };\r\n\r\n resetAllKeys() {\r\n this.utils.allKeys = [];\r\n return [];\r\n }\r\n\r\n processData(data, isAllKeysData) {\r\n if (data === null || data === undefined || data === '') {\r\n return '';\r\n }\r\n\r\n let jsonData, encodedData, compressedData;\r\n\r\n try {\r\n jsonData = JSON.stringify(data);\r\n } catch (e) {\r\n throw new Error('Could not stringify data.');\r\n }\r\n\r\n // Encode Based on encoding type\r\n // If not set, default to Base64 for securing data\r\n encodedData = jsonData;\r\n if (this._isBase64 || isAllKeysData) {\r\n encodedData = Base64.encode(jsonData);\r\n } else {\r\n if (this._isAES) {\r\n encodedData = AES.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isDES) {\r\n encodedData = DES.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isRabbit) {\r\n encodedData = RABBIT.encrypt(jsonData, this.utils.encryptionSecret);\r\n } else if (this._isRC4) {\r\n encodedData = RC4.encrypt(jsonData, this.utils.encryptionSecret);\r\n }\r\n\r\n encodedData = encodedData && encodedData.toString();\r\n }\r\n\r\n // Compress data if set to true\r\n compressedData = encodedData;\r\n if (this._isCompression || isAllKeysData) {\r\n compressedData = LZString.compressToUTF16(encodedData);\r\n }\r\n\r\n return compressedData;\r\n };\r\n\r\n setMetaData() {\r\n let dataToStore = this.processData({\r\n keys: this.utils.allKeys\r\n }, true);\r\n\r\n // Store the data to localStorage\r\n this.setDataToLocalStorage(this.getMetaKey(), dataToStore);\r\n };\r\n\r\n getMetaData() {\r\n return this.get(this.getMetaKey(), true) || {};\r\n };\r\n\r\n getMetaKey() {\r\n return this.utils.metaKey + (this.config.encryptionNamespace ? '__' + this.config.encryptionNamespace : '');\r\n }\r\n\r\n};\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/index.js\n **/","import constants from './constants';\r\nimport CryptoJSWordArray from './WordArray';\r\nimport PBKDF2 from 'crypto-js/pbkdf2';\r\n\r\nlet utils = {\r\n metaKey: '_secure__ls__metadata',\r\n encryptionSecret: '',\r\n secretPhrase: 's3cr3t$#@135^&*246',\r\n allKeys: [],\r\n is: function (key) {\r\n if (key) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n warn: function (reason) {\r\n reason = reason ? reason : constants.WarningEnum.DEFAULT_TEXT;\r\n console.warn(constants.WarningTypes[reason]);\r\n },\r\n generateSecretKey: function () {\r\n let salt = CryptoJSWordArray.random(128 / 8);\r\n let key128Bits = PBKDF2(this.secretPhrase, salt, {keySize: 128 / 32 });\r\n\r\n return key128Bits && key128Bits.toString();\r\n },\r\n getObjectFromKey: function (data, key) {\r\n if (!data || !data.length) {\r\n return {};\r\n }\r\n\r\n let i, obj = {};\r\n\r\n for (i = 0; i < data.length; i++) {\r\n if (data[i].k === key) {\r\n obj = data[i];\r\n break;\r\n }\r\n }\r\n\r\n return obj;\r\n },\r\n extractKeyNames: function (data) {\r\n if (!data || !data.keys || !data.keys.length) {\r\n return [];\r\n }\r\n\r\n return data.keys.map(keyData => {\r\n return keyData.k;\r\n });\r\n },\r\n getAllKeys: function () {\r\n return this.allKeys;\r\n },\r\n isKeyPresent: function (key) {\r\n let isKeyAlreadyPresent = false;\r\n\r\n for (let i = 0; i < this.allKeys.length; i++) {\r\n if (String(this.allKeys[i].k) === String(key)) {\r\n isKeyAlreadyPresent = true; // found\r\n break;\r\n }\r\n }\r\n\r\n return isKeyAlreadyPresent;\r\n },\r\n addToKeysList: function (key) {\r\n this.allKeys.push({\r\n k: key,\r\n s: this.encryptionSecret\r\n });\r\n },\r\n removeFromKeysList: function (key) {\r\n let i, index = -1;\r\n\r\n for (i = 0; i < this.allKeys.length; i++) {\r\n if (this.allKeys[i].k === key) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n if (index !== -1) {\r\n this.allKeys.splice(index, 1);\r\n }\r\n return index;\r\n }\r\n};\r\n\r\nmodule.exports = utils;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/utils.js\n **/","let WarningEnum = {\r\n KEY_NOT_PROVIDED: 'keyNotProvided',\r\n META_KEY_REMOVE: 'metaKeyRemove',\r\n DEFAULT_TEXT: 'defaultText'\r\n};\r\n\r\nlet WarningTypes = {};\r\n\r\nWarningTypes[WarningEnum.KEY_NOT_PROVIDED] = 'Secure LS: Key not provided. Aborting operation!';\r\nWarningTypes[WarningEnum.META_KEY_REMOVE] = `Secure LS: Meta key can not be removed\r\nunless all keys created by Secure LS are removed!`;\r\nWarningTypes[WarningEnum.DEFAULT_TEXT] = `Unexpected output`;\r\n\r\nlet constants = {\r\n WarningEnum: WarningEnum,\r\n WarningTypes: WarningTypes,\r\n EncrytionTypes: {\r\n BASE64: 'base64',\r\n AES: 'aes',\r\n DES: 'des',\r\n RABBIT: 'rabbit',\r\n RC4: 'rc4'\r\n }\r\n};\r\n\r\nmodule.exports = constants;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/constants.js\n **/","/*\r\n ES6 compatible port of CryptoJS - WordArray for PBKDF2 password key generation\r\n\r\n Source: https://github.com/brix/crypto-js\r\n LICENSE: MIT\r\n */\r\n\r\nlet CryptoJSWordArray = {};\r\n\r\nCryptoJSWordArray.random = function (nBytes) {\r\n let words = [];\r\n let r = (function (mw) {\r\n let mz = 0x3ade68b1;\r\n let mask = 0xffffffff;\r\n\r\n return function () {\r\n mz = (0x9069 * (mz & 0xFFFF) + (mz >> 0x10)) & mask;\r\n mw = (0x4650 * (mw & 0xFFFF) + (mw >> 0x10)) & mask;\r\n let result = ((mz << 0x10) + mw) & mask;\r\n\r\n result /= 0x100000000;\r\n result += 0.5;\r\n return result * (Math.random() > 0.5 ? 1 : -1);\r\n };\r\n });\r\n\r\n for (let i = 0, rcache; i < nBytes; i += 4) {\r\n let _r = r((rcache || Math.random()) * 0x100000000);\r\n\r\n rcache = _r() * 0x3ade67b7;\r\n words.push((_r() * 0x100000000) | 0);\r\n }\r\n\r\n return new this.Set(words, nBytes);\r\n};\r\n\r\nCryptoJSWordArray.Set = function (words, sigBytes) {\r\n words = this.words = words || [];\r\n\r\n if (sigBytes !== undefined) {\r\n this.sigBytes = sigBytes;\r\n } else {\r\n this.sigBytes = words.length * 8;\r\n }\r\n};\r\n\r\nmodule.exports = CryptoJSWordArray;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/WordArray.js\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/pbkdf2.js\n ** module id = 4\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t /*\n\t * Local polyfil of Object.create\n\t */\n\t var create = Object.create || (function () {\n\t function F() {};\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }())\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var i = 0; i < thatSigBytes; i += 4) {\n\t thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t var r = (function (m_w) {\n\t var m_w = m_w;\n\t var m_z = 0x3ade68b1;\n\t var mask = 0xffffffff;\n\n\t return function () {\n\t m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t var result = ((m_z << 0x10) + m_w) & mask;\n\t result /= 0x100000000;\n\t result += 0.5;\n\t return result * (Math.random() > .5 ? 1 : -1);\n\t }\n\t });\n\n\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t var _r = r((rcache || Math.random()) * 0x100000000);\n\n\t rcache = _r() * 0x3ade67b7;\n\t words.push((_r() * 0x100000000) | 0);\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t var processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/core.js\n ** module id = 5\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/sha1.js\n ** module id = 6\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/hmac.js\n ** module id = 7\n ** module chunks = 0\n **/","/*\r\n ES6 compatible port of CryptoJS - encoding\r\n\r\n Source: https://github.com/brix/crypto-js\r\n LICENSE: MIT\r\n */\r\nlet enc = {};\r\n\r\nenc.Latin1 = {\r\n stringify: (wordArray) => {\r\n // Shortcuts\r\n let words = wordArray.words;\r\n let sigBytes = wordArray.sigBytes;\r\n let latin1Chars = [], i, bite;\r\n\r\n // Convert\r\n for (i = 0; i < sigBytes; i++) {\r\n bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\r\n latin1Chars.push(String.fromCharCode(bite));\r\n }\r\n\r\n return latin1Chars.join('');\r\n }\r\n};\r\n\r\nenc._Utf8 = {\r\n stringify: (wordArray) => {\r\n try {\r\n return decodeURIComponent(escape(enc.Latin1.stringify(wordArray)));\r\n } catch (e) {\r\n throw new Error('Malformed UTF-8 data');\r\n }\r\n }\r\n};\r\n\r\nmodule.exports = enc;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/enc-utf8.js\n **/","let Base64 = {\r\n _keyStr: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\r\n encode: function (e) {\r\n let t = '';\r\n let n, r, i, s, o, u, a;\r\n let f = 0;\r\n\r\n e = Base64._utf8Encode(e);\r\n while (f < e.length) {\r\n n = e.charCodeAt(f++);\r\n r = e.charCodeAt(f++);\r\n i = e.charCodeAt(f++);\r\n s = n >> 2;\r\n o = (n & 3) << 4 | r >> 4;\r\n u = (r & 15) << 2 | i >> 6;\r\n a = i & 63;\r\n if (isNaN(r)) {\r\n u = a = 64;\r\n } else if (isNaN(i)) {\r\n a = 64;\r\n }\r\n t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a);\r\n }\r\n return t;\r\n },\r\n decode: function (e) {\r\n let t = '';\r\n let n, r, i;\r\n let s, o, u, a;\r\n let f = 0;\r\n\r\n e = e.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\r\n while (f < e.length) {\r\n s = this._keyStr.indexOf(e.charAt(f++));\r\n o = this._keyStr.indexOf(e.charAt(f++));\r\n u = this._keyStr.indexOf(e.charAt(f++));\r\n a = this._keyStr.indexOf(e.charAt(f++));\r\n n = s << 2 | o >> 4;\r\n r = (o & 15) << 4 | u >> 2;\r\n i = (u & 3) << 6 | a;\r\n t = t + String.fromCharCode(n);\r\n if (u !== 64) {\r\n t = t + String.fromCharCode(r);\r\n }\r\n if (a !== 64) {\r\n t = t + String.fromCharCode(i);\r\n }\r\n }\r\n t = Base64._utf8Decode(t);\r\n return t;\r\n },\r\n _utf8Encode: function (e) {\r\n e = e.replace(/\\r\\n/g, '\\n');\r\n let t = '';\r\n\r\n for (let n = 0; n < e.length; n++) {\r\n let r = e.charCodeAt(n);\r\n\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n } else if (r > 127 && r < 2048) {\r\n t += String.fromCharCode(r >> 6 | 192);\r\n t += String.fromCharCode(r & 63 | 128);\r\n } else {\r\n t += String.fromCharCode(r >> 12 | 224);\r\n t += String.fromCharCode(r >> 6 & 63 | 128);\r\n t += String.fromCharCode(r & 63 | 128);\r\n }\r\n }\r\n return t;\r\n },\r\n _utf8Decode: function (e) {\r\n let t = '';\r\n let n = 0;\r\n let r, c2, c3;\r\n\r\n r = c2 = 0;\r\n while (n < e.length) {\r\n r = e.charCodeAt(n);\r\n if (r < 128) {\r\n t += String.fromCharCode(r);\r\n n++;\r\n } else if (r > 191 && r < 224) {\r\n c2 = e.charCodeAt(n + 1);\r\n t += String.fromCharCode((r & 31) << 6 | c2 & 63);\r\n n += 2;\r\n } else {\r\n c2 = e.charCodeAt(n + 1);\r\n c3 = e.charCodeAt(n + 2);\r\n t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\r\n n += 3;\r\n }\r\n }\r\n return t;\r\n }\r\n};\r\n\r\nmodule.exports = Base64;\r\n\n\n\n/** WEBPACK FOOTER **\n ** C:/Users/Richard Burkhardt/websites/secure-ls/~/eslint-loader!./src/Base64.js\n **/","// Copyright (c) 2013 Pieroxy \n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/lz-string/libs/lz-string.js\n ** module id = 10\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/aes.js\n ** module id = 11\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/enc-base64.js\n ** module id = 12\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/md5.js\n ** module id = 13\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t var block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/evpkdf.js\n ** module id = 14\n ** module chunks = 0\n **/",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t var block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t var block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t var modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t var modeCreator = mode.createDecryptor;\n\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t var wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t var salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/cipher-core.js\n ** module id = 15\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(keyWords.slice(0, 2)));\n\t this._des2 = DES.createEncryptor(WordArray.create(keyWords.slice(2, 4)));\n\t this._des3 = DES.createEncryptor(WordArray.create(keyWords.slice(4, 6)));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/tripledes.js\n ** module id = 16\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/rabbit.js\n ** module id = 17\n ** module chunks = 0\n **/",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/crypto-js/rc4.js\n ** module id = 18\n ** module chunks = 0\n **/"],"sourceRoot":""} \ No newline at end of file diff --git a/example/aes-compressed-realm.js b/example/aes-compressed-realm.js index 8faa584..999cb43 100644 --- a/example/aes-compressed-realm.js +++ b/example/aes-compressed-realm.js @@ -1,10 +1,10 @@ var data = {data: [{age: 1}, {age: '2'}]}; -var aesCRealm1 = new SecureLS({encodingType: 'aes', encryptionSecret: 'secret1', encryptionRealm: 'realm1'}); +var aesCRealm1 = new SecureLS({encodingType: 'aes', encryptionSecret: 'secret1', encryptionNamespace: 'realm1'}); var key1 = 'aes__compressed_1'; var ae = aesCRealm1.AES.encrypt(JSON.stringify(data), ''); var bde = aesCRealm1.AES.decrypt(ae.toString(), ''); var de = bde.toString(aesCRealm1.enc._Utf8); -var aesCRealm2 = new SecureLS({encodingType: 'aes', encryptionSecret: 'secret2', encryptionRealm: 'realm2'}); +var aesCRealm2 = new SecureLS({encodingType: 'aes', encryptionSecret: 'secret2', encryptionNamespace: 'realm2'}); var key2 = 'aes__compressed_2'; var ae2 = aesCRealm2.AES.encrypt(JSON.stringify(data), ''); var bde2 = aesCRealm2.AES.decrypt(ae2.toString(), ''); diff --git a/src/index.js b/src/index.js index 747abf3..ab9da75 100644 --- a/src/index.js +++ b/src/index.js @@ -27,7 +27,7 @@ export default class SecureLS { isCompression: true, encodingType: constants.EncrytionTypes.BASE64, encryptionSecret: config.encryptionSecret, - encryptionRealm: config.encryptionRealm + encryptionNamespace: config.encryptionNamespace }; this.config.isCompression = typeof config.isCompression !== 'undefined' ? config.isCompression : @@ -298,7 +298,7 @@ export default class SecureLS { }; getMetaKey() { - return this.utils.metaKey + (this.config.encryptionRealm ? '__' + this.config.encryptionRealm : ''); + return this.utils.metaKey + (this.config.encryptionNamespace ? '__' + this.config.encryptionNamespace : ''); } }; diff --git a/test/ls-data-enc-dec.spec.js b/test/ls-data-enc-dec.spec.js index dc8355e..b0788c2 100644 --- a/test/ls-data-enc-dec.spec.js +++ b/test/ls-data-enc-dec.spec.js @@ -404,10 +404,10 @@ describe('Encryption / Decryption Tests ->', () => { let key2 = 'key-2'; let lib1 = new SecureLS({ - encodingType: 'RC4', isCompression: true, encryptionSecret: secret1, encryptionRealm: realm1 + encodingType: 'RC4', isCompression: true, encryptionSecret: secret1, encryptionNamespace: realm1 }); let lib2 = new SecureLS({ - encodingType: 'RC4', isCompression: true, encryptionSecret: secret2, encryptionRealm: realm2 + encodingType: 'RC4', isCompression: true, encryptionSecret: secret2, encryptionNamespace: realm2 }); lib1.ls = mockStorage; From 75449fd7a5f6c794db777864c7c6e41046f656da Mon Sep 17 00:00:00 2001 From: Richard Burkhardt Date: Fri, 11 Jan 2019 11:37:19 +0100 Subject: [PATCH 4/5] fix to include it seamlessly into typescript code. Now WebStorm autoimport works as expected --- dist/secure-ls.d.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dist/secure-ls.d.ts b/dist/secure-ls.d.ts index 0fe3b41..987f024 100644 --- a/dist/secure-ls.d.ts +++ b/dist/secure-ls.d.ts @@ -1,5 +1,7 @@ -export interface SecureLS { - new(config?: { isCompression: boolean, encodingType: string, encryptionSecret: string , encryptionNamespace: string }): SecureLS; +export = SecureLS; + +declare class SecureLS { + constructor(config?: { isCompression?: boolean, encodingType?: string, encryptionSecret?: string , encryptionNamespace?: string }); getEncryptionSecret(): string; get(key: string, isAllKeysData?: boolean): any; getDataFromLocalStorage(key: string): string | null; @@ -14,3 +16,5 @@ export interface SecureLS { setMetaData(): void; getMetaData(): { keys: string[] }; } + +declare namespace SecureLS{} \ No newline at end of file From 2ef486211f5c7588e000b57ca9f8b325f3355a4e Mon Sep 17 00:00:00 2001 From: Richard Burkhardt Date: Fri, 11 Jan 2019 13:19:23 +0100 Subject: [PATCH 5/5] enhanced types to make encryption libs accessible --- dist/secure-ls.d.ts | 23 ++++++++++++++++++++++- package.json | 2 ++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/dist/secure-ls.d.ts b/dist/secure-ls.d.ts index 987f024..06582c1 100644 --- a/dist/secure-ls.d.ts +++ b/dist/secure-ls.d.ts @@ -1,5 +1,8 @@ export = SecureLS; +import * as LZString from 'lz-string'; +import {CipherHelper, Encoder} from 'crypto-js'; + declare class SecureLS { constructor(config?: { isCompression?: boolean, encodingType?: string, encryptionSecret?: string , encryptionNamespace?: string }); getEncryptionSecret(): string; @@ -15,6 +18,24 @@ declare class SecureLS { processData(data: any | string, isAllKeysData: boolean): string; setMetaData(): void; getMetaData(): { keys: string[] }; + + _name: 'secure-ls'; + Base64: SecureLS.Base64; + LZString: LZString.LZStringStatic; + AES: CipherHelper; + DES: CipherHelper; + RABBIT: CipherHelper; + RC4: CipherHelper; + enc: { + Latin1: Encoder; + _Utf8: Encoder; + }; } -declare namespace SecureLS{} \ No newline at end of file +declare namespace SecureLS{ + interface Base64 { + _keyStr: string; + encode(e: string); + decode(e: string); + } +} \ No newline at end of file diff --git a/package.json b/package.json index b49591e..e8f4e29 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,8 @@ "coveralls": "cat ./coverage/lcov.info | node node_modules/.bin/coveralls" }, "devDependencies": { + "@types/crypto-js": "^3.1.43", + "@types/lz-string": "^1.3.32", "babel": "6.3.13", "babel-core": "6.1.18", "babel-eslint": "5.0.0",