{"version":3,"sources":["./node_modules/bcryptjs/dist/bcrypt.js","./src/app/modules/shared/login/login.html","./src/app/modules/Authentication/authentication-routing.module.ts","./src/app/modules/Authentication/authentication.module.ts","./src/app/modules/shared/login/login.component.ts","./src/app/modules/shared/login/login.scss","./src/app/modules/shared/services/password-encryption.service.ts","webpack:///crypto (ignored)?2503"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,IAA6C;AAC/D,QAAQ,iCAAO,EAAE,oCAAE,OAAO;AAAA;AAAA;AAAA,oGAAC;AAC3B,wBAAwB,EAGoD;;AAE5E,CAAC;AACD;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,gBAAgB;AACjC,gBAAgB,MAAM;AACtB;AACA;AACA;AACA,uBAAuB,KAA6B;AACpD;AACA,uBAAuB,mBAAO,CAAC,eAAQ;AACvC,aAAa;AACb;AACA,kBAAkB;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kCAAkC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,iBAAiB,OAAO;AACxB,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;;AAEA;AACA;AACA,eAAe,mCAAmC;AAClD,eAAe,mCAAmC;AAClD,eAAe,0BAA0B;AACzC,iBAAiB,SAAS;AAC1B,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,iBAAiB;AAChC,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,cAAc;AAC7B,eAAe,0BAA0B;AACzC,eAAe,kBAAkB;AACjC;AACA,iBAAiB,SAAS;AAC1B,gBAAgB,MAAM;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,qCAAqC,KAAK;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,QAAQ;AACzB,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,eAAe,0BAA0B;AACzC,eAAe,kBAAkB;AACjC;AACA,iBAAiB,SAAS;AAC1B,gBAAgB,MAAM;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB,gBAAgB,MAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA,eAAe,gBAAgB;AAC/B,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;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,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,UAAU;AAC/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,mCAAmC;AACtD;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA,kCAAkC,aAAa;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,wBAAwB;AAC3C;AACA,mBAAmB,kBAAkB;AACrC,oBAAoB,WAAW;AAC/B,oBAAoB,MAAM;AAC1B;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,mBAAmB,wBAAwB;AAC3C;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,mCAAmC;AACtD;AACA,mBAAmB,kBAAkB;AACrC,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;AACA,4CAA4C,aAAa;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,wBAAwB;AAC3C;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,mBAAmB,wBAAwB;AAC3C;AACA,mBAAmB,kBAAkB;AACrC,oBAAoB,WAAW;AAC/B,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,mBAAmB,OAAO;AAC1B,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA,oBAAoB;AACpB,aAAa;AACb;AACA;;AAEA;AACA,KAAK;;AAEL,uCAAuC,kBAAkB;;AAEzD;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,eAAe;AAC9B,eAAe,OAAO;AACtB,eAAe,eAAe;AAC9B,eAAe,eAAe;AAC9B,iBAAiB;AACjB;AACA;AACA,uCAAuC;AACvC;AACA;AACA;;AAEA;;AAEA;AACA,8CAA8C,MAAM;AACpD;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,eAAe,eAAe;AAC9B,eAAe,OAAO;AACtB,kBAAkB;AAClB;AACA;AACA;AACA,iCAAiC,OAAO;AACxC;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA,eAAe,eAAe;AAC9B,eAAe,eAAe;AAC9B,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,eAAe;AAC9B,eAAe,eAAe;AAC9B,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,eAAe;AAC9B,eAAe,OAAO;AACtB,eAAe,kCAAkC;AACjD;AACA,gBAAgB,kBAAkB;AAClC,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB,yBAAyB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,YAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,2BAA2B,QAAQ;AACnC,+BAA+B,iBAAiB;AAChD;AACA;AACA,2BAA2B,UAAU;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,0BAA0B;AACzC;AACA,gBAAgB,kBAAkB;AAClC,iBAAiB,iBAAiB;AAClC;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,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,eAAe;AAClC,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa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","file":"modules-Authentication-authentication-module.js","sourcesContent":["/*\r\n Copyright (c) 2012 Nevins Bartolomeo \r\n Copyright (c) 2012 Shane Girish \r\n Copyright (c) 2014 Daniel Wirtz \r\n\r\n Redistribution and use in source and binary forms, with or without\r\n modification, are permitted provided that the following conditions\r\n are met:\r\n 1. Redistributions of source code must retain the above copyright\r\n notice, this list of conditions and the following disclaimer.\r\n 2. Redistributions in binary form must reproduce the above copyright\r\n notice, this list of conditions and the following disclaimer in the\r\n documentation and/or other materials provided with the distribution.\r\n 3. The name of the author may not be used to endorse or promote products\r\n derived from this software without specific prior written permission.\r\n\r\n THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR\r\n IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\r\n OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\r\n IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,\r\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\r\n NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\r\n THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n */\r\n\r\n/**\r\n * @license bcrypt.js (c) 2013 Daniel Wirtz \r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/bcrypt.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"bcrypt\"] = factory();\r\n\r\n}(this, function() {\r\n \"use strict\";\r\n\r\n /**\r\n * bcrypt namespace.\r\n * @type {Object.}\r\n */\r\n var bcrypt = {};\r\n\r\n /**\r\n * The random implementation to use as a fallback.\r\n * @type {?function(number):!Array.}\r\n * @inner\r\n */\r\n var randomFallback = null;\r\n\r\n /**\r\n * Generates cryptographically secure random bytes.\r\n * @function\r\n * @param {number} len Bytes length\r\n * @returns {!Array.} Random bytes\r\n * @throws {Error} If no random implementation is available\r\n * @inner\r\n */\r\n function random(len) {\r\n /* node */ if (typeof module !== 'undefined' && module && module['exports'])\r\n try {\r\n return require(\"crypto\")['randomBytes'](len);\r\n } catch (e) {}\r\n /* WCA */ try {\r\n var a; (self['crypto']||self['msCrypto'])['getRandomValues'](a = new Uint32Array(len));\r\n return Array.prototype.slice.call(a);\r\n } catch (e) {}\r\n /* fallback */ if (!randomFallback)\r\n throw Error(\"Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative\");\r\n return randomFallback(len);\r\n }\r\n\r\n // Test if any secure randomness source is available\r\n var randomAvailable = false;\r\n try {\r\n random(1);\r\n randomAvailable = true;\r\n } catch (e) {}\r\n\r\n // Default fallback, if any\r\n randomFallback = null;\r\n /**\r\n * Sets the pseudo random number generator to use as a fallback if neither node's `crypto` module nor the Web Crypto\r\n * API is available. Please note: It is highly important that the PRNG used is cryptographically secure and that it\r\n * is seeded properly!\r\n * @param {?function(number):!Array.} random Function taking the number of bytes to generate as its\r\n * sole argument, returning the corresponding array of cryptographically secure random byte values.\r\n * @see http://nodejs.org/api/crypto.html\r\n * @see http://www.w3.org/TR/WebCryptoAPI/\r\n */\r\n bcrypt.setRandomFallback = function(random) {\r\n randomFallback = random;\r\n };\r\n\r\n /**\r\n * Synchronously generates a salt.\r\n * @param {number=} rounds Number of rounds to use, defaults to 10 if omitted\r\n * @param {number=} seed_length Not supported.\r\n * @returns {string} Resulting salt\r\n * @throws {Error} If a random fallback is required but not set\r\n * @expose\r\n */\r\n bcrypt.genSaltSync = function(rounds, seed_length) {\r\n rounds = rounds || GENSALT_DEFAULT_LOG2_ROUNDS;\r\n if (typeof rounds !== 'number')\r\n throw Error(\"Illegal arguments: \"+(typeof rounds)+\", \"+(typeof seed_length));\r\n if (rounds < 4)\r\n rounds = 4;\r\n else if (rounds > 31)\r\n rounds = 31;\r\n var salt = [];\r\n salt.push(\"$2a$\");\r\n if (rounds < 10)\r\n salt.push(\"0\");\r\n salt.push(rounds.toString());\r\n salt.push('$');\r\n salt.push(base64_encode(random(BCRYPT_SALT_LEN), BCRYPT_SALT_LEN)); // May throw\r\n return salt.join('');\r\n };\r\n\r\n /**\r\n * Asynchronously generates a salt.\r\n * @param {(number|function(Error, string=))=} rounds Number of rounds to use, defaults to 10 if omitted\r\n * @param {(number|function(Error, string=))=} seed_length Not supported.\r\n * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting salt\r\n * @returns {!Promise} If `callback` has been omitted\r\n * @throws {Error} If `callback` is present but not a function\r\n * @expose\r\n */\r\n bcrypt.genSalt = function(rounds, seed_length, callback) {\r\n if (typeof seed_length === 'function')\r\n callback = seed_length,\r\n seed_length = undefined; // Not supported.\r\n if (typeof rounds === 'function')\r\n callback = rounds,\r\n rounds = undefined;\r\n if (typeof rounds === 'undefined')\r\n rounds = GENSALT_DEFAULT_LOG2_ROUNDS;\r\n else if (typeof rounds !== 'number')\r\n throw Error(\"illegal arguments: \"+(typeof rounds));\r\n\r\n function _async(callback) {\r\n nextTick(function() { // Pretty thin, but salting is fast enough\r\n try {\r\n callback(null, bcrypt.genSaltSync(rounds));\r\n } catch (err) {\r\n callback(err);\r\n }\r\n });\r\n }\r\n\r\n if (callback) {\r\n if (typeof callback !== 'function')\r\n throw Error(\"Illegal callback: \"+typeof(callback));\r\n _async(callback);\r\n } else\r\n return new Promise(function(resolve, reject) {\r\n _async(function(err, res) {\r\n if (err) {\r\n reject(err);\r\n return;\r\n }\r\n resolve(res);\r\n });\r\n });\r\n };\r\n\r\n /**\r\n * Synchronously generates a hash for the given string.\r\n * @param {string} s String to hash\r\n * @param {(number|string)=} salt Salt length to generate or salt to use, default to 10\r\n * @returns {string} Resulting hash\r\n * @expose\r\n */\r\n bcrypt.hashSync = function(s, salt) {\r\n if (typeof salt === 'undefined')\r\n salt = GENSALT_DEFAULT_LOG2_ROUNDS;\r\n if (typeof salt === 'number')\r\n salt = bcrypt.genSaltSync(salt);\r\n if (typeof s !== 'string' || typeof salt !== 'string')\r\n throw Error(\"Illegal arguments: \"+(typeof s)+', '+(typeof salt));\r\n return _hash(s, salt);\r\n };\r\n\r\n /**\r\n * Asynchronously generates a hash for the given string.\r\n * @param {string} s String to hash\r\n * @param {number|string} salt Salt length to generate or salt to use\r\n * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting hash\r\n * @param {function(number)=} progressCallback Callback successively called with the percentage of rounds completed\r\n * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.\r\n * @returns {!Promise} If `callback` has been omitted\r\n * @throws {Error} If `callback` is present but not a function\r\n * @expose\r\n */\r\n bcrypt.hash = function(s, salt, callback, progressCallback) {\r\n\r\n function _async(callback) {\r\n if (typeof s === 'string' && typeof salt === 'number')\r\n bcrypt.genSalt(salt, function(err, salt) {\r\n _hash(s, salt, callback, progressCallback);\r\n });\r\n else if (typeof s === 'string' && typeof salt === 'string')\r\n _hash(s, salt, callback, progressCallback);\r\n else\r\n nextTick(callback.bind(this, Error(\"Illegal arguments: \"+(typeof s)+', '+(typeof salt))));\r\n }\r\n\r\n if (callback) {\r\n if (typeof callback !== 'function')\r\n throw Error(\"Illegal callback: \"+typeof(callback));\r\n _async(callback);\r\n } else\r\n return new Promise(function(resolve, reject) {\r\n _async(function(err, res) {\r\n if (err) {\r\n reject(err);\r\n return;\r\n }\r\n resolve(res);\r\n });\r\n });\r\n };\r\n\r\n /**\r\n * Compares two strings of the same length in constant time.\r\n * @param {string} known Must be of the correct length\r\n * @param {string} unknown Must be the same length as `known`\r\n * @returns {boolean}\r\n * @inner\r\n */\r\n function safeStringCompare(known, unknown) {\r\n var right = 0,\r\n wrong = 0;\r\n for (var i=0, k=known.length; i} UTF8 bytes\r\n * @inner\r\n */\r\n function stringToBytes(str) {\r\n var out = [],\r\n i = 0;\r\n utfx.encodeUTF16toUTF8(function() {\r\n if (i >= str.length) return null;\r\n return str.charCodeAt(i++);\r\n }, function(b) {\r\n out.push(b);\r\n });\r\n return out;\r\n }\r\n\r\n // A base64 implementation for the bcrypt algorithm. This is partly non-standard.\r\n\r\n /**\r\n * bcrypt's own non-standard base64 dictionary.\r\n * @type {!Array.}\r\n * @const\r\n * @inner\r\n **/\r\n var BASE64_CODE = \"./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\".split('');\r\n\r\n /**\r\n * @type {!Array.}\r\n * @const\r\n * @inner\r\n **/\r\n var BASE64_INDEX = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,\r\n 1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1,\r\n -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\r\n 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, -1, -1, -1, -1, 28, 29, 30,\r\n 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\r\n 48, 49, 50, 51, 52, 53, -1, -1, -1, -1, -1];\r\n\r\n /**\r\n * @type {!function(...number):string}\r\n * @inner\r\n */\r\n var stringFromCharCode = String.fromCharCode;\r\n\r\n /**\r\n * Encodes a byte array to base64 with up to len bytes of input.\r\n * @param {!Array.} b Byte array\r\n * @param {number} len Maximum input length\r\n * @returns {string}\r\n * @inner\r\n */\r\n function base64_encode(b, len) {\r\n var off = 0,\r\n rs = [],\r\n c1, c2;\r\n if (len <= 0 || len > b.length)\r\n throw Error(\"Illegal len: \"+len);\r\n while (off < len) {\r\n c1 = b[off++] & 0xff;\r\n rs.push(BASE64_CODE[(c1 >> 2) & 0x3f]);\r\n c1 = (c1 & 0x03) << 4;\r\n if (off >= len) {\r\n rs.push(BASE64_CODE[c1 & 0x3f]);\r\n break;\r\n }\r\n c2 = b[off++] & 0xff;\r\n c1 |= (c2 >> 4) & 0x0f;\r\n rs.push(BASE64_CODE[c1 & 0x3f]);\r\n c1 = (c2 & 0x0f) << 2;\r\n if (off >= len) {\r\n rs.push(BASE64_CODE[c1 & 0x3f]);\r\n break;\r\n }\r\n c2 = b[off++] & 0xff;\r\n c1 |= (c2 >> 6) & 0x03;\r\n rs.push(BASE64_CODE[c1 & 0x3f]);\r\n rs.push(BASE64_CODE[c2 & 0x3f]);\r\n }\r\n return rs.join('');\r\n }\r\n\r\n /**\r\n * Decodes a base64 encoded string to up to len bytes of output.\r\n * @param {string} s String to decode\r\n * @param {number} len Maximum output length\r\n * @returns {!Array.}\r\n * @inner\r\n */\r\n function base64_decode(s, len) {\r\n var off = 0,\r\n slen = s.length,\r\n olen = 0,\r\n rs = [],\r\n c1, c2, c3, c4, o, code;\r\n if (len <= 0)\r\n throw Error(\"Illegal len: \"+len);\r\n while (off < slen - 1 && olen < len) {\r\n code = s.charCodeAt(off++);\r\n c1 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\r\n code = s.charCodeAt(off++);\r\n c2 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\r\n if (c1 == -1 || c2 == -1)\r\n break;\r\n o = (c1 << 2) >>> 0;\r\n o |= (c2 & 0x30) >> 4;\r\n rs.push(stringFromCharCode(o));\r\n if (++olen >= len || off >= slen)\r\n break;\r\n code = s.charCodeAt(off++);\r\n c3 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\r\n if (c3 == -1)\r\n break;\r\n o = ((c2 & 0x0f) << 4) >>> 0;\r\n o |= (c3 & 0x3c) >> 2;\r\n rs.push(stringFromCharCode(o));\r\n if (++olen >= len || off >= slen)\r\n break;\r\n code = s.charCodeAt(off++);\r\n c4 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\r\n o = ((c3 & 0x03) << 6) >>> 0;\r\n o |= c4;\r\n rs.push(stringFromCharCode(o));\r\n ++olen;\r\n }\r\n var res = [];\r\n for (off = 0; off\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/utfx for details\r\n */\r\n var utfx = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * utfx namespace.\r\n * @inner\r\n * @type {!Object.}\r\n */\r\n var utfx = {};\r\n\r\n /**\r\n * Maximum valid code point.\r\n * @type {number}\r\n * @const\r\n */\r\n utfx.MAX_CODEPOINT = 0x10FFFF;\r\n\r\n /**\r\n * Encodes UTF8 code points to UTF8 bytes.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte\r\n */\r\n utfx.encodeUTF8 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src,\r\n src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp < 0x80)\r\n dst(cp&0x7F);\r\n else if (cp < 0x800)\r\n dst(((cp>>6)&0x1F)|0xC0),\r\n dst((cp&0x3F)|0x80);\r\n else if (cp < 0x10000)\r\n dst(((cp>>12)&0x0F)|0xE0),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n else\r\n dst(((cp>>18)&0x07)|0xF0),\r\n dst(((cp>>12)&0x3F)|0x80),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes UTF8 bytes to UTF8 code points.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the\r\n * remaining bytes.\r\n */\r\n utfx.decodeUTF8 = function(src, dst) {\r\n var a, b, c, d, fail = function(b) {\r\n b = b.slice(0, b.indexOf(null));\r\n var err = Error(b.toString());\r\n err.name = \"TruncatedError\";\r\n err['bytes'] = b;\r\n throw err;\r\n };\r\n while ((a = src()) !== null) {\r\n if ((a&0x80) === 0)\r\n dst(a);\r\n else if ((a&0xE0) === 0xC0)\r\n ((b = src()) === null) && fail([a, b]),\r\n dst(((a&0x1F)<<6) | (b&0x3F));\r\n else if ((a&0xF0) === 0xE0)\r\n ((b=src()) === null || (c=src()) === null) && fail([a, b, c]),\r\n dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F));\r\n else if ((a&0xF8) === 0xF0)\r\n ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]),\r\n dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F));\r\n else throw RangeError(\"Illegal starting byte: \"+a);\r\n }\r\n };\r\n\r\n /**\r\n * Converts UTF16 characters to UTF8 code points.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each converted code\r\n * point.\r\n */\r\n utfx.UTF16toUTF8 = function(src, dst) {\r\n var c1, c2 = null;\r\n while (true) {\r\n if ((c1 = c2 !== null ? c2 : src()) === null)\r\n break;\r\n if (c1 >= 0xD800 && c1 <= 0xDFFF) {\r\n if ((c2 = src()) !== null) {\r\n if (c2 >= 0xDC00 && c2 <= 0xDFFF) {\r\n dst((c1-0xD800)*0x400+c2-0xDC00+0x10000);\r\n c2 = null; continue;\r\n }\r\n }\r\n }\r\n dst(c1);\r\n }\r\n if (c2 !== null) dst(c2);\r\n };\r\n\r\n /**\r\n * Converts UTF8 code points to UTF16 characters.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a code point is out of range\r\n */\r\n utfx.UTF8toUTF16 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src, src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp <= 0xFFFF)\r\n dst(cp);\r\n else\r\n cp -= 0x10000,\r\n dst((cp>>10)+0xD800),\r\n dst((cp%0x400)+0xDC00);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Converts and encodes UTF16 characters to UTF8 bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`\r\n * if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n */\r\n utfx.encodeUTF16toUTF8 = function(src, dst) {\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n utfx.encodeUTF8(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Decodes and converts UTF8 bytes to UTF16 characters.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.\r\n */\r\n utfx.decodeUTF8toUTF16 = function(src, dst) {\r\n utfx.decodeUTF8(src, function(cp) {\r\n utfx.UTF8toUTF16(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an UTF8 code point.\r\n * @param {number} cp UTF8 code point\r\n * @returns {number} Byte length\r\n */\r\n utfx.calculateCodePoint = function(cp) {\r\n return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes required to store UTF8 code points.\r\n * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively\r\n * `null` if there are no more code points left.\r\n * @returns {number} The number of UTF8 bytes required\r\n */\r\n utfx.calculateUTF8 = function(src) {\r\n var cp, l=0;\r\n while ((cp = src()) !== null)\r\n l += utfx.calculateCodePoint(cp);\r\n return l;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.\r\n * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @returns {!Array.} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.\r\n */\r\n utfx.calculateUTF16asUTF8 = function(src) {\r\n var n=0, l=0;\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n ++n; l += utfx.calculateCodePoint(cp);\r\n });\r\n return [n,l];\r\n };\r\n\r\n return utfx;\r\n }();\r\n\r\n Date.now = Date.now || function() { return +new Date; };\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var BCRYPT_SALT_LEN = 16;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var GENSALT_DEFAULT_LOG2_ROUNDS = 10;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var BLOWFISH_NUM_ROUNDS = 16;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var MAX_EXECUTION_TIME = 100;\r\n\r\n /**\r\n * @type {Array.}\r\n * @const\r\n * @inner\r\n */\r\n var P_ORIG = [\r\n 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822,\r\n 0x299f31d0, 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377,\r\n 0xbe5466cf, 0x34e90c6c, 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5,\r\n 0xb5470917, 0x9216d5d9, 0x8979fb1b\r\n ];\r\n\r\n /**\r\n * @type {Array.}\r\n * @const\r\n * @inner\r\n */\r\n var S_ORIG = [\r\n 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed,\r\n 0x6a267e96, 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7,\r\n 0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69, 0xa458fea3,\r\n 0xf4933d7e, 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,\r\n 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, 0xc5d1b023,\r\n 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,\r\n 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda,\r\n 0x55605c60, 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,\r\n 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, 0xa15486af,\r\n 0x7c72e993, 0xb3ee1411, 0x636fbc2a, 0x2ba9c55d, 0x741831f6,\r\n 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, 0x7a325381,\r\n 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,\r\n 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d,\r\n 0xe98575b1, 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5,\r\n 0x0f6d6ff3, 0x83f44239, 0x2e0b4482, 0xa4842004, 0x69c8f04a,\r\n 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,\r\n 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, 0x6eef0b6c,\r\n 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,\r\n 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3,\r\n 0x3b8b5ebe, 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,\r\n 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, 0x37d0d724,\r\n 0xd00a1248, 0xdb0fead3, 0x49f1c09b, 0x075372c9, 0x80991b7b,\r\n 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, 0x976ce0bd,\r\n 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,\r\n 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f,\r\n 0x9b30952c, 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd,\r\n 0x660f2807, 0x192e4bb3, 0xc0cba857, 0x45c8740f, 0xd20b5f39,\r\n 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,\r\n 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, 0x3c7516df,\r\n 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,\r\n 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e,\r\n 0xdf1769db, 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,\r\n 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98,\r\n 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, 0x9a53e479, 0xb6f84565,\r\n 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341,\r\n 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,\r\n 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0,\r\n 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64,\r\n 0x8888b812, 0x900df01c, 0x4fad5ea0, 0x688fc31c, 0xd1cff191,\r\n 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,\r\n 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, 0xb4a84fe0,\r\n 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,\r\n 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5,\r\n 0xfb9d35cf, 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,\r\n 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, 0x2464369b,\r\n 0xf009b91e, 0x5563911d, 0x59dfa6aa, 0x78c14389, 0xd95a537f,\r\n 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, 0x11c81968,\r\n 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,\r\n 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5,\r\n 0x571be91f, 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6,\r\n 0xff34052e, 0xc5855664, 0x53b02d5d, 0xa99f8fa1, 0x08ba4799,\r\n 0x6e85076a, 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,\r\n 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, 0xecaa8c71,\r\n 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29,\r\n 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, 0x6b8fe4d6,\r\n 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,\r\n 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f,\r\n 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286,\r\n 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec,\r\n 0x5716f2b8, 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,\r\n 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, 0xd19113f9,\r\n 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc,\r\n 0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e,\r\n 0xa4751e41, 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,\r\n 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, 0x2cb81290,\r\n 0x24977c79, 0x5679b072, 0xbcaf89af, 0xde9a771f, 0xd9930810,\r\n 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6,\r\n 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,\r\n 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847,\r\n 0x3215d908, 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451,\r\n 0x50940002, 0x133ae4dd, 0x71dff89e, 0x10314e55, 0x81ac77d6,\r\n 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,\r\n 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570,\r\n 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa,\r\n 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978,\r\n 0x9c10b36a, 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,\r\n 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, 0x5223a708,\r\n 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883,\r\n 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, 0x65582185,\r\n 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,\r\n 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830,\r\n 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239,\r\n 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7, 0x9cab5cab,\r\n 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,\r\n 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, 0x9b540b19,\r\n 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77,\r\n 0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1,\r\n 0x7858ba99, 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,\r\n 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef,\r\n 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, 0x5d4a14d9, 0xe864b7e3,\r\n 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15,\r\n 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,\r\n 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2,\r\n 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492,\r\n 0x47848a0b, 0x5692b285, 0x095bbf00, 0xad19489d, 0x1462b174,\r\n 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,\r\n 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759,\r\n 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e,\r\n 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc,\r\n 0x800bcadc, 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,\r\n 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, 0xc5c43465,\r\n 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a,\r\n 0xe6e39f2b, 0xdb83adf7, 0xe93d5a68, 0x948140f7, 0xf64c261c,\r\n 0x94692934, 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,\r\n 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, 0x1e39f62e,\r\n 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af,\r\n 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0,\r\n 0x31cb8504, 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,\r\n 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, 0x68dc1462,\r\n 0xd7486900, 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c,\r\n 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, 0xce78a399,\r\n 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,\r\n 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74,\r\n 0xdd5b4332, 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397,\r\n 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7,\r\n 0xd096954b, 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,\r\n 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, 0xfdf8e802,\r\n 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22,\r\n 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4,\r\n 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,\r\n 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2,\r\n 0x02e1329e, 0xaf664fd1, 0xcad18115, 0x6b2395e0, 0x333e92e1,\r\n 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, 0xde720c8c,\r\n 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,\r\n 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341,\r\n 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8,\r\n 0x991be14c, 0xdb6e6b0d, 0xc67b5510, 0x6d672c37, 0x2765d43b,\r\n 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,\r\n 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, 0xbb132f88,\r\n 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979,\r\n 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc,\r\n 0x782ef11c, 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,\r\n 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, 0x44421659,\r\n 0x0a121386, 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f,\r\n 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, 0x60787bf8,\r\n 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,\r\n 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be,\r\n 0xbde8ae24, 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2,\r\n 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255,\r\n 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,\r\n 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, 0xb90bace1,\r\n 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09,\r\n 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025,\r\n 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,\r\n 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01,\r\n 0xa70683fa, 0xa002b5c4, 0x0de6d027, 0x9af88c27, 0x773f8641,\r\n 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, 0x006058aa,\r\n 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,\r\n 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409,\r\n 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9,\r\n 0x1ac15bb4, 0xd39eb8fc, 0xed545578, 0x08fca5b5, 0xd83d7cd3,\r\n 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,\r\n 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, 0xd79a3234,\r\n 0x92638212, 0x670efa8e, 0x406000e0, 0x3a39ce37, 0xd3faf5cf,\r\n 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, 0xd3822740,\r\n 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,\r\n 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f,\r\n 0xbc946e79, 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d,\r\n 0xd5730a1d, 0x4cd04dc6, 0x2939bbdb, 0xa9ba4650, 0xac9526e8,\r\n 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,\r\n 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, 0x83c061ba,\r\n 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,\r\n 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69,\r\n 0x77fa0a59, 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,\r\n 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a,\r\n 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, 0x1f9f25cf, 0xadf2b89b,\r\n 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, 0x47b0acfd,\r\n 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,\r\n 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4,\r\n 0x88f46dba, 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2,\r\n 0x97271aec, 0xa93a072a, 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb,\r\n 0x26dcf319, 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,\r\n 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, 0x4de81751,\r\n 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,\r\n 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369,\r\n 0x6413e680, 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,\r\n 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd,\r\n 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, 0xdda26a7e, 0x3a59ff45,\r\n 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, 0x8d6612ae,\r\n 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,\r\n 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08,\r\n 0x4eb4e2cc, 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d,\r\n 0x06b89fb4, 0xce6ea048, 0x6f3f3b82, 0x3520ab82, 0x011a1d4b,\r\n 0x277227f8, 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,\r\n 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, 0xe01cc87e,\r\n 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,\r\n 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c,\r\n 0xe0b12b4f, 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,\r\n 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, 0xfae59361,\r\n 0xceb69ceb, 0xc2a86459, 0x12baa8d1, 0xb6c1075e, 0xe3056a0c,\r\n 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be,\r\n 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,\r\n 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d,\r\n 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891,\r\n 0xce6279cf, 0xcd3e7e6f, 0x1618b166, 0xfd2c1d05, 0x848fd2c5,\r\n 0xf6fb2299, 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,\r\n 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, 0xde966292,\r\n 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,\r\n 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2,\r\n 0x35bdd2f6, 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,\r\n 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, 0xba38209c,\r\n 0xf746ce76, 0x77afa1c5, 0x20756060, 0x85cbfe4e, 0x8ae88dd8,\r\n 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, 0x01c36ae4,\r\n 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,\r\n 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6\r\n ];\r\n\r\n /**\r\n * @type {Array.}\r\n * @const\r\n * @inner\r\n */\r\n var C_ORIG = [\r\n 0x4f727068, 0x65616e42, 0x65686f6c, 0x64657253, 0x63727944,\r\n 0x6f756274\r\n ];\r\n\r\n /**\r\n * @param {Array.} lr\r\n * @param {number} off\r\n * @param {Array.} P\r\n * @param {Array.} S\r\n * @returns {Array.}\r\n * @inner\r\n */\r\n function _encipher(lr, off, P, S) { // This is our bottleneck: 1714/1905 ticks / 90% - see profile.txt\r\n var n,\r\n l = lr[off],\r\n r = lr[off + 1];\r\n\r\n l ^= P[0];\r\n\r\n /*\r\n for (var i=0, k=BLOWFISH_NUM_ROUNDS-2; i<=k;)\r\n // Feistel substitution on left word\r\n n = S[l >>> 24],\r\n n += S[0x100 | ((l >> 16) & 0xff)],\r\n n ^= S[0x200 | ((l >> 8) & 0xff)],\r\n n += S[0x300 | (l & 0xff)],\r\n r ^= n ^ P[++i],\r\n // Feistel substitution on right word\r\n n = S[r >>> 24],\r\n n += S[0x100 | ((r >> 16) & 0xff)],\r\n n ^= S[0x200 | ((r >> 8) & 0xff)],\r\n n += S[0x300 | (r & 0xff)],\r\n l ^= n ^ P[++i];\r\n */\r\n\r\n //The following is an unrolled version of the above loop.\r\n //Iteration 0\r\n n = S[l >>> 24];\r\n n += S[0x100 | ((l >> 16) & 0xff)];\r\n n ^= S[0x200 | ((l >> 8) & 0xff)];\r\n n += S[0x300 | (l & 0xff)];\r\n r ^= n ^ P[1];\r\n n = S[r >>> 24];\r\n n += S[0x100 | ((r >> 16) & 0xff)];\r\n n ^= S[0x200 | ((r >> 8) & 0xff)];\r\n n += S[0x300 | (r & 0xff)];\r\n l ^= n ^ P[2];\r\n //Iteration 1\r\n n = S[l >>> 24];\r\n n += S[0x100 | ((l >> 16) & 0xff)];\r\n n ^= S[0x200 | ((l >> 8) & 0xff)];\r\n n += S[0x300 | (l & 0xff)];\r\n r ^= n ^ P[3];\r\n n = S[r >>> 24];\r\n n += S[0x100 | ((r >> 16) & 0xff)];\r\n n ^= S[0x200 | ((r >> 8) & 0xff)];\r\n n += S[0x300 | (r & 0xff)];\r\n l ^= n ^ P[4];\r\n //Iteration 2\r\n n = S[l >>> 24];\r\n n += S[0x100 | ((l >> 16) & 0xff)];\r\n n ^= S[0x200 | ((l >> 8) & 0xff)];\r\n n += S[0x300 | (l & 0xff)];\r\n r ^= n ^ P[5];\r\n n = S[r >>> 24];\r\n n += S[0x100 | ((r >> 16) & 0xff)];\r\n n ^= S[0x200 | ((r >> 8) & 0xff)];\r\n n += S[0x300 | (r & 0xff)];\r\n l ^= n ^ P[6];\r\n //Iteration 3\r\n n = S[l >>> 24];\r\n n += S[0x100 | ((l >> 16) & 0xff)];\r\n n ^= S[0x200 | ((l >> 8) & 0xff)];\r\n n += S[0x300 | (l & 0xff)];\r\n r ^= n ^ P[7];\r\n n = S[r >>> 24];\r\n n += S[0x100 | ((r >> 16) & 0xff)];\r\n n ^= S[0x200 | ((r >> 8) & 0xff)];\r\n n += S[0x300 | (r & 0xff)];\r\n l ^= n ^ P[8];\r\n //Iteration 4\r\n n = S[l >>> 24];\r\n n += S[0x100 | ((l >> 16) & 0xff)];\r\n n ^= S[0x200 | ((l >> 8) & 0xff)];\r\n n += S[0x300 | (l & 0xff)];\r\n r ^= n ^ P[9];\r\n n = S[r >>> 24];\r\n n += S[0x100 | ((r >> 16) & 0xff)];\r\n n ^= S[0x200 | ((r >> 8) & 0xff)];\r\n n += S[0x300 | (r & 0xff)];\r\n l ^= n ^ P[10];\r\n //Iteration 5\r\n n = S[l >>> 24];\r\n n += S[0x100 | ((l >> 16) & 0xff)];\r\n n ^= S[0x200 | ((l >> 8) & 0xff)];\r\n n += S[0x300 | (l & 0xff)];\r\n r ^= n ^ P[11];\r\n n = S[r >>> 24];\r\n n += S[0x100 | ((r >> 16) & 0xff)];\r\n n ^= S[0x200 | ((r >> 8) & 0xff)];\r\n n += S[0x300 | (r & 0xff)];\r\n l ^= n ^ P[12];\r\n //Iteration 6\r\n n = S[l >>> 24];\r\n n += S[0x100 | ((l >> 16) & 0xff)];\r\n n ^= S[0x200 | ((l >> 8) & 0xff)];\r\n n += S[0x300 | (l & 0xff)];\r\n r ^= n ^ P[13];\r\n n = S[r >>> 24];\r\n n += S[0x100 | ((r >> 16) & 0xff)];\r\n n ^= S[0x200 | ((r >> 8) & 0xff)];\r\n n += S[0x300 | (r & 0xff)];\r\n l ^= n ^ P[14];\r\n //Iteration 7\r\n n = S[l >>> 24];\r\n n += S[0x100 | ((l >> 16) & 0xff)];\r\n n ^= S[0x200 | ((l >> 8) & 0xff)];\r\n n += S[0x300 | (l & 0xff)];\r\n r ^= n ^ P[15];\r\n n = S[r >>> 24];\r\n n += S[0x100 | ((r >> 16) & 0xff)];\r\n n ^= S[0x200 | ((r >> 8) & 0xff)];\r\n n += S[0x300 | (r & 0xff)];\r\n l ^= n ^ P[16];\r\n\r\n lr[off] = r ^ P[BLOWFISH_NUM_ROUNDS + 1];\r\n lr[off + 1] = l;\r\n return lr;\r\n }\r\n\r\n /**\r\n * @param {Array.} data\r\n * @param {number} offp\r\n * @returns {{key: number, offp: number}}\r\n * @inner\r\n */\r\n function _streamtoword(data, offp) {\r\n for (var i = 0, word = 0; i < 4; ++i)\r\n word = (word << 8) | (data[offp] & 0xff),\r\n offp = (offp + 1) % data.length;\r\n return { key: word, offp: offp };\r\n }\r\n\r\n /**\r\n * @param {Array.} key\r\n * @param {Array.} P\r\n * @param {Array.} S\r\n * @inner\r\n */\r\n function _key(key, P, S) {\r\n var offset = 0,\r\n lr = [0, 0],\r\n plen = P.length,\r\n slen = S.length,\r\n sw;\r\n for (var i = 0; i < plen; i++)\r\n sw = _streamtoword(key, offset),\r\n offset = sw.offp,\r\n P[i] = P[i] ^ sw.key;\r\n for (i = 0; i < plen; i += 2)\r\n lr = _encipher(lr, 0, P, S),\r\n P[i] = lr[0],\r\n P[i + 1] = lr[1];\r\n for (i = 0; i < slen; i += 2)\r\n lr = _encipher(lr, 0, P, S),\r\n S[i] = lr[0],\r\n S[i + 1] = lr[1];\r\n }\r\n\r\n /**\r\n * Expensive key schedule Blowfish.\r\n * @param {Array.} data\r\n * @param {Array.} key\r\n * @param {Array.} P\r\n * @param {Array.} S\r\n * @inner\r\n */\r\n function _ekskey(data, key, P, S) {\r\n var offp = 0,\r\n lr = [0, 0],\r\n plen = P.length,\r\n slen = S.length,\r\n sw;\r\n for (var i = 0; i < plen; i++)\r\n sw = _streamtoword(key, offp),\r\n offp = sw.offp,\r\n P[i] = P[i] ^ sw.key;\r\n offp = 0;\r\n for (i = 0; i < plen; i += 2)\r\n sw = _streamtoword(data, offp),\r\n offp = sw.offp,\r\n lr[0] ^= sw.key,\r\n sw = _streamtoword(data, offp),\r\n offp = sw.offp,\r\n lr[1] ^= sw.key,\r\n lr = _encipher(lr, 0, P, S),\r\n P[i] = lr[0],\r\n P[i + 1] = lr[1];\r\n for (i = 0; i < slen; i += 2)\r\n sw = _streamtoword(data, offp),\r\n offp = sw.offp,\r\n lr[0] ^= sw.key,\r\n sw = _streamtoword(data, offp),\r\n offp = sw.offp,\r\n lr[1] ^= sw.key,\r\n lr = _encipher(lr, 0, P, S),\r\n S[i] = lr[0],\r\n S[i + 1] = lr[1];\r\n }\r\n\r\n /**\r\n * Internaly crypts a string.\r\n * @param {Array.} b Bytes to crypt\r\n * @param {Array.} salt Salt bytes to use\r\n * @param {number} rounds Number of rounds\r\n * @param {function(Error, Array.=)=} callback Callback receiving the error, if any, and the resulting bytes. If\r\n * omitted, the operation will be performed synchronously.\r\n * @param {function(number)=} progressCallback Callback called with the current progress\r\n * @returns {!Array.|undefined} Resulting bytes if callback has been omitted, otherwise `undefined`\r\n * @inner\r\n */\r\n function _crypt(b, salt, rounds, callback, progressCallback) {\r\n var cdata = C_ORIG.slice(),\r\n clen = cdata.length,\r\n err;\r\n\r\n // Validate\r\n if (rounds < 4 || rounds > 31) {\r\n err = Error(\"Illegal number of rounds (4-31): \"+rounds);\r\n if (callback) {\r\n nextTick(callback.bind(this, err));\r\n return;\r\n } else\r\n throw err;\r\n }\r\n if (salt.length !== BCRYPT_SALT_LEN) {\r\n err =Error(\"Illegal salt length: \"+salt.length+\" != \"+BCRYPT_SALT_LEN);\r\n if (callback) {\r\n nextTick(callback.bind(this, err));\r\n return;\r\n } else\r\n throw err;\r\n }\r\n rounds = (1 << rounds) >>> 0;\r\n\r\n var P, S, i = 0, j;\r\n\r\n //Use typed arrays when available - huge speedup!\r\n if (Int32Array) {\r\n P = new Int32Array(P_ORIG);\r\n S = new Int32Array(S_ORIG);\r\n } else {\r\n P = P_ORIG.slice();\r\n S = S_ORIG.slice();\r\n }\r\n\r\n _ekskey(salt, b, P, S);\r\n\r\n /**\r\n * Calcualtes the next round.\r\n * @returns {Array.|undefined} Resulting array if callback has been omitted, otherwise `undefined`\r\n * @inner\r\n */\r\n function next() {\r\n if (progressCallback)\r\n progressCallback(i / rounds);\r\n if (i < rounds) {\r\n var start = Date.now();\r\n for (; i < rounds;) {\r\n i = i + 1;\r\n _key(b, P, S);\r\n _key(salt, P, S);\r\n if (Date.now() - start > MAX_EXECUTION_TIME)\r\n break;\r\n }\r\n } else {\r\n for (i = 0; i < 64; i++)\r\n for (j = 0; j < (clen >> 1); j++)\r\n _encipher(cdata, j << 1, P, S);\r\n var ret = [];\r\n for (i = 0; i < clen; i++)\r\n ret.push(((cdata[i] >> 24) & 0xff) >>> 0),\r\n ret.push(((cdata[i] >> 16) & 0xff) >>> 0),\r\n ret.push(((cdata[i] >> 8) & 0xff) >>> 0),\r\n ret.push((cdata[i] & 0xff) >>> 0);\r\n if (callback) {\r\n callback(null, ret);\r\n return;\r\n } else\r\n return ret;\r\n }\r\n if (callback)\r\n nextTick(next);\r\n }\r\n\r\n // Async\r\n if (typeof callback !== 'undefined') {\r\n next();\r\n\r\n // Sync\r\n } else {\r\n var res;\r\n while (true)\r\n if (typeof(res = next()) !== 'undefined')\r\n return res || [];\r\n }\r\n }\r\n\r\n /**\r\n * Internally hashes a string.\r\n * @param {string} s String to hash\r\n * @param {?string} salt Salt to use, actually never null\r\n * @param {function(Error, string=)=} callback Callback receiving the error, if any, and the resulting hash. If omitted,\r\n * hashing is perormed synchronously.\r\n * @param {function(number)=} progressCallback Callback called with the current progress\r\n * @returns {string|undefined} Resulting hash if callback has been omitted, otherwise `undefined`\r\n * @inner\r\n */\r\n function _hash(s, salt, callback, progressCallback) {\r\n var err;\r\n if (typeof s !== 'string' || typeof salt !== 'string') {\r\n err = Error(\"Invalid string / salt: Not a string\");\r\n if (callback) {\r\n nextTick(callback.bind(this, err));\r\n return;\r\n }\r\n else\r\n throw err;\r\n }\r\n\r\n // Validate the salt\r\n var minor, offset;\r\n if (salt.charAt(0) !== '$' || salt.charAt(1) !== '2') {\r\n err = Error(\"Invalid salt version: \"+salt.substring(0,2));\r\n if (callback) {\r\n nextTick(callback.bind(this, err));\r\n return;\r\n }\r\n else\r\n throw err;\r\n }\r\n if (salt.charAt(2) === '$')\r\n minor = String.fromCharCode(0),\r\n offset = 3;\r\n else {\r\n minor = salt.charAt(2);\r\n if ((minor !== 'a' && minor !== 'b' && minor !== 'y') || salt.charAt(3) !== '$') {\r\n err = Error(\"Invalid salt revision: \"+salt.substring(2,4));\r\n if (callback) {\r\n nextTick(callback.bind(this, err));\r\n return;\r\n } else\r\n throw err;\r\n }\r\n offset = 4;\r\n }\r\n\r\n // Extract number of rounds\r\n if (salt.charAt(offset + 2) > '$') {\r\n err = Error(\"Missing salt rounds\");\r\n if (callback) {\r\n nextTick(callback.bind(this, err));\r\n return;\r\n } else\r\n throw err;\r\n }\r\n var r1 = parseInt(salt.substring(offset, offset + 1), 10) * 10,\r\n r2 = parseInt(salt.substring(offset + 1, offset + 2), 10),\r\n rounds = r1 + r2,\r\n real_salt = salt.substring(offset + 3, offset + 25);\r\n s += minor >= 'a' ? \"\\x00\" : \"\";\r\n\r\n var passwordb = stringToBytes(s),\r\n saltb = base64_decode(real_salt, BCRYPT_SALT_LEN);\r\n\r\n /**\r\n * Finishes hashing.\r\n * @param {Array.} bytes Byte array\r\n * @returns {string}\r\n * @inner\r\n */\r\n function finish(bytes) {\r\n var res = [];\r\n res.push(\"$2\");\r\n if (minor >= 'a')\r\n res.push(minor);\r\n res.push(\"$\");\r\n if (rounds < 10)\r\n res.push(\"0\");\r\n res.push(rounds.toString());\r\n res.push(\"$\");\r\n res.push(base64_encode(saltb, saltb.length));\r\n res.push(base64_encode(bytes, C_ORIG.length * 4 - 1));\r\n return res.join('');\r\n }\r\n\r\n // Sync\r\n if (typeof callback == 'undefined')\r\n return finish(_crypt(passwordb, saltb, rounds));\r\n\r\n // Async\r\n else {\r\n _crypt(passwordb, saltb, rounds, function(err, bytes) {\r\n if (err)\r\n callback(err, null);\r\n else\r\n callback(null, finish(bytes));\r\n }, progressCallback);\r\n }\r\n }\r\n\r\n /**\r\n * Encodes a byte array to base64 with up to len bytes of input, using the custom bcrypt alphabet.\r\n * @function\r\n * @param {!Array.} b Byte array\r\n * @param {number} len Maximum input length\r\n * @returns {string}\r\n * @expose\r\n */\r\n bcrypt.encodeBase64 = base64_encode;\r\n\r\n /**\r\n * Decodes a base64 encoded string to up to len bytes of output, using the custom bcrypt alphabet.\r\n * @function\r\n * @param {string} s String to decode\r\n * @param {number} len Maximum output length\r\n * @returns {!Array.}\r\n * @expose\r\n */\r\n bcrypt.decodeBase64 = base64_decode;\r\n\r\n return bcrypt;\r\n}));\r\n","export default \"
\\n
\\n
\\n
\\\"\\\"
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n

Welcome!

\\n

Login to your account

\\n
\\n \\n
\\n
\\n \\n
\\n User\\n ID\\n is required!\\n User\\n ID\\n is required!\\n User\\n ID\\n is invalid!\\n
\\n
\\n \\n
\\n
\\n \\n
\\n \\n \\n\\n \\n
\\n
\\n
\\n \\n \\n \\n Are you a robot?\\n \\n
\\n\\n
\\n\\n \\n\\n \\n\\n
\\n\\n \\n Password\\n is required!\\n Password\\n is required!\\n\\n
\\n
\\n \\n
\\n
\\n
OR\\n \\n
\\n
\\n
\\n
\\n
\\n
Powered by
\\n
\\n
\"","import { AuthGuardService } from 'src/app/core/guards/auth-guard.service';\nimport { Routes, RouterModule } from '@angular/router';\nimport { NgModule } from '@angular/core';\nimport { LoginComponent } from '../shared/login/login.component';\nimport { SetNewPasswordComponent } from './set-new-password/set-new-password.component';\n\nconst routes: Routes = [\n {\n path: '',\n redirectTo: 'login',\n pathMatch: 'full'\n },\n {\n path: 'login',\n component: LoginComponent\n },\n {\n path: 'forgot-password',\n loadChildren: () => import('./forget-password/forget-password.module').then(m => m.ForgetPasswordModule)\n },\n // {\n // path: 'resetPassword',\n // loadChildren: () => import('./reset-password/reset-password.module').then(m => m.ResetPasswordModule)\n // },\n {\n path: 'resetPassword',\n loadChildren: () => import('./reset-password/reset-password.module').then(m => m.ResetPasswordModule)\n },\n // {\n // path:'set-new-password/:token',component:SetNewPasswordComponent,\n // },\n // {\n // path: 'customer/customer-onboarding-form',\n // loadChildren: () => import('../customer/customer.module').then(m => m.CustomerModule)\n // },\n {\n path: 'resetPasswordLinkSuccess',\n loadChildren: () => import('./reset-password-link-success/reset-password-link-success.module')\n .then(m => m.ResetPasswordLinkSuccessModule),\n canActivate: [AuthGuardService]\n },\n {\n path: 'urlExpired',\n loadChildren: () => import('./url-expired/url-expired.module').then(m => m.UrlExpiredModule),\n canActivate: [AuthGuardService]\n },\n {\n path: '**',\n redirectTo: 'admin/dashboard'\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\n\nexport class AuthenticationRoutingModule { }\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { AuthenticationRoutingModule } from './authentication-routing.module';\nimport { SharedModule } from 'src/app/modules/shared/shared.module';\nimport { LoginComponent } from '../shared/login/login.component';\n// import { ChangePasswordComponent } from './change-password/change-password.component';\n// import { SetNewPasswordComponent } from './set-new-password/set-new-password.component';\n\n\n@NgModule({\n declarations: [\n LoginComponent,\n // ChangePasswordComponent,\n // SetNewPasswordComponent,\n ],\n imports: [\n CommonModule,\n AuthenticationRoutingModule,\n SharedModule\n ],\n exports:[\n\n ]\n})\nexport class AuthenticationModule{\n\n}\n","import { interval } from 'rxjs';\nimport { HttpHeaders } from '@angular/common/http';\nimport { Component, ElementRef, OnInit, ViewChild, OnDestroy } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, FormGroupDirective, NgForm, Validators } from '@angular/forms';\nimport { MatDialog, MatSnackBar } from '@angular/material';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { Router } from '@angular/router';\nimport { ToastContainerDirective, ToastrService } from 'ngx-toastr';\nimport { login } from 'src/app/config/enum';\nimport { CommonServiceService } from '../../../../../src/app/core/common-service.service';\nimport { HttpHandlerProvider } from 'src/app/core/http-handler.provider';\nimport { LoaderService } from 'src/app/modules/shared/services/loader.service';\nimport { PasswordEncryptionService } from '../services/password-encryption.service';\nimport { ToastService } from '../services/toaster.service';\nimport { LoginService } from './service/login.service';\nimport { ErrorToasterComponent } from '../component/error-toaster/error-toaster.component';\nimport { SuccessDialogComponent } from '../../shared/component/success-dialog/success-dialog';\nimport { MessagingService } from \"../../shared/services/messaging.service\";\nimport { environment } from '../../../config/environments/environment';\nimport { normalize } from 'path';\nimport { Categories } from 'src/app/config/constant';\nimport { EntityServiceService } from '../../admin/modules/Entity/service/entity-service.service';\nimport { MsalUserServiceService } from '../msal-user-service.service';\nimport { stringify } from '@angular/compiler/src/util';\nimport moment from 'moment-timezone';\n\n// import { resourcesList } from 'src/app/main/routing-constant';\n/** Error when invalid control is dirty, touched, or submitted. */\nexport class MyErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n const isSubmitted = form && form.submitted;\n return !!(control && control.invalid && (control.dirty || control.touched || isSubmitted));\n }\n}\n@Component({\n selector: 'app-login',\n templateUrl: './login.html',\n styleUrls: ['./login.scss']\n})\n\nexport class LoginComponent implements OnInit, OnDestroy {\n loginForm: FormGroup;\n isLogged = false;\n credentials;\n email;\n loginButtonClick;\n title = login.title;\n matcher = new MyErrorStateMatcher();\n match = new MyErrorStateMatcher();\n message;\n url = '';\n isRememberMe: boolean = false;\n deviceToken;\n\n @ViewChild(ToastContainerDirective, { static: true }) toastContainer: ToastContainerDirective;\n @ViewChild('test', { static: true }) myDivElementRef: ElementRef;\n ipAddress: { ip: string; };\n array: any = [];\n permissionArray: any = [];\n fieldTextType: boolean;\n siteKey: string;\n invalidCaptcha: boolean = false;\n\n //QA--------------------------------------------------\n //customerList = [];\n\n //PROD-------------------------------------------------\n customerList = ['235', '238', '262', '269', '271', '272', '273', '276', '277', '279', '280'];\n\n\n constructor(\n public loggingIn: LoginService,\n public router: Router,\n private fb: FormBuilder,\n private httpHandlerProviderService: HttpHandlerProvider,\n public commonService: CommonServiceService,\n private toastrService: ToastrService,\n public snackBar: MatSnackBar,\n public toastService: ToastService,\n private loaderService: LoaderService,\n private bcrypt: PasswordEncryptionService,\n private matDialog: MatDialog,\n private messageService: MessagingService,\n private entityService: EntityServiceService,\n private MSALServices: MsalUserServiceService\n ) {\n this.siteKey = environment.key;\n }\n\n toggleFieldTextType() {\n this.fieldTextType = !this.fieldTextType;\n }\n\n showSuccess() {\n }\n\n ngOnInit() {\n\n this.commonService.setAppTitle('Login: Caleedo');\n localStorage.removeItem('UrlExpired');\n localStorage.removeItem('resetPassword');\n\n this.toastrService.overlayContainer = this.toastContainer;\n if (localStorage.getItem('isLogged')) {\n this.httpHandlerProviderService.isLogged = true;\n this.router.navigate(['admin/dashboard']);\n } else {\n this.httpHandlerProviderService.isLogged = false;\n localStorage.removeItem('isLogged');\n localStorage.removeItem('user');\n localStorage.removeItem('isActive');\n localStorage.clear();\n }\n this.loginForm = this.fb.group({\n email: ['', [Validators.required,\n Validators.maxLength(100)]],\n password: ['', [Validators.required, Validators.maxLength(50)]],\n recaptcha: ['', Validators.required]\n });\n\n if (this.MSALServices.getCurrentUserInfo()) {\n this.microsoftLogin(this.MSALServices.getCurrentUserInfo());\n };\n\n }\n\n onSubmit(event: any) {\n this.loaderService.show();\n this.messageService.requestInboxPermission().subscribe((token) => {\n this.login(event, token)\n },\n (err) => {\n console.error('Unable to get permission to notify.', err);\n this.login(event, '')\n });\n\n }\n\n login(event: any, token) {\n if (!this.loginForm.invalid) {\n this.invalidCaptcha = false;\n const pass = this.loginForm.get('password').value;\n const user = this.loginForm.get('email').value;\n this.credentials = {\n 'username': user,\n 'password': pass,\n 'applicationType': 'STAFF',\n \"platform\": \"WEB\",\n \"deviceToken\": token,\n \"socialLogin\": false\n }\n this.loginButtonClick = true;\n this.email = this.loginForm.get('email').value;\n this.loggingIn.login(this.credentials).subscribe(\n (res: any) => {\n res = res.data;\n if (res.access_token) {\n this.getUserLogo(res.roles.customerId);\n localStorage.setItem('refreshToken', res.refresh_token);\n localStorage.setItem('LogoutId', res.userInfo.id);\n localStorage.setItem('expires_in', res.expires_in);\n localStorage.setItem('customerId', res.roles.customerId);\n localStorage.setItem('customerAdminCode', res['roles']['code']);\n localStorage.setItem('isLogged', 'true');\n localStorage.setItem('loggedUser', this.email);\n localStorage.setItem('email', res.Email);\n localStorage.setItem(\"notificationCount\", '0');\n if(res && res.isMicrosoftAccountEnabled){\n localStorage.setItem(\"microsoftAccount\", res.isMicrosoftAccountEnabled);\n localStorage.setItem(\"microsoftUserEmail\", res.microsoftEmailStatus);\n }\n localStorage.setItem(\"moduleAccess\", JSON.stringify({ isMeetable: res.isMeetable, isSeatin: res.isSeatin, isHygieneo: res.isHygieneo, isCMS: res.isCMS, isVsitUs: res.isVisitUs, isSmartWashroom: res.isSmartWashroom }));\n this.httpHandlerProviderService.isLogged = true;\n localStorage.setItem('user', res.access_token);\n\n if (res.FirstLogin) {\n this.loggingIn.updateFirstLogin(this.email, 'STAFF', {}).subscribe(res => {\n\n })\n this.getStaffBasicInfo(res.FirstLogin);\n // this.router.navigate(['admin/my-account']);\n } else {\n this.getStaffBasicInfo(res.FirstLogin);\n // this.router.navigate(['admin/dashboard']);\n }\n\n //entity\n if (res['roles']['code'] === 'SUPER_ADMIN' || res['roles']['code'] === 'AREA_ADMIN' || res['roles']['code'] === 'PAN_INDIA' || res['roles']['code'] === 'REGIONAL_HEAD' || res['roles']['code'] === 'CITY_HEAD' || res['roles']['code'] === 'CLUSTER_HEAD' || res['roles']['code'] === 'AREA_MANAGER') {\n\n\n this.entityService.getEntityByCustomer(res['roles']['customerId'], res['roles']['code'], res['regionSite']?res['regionSite'].split(',').map(e=>\"'\"+e+\"'\").join(','):'', res['citySite']?res['citySite'].split(',').map(e=>\"'\"+e+\"'\").join(','):'', res['clusterSite']?res['clusterSite'].split(',').map(e=>\"'\"+e+\"'\").join(','):'', res['centerSite']).subscribe(\n (result: any) => {\n \n if (result.data) {\n let data = result.data.map(el=> {return {...el,cmsParameters:el.cmsParameters?el.cmsParameters:'PM 1,PM 2.5,PM 10,Temperature,Humidity,CO2,TVOC,HCHO,CO,NO2,O3'}});\n \n localStorage.setItem('entity', JSON.stringify(data));\n if (res['roles']['code'] === 'PAN_INDIA' || res['roles']['code'] === 'REGIONAL_HEAD' || res['roles']['code'] === 'CITY_HEAD' || res['roles']['code'] === 'CLUSTER_HEAD' || res['roles']['code'] === 'AREA_MANAGER') {\n localStorage.setItem('entityAccess', JSON.stringify({ roleCode: res['roles']['code'], roleName: res['roles']['name'], region: res['regionSite'], city: res['citySite'], cluster: res['clusterSite'], center: res['centerSite'] }));\n }\n }\n },\n (error) => {\n // this.errorSnackBar(error);\n }\n );\n }\n //\n\n let index = this.customerList.indexOf(localStorage.getItem('customerId'));\n if (index > -1) {\n localStorage.setItem('allowTvoc', 'false');\n }\n else {\n localStorage.setItem('allowTvoc', 'true');\n }\n\n this.commonService.getCustomerCountryCode(res.roles.customerId).subscribe((res: any) => {\n let countryCodeCustomer = res.data;\n localStorage.setItem(\"customerCountryCode\", countryCodeCustomer);\n })\n\n\n this.commonService.isHeader = true;\n this.commonService.isHeader1 = true;\n this.commonService.isHeader2 = true;\n this.commonService.isHeader3 = true;\n this.commonService.isHeader4 = true;\n this.commonService.isHeader5 = true;\n this.commonService.httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${localStorage.getItem('user')}`,\n })\n };\n this.commonService.sendRefreshTokenEvent();\n // this.getRoleInfo();\n localStorage.setItem('roleIdentification', 'true');\n localStorage.setItem('permissions', JSON.stringify(res.resourcesList));\n\n\n\n\n\n this.setPermissionsArray();\n localStorage.removeItem('roleIdentification');\n\n\n this.loggingIn.getCustomerCurrentTimeZone(res.roles.customerId).subscribe(\n (result: any) => {\n\n if (result.description === \"Successfully Retrieved\") {\n let timezone = result.data.urcOffset.split(':');\n let hour = parseInt(timezone[0]);\n let type = \"add\";\n if (parseInt(timezone[0]) < 0) {\n hour = -parseInt(timezone[0]);\n type = \"subtract\";\n }\n let obj = {\n hours: hour,\n minutes: parseInt(timezone[1]),\n type: type,\n zoneId: result.data.name,\n timezone: result.data.abbreviation\n\n }\n localStorage.setItem('timeZone', JSON.stringify(obj));\n this.setBusinessHourByTimeZone(obj);\n\n\n }\n else {\n let obj = {\n hours: 5,\n minutes: 30,\n type: \"add\",\n zoneId: 'Asia/Kolkata',\n timezone: 'IST'\n\n }\n localStorage.setItem('timeZone', JSON.stringify(obj));\n this.setBusinessHourByTimeZone(obj);\n }\n },\n (error) => {\n this.loaderService.hide();\n let obj = {\n hours: 5,\n minutes: 30,\n type: \"add\",\n zoneId: 'Asia/Kolkata',\n timezone: 'IST'\n\n }\n localStorage.setItem('timeZone', JSON.stringify(obj));\n this.setBusinessHourByTimeZone(obj);\n // this.errorSnackBar(error);\n }\n );\n\n this.loggingIn.getCustomerCategories(res.roles.customerId).subscribe(\n (result: any) => {\n\n if (result.description === \"Successfully Retrieved\") {\n let data = result.data;\n let obj = [];\n data.forEach(element => {\n if (Categories.s100_aqi === element) {\n obj.push(\"s100_aqi\");\n }\n else if (Categories.s100_atp === element) {\n obj.push(\"s100_atp\");\n }\n else if (Categories.s200_aqi === element) {\n obj.push(\"s200_aqi\");\n }\n else if (Categories.s300_aqi === element) {\n obj.push(\"s300_aqi\");\n }\n else if (Categories.s300_atp === element) {\n obj.push(\"s300_atp\");\n }\n else if (Categories.s400_swh === element) {\n obj.push(\"s400_swh\");\n }\n else if (Categories.s501_swh === element) {\n obj.push(\"s501_swh\");\n }\n });\n\n localStorage.setItem('categories', JSON.stringify(obj));\n\n\n }\n },\n (error) => {\n this.errorSnackBar(error);\n }\n );\n\n this.commonService.getAssetParameters(res.roles.customerId).subscribe(\n (result: any) => {\n\n if (result.description === \"Successfully Retrieved\") {\n\n if (result.data.gasParameter1 && result.data.gasParameter1 === \"mixedGas\") {\n localStorage.setItem('allowMixedGasSWH', 'true');\n }\n\n if (result.data.gasParameter2 && result.data.gasParameter2 === \"tvoc\") {\n localStorage.setItem('allowTvocSWH', 'true');\n }\n localStorage.setItem('cmsAllowedParameters', result.data.cmsParameter)\n\n }\n },\n (error) => {\n // this.errorSnackBar(error);\n }\n );\n\n\n\n //ACCESS Control Permission\n let visitMeetingAllow = this.commonService.setPermissions('VISITOR_MEETINGS');\n if (visitMeetingAllow && visitMeetingAllow.read) {\n this.loggingIn.checkAccessControlPermission(res.roles.customerId).subscribe(\n (result: any) => {\n if (result.data.length > 0) {\n localStorage.setItem('visitAccessControlAllow', 'true');\n }\n else {\n localStorage.setItem('visitAccessControlAllow', 'false');\n }\n },\n (error) => {\n }\n );\n }\n else {\n localStorage.setItem('visitAccessControlAllow', 'false');\n }\n\n }\n },\n (err) => {\n console.log(\"error\", err);\n this.loaderService.hide();\n if (err.status === 401) {\n if (err.error.code == 'UNAUTHORIZED') {\n this.matDialog.open(SuccessDialogComponent, {\n data: {\n yesBtnName: 'OK',\n confirmationMesg: err.error.message,\n heading: 'Error'\n }\n })\n // return;\n }\n else if (err.error.message == 'Incorrect Password') {\n this.loginForm.controls['password'].setValue('');\n } else {\n this.loginForm.reset();\n }\n // this.openSnackBar(this.message, 'email-error');\n // this.errorSnackBar(err)\n } else if (err.status === 400) {\n this.openSnackBar(this.message, 'password-error');\n } else if (err.status === 500) {\n }\n }\n );\n } else {\n this.loaderService.hide();\n if (this.loginForm.controls.recaptcha.errors.required) {\n this.invalidCaptcha = true;\n }\n }\n }\n\n msalLogin(token) {\n this.deviceToken = token;\n this.MSALServices.login();\n }\n\n microsoftLogin(email) {\n this.loaderService.show();\n this.credentials = {\n 'username': email,\n 'password': '',\n 'applicationType': 'STAFF',\n \"platform\": \"WEB\",\n \"deviceToken\": this.deviceToken,\n \"socialLogin\": true\n }\n this.loggingIn.login(this.credentials).subscribe(\n (res: any) => {\n res = res.data;\n if (res.access_token) {\n this.getUserLogo(res.roles.customerId);\n localStorage.setItem('refreshToken', res.refresh_token);\n localStorage.setItem('LogoutId', res.userInfo.id);\n localStorage.setItem('expires_in', res.expires_in);\n localStorage.setItem('customerId', res.roles.customerId);\n localStorage.setItem('customerAdminCode', res['roles']['code']);\n localStorage.setItem('isLogged', 'true');\n localStorage.setItem('loggedUser', res.userId);\n localStorage.setItem('email', res.Email);\n localStorage.setItem(\"notificationCount\", '0');\n localStorage.setItem(\"microsoftAccount\", res.isMicrosoftAccountEnabled);\n localStorage.setItem(\"microsoftUserEmail\", res.microsoftEmailStatus);\n localStorage.setItem(\"moduleAccess\", JSON.stringify({ isMeetable: res.isMeetable, isSeatin: res.isSeatin, isHygieneo: res.isHygieneo, isCMS: res.isCMS, isVsitUs: res.isVisitUs, isSmartWashroom: res.isSmartWashroom }));\n this.httpHandlerProviderService.isLogged = true;\n localStorage.setItem('user', res.access_token);\n\n if (res.FirstLogin) {\n this.loggingIn.updateFirstLogin(res.userId, 'STAFF', {}).subscribe(res => {\n\n })\n this.getStaffBasicInfo(res.FirstLogin);\n // this.router.navigate(['admin/my-account']);\n } else {\n this.getStaffBasicInfo(res.FirstLogin);\n // this.router.navigate(['admin/dashboard']);\n }\n\n //entity\n if (res['roles']['code'] === 'SUPER_ADMIN' || res['roles']['code'] === 'AREA_ADMIN' || res['roles']['code'] === 'PAN_INDIA' || res['roles']['code'] === 'REGIONAL_HEAD' || res['roles']['code'] === 'CITY_HEAD' || res['roles']['code'] === 'CLUSTER_HEAD' || res['roles']['code'] === 'AREA_MANAGER') {\n\n\n this.entityService.getEntityByCustomer(res['roles']['customerId'], res['roles']['code'], res['regionSite']?res['regionSite'].split(',').map(e=>\"'\"+e+\"'\").join(','):'', res['citySite']?res['citySite'].split(',').map(e=>\"'\"+e+\"'\").join(','):'', res['clusterSite']?res['clusterSite'].split(',').map(e=>\"'\"+e+\"'\").join(','):'', res['centerSite']).subscribe(\n (result: any) => {\n\n if (result.data) {\n let data = result.data;\n\n localStorage.setItem('entity', JSON.stringify(data));\n if (res['roles']['code'] === 'PAN_INDIA' || res['roles']['code'] === 'REGIONAL_HEAD' || res['roles']['code'] === 'CITY_HEAD' || res['roles']['code'] === 'CLUSTER_HEAD' || res['roles']['code'] === 'AREA_MANAGER') {\n localStorage.setItem('entityAccess', JSON.stringify({ roleCode: res['roles']['code'], roleName: res['roles']['name'], region: res['regionSite'], city: res['citySite'], cluster: res['clusterSite'], center: res['centerSite'] }));\n }\n }\n },\n (error) => {\n // this.errorSnackBar(error);\n }\n );\n }\n //\n\n if (res.roles.customerId === 332 || res.roles.customerId === 335 || res.roles.customerId === 337 || res.roles.customerId === 338 || res.roles.customerId === 339 || res.roles.customerId === 340) {\n localStorage.setItem('allowTvocSWH', 'true');\n }\n\n if (res.roles.customerId === 344) {\n localStorage.setItem('allowMixedGasSWH', 'true');\n }\n\n let index = this.customerList.indexOf(localStorage.getItem('customerId'));\n if (index > -1) {\n localStorage.setItem('allowTvoc', 'false');\n }\n else {\n localStorage.setItem('allowTvoc', 'true');\n }\n\n this.commonService.getCustomerCountryCode(res.roles.customerId).subscribe((res: any) => {\n let countryCodeCustomer = res.data;\n localStorage.setItem(\"customerCountryCode\", countryCodeCustomer);\n })\n\n\n this.commonService.isHeader = true;\n this.commonService.isHeader1 = true;\n this.commonService.isHeader2 = true;\n this.commonService.isHeader3 = true;\n this.commonService.isHeader4 = true;\n this.commonService.isHeader5 = true;\n this.commonService.httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${localStorage.getItem('user')}`,\n })\n };\n this.commonService.sendRefreshTokenEvent();\n // this.getRoleInfo();\n localStorage.setItem('roleIdentification', 'true');\n localStorage.setItem('permissions', JSON.stringify(res.resourcesList));\n this.setPermissionsArray();\n localStorage.removeItem('roleIdentification');\n\n\n this.loggingIn.getCustomerCurrentTimeZone(res.roles.customerId).subscribe(\n (result: any) => {\n\n if (result.description === \"Successfully Retrieved\") {\n let timezone = result.data.urcOffset.split(':');\n let hour = parseInt(timezone[0]);\n let type = \"add\";\n if (parseInt(timezone[0]) < 0) {\n hour = -parseInt(timezone[0]);\n type = \"subtract\";\n }\n let obj = {\n hours: hour,\n minutes: parseInt(timezone[1]),\n type: type,\n zoneId: result.data.name,\n timezone: result.data.abbreviation\n\n }\n localStorage.setItem('timeZone', JSON.stringify(obj));\n this.setBusinessHourByTimeZone(obj);\n\n }\n else {\n let obj = {\n hours: 5,\n minutes: 30,\n type: \"add\",\n zoneId: 'Asia/Kolkata',\n timezone: 'IST'\n\n }\n localStorage.setItem('timeZone', JSON.stringify(obj));\n this.setBusinessHourByTimeZone(obj);\n }\n },\n (error) => {\n this.loaderService.hide();\n let obj = {\n hours: 5,\n minutes: 30,\n type: \"add\",\n zoneId: 'Asia/Kolkata',\n timezone: 'IST'\n\n }\n localStorage.setItem('timeZone', JSON.stringify(obj));\n this.setBusinessHourByTimeZone(obj);\n // this.errorSnackBar(error);\n }\n );\n\n this.loggingIn.getCustomerCategories(res.roles.customerId).subscribe(\n (result: any) => {\n\n if (result.description === \"Successfully Retrieved\") {\n let data = result.data;\n let obj = [];\n data.forEach(element => {\n if (Categories.s100_aqi === element) {\n obj.push(\"s100_aqi\");\n }\n else if (Categories.s100_atp === element) {\n obj.push(\"s100_atp\");\n }\n else if (Categories.s200_aqi === element) {\n obj.push(\"s200_aqi\");\n }\n else if (Categories.s300_aqi === element) {\n obj.push(\"s300_aqi\");\n }\n else if (Categories.s300_atp === element) {\n obj.push(\"s300_atp\");\n }\n else if (Categories.s400_swh === element) {\n obj.push(\"s400_swh\");\n }\n else if (Categories.s501_swh === element) {\n obj.push(\"s501_swh\");\n }\n });\n\n localStorage.setItem('categories', JSON.stringify(obj));\n\n }\n },\n (error) => {\n this.errorSnackBar(error);\n }\n );\n }\n },\n (err) => {\n this.loaderService.hide();\n if (err.status === 401) {\n if (err.error.code == 'UNAUTHORIZED') {\n this.matDialog.open(SuccessDialogComponent, {\n data: {\n yesBtnName: 'OK',\n confirmationMesg: err.error.message,\n heading: 'Error'\n }\n })\n // return;\n }\n else if (err.error.message == 'Incorrect Password') {\n this.loginForm.controls['password'].setValue('');\n } else {\n this.loginForm.reset();\n }\n // this.openSnackBar(this.message, 'email-error');\n // this.errorSnackBar(err)\n } else if (err.status === 400) {\n if (err.error.code === 'CONTACT_ADMIN') {\n this.MSALServices.logout();\n this.matDialog.open(SuccessDialogComponent, {\n data: {\n yesBtnName: 'OK',\n confirmationMesg: err.error.message,\n heading: 'Error'\n }\n })\n } else {\n this.openSnackBar(this.message, 'password-error');\n }\n } else if (err.status === 500) {\n }\n }\n );\n }\n\n handleSuccess(e) {\n this.invalidCaptcha = false;\n }\n\n setBusinessHourByTimeZone(obj){\n if (localStorage.getItem('customerDetails')) {\n let data = JSON.parse(localStorage.getItem('customerDetails'));\n if (data && data.businessStart && data.businessEnd) {\n let bs1 = data.businessStart;\n let be1 = data.businessEnd;\n let bs2 = data.businessStart2;\n let be2 = data.businessEnd2;\n if (obj.type === 'add') {\n if(bs1){\n bs1 = moment(new Date('2025-01-01 '+bs1)).add(obj.hours, \"hours\");\n bs1 = moment(bs1).add(obj.minutes, \"minutes\").format('hh:mm A');\n }\n else{\n bs1='12:00 AM'\n }\n if (be1) {\n be1 = moment(new Date('2025-01-01 '+be1)).add(obj.hours, \"hours\");\n be1 = moment(be1).add(obj.minutes, \"minutes\").format('hh:mm A');\n }\n else{\n be1='11:59 PM'\n }\n\n if(bs2){\n bs2 = moment(new Date('2025-01-01 '+bs2)).add(obj.hours, \"hours\");\n bs2 = moment(bs2).add(obj.minutes, \"minutes\").format('hh:mm A');\n }\n if(be2) {\n be2 = moment(new Date('2025-01-01 '+be2)).add(obj.hours, \"hours\");\n be2 = moment(be2).add(obj.minutes, \"minutes\").format('hh:mm A');\n }\n\n }\n else {\n if(bs1){\n bs1 = moment(new Date('2025-01-01 '+bs1)).subtract(obj.hours, \"hours\");\n bs1 = moment(bs1).subtract(obj.minutes, \"minutes\").format('hh:mm A');\n }\n else{\n bs1='12:00 AM';\n }\n if(be1){\n be1 = moment(new Date('2025-01-01 '+be1)).subtract(obj.hours, \"hours\");\n be1 = moment(be1).subtract(obj.minutes, \"minutes\").format('hh:mm A');\n }\n else{\n be1='11:59 PM';\n }\n\n if(bs2){\n bs2 = moment(new Date('2025-01-01 '+bs2)).subtract(obj.hours, \"hours\");\n bs2 = moment(bs2).subtract(obj.minutes, \"minutes\").format('hh:mm A');\n }\n if(be2){\n be2 = moment(new Date('2025-01-01 '+be2)).subtract(obj.hours, \"hours\");\n be2 = moment(be2).subtract(obj.minutes, \"minutes\").format('hh:mm A');\n }\n }\n localStorage.setItem('customerDetails', JSON.stringify({ businessStart: bs1, businessEnd: be1, businessStart2: bs2, businessEnd2: be2 }));\n\n }\n\n }\n }\n\n\n\n getStaffBasicInfo(firstLogin) {\n this.loaderService.show();\n this.commonService.getStaffBasicInfo()\n .subscribe(res => {\n localStorage.setItem('loggedUserId', res['data']['id']);\n localStorage.setItem('loggedUserName', res['data']['firstName'] + ' ' + res['data']['lastName']);\n localStorage.setItem('loggedNumber', res['data']['mobileNo']);\n localStorage.setItem('customerCode', res['data']['customerCode']);\n localStorage.setItem('customerName', res['data']['customerId']['name']);\n // localStorage.setItem('customerCode', res['data']['customerId']['code']);\n\n localStorage.setItem('location', JSON.stringify(res['data']['locations'][0]));\n let branchIds = res['data']['locations'].map(location => location.branchId)\n let buildingIds = res['data']['locations'].map(location => location.buildingId).filter(el => el);\n let departmentIds = res['data']['locations'].map(location => location.departmentId)\n if (!branchIds.length)\n branchIds = []\n if (!departmentIds.length)\n departmentIds = []\n\n\n localStorage.setItem('buildingIds', buildingIds.length > 0 ? buildingIds.join(',') : '');\n // localStorage.setItem('branchIds', JSON.stringify(branchIds));\n localStorage.setItem('departmentIds', JSON.stringify(departmentIds));\n\n\n this.commonService.getAllBranch().subscribe((res: any) => {\n let branchIds = res.map(item => item.branchId);\n localStorage.setItem(\"branchIds\", JSON.stringify(branchIds));\n let defaultBranch = res.find(item => item.defaultBranch == true);\n defaultBranch ? localStorage.setItem('branchId', JSON.stringify(defaultBranch.branchId)) : localStorage.setItem('branchId', '');\n if (localStorage.getItem('customerAdminCode') === 'TABLET') {\n this.router.navigate(['admin/enterprise-dashboard/tablet-smart-washroom']);\n }\n else {\n this.router.navigate(['admin/dashboard']);\n }\n\n\n }, error => {\n console.log(error);\n if (localStorage.getItem('customerAdminCode') === 'TABLET') {\n this.router.navigate(['admin/enterprise-dashboard/tablet-smart-washroom']);\n }\n else {\n this.router.navigate(['admin/dashboard']);\n }\n });\n this.loaderService.hide();\n }, error => {\n this.loaderService.hide();\n this.errorSnackBar(error);\n })\n }\n\n getUserLogo(customerId) {\n this.loaderService.show();\n this.commonService.getLogoImg(customerId).subscribe(res => {\n this.loaderService.hide();\n localStorage.setItem('industryId', res['data']['industryId']);\n localStorage.setItem('packageId', res['data']['packageId']);\n\n localStorage.setItem('customerDetails', JSON.stringify({ businessStart: res['data']['businessHourStartTime'], businessEnd: res['data']['businessHourEndTime'], businessStart2: res['data']['businessHourStartTimeOne'], businessEnd2: res['data']['businessHourEndTimeOne'] }));\n if(localStorage.getItem('timeZone')){\n this.setBusinessHourByTimeZone(JSON.parse(localStorage.getItem('timeZone')));\n }\n const logoImg = res['data'] && res['data']['generalSettingResponse'] && res['data']['generalSettingResponse']['logo'] ? 'data:image/png;base64,' + res['data']['generalSettingResponse']['logo'] : '';\n this.commonService.sendUserLogo(logoImg);\n if (res['data']['packageId']) {\n this.getModuleByPackageId();\n }\n }, error => {\n this.loaderService.hide();\n this.errorSnackBar(error);\n })\n }\n\n getModuleByPackageId() {\n this.loggingIn.getModuleByPackageId(localStorage.getItem('packageId')).subscribe(\n (result: any) => {\n\n if (result.description === \"Success\") {\n let data = result.data.moduleIds;\n\n localStorage.setItem('modules', JSON.stringify(data));\n\n }\n },\n (error) => {\n this.errorSnackBar(error);\n }\n );\n\n }\n\n setPermissionsArray() {\n this.array = JSON.parse(localStorage.getItem('permissions'));\n this.array.forEach(element => {\n if (element.permissions && element.permissions.length > 0) {\n element.permissions.forEach(elementPermission => {\n this.permissionArray.push({\n name: element.code,\n permission: elementPermission.code\n });\n });\n }\n if (element.childResources && element.childResources.length > 0) {\n element.childResources.forEach(childElement => {\n if (childElement.permissions && childElement.permissions.length > 0) {\n childElement.permissions.forEach(childElementPermission => {\n this.permissionArray.push({\n name: childElement.code,\n permission: childElementPermission.code\n });\n });\n }\n if (childElement.childResources && childElement.childResources.length > 0) {\n childElement.childResources.forEach(childElement1 => {\n if (childElement1.permissions && childElement1.permissions.length > 0) {\n childElement1.permissions.forEach(childElementPermission1 => {\n this.permissionArray.push({\n name: childElement1.code,\n permission: childElementPermission1.code\n });\n });\n }\n });\n }\n })\n }\n });\n localStorage.setItem('permissions', JSON.stringify(this.permissionArray));\n // localStorage.setItem('permissions', JSON.stringify(resourcesList));\n\n }\n // getRoleInfo() {\n // // localStorage.setItem\n // this.loggingIn.getRoleInfo(this.credentials).subscribe(data => {\n // });\n // }\n forgotPassword() {\n this.router.navigate(['auth/forgot-password']);\n }\n\n errorSnackBar(error) {\n this.toastService.opentoast(\n { toastName: '', data: { errorCode: error.status, error: error.error } },\n ErrorToasterComponent\n );\n }\n\n openSnackBar(message: string, panelClass: string) {\n if (panelClass === 'email-error') {\n this.toastService.opentoast({ toastName: 'loginEmail', data: { name: '' } });\n } else if (panelClass === 'password-error') {\n this.toastService.opentoast({ toastName: 'loginPassword', data: { name: '' } });\n } else if (panelClass === 'forgot-password') {\n this.toastService.opentoast({ toastName: 'underDevelopment', data: { name: '' } });\n }\n }\n\n ngOnDestroy() {\n this.commonService.resetAppTitle();\n }\n\n\n}\n","export default \"body.default {\\n --sidebar-bg:linear-gradient(6deg, #20b4e3 0%, #0e7dc2) !important;\\n --sidebar-active:#ffcc4e;\\n --sidebar-text:#0d1f3c;\\n --active-text:#ffcc4e;\\n --button-color:#007DB3;\\n --border-color:#007DB3;\\n --grid-border-color:#00d4d7;\\n --list-grid-bg:#00d4d7;\\n --color-text:#007DB3;\\n --table-th: rgb(230, 241, 248);\\n --search-bg:#ffcc4e;\\n --filter-text:#2f8cda;\\n --checkbox-text:#00d4d7;\\n --inner-bg-theme:#2f8cda;\\n --fontFamily:\\\"Nunito Sans\\\" sans-serif;\\n}\\n\\nbody.orange {\\n --sidebar-bg:linear-gradient(6deg, #353739 0%, #353739) !important;\\n --sidebar-active:#f79227;\\n --sidebar-text:#ffffff;\\n --active-text:#ffffff;\\n --button-color:#ff973b;\\n --border-color:#ff973b;\\n --grid-border-color:#ff973b;\\n --list-grid-bg:#ff973b;\\n --color-text:#ff973b;\\n --table-th: rgba(15, 31, 60, 0.09);\\n --search-bg:#ff973b;\\n --filter-text:#ff973b;\\n --checkbox-text:#ff973b;\\n --inner-bg-theme:#ff973b;\\n}\\n\\n.primary-color {\\n color: #007DB3;\\n}\\n\\n.btn-form-cancel {\\n background-color: white;\\n color: #40495e;\\n border-color: #cfd2df;\\n font-size: 14px;\\n height: 40px;\\n margin-left: 16px;\\n}\\n\\n.mat-accent .mat-slider-thumb,\\n.mat-accent .mat-slider-thumb-label,\\n.mat-accent .mat-slider-track-fill {\\n background-color: #2f8cda;\\n}\\n\\n.btn-form-div {\\n position: fixed;\\n width: 100%;\\n height: 60px;\\n background: #fff;\\n z-index: 2;\\n bottom: 0;\\n right: 30px;\\n padding: 15px 30px;\\n box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.07);\\n display: flex;\\n justify-content: flex-end;\\n}\\n\\n.btn-primary {\\n font-size: 14px;\\n background: #007DB3;\\n border-color: #007DB3;\\n color: white;\\n text-transform: capitalize;\\n margin-left: 16px;\\n height: 40px;\\n font-weight: 700;\\n padding: 0px 19px;\\n}\\n\\n.btn-remove {\\n font-size: 14px;\\n background: #fa3e1b;\\n border-color: #fa3e1b;\\n color: white;\\n text-transform: capitalize;\\n margin-left: 5px;\\n height: 40px;\\n font-weight: 700;\\n padding: 0px 19px;\\n}\\n\\n.calendra-primary {\\n font-size: 14px;\\n background: #00d4d7;\\n border-color: #00d4d7;\\n color: white;\\n text-transform: capitalize;\\n margin-left: 16px;\\n height: 40px;\\n font-weight: 700;\\n padding: 0px 19px;\\n}\\n\\n.btn-white, .calendra-white {\\n background-color: #ffffff;\\n border-color: #ffffff;\\n color: #007DB3;\\n text-transform: capitalize;\\n font-weight: 700;\\n height: 40px;\\n padding: 0px 15px 0px 15px;\\n border: solid 1px #e8e9ed;\\n margin-left: 16px;\\n}\\n\\n.btn-white-bg {\\n background-color: #ffffff;\\n border-color: #ffffff;\\n color: #007DB3;\\n text-transform: capitalize;\\n font-weight: 700;\\n height: 40px;\\n padding: 0px 15px;\\n margin-left: 16px;\\n border: solid 1px #e8e9ed;\\n}\\n\\n.mat-slide-toggle-thumb {\\n background-color: #cfd2df !important;\\n}\\n\\n.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb {\\n background-color: #007DB3 !important;\\n}\\n\\n.mat-slide-toggle.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(47, 140, 218, 0.46);\\n}\\n\\n.logo-section {\\n margin: 0 auto;\\n text-align: center;\\n height: 100vh;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.input-group-append {\\n position: relative;\\n}\\n\\n.input-group-append .input-group-text {\\n position: absolute;\\n right: 5px;\\n top: -63px;\\n background-color: transparent;\\n border: none;\\n cursor: pointer;\\n}\\n\\n.input-group-append .btn {\\n color: #78839c;\\n font-size: 12px;\\n}\\n\\n.container-fluid .row {\\n height: 100vh;\\n}\\n\\n@media only screen and (max-width: 767px) {\\n .inner-login {\\n width: 100%;\\n }\\n}\\n\\n.logo-bg {\\n background-color: #f4fafd;\\n}\\n\\n.login-bg {\\n background-color: #ffffff;\\n}\\n\\n.login-bg .login {\\n display: flex;\\n height: calc(100% - 45px);\\n}\\n\\n@media only screen and (max-width: 767px) {\\n .login-bg .login {\\n display: block;\\n }\\n}\\n\\n.login-bg input.mat-input-element {\\n font-size: 16px;\\n}\\n\\n.login-bg .hr_loginbox {\\n margin: 0 auto;\\n text-align: center;\\n height: auto;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.login-bg .hr_loginbox h1 {\\n font-size: 48px;\\n font-weight: normal;\\n line-height: 1.17;\\n letter-spacing: normal;\\n color: #40495e;\\n margin-bottom: 16px;\\n}\\n\\n@media only screen and (max-width: 767px) {\\n .login-bg .hr_loginbox h1 {\\n margin-bottom: 10px;\\n }\\n}\\n\\n.login-bg .hr_loginbox h2 {\\n font-size: 18px;\\n font-weight: normal;\\n line-height: 1.33;\\n letter-spacing: normal;\\n color: #78839c;\\n margin-bottom: 53px;\\n}\\n\\n@media only screen and (max-width: 767px) {\\n .login-bg .hr_loginbox h2 {\\n margin-bottom: 20px;\\n }\\n}\\n\\n.login-bg .hr_loginbox .form-group {\\n width: 304px;\\n position: relative;\\n}\\n\\n@media only screen and (max-width: 767px) {\\n .login-bg .hr_loginbox .form-group {\\n width: 100%;\\n }\\n}\\n\\n.login-bg .hr_loginbox .form-group label {\\n color: #78839c;\\n display: block;\\n position: absolute;\\n top: -10px;\\n background: #fff;\\n z-index: 99;\\n margin: 0;\\n font-size: 12px;\\n left: 14px;\\n}\\n\\n.login-bg .hr_loginbox .form-group input {\\n width: 100%;\\n height: 48px;\\n border-radius: 8px;\\n border: solid 1px #b5bbc9;\\n background-color: #ffffff;\\n padding-left: 50px;\\n margin-bottom: 24px;\\n text-align: left;\\n position: relative;\\n}\\n\\n.login-bg .hr_loginbox .form-group .icon1 {\\n position: absolute;\\n left: 11px;\\n top: 11px;\\n background-image: url('profile.svg');\\n background-repeat: no-repeat;\\n z-index: 999;\\n width: 24px;\\n height: 32px;\\n}\\n\\n.login-bg .hr_loginbox .form-group .icon2 {\\n position: absolute;\\n left: 13px;\\n top: 13px;\\n background-image: url('lock.svg');\\n background-repeat: no-repeat;\\n z-index: 999;\\n width: 24px;\\n height: 32px;\\n}\\n\\n.login-bg .hr_loginbox .captcha {\\n margin-bottom: 2rem;\\n}\\n\\n.login-bg .hr_loginbox .form-control:focus {\\n box-shadow: none !important;\\n background-color: #fff !important;\\n}\\n\\n.login-bg .hr_loginbox .remember-section {\\n text-align: right;\\n position: relative;\\n}\\n\\n.login-bg .hr_loginbox .remember-section .checkdesign {\\n padding-left: 20px !important;\\n margin-top: 13px;\\n left: 0px;\\n background-color: transparent;\\n}\\n\\n.login-bg .hr_loginbox .remember-section .checkdesign input {\\n height: auto !important;\\n width: auto !important;\\n}\\n\\n.login-bg .hr_loginbox .remember-section .forgot-pass {\\n display: inline-block;\\n}\\n\\n.login-bg .hr_loginbox .remember-section .forgot-pass a {\\n font-size: 14px;\\n font-weight: normal;\\n font-stretch: normal;\\n font-style: normal;\\n line-height: normal;\\n letter-spacing: normal;\\n text-align: right;\\n color: #78839c;\\n cursor: pointer;\\n}\\n\\n.login-bg .hr_loginbox .remember-section .forgot-pass a:hover {\\n color: #2f8cda;\\n}\\n\\n.login-bg .hr_loginbox .login-button {\\n width: 100%;\\n}\\n\\n.login-bg .hr_loginbox .login-button .btn-primary {\\n margin-left: 0px;\\n width: 100%;\\n height: 48px;\\n font-size: 16px;\\n}\\n\\n.login-bg .hr_loginbox .enter-user {\\n position: absolute;\\n right: 0px;\\n top: 52px;\\n}\\n\\n.login-bg .hr_loginbox .enter-captcha {\\n position: absolute;\\n right: 0px;\\n top: 80px;\\n}\\n\\n.login-bg .hr_loginbox .enter-password {\\n position: absolute;\\n right: 0px;\\n top: 52px;\\n}\\n\\n@media screen and (max-width: 992) {\\n .logo-section img {\\n width: 250px;\\n }\\n}\\n\\n@media screen and (max-width: 767px) {\\n .logo-section {\\n height: 100%;\\n }\\n .logo-section img {\\n width: 270px;\\n padding: 40px;\\n }\\n\\n .powerby {\\n text-align: center;\\n position: relative;\\n bottom: auto;\\n padding-top: 15px;\\n }\\n\\n .hr_loginbox {\\n height: 100%;\\n }\\n .hr_loginbox .form-group {\\n width: 304px;\\n }\\n}\\n\\n.msal {\\n position: relative;\\n}\\n\\n.msal hr {\\n border-color: lightgrey;\\n}\\n\\n.msal small {\\n margin-top: -10px;\\n position: absolute;\\n bottom: 80%;\\n left: 42%;\\n background: white;\\n padding: 0 10px;\\n color: grey;\\n}\\n\\n.msal .msalBtn {\\n background: white;\\n color: grey;\\n display: flex;\\n gap: 20px;\\n text-transform: none;\\n align-items: center;\\n padding: 4px 6px;\\n height: auto !important;\\n border-color: lightgrey;\\n}\\n\\n.msal .msalBtn img {\\n width: 30px;\\n -o-object-fit: contain;\\n object-fit: contain;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9hcHAvc3JjL3ZhcmlhYmxlLnNjc3MiLCJzcmMvYXBwL21vZHVsZXMvc2hhcmVkL2xvZ2luL2xvZ2luLnNjc3MiLCIvYXBwL3NyYy9hcHAvbW9kdWxlcy9zaGFyZWQvbG9naW4vbG9naW4uc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGtFQUFBO0VBQ0Esd0JBQUE7RUFDQSxzQkFBQTtFQUNBLHFCQUFBO0VBQ0Esc0JBQUE7RUFDQSxzQkFBQTtFQUNBLDJCQUFBO0VBQ0Esc0JBQUE7RUFDQSxvQkFBQTtFQUVBLDhCQUFBO0VBQ0EsbUJBQUE7RUFDQSxxQkFBQTtFQUNBLHVCQUFBO0VBQ0Esd0JBQUE7RUFDQSxxQ0FBQTtBQ0FKOztBREdBO0VBQ0ksa0VBQUE7RUFDQSx3QkFBQTtFQUNBLHNCQUFBO0VBQ0EscUJBQUE7RUFDQSxzQkFBQTtFQUNBLHNCQUFBO0VBQ0EsMkJBQUE7RUFDQSxzQkFBQTtFQUNBLG9CQUFBO0VBQ0Esa0NBQUE7RUFDQSxtQkFBQTtFQUNBLHFCQUFBO0VBQ0EsdUJBQUE7RUFDQSx3QkFBQTtBQ0FKOztBRDhGQTtFQUNJLGNBbkZlO0FDUm5COztBRDZGQTtFQUNJLHVCQUFBO0VBQ0EsY0EzRmM7RUE0RmQscUJBQUE7RUFDQSxlQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0FDMUZKOztBRDRGQTs7O0VBR0kseUJBQUE7QUN6Rko7O0FEMkZBO0VBQ0ksZUFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0EsU0FBQTtFQUNBLFdBQUE7RUFDQSxrQkFBQTtFQUNBLHlDQUFBO0VBQ0EsYUFBQTtFQUNBLHlCQUFBO0FDeEZKOztBRDBGQTtFQUNJLGVBQUE7RUFDQSxtQkFqSGU7RUFrSGYscUJBbEhlO0VBbUhmLFlBQUE7RUFDQSwwQkFBQTtFQUNBLGlCQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7QUN2Rko7O0FEeUZBO0VBQ0ksZUFBQTtFQUNBLG1CQWpGaUI7RUFrRmpCLHFCQWxGaUI7RUFtRmpCLFlBQUE7RUFDQSwwQkFBQTtFQUNBLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7QUN0Rko7O0FEd0ZBO0VBQ0ksZUFBQTtFQUNBLG1CQXhJZTtFQXlJZixxQkF6SWU7RUEwSWYsWUFBQTtFQUNBLDBCQUFBO0VBQ0EsaUJBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtBQ3JGSjs7QUR1RkE7RUFDSSx5QkF4R2tCO0VBeUdsQixxQkF6R2tCO0VBMEdsQixjQW5KZTtFQW9KZiwwQkFBQTtFQUNBLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLDBCQUFBO0VBQ0EseUJBQUE7RUFDQSxpQkFBQTtBQ3BGSjs7QURzRkE7RUFDSSx5QkFuSGtCO0VBb0hsQixxQkFwSGtCO0VBcUhsQixjQTlKZTtFQStKZiwwQkFBQTtFQUNBLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0VBQ0EsaUJBQUE7RUFDQSx5QkFBQTtBQ25GSjs7QURxRkE7RUFDSSxvQ0FBQTtBQ2xGSjs7QURvRkE7RUFDSSxvQ0FBQTtBQ2pGSjs7QURtRkE7RUFDSSwwQ0FBQTtBQ2hGSjs7QUN4SUE7RUFDSSxjQUFBO0VBQ0Esa0JBQUE7RUFDQSxhQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0VBQ0EsdUJBQUE7QUQySUo7O0FDeElBO0VBQXFCLGtCQUFBO0FENElyQjs7QUMzSUk7RUFDSSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxVQUFBO0VBQ0EsNkJBQUE7RUFDQSxZQUFBO0VBQ0EsZUFBQTtBRDZJUjs7QUMzSUk7RUFDRSxjRjhCYTtFRTdCYixlQUFBO0FENklOOztBQ3hJSTtFQUNJLGFBQUE7QUQySVI7O0FEdURJO0VFOUxKO0lBRVEsV0FBQTtFRDBJTjtBQUNGOztBQ3ZJQTtFQUNJLHlCQUFBO0FEMElKOztBQ3hJQTtFQUNJLHlCQUFBO0FEMklKOztBQzFJSTtFQUFPLGFBQUE7RUFBZSx5QkFBQTtBRDhJMUI7O0FEcUNJO0VFbkxBO0lBRVEsY0FBQTtFRGdKVjtBQUNGOztBQzlJSTtFQUF3QixlQUFBO0FEaUo1Qjs7QUNoSkk7RUFDSSxjQUFBO0VBQ0Esa0JBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0VBQ0EsdUJBQUE7QURrSlI7O0FDakpRO0VBQ0YsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsaUJBQUE7RUFDQSxzQkFBQTtFQUNBLGNBQUE7RUFDQSxtQkFBQTtBRG1KTjs7QURhSTtFRXRLSTtJQVFFLG1CQUFBO0VEcUpSO0FBQ0Y7O0FDbkpRO0VBQ0ksZUFBQTtFQUNBLG1CQUFBO0VBQ0EsaUJBQUE7RUFDQSxzQkFBQTtFQUNBLGNBQUE7RUFDQSxtQkFBQTtBRHFKWjs7QURBSTtFRTNKSTtJQVFRLG1CQUFBO0VEdUpkO0FBQ0Y7O0FDckpRO0VBQVksWUFBQTtFQUFjLGtCQUFBO0FEeUpsQzs7QURUSTtFRWhKSTtJQUVRLFdBQUE7RUQySmQ7QUFDRjs7QUMxSlk7RUFDSSxjQUFBO0VBQ0EsY0FBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLFNBQUE7RUFDQSxlRnlCQTtFRXhCQSxVQUFBO0FENEpoQjs7QUMxSlk7RUFDSSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGtCQUFBO0VBQ0EseUJBQUE7RUFDQSx5QkFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0FENEpoQjs7QUMxSmdCO0VBQ0ksa0JBQUE7RUFDQSxVQUFBO0VBQ0EsU0FBQTtFQUNBLG9DQUFBO0VBQ0EsNEJBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7QUQ0SnBCOztBQzFKZ0I7RUFDSSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxTQUFBO0VBQ0EsaUNBQUE7RUFDQSw0QkFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtBRDRKcEI7O0FDeEpRO0VBQ0ksbUJBQUE7QUQwSlo7O0FDdkpRO0VBQ0ksMkJBQUE7RUFDQSxpQ0FBQTtBRHlKWjs7QUN0SlE7RUFBa0IsaUJBQUE7RUFBbUIsa0JBQUE7QUQwSjdDOztBQ3pKMEI7RUFDSSw2QkFBQTtFQUNBLGdCQUFBO0VBQ0EsU0FBQTtFQUNBLDZCQUFBO0FEMko5Qjs7QUMxSjhCO0VBQU0sdUJBQUE7RUFDSixzQkFBQTtBRDZKaEM7O0FDMUpZO0VBQ0kscUJBQUE7QUQ0SmhCOztBQzNKZ0I7RUFDSSxlQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxzQkFBQTtFQUNBLGlCQUFBO0VBQ0EsY0FBQTtFQUNBLGVBQUE7QUQ2SnBCOztBQzVKb0I7RUFDSSxjQUFBO0FEOEp4Qjs7QUN4SlE7RUFBYyxXQUFBO0FEMkp0Qjs7QUMxSlk7RUFDSSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZUFBQTtBRDRKaEI7O0FDekpRO0VBQVksa0JBQUE7RUFBb0IsVUFBQTtFQUFZLFNBQUE7QUQ4SnBEOztBQzdKUTtFQUFlLGtCQUFBO0VBQW9CLFVBQUE7RUFBWSxTQUFBO0FEa0t2RDs7QUNqS1E7RUFBaUIsa0JBQUE7RUFBb0IsVUFBQTtFQUFZLFNBQUE7QURzS3pEOztBQzFGRTtFQUVNO0lBQ0ksWUFBQTtFRDRGVjtBQUNGOztBQ3hGRTtFQUVFO0lBQ0ksWUFBQTtFRHlGTjtFQ3hGTTtJQUFJLFlBQUE7SUFBYyxhQUFBO0VENEZ4Qjs7RUN6RkU7SUFDSSxrQkFBQTtJQUNBLGtCQUFBO0lBQ0EsWUFBQTtJQUNBLGlCQUFBO0VENEZOOztFQ3pGRTtJQUFhLFlBQUE7RUQ2RmY7RUM1Rk07SUFDSSxZQUFBO0VEOEZWO0FBQ0Y7O0FDMUZFO0VBQ0Usa0JBQUE7QUQ0Rko7O0FDM0ZJO0VBQ0ksdUJBQUE7QUQ2RlI7O0FDM0ZJO0VBQ0ksaUJBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxTQUFBO0VBQ0EsaUJBQUE7RUFDQSxlQUFBO0VBQ0EsV0FBQTtBRDZGUjs7QUMzRkU7RUFDRSxpQkFBQTtFQUNBLFdBQUE7RUFDQSxhQUFBO0VBQ0EsU0FBQTtFQUNBLG9CQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLHVCQUFBO0VBQ0EsdUJBQUE7QUQ2Rko7O0FDNUZJO0VBQ0ksV0FBQTtFQUNBLHNCQUFBO0tBQUEsbUJBQUE7QUQ4RlIiLCJmaWxlIjoic3JjL2FwcC9tb2R1bGVzL3NoYXJlZC9sb2dpbi9sb2dpbi5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiYm9keS5kZWZhdWx0e1xuICAgIC0tc2lkZWJhci1iZzpsaW5lYXItZ3JhZGllbnQoNmRlZywgIzIwYjRlMyAwJSwgIzBlN2RjMikgIWltcG9ydGFudDtcbiAgICAtLXNpZGViYXItYWN0aXZlOiNmZmNjNGU7XG4gICAgLS1zaWRlYmFyLXRleHQ6IzBkMWYzYztcbiAgICAtLWFjdGl2ZS10ZXh0OiNmZmNjNGU7XG4gICAgLS1idXR0b24tY29sb3I6IzAwN0RCMztcbiAgICAtLWJvcmRlci1jb2xvcjojMDA3REIzO1xuICAgIC0tZ3JpZC1ib3JkZXItY29sb3I6IzAwZDRkNztcbiAgICAtLWxpc3QtZ3JpZC1iZzojMDBkNGQ3O1xuICAgIC0tY29sb3ItdGV4dDojMDA3REIzO1xuICAgIC8vIC0tdGFibGUtdGg6IHJnYmEoMjU1LCAyMDQsIDc4LCAwLjEpO1xuICAgIC0tdGFibGUtdGg6IHJnYigyMzAsIDI0MSwgMjQ4KTtcbiAgICAtLXNlYXJjaC1iZzojZmZjYzRlO1xuICAgIC0tZmlsdGVyLXRleHQ6IzJmOGNkYTtcbiAgICAtLWNoZWNrYm94LXRleHQ6IzAwZDRkNztcbiAgICAtLWlubmVyLWJnLXRoZW1lOiMyZjhjZGE7ICBcbiAgICAtLWZvbnRGYW1pbHk6J051bml0byBTYW5zJyBzYW5zLXNlcmlmO1xufVxuXG5ib2R5Lm9yYW5nZXtcbiAgICAtLXNpZGViYXItYmc6bGluZWFyLWdyYWRpZW50KDZkZWcsICMzNTM3MzkgMCUsICMzNTM3MzkpICFpbXBvcnRhbnQ7XG4gICAgLS1zaWRlYmFyLWFjdGl2ZTojZjc5MjI3O1xuICAgIC0tc2lkZWJhci10ZXh0OiNmZmZmZmY7XG4gICAgLS1hY3RpdmUtdGV4dDojZmZmZmZmO1xuICAgIC0tYnV0dG9uLWNvbG9yOiNmZjk3M2I7XG4gICAgLS1ib3JkZXItY29sb3I6I2ZmOTczYjtcbiAgICAtLWdyaWQtYm9yZGVyLWNvbG9yOiNmZjk3M2I7XG4gICAgLS1saXN0LWdyaWQtYmc6I2ZmOTczYjtcbiAgICAtLWNvbG9yLXRleHQ6I2ZmOTczYjtcbiAgICAtLXRhYmxlLXRoOiByZ2JhKDE1LCAzMSwgNjAsIDAuMDkpO1xuICAgIC0tc2VhcmNoLWJnOiNmZjk3M2I7XG4gICAgLS1maWx0ZXItdGV4dDojZmY5NzNiO1xuICAgIC0tY2hlY2tib3gtdGV4dDojZmY5NzNiO1xuICAgIC0taW5uZXItYmctdGhlbWU6I2ZmOTczYjtcbn1cblxuJHNpZGUtYWN0aXZlICAgICA6ICNmZmNjNGU7XG4kbG9naW4tYmcgICAgICAgIDogI2Y0ZmFmZDtcbiRkcm9wZG93bi1jb2xvciAgOiAjZjBmYWZkO1xuJGJvcmRlci1jb2xvciAgIDogICNjZmQyZDg7XG4kY2xvc2VidG4tY29sb3IgOiAjMzEzNDNhO1xuJGxpZ2hncmF5LWNvbG9yIDogIzQwNDk1ZTtcbiRza3lsaWdodC1jb2xvciA6ICAjMjdiMGUzO1xuJHBvcHVwLWNvbG9yICAgICA6ICM0NDQ0NDQ7XG4kbGlzdC1ncmlkICAgICAgIDogIzAwZDRkNztcbiRwcmltYXJ5LWNvbG9yICAgOiAjMDA3REIzO1xuJGJnLWNvbG9yLWNoZWNrICA6ICMwMGQ0ZDc7XG4kZ3JheS1jb2xvciAgICAgIDogIzlhOWE5YTtcbiRibGFjay1jb2xvciAgICAgOiAjMGQxZjNjO1xuJGRhc2gtY29sb3IgICAgICA6ICNiNWJiYzk7XG4kYmx1ZS1jb2xvciAgICAgIDogIzFiNDJjYjtcbiRsaWdodC1ncmF5ICAgICAgOiAjNzg4MzljO1xuJGRhcmstZ3JheSAgICAgICA6ICM3ODgzOWM7XG4kZGFyay1ibHVlMiAgICAgICA6IHJnYigwLCA2NSwgMTAzKTtcbiR3aGl0ZSAgICAgICAgICAgOiAjZmZmZmZmO1xuJHJlZCAgICAgICAgICAgICA6ICNmMjU0NjQ7XG4kYm9keUdyYXlCZyAgICAgIDogI2Y1ZjZmOTtcbiRzb2xpZC1ibGFjayAgICAgOiAjMDAwMDAwO1xuJGljb24tYmcgICAgICAgICA6ICNlNWU5Zjk7XG4kbGlnaHQtZ3JheTIgICAgICA6ICMzNDM0NDk7XG4kYm9yZGVyLWNvbG9yICAgIDogI2VjZWNmMjtcbiRib3JkZXItY29sb3IxICAgOiAjZThlOWVkO1xuJG5vdGlmeSAgICAgICAgICA6ICM0MDQwNDA7XG4kZGFyay1ncmVlbiAgICAgIDojNDRkN2I2O1xuJGV2ZW50cy10ZXh0ICAgICA6ICMzMmM1ZmY7XG4kbmV3cy10ZXh0ICAgICAgIDogI2I2MjBlMDtcbiRncmVlbiAgICAgICAgICAgOiAjMDBhYzg1O1xuJGJsdWUgICAgICAgICAgICA6IzEwMjY0OTtcbiRkYXJrLWJsdWUgICAgICAgOiAjNjIzNmZmO1xuJGJyb3duICAgICAgICAgICA6ICNjZGEwNWM7XG4kZ3JheS1zaGFkZSAgICAgIDojZThlOWVkO1xuJGxpZ2h0LWdyZWVuICAgICA6cmdiYSg2OCwgMjE1LCAxODIsIDAuMyk7XG4kZXZlbnRzLWJnICAgICAgIDpyZ2JhKDUwLCAxOTcsIDI1NSwgMC4yKTtcbiRuZXdzLWJnICAgICAgICAgOnJnYmEoMTgyLCAzMiwgMjI0LCAwLjIpO1xuJGxpZ2h0LWJsdWUgICAgICA6cmdiYSg2OCwgMTAwLCAyMjMsIC4xKTtcbiRsaWdodC1tYWdlbnRhICAgOiByZ2JhKDk4LCA1NCwgMjU1LCAwLjExKTtcbiRsaWdodC1icm93biAgICAgOiByZ2JhKDIwNSwgMTYwLCA5MiwgMC4xKTtcbiRzaGFkZS1ibHVlICAgICAgOiByZ2JhKDAsIDE3MiwgMTMzLCAwLjEpO1xuJHNoYWRlLW1hZ2VudGEgICA6IHJnYmEoMjQyLCA4NCwgMTAwLCAwLjEpO1xuJHNoYWRlLWdyYXkgICAgICA6IHJnYmEoMTY0LCAxNjQsIDE5NiwgLjEpO1xuJGJveC1zaGR3ICAgICAgICA6IDAgMXB4IDRweCAwIHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4kc2Vjb25kYXJ5LWNvbG9yICAgIDogIzRjNGM0YztcbiRncmF5LWNvbG9yICAgICAgICAgOiAjOWE5YTlhO1xuJGJsYWNrLWNvbG9yICAgICAgICA6ICMwMjAxMDA7XG4kYmx1ZS1jb2xvciAgICAgICAgIDogIzFiNDJjYjtcbiRkYXJrLWdyYXkgICAgICAgICAgOiAjNDU0NjRiO1xuJHdoaXRlICAgICAgICAgICAgICA6ICNmZmZmZmY7XG4kcmVkICAgICAgICAgICAgICAgIDogI2ZmMDQwNDtcbiRsaWdodC1yZWQgICAgICAgICAgOiNmYTNlMWI7XG4kYm9keS1iZyAgICAgICAgICAgIDogI2YxZjRmODtcbiRzb2xpZC1ibGFjayAgICAgICAgOiAjMzQzNDQ5O1xuJGJvcmRlci1jb2xvciAgICAgICA6ICNlOGU5ZWQ7XG4kZ3JheS1jb2xvciAgICAgICAgIDogI2E0YTRjNDtcbiRibGFjay1zaGFkZSAgICAgICAgOiAjNzg4MzljO1xuJG1hZ2VudGEgICAgICAgICAgICA6ICNiNjIwZTA7XG4kbGlnaHQtZ3JlZW4gICAgICAgIDogIzMyYzVmZjtcbiRicm93biAgICAgICAgICAgICAgOiAjY2RhMDVjO1xuJGJsYWNrICAgICAgICAgICAgICA6ICMwMDAwMDA7XG4kZ3JlZW4tc29saWQgICAgICAgIDogIzAwYWM4NTtcbiRyZWQtc29saWQgICAgICAgICAgOiAjZjI1NDY0O1xuJHdoaXRlLXNoYWRlICAgICAgICA6ICNmNmY2ZjY7XG4keWVsbG93LXNoYWRlICAgICAgIDogI2ZmYjkzYTtcbiRibGFjay1zaGFkZTEgICAgICAgOiAjNGE0NjQ2O1xuJGJyb3duLXNoYWRlICAgICAgICA6IHJnYmEoMjA1LCAxNjAsIDkyLCAuMSk7XG4kZGFyay1ncmVlbiAgICAgICAgIDogcmdiYSgwLCAxNzIsIDEzMywgLjEpO1xuJHJlZC1zaGFkZSAgICAgICAgICA6IHJnYmEoMjQyLCA4NCwgMTAwLCAuMSk7XG4kZW1wbG95ZWUtc2hhZGUgICAgIDogcmdiYSg1MCwgMTk3LCAyNTUsIC4xKTtcbiRncmF5LWhleGEgICAgICAgICAgOiByZ2JhKDE2NCwgMTY0LCAxOTYsIC4xKTtcbiRwcmltYXJ5LWNvbG9yLXNoYWRlOiByZ2JhKDY4LCAxMDAsIDIyMywgLjEpO1xuJG1hZ2VudGEtc2hhZGUgICAgICA6IHJnYmEoMTgyLCAzMiwgMjI0LCAuMSk7XG4kYm94LXNoZHcgICAgICAgICAgIDogMCAxcHggNHB4IDAgcmdiKDAgMCAwIC8gNyUpO1xuJGJveC1zaGR3MiAgICAgICAgICAgOiAwIDFweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMTYpO1xuJGdyYXk6Z3JleTtcblxuJGZvbnQtc2l6ZS0xMCA6IDEwcHg7XG4kZm9udC1zaXplLTEyIDogMTJweDtcbiRmb250LXNpemUtMTQgOiAxNHB4O1xuJGZvbnQtc2l6ZS0xNiA6IDE2cHg7XG4kZm9udC1zaXplLTI0IDogMjRweDtcbiRmb250LXNpemUtMjggOiAyOHB4O1xuJGZvbnQtc2l6ZS0zMiA6IDMycHg7XG4kZm9udC1zaXplLTM2IDogMzZweDtcbiRmb250LXNpemUtNDAgOiA0MHB4O1xuJGZvbnQtc2l6ZS00NCA6IDQ0cHg7XG4kZm9udC1zaXplLTU2IDogNTZweDtcbiRmb250LXNpemUtOTIgOiA5MnB4O1xuXG4ucHJpbWFyeS1jb2xvcntcbiAgICBjb2xvcjogJHByaW1hcnktY29sb3I7XG59XG4uYnRuLWZvcm0tY2FuY2VsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICBjb2xvciAgICAgICAgICAgOiAkbGlnaGdyYXktY29sb3I7XG4gICAgYm9yZGVyLWNvbG9yICAgIDogI2NmZDJkZjtcbiAgICBmb250LXNpemUgICAgICAgOiAxNHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBtYXJnaW4tbGVmdDogMTZweDtcbn1cbi5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLXRodW1iLFxuLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwsXG4ubWF0LWFjY2VudCAubWF0LXNsaWRlci10cmFjay1maWxsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmY4Y2RhO1xufVxuLmJ0bi1mb3JtLWRpdiB7XG4gICAgcG9zaXRpb24gICAgICAgOiBmaXhlZDtcbiAgICB3aWR0aCAgICAgICAgICA6IDEwMCU7XG4gICAgaGVpZ2h0ICAgICAgICAgOiA2MHB4O1xuICAgIGJhY2tncm91bmQgICAgIDogI2ZmZjtcbiAgICB6LWluZGV4ICAgICAgICA6IDI7XG4gICAgYm90dG9tICAgICAgICAgOiAwO1xuICAgIHJpZ2h0ICAgICAgICAgIDogMzBweDtcbiAgICBwYWRkaW5nICAgICAgICA6IDE1cHggMzBweDtcbiAgICBib3gtc2hhZG93ICAgICA6IDAgMCA4cHggMCByZ2JhKDAsIDAsIDAsIDAuMDcpO1xuICAgIGRpc3BsYXkgICAgICAgIDogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuLmJ0bi1wcmltYXJ5e1xuICAgIGZvbnQtc2l6ZSAgICAgOiAkZm9udC1zaXplLTEyICsgMjtcbiAgICBiYWNrZ3JvdW5kICAgIDogJHByaW1hcnktY29sb3I7XG4gICAgYm9yZGVyLWNvbG9yICA6ICRwcmltYXJ5LWNvbG9yO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgICBtYXJnaW4tbGVmdDogMTZweDtcbiAgICBoZWlnaHQgICAgICAgIDogNDBweDtcbiAgICBmb250LXdlaWdodCAgIDogNzAwO1xuICAgIHBhZGRpbmcgICAgICAgOiAwcHggMTlweDtcbn1cbi5idG4tcmVtb3Zle1xuICAgIGZvbnQtc2l6ZSAgICAgOiAkZm9udC1zaXplLTEyICsgMjtcbiAgICBiYWNrZ3JvdW5kICAgIDogJGxpZ2h0LXJlZDtcbiAgICBib3JkZXItY29sb3IgIDogJGxpZ2h0LXJlZCA7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICAgIG1hcmdpbi1sZWZ0ICAgOiA1cHg7XG4gICAgaGVpZ2h0ICAgICAgICA6IDQwcHg7XG4gICAgZm9udC13ZWlnaHQgICA6IDcwMDtcbiAgICBwYWRkaW5nICAgICAgIDogMHB4IDE5cHg7XG59XG4uY2FsZW5kcmEtcHJpbWFyeXtcbiAgICBmb250LXNpemUgICAgIDogJGZvbnQtc2l6ZS0xMiArIDI7XG4gICAgYmFja2dyb3VuZCAgICA6ICRsaXN0LWdyaWQ7XG4gICAgYm9yZGVyLWNvbG9yICA6ICRsaXN0LWdyaWQ7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICAgIG1hcmdpbi1sZWZ0OiAxNnB4O1xuICAgIGhlaWdodCAgICAgICAgOiA0MHB4O1xuICAgIGZvbnQtd2VpZ2h0ICAgOiA3MDA7XG4gICAgcGFkZGluZyAgICAgICA6IDBweCAxOXB4O1xufVxuLmJ0bi13aGl0ZSwgLmNhbGVuZHJhLXdoaXRle1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICBib3JkZXItY29sb3IgICAgOiAkd2hpdGU7XG4gICAgY29sb3IgICAgICAgICAgIDogJHByaW1hcnktY29sb3I7XG4gICAgdGV4dC10cmFuc2Zvcm0gIDogY2FwaXRhbGl6ZTtcbiAgICBmb250LXdlaWdodCAgICAgOiA3MDA7XG4gICAgaGVpZ2h0ICAgICAgICAgIDogNDBweDtcbiAgICBwYWRkaW5nICAgICAgICAgOiAwcHggMTVweCAwcHggMTVweDtcbiAgICBib3JkZXI6IHNvbGlkIDFweCAjZThlOWVkO1xuICAgIG1hcmdpbi1sZWZ0OiAxNnB4O1xufVxuLmJ0bi13aGl0ZS1iZyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGJvcmRlci1jb2xvciAgICA6ICR3aGl0ZTtcbiAgICBjb2xvciAgICAgICAgICAgOiAkcHJpbWFyeS1jb2xvcjtcbiAgICB0ZXh0LXRyYW5zZm9ybSAgOiBjYXBpdGFsaXplO1xuICAgIGZvbnQtd2VpZ2h0ICAgICA6IDcwMDtcbiAgICBoZWlnaHQgICAgICAgICAgOiA0MHB4O1xuICAgIHBhZGRpbmcgICAgICAgICA6IDBweCAxNXB4O1xuICAgIG1hcmdpbi1sZWZ0OiAxNnB4O1xuICAgIGJvcmRlcjogc29saWQgMXB4ICNlOGU5ZWQ7XG59XG4ubWF0LXNsaWRlLXRvZ2dsZS10aHVtYiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2NmZDJkZiAhaW1wb3J0YW50O1xufVxuLm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRwcmltYXJ5LWNvbG9yICFpbXBvcnRhbnQ7XG59XG4ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS1iYXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNDcsIDE0MCwgMjE4LCAwLjQ2KTtcbn1cblxuQG1peGluIHBob25le1xuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo3NjdweCl7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cbkBtaXhpbiB0YWJsZXR7XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjk5MXB4KXtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuQG1peGluIHRhYmxldHByb3tcbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6MTAyNHB4KXtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuQG1peGluIG1pbmlzY3JlZW57XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjEyMjJweCl7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn1cblxuQG1peGluIGVsbGlwc2UoJGxpbmUpe1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZGlzcGxheTogLW1vei1ib3g7XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICAtd2Via2l0LWxpbmUtY2xhbXA6ICRsaW5lO1xufSIsImJvZHkuZGVmYXVsdCB7XG4gIC0tc2lkZWJhci1iZzpsaW5lYXItZ3JhZGllbnQoNmRlZywgIzIwYjRlMyAwJSwgIzBlN2RjMikgIWltcG9ydGFudDtcbiAgLS1zaWRlYmFyLWFjdGl2ZTojZmZjYzRlO1xuICAtLXNpZGViYXItdGV4dDojMGQxZjNjO1xuICAtLWFjdGl2ZS10ZXh0OiNmZmNjNGU7XG4gIC0tYnV0dG9uLWNvbG9yOiMwMDdEQjM7XG4gIC0tYm9yZGVyLWNvbG9yOiMwMDdEQjM7XG4gIC0tZ3JpZC1ib3JkZXItY29sb3I6IzAwZDRkNztcbiAgLS1saXN0LWdyaWQtYmc6IzAwZDRkNztcbiAgLS1jb2xvci10ZXh0OiMwMDdEQjM7XG4gIC0tdGFibGUtdGg6IHJnYigyMzAsIDI0MSwgMjQ4KTtcbiAgLS1zZWFyY2gtYmc6I2ZmY2M0ZTtcbiAgLS1maWx0ZXItdGV4dDojMmY4Y2RhO1xuICAtLWNoZWNrYm94LXRleHQ6IzAwZDRkNztcbiAgLS1pbm5lci1iZy10aGVtZTojMmY4Y2RhO1xuICAtLWZvbnRGYW1pbHk6XCJOdW5pdG8gU2Fuc1wiIHNhbnMtc2VyaWY7XG59XG5cbmJvZHkub3JhbmdlIHtcbiAgLS1zaWRlYmFyLWJnOmxpbmVhci1ncmFkaWVudCg2ZGVnLCAjMzUzNzM5IDAlLCAjMzUzNzM5KSAhaW1wb3J0YW50O1xuICAtLXNpZGViYXItYWN0aXZlOiNmNzkyMjc7XG4gIC0tc2lkZWJhci10ZXh0OiNmZmZmZmY7XG4gIC0tYWN0aXZlLXRleHQ6I2ZmZmZmZjtcbiAgLS1idXR0b24tY29sb3I6I2ZmOTczYjtcbiAgLS1ib3JkZXItY29sb3I6I2ZmOTczYjtcbiAgLS1ncmlkLWJvcmRlci1jb2xvcjojZmY5NzNiO1xuICAtLWxpc3QtZ3JpZC1iZzojZmY5NzNiO1xuICAtLWNvbG9yLXRleHQ6I2ZmOTczYjtcbiAgLS10YWJsZS10aDogcmdiYSgxNSwgMzEsIDYwLCAwLjA5KTtcbiAgLS1zZWFyY2gtYmc6I2ZmOTczYjtcbiAgLS1maWx0ZXItdGV4dDojZmY5NzNiO1xuICAtLWNoZWNrYm94LXRleHQ6I2ZmOTczYjtcbiAgLS1pbm5lci1iZy10aGVtZTojZmY5NzNiO1xufVxuXG4ucHJpbWFyeS1jb2xvciB7XG4gIGNvbG9yOiAjMDA3REIzO1xufVxuXG4uYnRuLWZvcm0tY2FuY2VsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIGNvbG9yOiAjNDA0OTVlO1xuICBib3JkZXItY29sb3I6ICNjZmQyZGY7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBtYXJnaW4tbGVmdDogMTZweDtcbn1cblxuLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWIsXG4ubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYi1sYWJlbCxcbi5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmY4Y2RhO1xufVxuXG4uYnRuLWZvcm0tZGl2IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA2MHB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICB6LWluZGV4OiAyO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAzMHB4O1xuICBwYWRkaW5nOiAxNXB4IDMwcHg7XG4gIGJveC1zaGFkb3c6IDAgMCA4cHggMCByZ2JhKDAsIDAsIDAsIDAuMDcpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuXG4uYnRuLXByaW1hcnkge1xuICBmb250LXNpemU6IDE0cHg7XG4gIGJhY2tncm91bmQ6ICMwMDdEQjM7XG4gIGJvcmRlci1jb2xvcjogIzAwN0RCMztcbiAgY29sb3I6IHdoaXRlO1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgbWFyZ2luLWxlZnQ6IDE2cHg7XG4gIGhlaWdodDogNDBweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgcGFkZGluZzogMHB4IDE5cHg7XG59XG5cbi5idG4tcmVtb3ZlIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBiYWNrZ3JvdW5kOiAjZmEzZTFiO1xuICBib3JkZXItY29sb3I6ICNmYTNlMWI7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG4gIG1hcmdpbi1sZWZ0OiA1cHg7XG4gIGhlaWdodDogNDBweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgcGFkZGluZzogMHB4IDE5cHg7XG59XG5cbi5jYWxlbmRyYS1wcmltYXJ5IHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBiYWNrZ3JvdW5kOiAjMDBkNGQ3O1xuICBib3JkZXItY29sb3I6ICMwMGQ0ZDc7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG4gIG1hcmdpbi1sZWZ0OiAxNnB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHBhZGRpbmc6IDBweCAxOXB4O1xufVxuXG4uYnRuLXdoaXRlLCAuY2FsZW5kcmEtd2hpdGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBib3JkZXItY29sb3I6ICNmZmZmZmY7XG4gIGNvbG9yOiAjMDA3REIzO1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBwYWRkaW5nOiAwcHggMTVweCAwcHggMTVweDtcbiAgYm9yZGVyOiBzb2xpZCAxcHggI2U4ZTllZDtcbiAgbWFyZ2luLWxlZnQ6IDE2cHg7XG59XG5cbi5idG4td2hpdGUtYmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBib3JkZXItY29sb3I6ICNmZmZmZmY7XG4gIGNvbG9yOiAjMDA3REIzO1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBwYWRkaW5nOiAwcHggMTVweDtcbiAgbWFyZ2luLWxlZnQ6IDE2cHg7XG4gIGJvcmRlcjogc29saWQgMXB4ICNlOGU5ZWQ7XG59XG5cbi5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NmZDJkZiAhaW1wb3J0YW50O1xufVxuXG4ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDdEQjMgIWltcG9ydGFudDtcbn1cblxuLm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0NywgMTQwLCAyMTgsIDAuNDYpO1xufVxuXG4ubG9nby1zZWN0aW9uIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5pbnB1dC1ncm91cC1hcHBlbmQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uaW5wdXQtZ3JvdXAtYXBwZW5kIC5pbnB1dC1ncm91cC10ZXh0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogNXB4O1xuICB0b3A6IC02M3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4ge1xuICBjb2xvcjogIzc4ODM5YztcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuXG4uY29udGFpbmVyLWZsdWlkIC5yb3cge1xuICBoZWlnaHQ6IDEwMHZoO1xufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5pbm5lci1sb2dpbiB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cblxuLmxvZ28tYmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmYWZkO1xufVxuXG4ubG9naW4tYmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xufVxuLmxvZ2luLWJnIC5sb2dpbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gNDVweCk7XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5sb2dpbi1iZyAubG9naW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG4ubG9naW4tYmcgaW5wdXQubWF0LWlucHV0LWVsZW1lbnQge1xuICBmb250LXNpemU6IDE2cHg7XG59XG4ubG9naW4tYmcgLmhyX2xvZ2luYm94IHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgaGVpZ2h0OiBhdXRvO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbi5sb2dpbi1iZyAuaHJfbG9naW5ib3ggaDEge1xuICBmb250LXNpemU6IDQ4cHg7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAxLjE3O1xuICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuICBjb2xvcjogIzQwNDk1ZTtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLmxvZ2luLWJnIC5ocl9sb2dpbmJveCBoMSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgfVxufVxuLmxvZ2luLWJnIC5ocl9sb2dpbmJveCBoMiB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IDEuMzM7XG4gIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XG4gIGNvbG9yOiAjNzg4MzljO1xuICBtYXJnaW4tYm90dG9tOiA1M3B4O1xufVxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAubG9naW4tYmcgLmhyX2xvZ2luYm94IGgyIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICB9XG59XG4ubG9naW4tYmcgLmhyX2xvZ2luYm94IC5mb3JtLWdyb3VwIHtcbiAgd2lkdGg6IDMwNHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5sb2dpbi1iZyAuaHJfbG9naW5ib3ggLmZvcm0tZ3JvdXAge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG4ubG9naW4tYmcgLmhyX2xvZ2luYm94IC5mb3JtLWdyb3VwIGxhYmVsIHtcbiAgY29sb3I6ICM3ODgzOWM7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTEwcHg7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIHotaW5kZXg6IDk5O1xuICBtYXJnaW46IDA7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbGVmdDogMTRweDtcbn1cbi5sb2dpbi1iZyAuaHJfbG9naW5ib3ggLmZvcm0tZ3JvdXAgaW5wdXQge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA0OHB4O1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGJvcmRlcjogc29saWQgMXB4ICNiNWJiYzk7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIHBhZGRpbmctbGVmdDogNTBweDtcbiAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmxvZ2luLWJnIC5ocl9sb2dpbmJveCAuZm9ybS1ncm91cCAuaWNvbjEge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDExcHg7XG4gIHRvcDogMTFweDtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvcHJvZmlsZS5zdmcpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICB6LWluZGV4OiA5OTk7XG4gIHdpZHRoOiAyNHB4O1xuICBoZWlnaHQ6IDMycHg7XG59XG4ubG9naW4tYmcgLmhyX2xvZ2luYm94IC5mb3JtLWdyb3VwIC5pY29uMiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMTNweDtcbiAgdG9wOiAxM3B4O1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9sb2NrLnN2Zyk7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIHotaW5kZXg6IDk5OTtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMzJweDtcbn1cbi5sb2dpbi1iZyAuaHJfbG9naW5ib3ggLmNhcHRjaGEge1xuICBtYXJnaW4tYm90dG9tOiAycmVtO1xufVxuLmxvZ2luLWJnIC5ocl9sb2dpbmJveCAuZm9ybS1jb250cm9sOmZvY3VzIHtcbiAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG59XG4ubG9naW4tYmcgLmhyX2xvZ2luYm94IC5yZW1lbWJlci1zZWN0aW9uIHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5sb2dpbi1iZyAuaHJfbG9naW5ib3ggLnJlbWVtYmVyLXNlY3Rpb24gLmNoZWNrZGVzaWduIHtcbiAgcGFkZGluZy1sZWZ0OiAyMHB4ICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi10b3A6IDEzcHg7XG4gIGxlZnQ6IDBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4ubG9naW4tYmcgLmhyX2xvZ2luYm94IC5yZW1lbWJlci1zZWN0aW9uIC5jaGVja2Rlc2lnbiBpbnB1dCB7XG4gIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xufVxuLmxvZ2luLWJnIC5ocl9sb2dpbmJveCAucmVtZW1iZXItc2VjdGlvbiAuZm9yZ290LXBhc3Mge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ubG9naW4tYmcgLmhyX2xvZ2luYm94IC5yZW1lbWJlci1zZWN0aW9uIC5mb3Jnb3QtcGFzcyBhIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0cmV0Y2g6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgY29sb3I6ICM3ODgzOWM7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5sb2dpbi1iZyAuaHJfbG9naW5ib3ggLnJlbWVtYmVyLXNlY3Rpb24gLmZvcmdvdC1wYXNzIGE6aG92ZXIge1xuICBjb2xvcjogIzJmOGNkYTtcbn1cbi5sb2dpbi1iZyAuaHJfbG9naW5ib3ggLmxvZ2luLWJ1dHRvbiB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmxvZ2luLWJnIC5ocl9sb2dpbmJveCAubG9naW4tYnV0dG9uIC5idG4tcHJpbWFyeSB7XG4gIG1hcmdpbi1sZWZ0OiAwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDQ4cHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cbi5sb2dpbi1iZyAuaHJfbG9naW5ib3ggLmVudGVyLXVzZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAwcHg7XG4gIHRvcDogNTJweDtcbn1cbi5sb2dpbi1iZyAuaHJfbG9naW5ib3ggLmVudGVyLWNhcHRjaGEge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAwcHg7XG4gIHRvcDogODBweDtcbn1cbi5sb2dpbi1iZyAuaHJfbG9naW5ib3ggLmVudGVyLXBhc3N3b3JkIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMHB4O1xuICB0b3A6IDUycHg7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5Mikge1xuICAubG9nby1zZWN0aW9uIGltZyB7XG4gICAgd2lkdGg6IDI1MHB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAubG9nby1zZWN0aW9uIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbiAgLmxvZ28tc2VjdGlvbiBpbWcge1xuICAgIHdpZHRoOiAyNzBweDtcbiAgICBwYWRkaW5nOiA0MHB4O1xuICB9XG5cbiAgLnBvd2VyYnkge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYm90dG9tOiBhdXRvO1xuICAgIHBhZGRpbmctdG9wOiAxNXB4O1xuICB9XG5cbiAgLmhyX2xvZ2luYm94IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbiAgLmhyX2xvZ2luYm94IC5mb3JtLWdyb3VwIHtcbiAgICB3aWR0aDogMzA0cHg7XG4gIH1cbn1cbi5tc2FsIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm1zYWwgaHIge1xuICBib3JkZXItY29sb3I6IGxpZ2h0Z3JleTtcbn1cbi5tc2FsIHNtYWxsIHtcbiAgbWFyZ2luLXRvcDogLTEwcHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiA4MCU7XG4gIGxlZnQ6IDQyJTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIHBhZGRpbmc6IDAgMTBweDtcbiAgY29sb3I6IGdyZXk7XG59XG4ubXNhbCAubXNhbEJ0biB7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBjb2xvcjogZ3JleTtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAyMHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogNHB4IDZweDtcbiAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1jb2xvcjogbGlnaHRncmV5O1xufVxuLm1zYWwgLm1zYWxCdG4gaW1nIHtcbiAgd2lkdGg6IDMwcHg7XG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XG59IiwiQGltcG9ydCAnLi4vLi4vLi4vLi4vdmFyaWFibGUuc2Nzcyc7XG5cbi5sb2dvLXNlY3Rpb24ge1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLmlucHV0LWdyb3VwLWFwcGVuZCB7cG9zaXRpb246IHJlbGF0aXZlO1xuICAgIC5pbnB1dC1ncm91cC10ZXh0e1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiA1cHg7XG4gICAgICAgIHRvcDogLTYzcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gICAgLmJ0bntcbiAgICAgIGNvbG9yOiAkbGlnaHQtZ3JheTtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB9XG4gIH1cblxuLmNvbnRhaW5lci1mbHVpZHtcbiAgICAucm93e1xuICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIH1cbn1cblxuLmlubmVyLWxvZ2lue1xuICAgIEBpbmNsdWRlIHBob25le1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG59XG5cbi5sb2dvLWJne1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNGZhZmQ7XG59XG4ubG9naW4tYmd7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICAubG9naW57ZGlzcGxheTogZmxleDsgaGVpZ2h0OiBjYWxjKDEwMCUgLSA0NXB4KTtcbiAgICAgICAgQGluY2x1ZGUgcGhvbmV7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBpbnB1dC5tYXQtaW5wdXQtZWxlbWVudHtmb250LXNpemU6IDE2cHg7fVxuICAgIC5ocl9sb2dpbmJveHtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgaDF7XG4gICAgICBmb250LXNpemU6ICRmb250LXNpemUtNDQgKyA0O1xuICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjE3O1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDtcbiAgICAgIGNvbG9yOiAjNDA0OTVlO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgIEBpbmNsdWRlIHBob25le1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaDJ7XG4gICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzM7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsO1xuICAgICAgICAgICAgY29sb3I6ICM3ODgzOWM7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1M3B4O1xuICAgICAgICAgICAgQGluY2x1ZGUgcGhvbmV7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuZm9ybS1ncm91cHt3aWR0aDogMzA0cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIEBpbmNsdWRlIHBob25le1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFiZWx7XG4gICAgICAgICAgICAgICAgY29sb3I6ICM3ODgzOWM7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHRvcDogLTEwcHg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiA5OTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLTEyO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDE0cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnB1dHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICAgICAgICAgIGJvcmRlcjogc29saWQgMXB4ICNiNWJiYzk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDUwcHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmljb24xe1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IDExcHg7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMTFweDtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZSAgIDogdXJsKC4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvcHJvZmlsZS5zdmcpO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICAgICAgICAgICAgICB6LWluZGV4OiA5OTk7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5pY29uMntcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAxM3B4O1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDEzcHg7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2UgICA6IHVybCguLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2xvY2suc3ZnKTtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgICAgICAgICAgei1pbmRleDogOTk5O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jYXB0Y2hhe1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbToycmVtO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAuZm9ybS1jb250cm9sOmZvY3Vze1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgXG4gICAgICAgIC5yZW1lbWJlci1zZWN0aW9ue3RleHQtYWxpZ246IHJpZ2h0OyBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5jaGVja2Rlc2lnbntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMjBweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMTNweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDBweDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXR7aGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7O31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgLmZvcmdvdC1wYXNze1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBhe1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc3RyZXRjaDogbm9ybWFsO1xuICAgICAgICAgICAgICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzc4ODM5YztcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgICAgICAmOmhvdmVye1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IzJmOGNkYTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIFxuICAgICAgICAubG9naW4tYnV0dG9ue3dpZHRoOiAxMDAlO1xuICAgICAgICAgICAgLmJ0bi1wcmltYXJ5e1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwcHg7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuZW50ZXItdXNlcntwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAwcHg7IHRvcDogNTJweDt9XG4gICAgICAgIC5lbnRlci1jYXB0Y2hhe3Bvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IDBweDsgdG9wOiA4MHB4O31cbiAgICAgICAgLmVudGVyLXBhc3N3b3JkIHtwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAwcHg7IHRvcDogNTJweDsgfVxuICAgIH1cbn1cblxuXG5cblxuLy8gLyogVGhlIGNoZWNrIGRlc2lnbiAqL1xuLy8gLmNoZWNrLWRlc2lnbiB7XG4vLyAgICAgZGlzcGxheTogYmxvY2s7XG4vLyAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuLy8gICAgIHBhZGRpbmctbGVmdDogMjBweDtcbi8vICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuLy8gICAgIGN1cnNvcjogcG9pbnRlcjtcbi8vICAgICBmb250LXNpemU6IDIycHg7XG4vLyAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbi8vICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuLy8gICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbi8vICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbi8vICAgfVxuICBcbi8vICAgLyogSGlkZSB0aGUgYnJvd3NlcidzIGRlZmF1bHQgY2hlY2tib3ggKi9cbi8vICAgLmNoZWNrLWRlc2lnbiBpbnB1dCB7XG4vLyAgICAgcG9zaXRpb246IGFic29sdXRlO1xuLy8gICAgIG9wYWNpdHk6IDA7XG4vLyAgICAgY3Vyc29yOiBwb2ludGVyO1xuLy8gICAgIGhlaWdodDogMDtcbi8vICAgICB3aWR0aDogMDtcbi8vICAgfVxuICBcbi8vICAgLyogQ3JlYXRlIGEgY3VzdG9tIGNoZWNrYm94ICovXG4vLyAgIC5jaGVja21hcmsge1xuLy8gICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbi8vICAgICB0b3A6IDJweDtcbi8vICAgICBsZWZ0OiAwO1xuLy8gICAgIGhlaWdodDogMTZweDtcbi8vICAgICB3aWR0aDogMTZweDtcbi8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xuLy8gICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbi8vICAgfVxuICBcbi8vICAgLyogT24gbW91c2Utb3ZlciwgYWRkIGEgZ3JleSBiYWNrZ3JvdW5kIGNvbG9yICovXG4vLyAgIC5jaGVjay1kZXNpZ246aG92ZXIgaW5wdXQgfiAuY2hlY2ttYXJrIHtcbi8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjO1xuLy8gICB9XG4gIFxuLy8gICAvKiBXaGVuIHRoZSBjaGVja2JveCBpcyBjaGVja2VkLCBhZGQgYSBibHVlIGJhY2tncm91bmQgKi9cbi8vICAgLmNoZWNrLWRlc2lnbiBpbnB1dDpjaGVja2VkIH4gLmNoZWNrbWFyayB7XG4vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwZDlkYjtcbi8vICAgfVxuICBcbi8vICAgLyogQ3JlYXRlIHRoZSBjaGVja21hcmsvaW5kaWNhdG9yIChoaWRkZW4gd2hlbiBub3QgY2hlY2tlZCkgKi9cbi8vICAgLmNoZWNrbWFyazphZnRlciB7XG4vLyAgICAgY29udGVudDogXCJcIjtcbi8vICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4vLyAgICAgZGlzcGxheTogbm9uZTtcbi8vICAgfVxuICBcbi8vICAgLyogU2hvdyB0aGUgY2hlY2ttYXJrIHdoZW4gY2hlY2tlZCAqL1xuLy8gICAuY2hlY2stZGVzaWduIGlucHV0OmNoZWNrZWQgfiAuY2hlY2ttYXJrOmFmdGVyIHtcbi8vICAgICBkaXNwbGF5OiBibG9jaztcbi8vICAgfVxuICBcbi8vICAgLyogU3R5bGUgdGhlIGNoZWNrbWFyay9pbmRpY2F0b3IgKi9cbi8vICAgLmNoZWNrLWRlc2lnbiAuY2hlY2ttYXJrOmFmdGVyIHtcbi8vICAgICBsZWZ0OiA2cHg7XG4vLyAgICAgdG9wOiAycHg7XG4vLyAgICAgd2lkdGg6IDVweDtcbi8vICAgICBoZWlnaHQ6IDEwcHg7XG4vLyAgICAgYm9yZGVyOiBzb2xpZCB3aGl0ZTtcbi8vICAgICBib3JkZXItd2lkdGg6IDAgMnB4IDJweCAwO1xuLy8gICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuLy8gICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4vLyAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuLy8gICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo5OTIpe1xuICAgIC5sb2dvLXNlY3Rpb257XG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICB3aWR0aDogMjUwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcblxuICAgIC5sb2dvLXNlY3Rpb257XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgaW1ne3dpZHRoOiAyNzBweDsgcGFkZGluZzogNDBweDt9XG4gICAgfVxuXG4gICAgLnBvd2VyYnl7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBib3R0b206IGF1dG87XG4gICAgICAgIHBhZGRpbmctdG9wOiAxNXB4O1xuICAgIH1cblxuICAgIC5ocl9sb2dpbmJveHtoZWlnaHQ6MTAwJTtcbiAgICAgICAgLmZvcm0tZ3JvdXB7XG4gICAgICAgICAgICB3aWR0aDogMzA0cHg7XG4gICAgICAgIH1cbiAgICB9XG4gIH0gXG5cbiAgLm1zYWx7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhye1xuICAgICAgICBib3JkZXItY29sb3I6IGxpZ2h0Z3JleTtcbiAgICB9XG4gICAgc21hbGx7XG4gICAgICAgIG1hcmdpbi10b3A6IC0xMHB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogODAlO1xuICAgICAgICBsZWZ0OiA0MiU7XG4gICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICBwYWRkaW5nOiAwIDEwcHg7XG4gICAgICAgIGNvbG9yOiBncmV5O1xuICAgIH1cbiAgLm1zYWxCdG57XG4gICAgYmFja2dyb3VuZDp3aGl0ZTtcbiAgICBjb2xvcjogZ3JleTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDoyMHB4O1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzo0cHggNnB4O1xuICAgIGhlaWdodDphdXRvICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLWNvbG9yOmxpZ2h0Z3JleTtcbiAgICBpbWd7XG4gICAgICAgIHdpZHRoOiAzMHB4O1xuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgIH1cbiAgfVxufVxuXG4iXX0= */\"","import { Injectable } from '@angular/core';\nimport * as bcrypt from 'bcryptjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PasswordEncryptionService {\n salt = '$2a$10$eqC4UCSvLXlzFFOjljc.ee';\n pass;\n constructor() { }\n encryptPassword(password) {\n this.pass = bcrypt.hashSync(password, this.salt);\n return this.pass;\n\n }\n}\n","/* (ignored) */"],"sourceRoot":"webpack:///"}