var LZString = (function () {
    var r = String.fromCharCode,
        o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
        n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",
        e = {};
    function t(r, o) {
        if (!e[r]) {
            e[r] = {};
            for (var n = 0; n < r.length; n++) e[r][r.charAt(n)] = n;
        }
        return e[r][o];
    }
    var i = {
        compressToBase64: function (r) {
            if (null == r) return "";
            var n = i._compress(r, 6, function (r) {
                return o.charAt(r);
            });
            switch (n.length % 4) {
                default:
                case 0:
                    return n;
                case 1:
                    return n + "===";
                case 2:
                    return n + "==";
                case 3:
                    return n + "=";
            }
        },
        decompressFromBase64: function (r) {
            return null == r
                ? ""
                : "" == r
                ? null
                : i._decompress(r.length, 32, function (n) {
                      return t(o, r.charAt(n));
                  });
        },
        compressToUTF16: function (o) {
            return null == o
                ? ""
                : i._compress(o, 15, function (o) {
                      return r(o + 32);
                  }) + " ";
        },
        decompressFromUTF16: function (r) {
            return null == r
                ? ""
                : "" == r
                ? null
                : i._decompress(r.length, 16384, function (o) {
                      return r.charCodeAt(o) - 32;
                  });
        },
        compressToUint8Array: function (r) {
            for (
                var o = i.compress(r),
                    n = new Uint8Array(2 * o.length),
                    e = 0,
                    t = o.length;
                e < t;
                e++
            ) {
                var s = o.charCodeAt(e);
                (n[2 * e] = s >>> 8), (n[2 * e + 1] = s % 256);
            }
            return n;
        },
        decompressFromUint8Array: function (o) {
            if (null == o) return i.decompress(o);
            for (var n = new Array(o.length / 2), e = 0, t = n.length; e < t; e++)
                n[e] = 256 * o[2 * e] + o[2 * e + 1];
            var s = [];
            return (
                n.forEach(function (o) {
                    s.push(r(o));
                }),
                i.decompress(s.join(""))
            );
        },
        compressToEncodedURIComponent: function (r) {
            return null == r
                ? ""
                : i._compress(r, 6, function (r) {
                      return n.charAt(r);
                  });
        },
        decompressFromEncodedURIComponent: function (r) {
            return null == r
                ? ""
                : "" == r
                ? null
                : ((r = r.replace(/ /g, "+")),
                  i._decompress(r.length, 32, function (o) {
                      return t(n, r.charAt(o));
                  }));
        },
        compress: function (o) {
            return i._compress(o, 16, function (o) {
                return r(o);
            });
        },
        _compress: function (r, o, n) {
            if (null == r) return "";
            var e,
                t,
                i,
                s = {},
                u = {},
                a = "",
                p = "",
                c = "",
                l = 2,
                f = 3,
                h = 2,
                d = [],
                m = 0,
                v = 0;
            for (i = 0; i < r.length; i += 1)
                if (
                    ((a = r.charAt(i)),
                    Object.prototype.hasOwnProperty.call(s, a) ||
                        ((s[a] = f++), (u[a] = !0)),
                    (p = c + a),
                    Object.prototype.hasOwnProperty.call(s, p))
                )
                    c = p;
                else {
                    if (Object.prototype.hasOwnProperty.call(u, c)) {
                        if (c.charCodeAt(0) < 256) {
                            for (e = 0; e < h; e++)
                                (m <<= 1),
                                    v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++;
                            for (t = c.charCodeAt(0), e = 0; e < 8; e++)
                                (m = (m << 1) | (1 & t)),
                                    v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
                                    (t >>= 1);
                        } else {
                            for (t = 1, e = 0; e < h; e++)
                                (m = (m << 1) | t),
                                    v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
                                    (t = 0);
                            for (t = c.charCodeAt(0), e = 0; e < 16; e++)
                                (m = (m << 1) | (1 & t)),
                                    v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
                                    (t >>= 1);
                        }
                        0 == --l && ((l = Math.pow(2, h)), h++), delete u[c];
                    } else
                        for (t = s[c], e = 0; e < h; e++)
                            (m = (m << 1) | (1 & t)),
                                v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
                                (t >>= 1);
                    0 == --l && ((l = Math.pow(2, h)), h++),
                        (s[p] = f++),
                        (c = String(a));
                }
            if ("" !== c) {
                if (Object.prototype.hasOwnProperty.call(u, c)) {
                    if (c.charCodeAt(0) < 256) {
                        for (e = 0; e < h; e++)
                            (m <<= 1),
                                v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++;
                        for (t = c.charCodeAt(0), e = 0; e < 8; e++)
                            (m = (m << 1) | (1 & t)),
                                v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
                                (t >>= 1);
                    } else {
                        for (t = 1, e = 0; e < h; e++)
                            (m = (m << 1) | t),
                                v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
                                (t = 0);
                        for (t = c.charCodeAt(0), e = 0; e < 16; e++)
                            (m = (m << 1) | (1 & t)),
                                v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
                                (t >>= 1);
                    }
                    0 == --l && ((l = Math.pow(2, h)), h++), delete u[c];
                } else
                    for (t = s[c], e = 0; e < h; e++)
                        (m = (m << 1) | (1 & t)),
                            v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
                            (t >>= 1);
                0 == --l && ((l = Math.pow(2, h)), h++);
            }
            for (t = 2, e = 0; e < h; e++)
                (m = (m << 1) | (1 & t)),
                    v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++,
                    (t >>= 1);
            for (;;) {
                if (((m <<= 1), v == o - 1)) {
                    d.push(n(m));
                    break;
                }
                v++;
            }
            return d.join("");
        },
        decompress: function (r) {
            return null == r
                ? ""
                : "" == r
                ? null
                : i._decompress(r.length, 32768, function (o) {
                      return r.charCodeAt(o);
                  });
        },
        _decompress: function (o, n, e) {
            var t,
                i,
                s,
                u,
                a,
                p,
                c,
                l = [],
                f = 4,
                h = 4,
                d = 3,
                m = "",
                v = [],
                g = { val: e(0), position: n, index: 1 };
            for (t = 0; t < 3; t += 1) l[t] = t;
            for (s = 0, a = Math.pow(2, 2), p = 1; p != a; )
                (u = g.val & g.position),
                    (g.position >>= 1),
                    0 == g.position && ((g.position = n), (g.val = e(g.index++))),
                    (s |= (u > 0 ? 1 : 0) * p),
                    (p <<= 1);
            switch (s) {
                case 0:
                    for (s = 0, a = Math.pow(2, 8), p = 1; p != a; )
                        (u = g.val & g.position),
                            (g.position >>= 1),
                            0 == g.position && ((g.position = n), (g.val = e(g.index++))),
                            (s |= (u > 0 ? 1 : 0) * p),
                            (p <<= 1);
                    c = r(s);
                    break;
                case 1:
                    for (s = 0, a = Math.pow(2, 16), p = 1; p != a; )
                        (u = g.val & g.position),
                            (g.position >>= 1),
                            0 == g.position && ((g.position = n), (g.val = e(g.index++))),
                            (s |= (u > 0 ? 1 : 0) * p),
                            (p <<= 1);
                    c = r(s);
                    break;
                case 2:
                    return "";
            }
            for (l[3] = c, i = c, v.push(c); ; ) {
                if (g.index > o) return "";
                for (s = 0, a = Math.pow(2, d), p = 1; p != a; )
                    (u = g.val & g.position),
                        (g.position >>= 1),
                        0 == g.position && ((g.position = n), (g.val = e(g.index++))),
                        (s |= (u > 0 ? 1 : 0) * p),
                        (p <<= 1);
                switch ((c = s)) {
                    case 0:
                        for (s = 0, a = Math.pow(2, 8), p = 1; p != a; )
                            (u = g.val & g.position),
                                (g.position >>= 1),
                                0 == g.position &&
                                    ((g.position = n), (g.val = e(g.index++))),
                                (s |= (u > 0 ? 1 : 0) * p),
                                (p <<= 1);
                        (l[h++] = r(s)), (c = h - 1), f--;
                        break;
                    case 1:
                        for (s = 0, a = Math.pow(2, 16), p = 1; p != a; )
                            (u = g.val & g.position),
                                (g.position >>= 1),
                                0 == g.position &&
                                    ((g.position = n), (g.val = e(g.index++))),
                                (s |= (u > 0 ? 1 : 0) * p),
                                (p <<= 1);
                        (l[h++] = r(s)), (c = h - 1), f--;
                        break;
                    case 2:
                        return v.join("");
                }
                if ((0 == f && ((f = Math.pow(2, d)), d++), l[c])) m = l[c];
                else {
                    if (c !== h) return null;
                    m = i + i.charAt(0);
                }
                v.push(m),
                    (l[h++] = i + m.charAt(0)),
                    (i = m),
                    0 == --f && ((f = Math.pow(2, d)), d++);
            }
        },
    };
    return i;
})();
"function" == typeof define && define.amd
    ? define(function () {
          return LZString;
      })
    : "undefined" != typeof module && null != module
    ? (module.exports = LZString)
    : "undefined" != typeof angular &&
      null != angular &&
      angular.module("LZString", []).factory("LZString", function () {
          return LZString;
      });
