code:
var LZString = {
  _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
  _f: String.fromCharCode,
  compressToBase64: function (e) {
    if (e == null) return "";
    var t = "";
    var n, r, i, s, o, u, a;
    var f = 0;
    e = LZString.compress(e);
    while (f < e.length * 2) {
      if (f % 2 == 0) {
        n = e.charCodeAt(f / 2) >> 8;
        r = e.charCodeAt(f / 2) & 255;
        if (f / 2 + 1 < e.length) i = e.charCodeAt(f / 2 + 1) >> 8;
        else i = NaN;
      } else {
        n = e.charCodeAt((f - 1) / 2) & 255;
        if ((f + 1) / 2 < e.length) {
          r = e.charCodeAt((f + 1) / 2) >> 8;
          i = e.charCodeAt((f + 1) / 2) & 255;
        } else r = i = NaN;
      }
      f += 3;
      s = n >> 2;
      o = ((n & 3) << 4) | (r >> 4);
      u = ((r & 15) << 2) | (i >> 6);
      a = i & 63;
      if (isNaN(r)) {
        u = a = 64;
      } else if (isNaN(i)) {
        a = 64;
      }
      t =
        t +
        LZString._keyStr.charAt(s) +
        LZString._keyStr.charAt(o) +
        LZString._keyStr.charAt(u) +
        LZString._keyStr.charAt(a);
    }
    return t;
  },
  decompressFromBase64: function (e) {
    if (e == null) return "";
    var t = "",
      n = 0,
      r,
      i,
      s,
      o,
      u,
      a,
      f,
      l,
      c = 0,
      h = LZString._f;
    e = e.replace(/[^A-Za-z0-9\+\/\=]/g, "");
    while (c < e.length) {
      u = LZString._keyStr.indexOf(e.charAt(c++));
      a = LZString._keyStr.indexOf(e.charAt(c++));
      f = LZString._keyStr.indexOf(e.charAt(c++));
      l = LZString._keyStr.indexOf(e.charAt(c++));
      i = (u << 2) | (a >> 4);
      s = ((a & 15) << 4) | (f >> 2);
      o = ((f & 3) << 6) | l;
      if (n % 2 == 0) {
        r = i << 8;
        if (f != 64) {
          t += h(r | s);
        }
        if (l != 64) {
          r = o << 8;
        }
      } else {
        t = t + h(r | i);
        if (f != 64) {
          r = s << 8;
        }
        if (l != 64) {
          t += h(r | o);
        }
      }
      n += 3;
    }
    return LZString.decompress(t);
  },
  compressToUTF16: function (e) {
    if (e == null) return "";
    var t = "",
      n,
      r,
      i,
      s = 0,
      o = LZString._f;
    e = LZString.compress(e);
    for (n = 0; n < e.length; n++) {
      r = e.charCodeAt(n);
      switch (s++) {
        case 0:
          t += o((r >> 1) + 32);
          i = (r & 1) << 14;
          break;
        case 1:
          t += o(i + (r >> 2) + 32);
          i = (r & 3) << 13;
          break;
        case 2:
          t += o(i + (r >> 3) + 32);
          i = (r & 7) << 12;
          break;
        case 3:
          t += o(i + (r >> 4) + 32);
          i = (r & 15) << 11;
          break;
        case 4:
          t += o(i + (r >> 5) + 32);
          i = (r & 31) << 10;
          break;
        case 5:
          t += o(i + (r >> 6) + 32);
          i = (r & 63) << 9;
          break;
        case 6:
          t += o(i + (r >> 7) + 32);
          i = (r & 127) << 8;
          break;
        case 7:
          t += o(i + (r >> 8) + 32);
          i = (r & 255) << 7;
          break;
        case 8:
          t += o(i + (r >> 9) + 32);
          i = (r & 511) << 6;
          break;
        case 9:
          t += o(i + (r >> 10) + 32);
          i = (r & 1023) << 5;
          break;
        case 10:
          t += o(i + (r >> 11) + 32);
          i = (r & 2047) << 4;
          break;
        case 11:
          t += o(i + (r >> 12) + 32);
          i = (r & 4095) << 3;
          break;
        case 12:
          t += o(i + (r >> 13) + 32);
          i = (r & 8191) << 2;
          break;
        case 13:
          t += o(i + (r >> 14) + 32);
          i = (r & 16383) << 1;
          break;
        case 14:
          t += o(i + (r >> 15) + 32, (r & 32767) + 32);
          s = 0;
          break;
      }
    }
    return t + o(i + 32);
  },
  decompressFromUTF16: function (e) {
    if (e == null) return "";
    var t = "",
      n,
      r,
      i = 0,
      s = 0,
      o = LZString._f;
    while (s < e.length) {
      r = e.charCodeAt(s) - 32;
      switch (i++) {
        case 0:
          n = r << 1;
          break;
        case 1:
          t += o(n | (r >> 14));
          n = (r & 16383) << 2;
          break;
        case 2:
          t += o(n | (r >> 13));
          n = (r & 8191) << 3;
          break;
        case 3:
          t += o(n | (r >> 12));
          n = (r & 4095) << 4;
          break;
        case 4:
          t += o(n | (r >> 11));
          n = (r & 2047) << 5;
          break;
        case 5:
          t += o(n | (r >> 10));
          n = (r & 1023) << 6;
          break;
        case 6:
          t += o(n | (r >> 9));
          n = (r & 511) << 7;
          break;
        case 7:
          t += o(n | (r >> 8));
          n = (r & 255) << 8;
          break;
        case 8:
          t += o(n | (r >> 7));
          n = (r & 127) << 9;
          break;
        case 9:
          t += o(n | (r >> 6));
          n = (r & 63) << 10;
          break;
        case 10:
          t += o(n | (r >> 5));
          n = (r & 31) << 11;
          break;
        case 11:
          t += o(n | (r >> 4));
          n = (r & 15) << 12;
          break;
        case 12:
          t += o(n | (r >> 3));
          n = (r & 7) << 13;
          break;
        case 13:
          t += o(n | (r >> 2));
          n = (r & 3) << 14;
          break;
        case 14:
          t += o(n | (r >> 1));
          n = (r & 1) << 15;
          break;
        case 15:
          t += o(n | r);
          i = 0;
          break;
      }
      s++;
    }
    return LZString.decompress(t);
  },
  compressToUint8Array: function (e) {
    var t = LZString.compress(e);
    var n = new Uint8Array(t.length * 2);
    for (var r = 0, i = t.length; r < i; r++) {
      var s = t.charCodeAt(r);
      n[r * 2] = s >>> 8;
      n[r * 2 + 1] = s % 256;
    }
    return n;
  },
  decompressFromUint8Array: function (e) {
    if (e === null || e === undefined) {
      return LZString.decompress(e);
    } else {
      var t = new Array(e.length / 2);
      for (var n = 0, r = t.length; n < r; n++) {
        t[n] = e[n * 2] * 256 + e[n * 2 + 1];
      }
      return LZString.decompress(String.fromCharCode.apply(null, t));
    }
  },
  compressToEncodedURIComponent: function (e) {
    return LZString.compressToBase64(e).replace(/=/g, "$").replace(/\//g, "-");
  },
  decompressFromEncodedURIComponent: function (e) {
    if (e) e = e.replace(/$/g, "=").replace(/-/g, "/");
    return LZString.decompressFromBase64(e);
  },
  compress: function (e) {
    if (e == null) return "";
    var t,
      n,
      r = {},
      i = {},
      s = "",
      o = "",
      u = "",
      a = 2,
      f = 3,
      l = 2,
      c = "",
      h = 0,
      p = 0,
      d,
      v = LZString._f;
    for (d = 0; d < e.length; d += 1) {
      s = e.charAt(d);
      if (!Object.prototype.hasOwnProperty.call(r, s)) {
        r[s] = f++;
        i[s] = true;
      }
      o = u + s;
      if (Object.prototype.hasOwnProperty.call(r, o)) {
        u = o;
      } else {
        if (Object.prototype.hasOwnProperty.call(i, u)) {
          if (u.charCodeAt(0) < 256) {
            for (t = 0; t < l; t++) {
              h = h << 1;
              if (p == 15) {
                p = 0;
                c += v(h);
                h = 0;
              } else {
                p++;
              }
            }
            n = u.charCodeAt(0);
            for (t = 0; t < 8; t++) {
              h = (h << 1) | (n & 1);
              if (p == 15) {
                p = 0;
                c += v(h);
                h = 0;
              } else {
                p++;
              }
              n = n >> 1;
            }
          } else {
            n = 1;
            for (t = 0; t < l; t++) {
              h = (h << 1) | n;
              if (p == 15) {
                p = 0;
                c += v(h);
                h = 0;
              } else {
                p++;
              }
              n = 0;
            }
            n = u.charCodeAt(0);
            for (t = 0; t < 16; t++) {
              h = (h << 1) | (n & 1);
              if (p == 15) {
                p = 0;
                c += v(h);
                h = 0;
              } else {
                p++;
              }
              n = n >> 1;
            }
          }
          a--;
          if (a == 0) {
            a = Math.pow(2, l);
            l++;
          }
          delete i[u];
        } else {
          n = r[u];
          for (t = 0; t < l; t++) {
            h = (h << 1) | (n & 1);
            if (p == 15) {
              p = 0;
              c += v(h);
              h = 0;
            } else {
              p++;
            }
            n = n >> 1;
          }
        }
        a--;
        if (a == 0) {
          a = Math.pow(2, l);
          l++;
        }
        r[o] = f++;
        u = String(s);
      }
    }
    if (u !== "") {
      if (Object.prototype.hasOwnProperty.call(i, u)) {
        if (u.charCodeAt(0) < 256) {
          for (t = 0; t < l; t++) {
            h = h << 1;
            if (p == 15) {
              p = 0;
              c += v(h);
              h = 0;
            } else {
              p++;
            }
          }
          n = u.charCodeAt(0);
          for (t = 0; t < 8; t++) {
            h = (h << 1) | (n & 1);
            if (p == 15) {
              p = 0;
              c += v(h);
              h = 0;
            } else {
              p++;
            }
            n = n >> 1;
          }
        } else {
          n = 1;
          for (t = 0; t < l; t++) {
            h = (h << 1) | n;
            if (p == 15) {
              p = 0;
              c += v(h);
              h = 0;
            } else {
              p++;
            }
            n = 0;
          }
          n = u.charCodeAt(0);
          for (t = 0; t < 16; t++) {
            h = (h << 1) | (n & 1);
            if (p == 15) {
              p = 0;
              c += v(h);
              h = 0;
            } else {
              p++;
            }
            n = n >> 1;
          }
        }
        a--;
        if (a == 0) {
          a = Math.pow(2, l);
          l++;
        }
        delete i[u];
      } else {
        n = r[u];
        for (t = 0; t < l; t++) {
          h = (h << 1) | (n & 1);
          if (p == 15) {
            p = 0;
            c += v(h);
            h = 0;
          } else {
            p++;
          }
          n = n >> 1;
        }
      }
      a--;
      if (a == 0) {
        a = Math.pow(2, l);
        l++;
      }
    }
    n = 2;
    for (t = 0; t < l; t++) {
      h = (h << 1) | (n & 1);
      if (p == 15) {
        p = 0;
        c += v(h);
        h = 0;
      } else {
        p++;
      }
      n = n >> 1;
    }
    while (true) {
      h = h << 1;
      if (p == 15) {
        c += v(h);
        break;
      } else p++;
    }
    return c;
  },
  decompress: function (e) {
    if (e == null) return "";
    if (e == "") return null;
    var t = [],
      n,
      r = 4,
      i = 4,
      s = 3,
      o = "",
      u = "",
      a,
      f,
      l,
      c,
      h,
      p,
      d,
      v = LZString._f,
      m = { string: e, val: e.charCodeAt(0), position: 32768, index: 1 };
    for (a = 0; a < 3; a += 1) {
      t[a] = a;
    }
    l = 0;
    h = Math.pow(2, 2);
    p = 1;
    while (p != h) {
      c = m.val & m.position;
      m.position >>= 1;
      if (m.position == 0) {
        m.position = 32768;
        m.val = m.string.charCodeAt(m.index++);
      }
      l |= (c > 0 ? 1 : 0) * p;
      p <<= 1;
    }
    switch ((n = l)) {
      case 0:
        l = 0;
        h = Math.pow(2, 8);
        p = 1;
        while (p != h) {
          c = m.val & m.position;
          m.position >>= 1;
          if (m.position == 0) {
            m.position = 32768;
            m.val = m.string.charCodeAt(m.index++);
          }
          l |= (c > 0 ? 1 : 0) * p;
          p <<= 1;
        }
        d = v(l);
        break;
      case 1:
        l = 0;
        h = Math.pow(2, 16);
        p = 1;
        while (p != h) {
          c = m.val & m.position;
          m.position >>= 1;
          if (m.position == 0) {
            m.position = 32768;
            m.val = m.string.charCodeAt(m.index++);
          }
          l |= (c > 0 ? 1 : 0) * p;
          p <<= 1;
        }
        d = v(l);
        break;
      case 2:
        return "";
    }
    t[3] = d;
    f = u = d;
    while (true) {
      if (m.index > m.string.length) {
        return "";
      }
      l = 0;
      h = Math.pow(2, s);
      p = 1;
      while (p != h) {
        c = m.val & m.position;
        m.position >>= 1;
        if (m.position == 0) {
          m.position = 32768;
          m.val = m.string.charCodeAt(m.index++);
        }
        l |= (c > 0 ? 1 : 0) * p;
        p <<= 1;
      }
      switch ((d = l)) {
        case 0:
          l = 0;
          h = Math.pow(2, 8);
          p = 1;
          while (p != h) {
            c = m.val & m.position;
            m.position >>= 1;
            if (m.position == 0) {
              m.position = 32768;
              m.val = m.string.charCodeAt(m.index++);
            }
            l |= (c > 0 ? 1 : 0) * p;
            p <<= 1;
          }
          t[i++] = v(l);
          d = i - 1;
          r--;
          break;
        case 1:
          l = 0;
          h = Math.pow(2, 16);
          p = 1;
          while (p != h) {
            c = m.val & m.position;
            m.position >>= 1;
            if (m.position == 0) {
              m.position = 32768;
              m.val = m.string.charCodeAt(m.index++);
            }
            l |= (c > 0 ? 1 : 0) * p;
            p <<= 1;
          }
          t[i++] = v(l);
          d = i - 1;
          r--;
          break;
        case 2:
          return u;
      }
      if (r == 0) {
        r = Math.pow(2, s);
        s++;
      }
      if (t[d]) {
        o = t[d];
      } else {
        if (d === i) {
          o = f + f.charAt(0);
        } else {
          return null;
        }
      }
      u += o;
      t[i++] = f + o.charAt(0);
      r--;
      f = o;
      if (r == 0) {
        r = Math.pow(2, s);
        s++;
      }
    }
  },
};
if (typeof module !== "undefined" && module != null) {
  module.exports = LZString;
}