text: /*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ ! function (e, t) {
      "use strict";
      "object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function (e) {
          if (!e.document) throw new Error("jQuery requires a window with a document");
          return t(e)
      } : t(e)
  }("undefined" != typeof window ? window : this, function (e, t) {
      "use strict";
      var n = [],
          r = e.document,
          i = Object.getPrototypeOf,
          o = n.slice,
          a = n.concat,
          s = n.push,
          u = n.indexOf,
          l = {},
          c = l.toString,
          f = l.hasOwnProperty,
          p = f.toString,
          d = p.call(Object),
          h = {},
          g = function e(t) {
              return "function" == typeof t && "number" != typeof t.nodeType
          },
          y = function e(t) {
              return null != t && t === t.window
          },
          v = {
              type: !0,
              src: !0,
              noModule: !0
          };
  
      function m(e, t, n) {
          var i, o = (t = t || r).createElement("script");
          if (o.text = e, n)
              for (i in v) n[i] && (o[i] = n[i]);
          t.head.appendChild(o).parentNode.removeChild(o)
      }
  
      function x(e) {
          return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? l[c.call(e)] || "object" : typeof e
      }
      var b = "3.3.1",
          w = function (e, t) {
              return new w.fn.init(e, t)
          },
          T = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
      w.fn = w.prototype = {
          jquery: "3.3.1",
          constructor: w,
          length: 0,
          toArray: function () {
              return o.call(this)
          },
          get: function (e) {
              return null == e ? o.call(this) : e < 0 ? this[e + this.length] : this[e]
          },
          pushStack: function (e) {
              var t = w.merge(this.constructor(), e);
              return t.prevObject = this, t
          },
          each: function (e) {
              return w.each(this, e)
          },
          map: function (e) {
              return this.pushStack(w.map(this, function (t, n) {
                  return e.call(t, n, t)
              }))
          },
          slice: function () {
              return this.pushStack(o.apply(this, arguments))
          },
          first: function () {
              return this.eq(0)
          },
          last: function () {
              return this.eq(-1)
          },
          eq: function (e) {
              var t = this.length,
                  n = +e + (e < 0 ? t : 0);
              return this.pushStack(n >= 0 && n < t ? [this[n]] : [])
          },
          end: function () {
              return this.prevObject || this.constructor()
          },
          push: s,
          sort: n.sort,
          splice: n.splice
      }, w.extend = w.fn.extend = function () {
          var e, t, n, r, i, o, a = arguments[0] || {},
              s = 1,
              u = arguments.length,
              l = !1;
          for ("boolean" == typeof a && (l = a, a = arguments[s] || {}, s++), "object" == typeof a || g(a) || (a = {}), s === u && (a = this, s--); s < u; s++)
              if (null != (e = arguments[s]))
                  for (t in e) n = a[t], a !== (r = e[t]) && (l && r && (w.isPlainObject(r) || (i = Array.isArray(r))) ? (i ? (i = !1, o = n && Array.isArray(n) ? n : []) : o = n && w.isPlainObject(n) ? n : {}, a[t] = w.extend(l, o, r)) : void 0 !== r && (a[t] = r));
          return a
      }, w.extend({
          expando: "jQuery" + ("3.3.1" + Math.random()).replace(/\D/g, ""),
          isReady: !0,
          error: function (e) {
              throw new Error(e)
          },
          noop: function () {},
          isPlainObject: function (e) {
              var t, n;
              return !(!e || "[object Object]" !== c.call(e)) && (!(t = i(e)) || "function" == typeof (n = f.call(t, "constructor") && t.constructor) && p.call(n) === d)
          },
          isEmptyObject: function (e) {
              var t;
              for (t in e) return !1;
              return !0
          },
          globalEval: function (e) {
              m(e)
          },
          each: function (e, t) {
              var n, r = 0;
              if (C(e)) {
                  for (n = e.length; r < n; r++)
                      if (!1 === t.call(e[r], r, e[r])) break
              } else
                  for (r in e)
                      if (!1 === t.call(e[r], r, e[r])) break;
              return e
          },
          trim: function (e) {
              return null == e ? "" : (e + "").replace(T, "")
          },
          makeArray: function (e, t) {
              var n = t || [];
              return null != e && (C(Object(e)) ? w.merge(n, "string" == typeof e ? [e] : e) : s.call(n, e)), n
          },
          inArray: function (e, t, n) {
              return null == t ? -1 : u.call(t, e, n)
          },
          merge: function (e, t) {
              for (var n = +t.length, r = 0, i = e.length; r < n; r++) e[i++] = t[r];
              return e.length = i, e
          },
          grep: function (e, t, n) {
              for (var r, i = [], o = 0, a = e.length, s = !n; o < a; o++)(r = !t(e[o], o)) !== s && i.push(e[o]);
              return i
          },
          map: function (e, t, n) {
              var r, i, o = 0,
                  s = [];
              if (C(e))
                  for (r = e.length; o < r; o++) null != (i = t(e[o], o, n)) && s.push(i);
              else
                  for (o in e) null != (i = t(e[o], o, n)) && s.push(i);
              return a.apply([], s)
          },
          guid: 1,
          support: h
      }), "function" == typeof Symbol && (w.fn[Symbol.iterator] = n[Symbol.iterator]), w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function (e, t) {
          l["[object " + t + "]"] = t.toLowerCase()
      });
  
      function C(e) {
          var t = !!e && "length" in e && e.length,
              n = x(e);
          return !g(e) && !y(e) && ("array" === n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e)
      }
      var E = function (e) {
          var t, n, r, i, o, a, s, u, l, c, f, p, d, h, g, y, v, m, x, b = "sizzle" + 1 * new Date,
              w = e.document,
              T = 0,
              C = 0,
              E = ae(),
              k = ae(),
              S = ae(),
              D = function (e, t) {
                  return e === t && (f = !0), 0
              },
              N = {}.hasOwnProperty,
              A = [],
              j = A.pop,
              q = A.push,
              L = A.push,
              H = A.slice,
              O = function (e, t) {
                  for (var n = 0, r = e.length; n < r; n++)
                      if (e[n] === t) return n;
                  return -1
              },
              P = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
              M = "[\\x20\\t\\r\\n\\f]",
              R = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
              I = "\\[" + M + "*(" + R + ")(?:" + M + "*([*^$|!~]?=)" + M + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + R + "))|)" + M + "*\\]",
              W = ":(" + R + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + I + ")*)|.*)\\)|)",
              $ = new RegExp(M + "+", "g"),
              B = new RegExp("^" + M + "+|((?:^|[^\\\\])(?:\\\\.)*)" + M + "+$", "g"),
              F = new RegExp("^" + M + "*," + M + "*"),
              _ = new RegExp("^" + M + "*([>+~]|" + M + ")" + M + "*"),
              z = new RegExp("=" + M + "*([^\\]'\"]*?)" + M + "*\\]", "g"),
              X = new RegExp(W),
              U = new RegExp("^" + R + "$"),
              V = {
                  ID: new RegExp("^#(" + R + ")"),
                  CLASS: new RegExp("^\\.(" + R + ")"),
                  TAG: new RegExp("^(" + R + "|[*])"),
                  ATTR: new RegExp("^" + I),
                  PSEUDO: new RegExp("^" + W),
                  CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + M + "*(even|odd|(([+-]|)(\\d*)n|)" + M + "*(?:([+-]|)" + M + "*(\\d+)|))" + M + "*\\)|)", "i"),
                  bool: new RegExp("^(?:" + P + ")$", "i"),
                  needsContext: new RegExp("^" + M + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + M + "*((?:-\\d)?\\d*)" + M + "*\\)|)(?=[^-]|$)", "i")
              },
              G = /^(?:input|select|textarea|button)$/i,
              Y = /^h\d$/i,
              Q = /^[^{]+\{\s*\[native \w/,
              J = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
              K = /[+~]/,
              Z = new RegExp("\\\\([\\da-f]{1,6}" + M + "?|(" + M + ")|.)", "ig"),
              ee = function (e, t, n) {
                  var r = "0x" + t - 65536;
                  return r !== r || n ? t : r < 0 ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320)
              },
              te = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
              ne = function (e, t) {
                  return t ? "\0" === e ? "\ufffd" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e
              },
              re = function () {
                  p()
              },
              ie = me(function (e) {
                  return !0 === e.disabled && ("form" in e || "label" in e)
              }, {
                  dir: "parentNode",
                  next: "legend"
              });
          try {
              L.apply(A = H.call(w.childNodes), w.childNodes), A[w.childNodes.length].nodeType
          } catch (e) {
              L = {
                  apply: A.length ? function (e, t) {
                      q.apply(e, H.call(t))
                  } : function (e, t) {
                      var n = e.length,
                          r = 0;
                      while (e[n++] = t[r++]);
                      e.length = n - 1
                  }
              }
          }
  
          function oe(e, t, r, i) {
              var o, s, l, c, f, h, v, m = t && t.ownerDocument,
                  T = t ? t.nodeType : 9;
              if (r = r || [], "string" != typeof e || !e || 1 !== T && 9 !== T && 11 !== T) return r;
              if (!i && ((t ? t.ownerDocument || t : w) !== d && p(t), t = t || d, g)) {
                  if (11 !== T && (f = J.exec(e)))
                      if (o = f[1]) {
                          if (9 === T) {
                              if (!(l = t.getElementById(o))) return r;
                              if (l.id === o) return r.push(l), r
                          } else if (m && (l = m.getElementById(o)) && x(t, l) && l.id === o) return r.push(l), r
                      } else {
                          if (f[2]) return L.apply(r, t.getElementsByTagName(e)), r;
                          if ((o = f[3]) && n.getElementsByClassName && t.getElementsByClassName) return L.apply(r, t.getElementsByClassName(o)), r
                      } if (n.qsa && !S[e + " "] && (!y || !y.test(e))) {
                      if (1 !== T) m = t, v = e;
                      else if ("object" !== t.nodeName.toLowerCase()) {
                          (c = t.getAttribute("id")) ? c = c.replace(te, ne): t.setAttribute("id", c = b), s = (h = a(e)).length;
                          while (s--) h[s] = "#" + c + " " + ve(h[s]);
                          v = h.join(","), m = K.test(e) && ge(t.parentNode) || t
                      }
                      if (v) try {
                          return L.apply(r, m.querySelectorAll(v)), r
                      } catch (e) {} finally {
                          c === b && t.removeAttribute("id")
                      }
                  }
              }
              return u(e.replace(B, "$1"), t, r, i)
          }
  
          function ae() {
              var e = [];
  
              function t(n, i) {
                  return e.push(n + " ") > r.cacheLength && delete t[e.shift()], t[n + " "] = i
              }
              return t
          }
  
          function se(e) {
              return e[b] = !0, e
          }
  
          function ue(e) {
              var t = d.createElement("fieldset");
              try {
                  return !!e(t)
              } catch (e) {
                  return !1
              } finally {
                  t.parentNode && t.parentNode.removeChild(t), t = null
              }
          }
  
          function le(e, t) {
              var n = e.split("|"),
                  i = n.length;
              while (i--) r.attrHandle[n[i]] = t
          }
  
          function ce(e, t) {
              var n = t && e,
                  r = n && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex;
              if (r) return r;
              if (n)
                  while (n = n.nextSibling)
                      if (n === t) return -1;
              return e ? 1 : -1
          }
  
          function fe(e) {
              return function (t) {
                  return "input" === t.nodeName.toLowerCase() && t.type === e
              }
          }
  
          function pe(e) {
              return function (t) {
                  var n = t.nodeName.toLowerCase();
                  return ("input" === n || "button" === n) && t.type === e
              }
          }
  
          function de(e) {
              return function (t) {
                  return "form" in t ? t.parentNode && !1 === t.disabled ? "label" in t ? "label" in t.parentNode ? t.parentNode.disabled === e : t.disabled === e : t.isDisabled === e || t.isDisabled !== !e && ie(t) === e : t.disabled === e : "label" in t && t.disabled === e
              }
          }
  
          function he(e) {
              return se(function (t) {
                  return t = +t, se(function (n, r) {
                      var i, o = e([], n.length, t),
                          a = o.length;
                      while (a--) n[i = o[a]] && (n[i] = !(r[i] = n[i]))
                  })
              })
          }
  
          function ge(e) {
              return e && "undefined" != typeof e.getElementsByTagName && e
          }
          n = oe.support = {}, o = oe.isXML = function (e) {
              var t = e && (e.ownerDocument || e).documentElement;
              return !!t && "HTML" !== t.nodeName
          }, p = oe.setDocument = function (e) {
              var t, i, a = e ? e.ownerDocument || e : w;
              return a !== d && 9 === a.nodeType && a.documentElement ? (d = a, h = d.documentElement, g = !o(d), w !== d && (i = d.defaultView) && i.top !== i && (i.addEventListener ? i.addEventListener("unload", re, !1) : i.attachEvent && i.attachEvent("onunload", re)), n.attributes = ue(function (e) {
                  return e.className = "i", !e.getAttribute("className")
              }), n.getElementsByTagName = ue(function (e) {
                  return e.appendChild(d.createComment("")), !e.getElementsByTagName("*").length
              }), n.getElementsByClassName = Q.test(d.getElementsByClassName), n.getById = ue(function (e) {
                  return h.appendChild(e).id = b, !d.getElementsByName || !d.getElementsByName(b).length
              }), n.getById ? (r.filter.ID = function (e) {
                  var t = e.replace(Z, ee);
                  return function (e) {
                      return e.getAttribute("id") === t
                  }
              }, r.find.ID = function (e, t) {
                  if ("undefined" != typeof t.getElementById && g) {
                      var n = t.getElementById(e);
                      return n ? [n] : []
                  }
              }) : (r.filter.ID = function (e) {
                  var t = e.replace(Z, ee);
                  return function (e) {
                      var n = "undefined" != typeof e.getAttributeNode && e.getAttributeNode("id");
                      return n && n.value === t
                  }
              }, r.find.ID = function (e, t) {
                  if ("undefined" != typeof t.getElementById && g) {
                      var n, r, i, o = t.getElementById(e);
                      if (o) {
                          if ((n = o.getAttributeNode("id")) && n.value === e) return [o];
                          i = t.getElementsByName(e), r = 0;
                          while (o = i[r++])
                              if ((n = o.getAttributeNode("id")) && n.value === e) return [o]
                      }
                      return []
                  }
              }), r.find.TAG = n.getElementsByTagName ? function (e, t) {
                  return "undefined" != typeof t.getElementsByTagName ? t.getElementsByTagName(e) : n.qsa ? t.querySelectorAll(e) : void 0
              } : function (e, t) {
                  var n, r = [],
                      i = 0,
                      o = t.getElementsByTagName(e);
                  if ("*" === e) {
                      while (n = o[i++]) 1 === n.nodeType && r.push(n);
                      return r
                  }
                  return o
              }, r.find.CLASS = n.getElementsByClassName && function (e, t) {
                  if ("undefined" != typeof t.getElementsByClassName && g) return t.getElementsByClassName(e)
              }, v = [], y = [], (n.qsa = Q.test(d.querySelectorAll)) && (ue(function (e) {
                  h.appendChild(e).innerHTML = "<a id='" + b + "'></a><select id='" + b + "-\r\\' msallowcapture=''><option selected=''></option></select>", e.querySelectorAll("[msallowcapture^='']").length && y.push("[*^$]=" + M + "*(?:''|\"\")"), e.querySelectorAll("[selected]").length || y.push("\\[" + M + "*(?:value|" + P + ")"), e.querySelectorAll("[id~=" + b + "-]").length || y.push("~="), e.querySelectorAll(":checked").length || y.push(":checked"), e.querySelectorAll("a#" + b + "+*").length || y.push(".#.+[+~]")
              }), ue(function (e) {
                  e.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
                  var t = d.createElement("input");
                  t.setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), e.querySelectorAll("[name=d]").length && y.push("name" + M + "*[*^$|!~]?="), 2 !== e.querySelectorAll(":enabled").length && y.push(":enabled", ":disabled"), h.appendChild(e).disabled = !0, 2 !== e.querySelectorAll(":disabled").length && y.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), y.push(",.*:")
              })), (n.matchesSelector = Q.test(m = h.matches || h.webkitMatchesSelector || h.mozMatchesSelector || h.oMatchesSelector || h.msMatchesSelector)) && ue(function (e) {
                  n.disconnectedMatch = m.call(e, "*"), m.call(e, "[s!='']:x"), v.push("!=", W)
              }), y = y.length && new RegExp(y.join("|")), v = v.length && new RegExp(v.join("|")), t = Q.test(h.compareDocumentPosition), x = t || Q.test(h.contains) ? function (e, t) {
                  var n = 9 === e.nodeType ? e.documentElement : e,
                      r = t && t.parentNode;
                  return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
              } : function (e, t) {
                  if (t)
                      while (t = t.parentNode)
                          if (t === e) return !0;
                  return !1
              }, D = t ? function (e, t) {
                  if (e === t) return f = !0, 0;
                  var r = !e.compareDocumentPosition - !t.compareDocumentPosition;
                  return r || (1 & (r = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !n.sortDetached && t.compareDocumentPosition(e) === r ? e === d || e.ownerDocument === w && x(w, e) ? -1 : t === d || t.ownerDocument === w && x(w, t) ? 1 : c ? O(c, e) - O(c, t) : 0 : 4 & r ? -1 : 1)
              } : function (e, t) {
                  if (e === t) return f = !0, 0;
                  var n, r = 0,
                      i = e.parentNode,
                      o = t.parentNode,
                      a = [e],
                      s = [t];
                  if (!i || !o) return e === d ? -1 : t === d ? 1 : i ? -1 : o ? 1 : c ? O(c, e) - O(c, t) : 0;
                  if (i === o) return ce(e, t);
                  n = e;
                  while (n = n.parentNode) a.unshift(n);
                  n = t;
                  while (n = n.parentNode) s.unshift(n);
                  while (a[r] === s[r]) r++;
                  return r ? ce(a[r], s[r]) : a[r] === w ? -1 : s[r] === w ? 1 : 0
              }, d) : d
          }, oe.matches = function (e, t) {
              return oe(e, null, null, t)
          }, oe.matchesSelector = function (e, t) {
              if ((e.ownerDocument || e) !== d && p(e), t = t.replace(z, "='$1']"), n.matchesSelector && g && !S[t + " "] && (!v || !v.test(t)) && (!y || !y.test(t))) try {
                  var r = m.call(e, t);
                  if (r || n.disconnectedMatch || e.document && 11 !== e.document.nodeType) return r
              } catch (e) {}
              return oe(t, d, null, [e]).length > 0
          }, oe.contains = function (e, t) {
              return (e.ownerDocument || e) !== d && p(e), x(e, t)
          }, oe.attr = function (e, t) {
              (e.ownerDocument || e) !== d && p(e);
              var i = r.attrHandle[t.toLowerCase()],
                  o = i && N.call(r.attrHandle, t.toLowerCase()) ? i(e, t, !g) : void 0;
              return void 0 !== o ? o : n.attributes || !g ? e.getAttribute(t) : (o = e.getAttributeNode(t)) && o.specified ? o.value : null
          }, oe.escape = function (e) {
              return (e + "").replace(te, ne)
          }, oe.error = function (e) {
              throw new Error("Syntax error, unrecognized expression: " + e)
          }, oe.uniqueSort = function (e) {
              var t, r = [],
                  i = 0,
                  o = 0;
              if (f = !n.detectDuplicates, c = !n.sortStable && e.slice(0), e.sort(D), f) {
                  while (t = e[o++]) t === e[o] && (i = r.push(o));
                  while (i--) e.splice(r[i], 1)
              }
              return c = null, e
          }, i = oe.getText = function (e) {
              var t, n = "",
                  r = 0,
                  o = e.nodeType;
              if (o) {
                  if (1 === o || 9 === o || 11 === o) {
                      if ("string" == typeof e.textContent) return e.textContent;
                      for (e = e.firstChild; e; e = e.nextSibling) n += i(e)
                  } else if (3 === o || 4 === o) return e.nodeValue
              } else
                  while (t = e[r++]) n += i(t);
              return n
          }, (r = oe.selectors = {
              cacheLength: 50,
              createPseudo: se,
              match: V,
              attrHandle: {},
              find: {},
              relative: {
                  ">": {
                      dir: "parentNode",
                      first: !0
                  },
                  " ": {
                      dir: "parentNode"
                  },
                  "+": {
                      dir: "previousSibling",
                      first: !0
                  },
                  "~": {
                      dir: "previousSibling"
                  }
              },
              preFilter: {
                  ATTR: function (e) {
                      return e[1] = e[1].replace(Z, ee), e[3] = (e[3] || e[4] || e[5] || "").replace(Z, ee), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4)
                  },
                  CHILD: function (e) {
                      return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || oe.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && oe.error(e[0]), e
                  },
                  PSEUDO: function (e) {
                      var t, n = !e[6] && e[2];
                      return V.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && X.test(n) && (t = a(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3))
                  }
              },
              filter: {
                  TAG: function (e) {
                      var t = e.replace(Z, ee).toLowerCase();
                      return "*" === e ? function () {
                          return !0
                      } : function (e) {
                          return e.nodeName && e.nodeName.toLowerCase() === t
                      }
                  },
                  CLASS: function (e) {
                      var t = E[e + " "];
                      return t || (t = new RegExp("(^|" + M + ")" + e + "(" + M + "|$)")) && E(e, function (e) {
                          return t.test("string" == typeof e.className && e.className || "undefined" != typeof e.getAttribute && e.getAttribute("class") || "")
                      })
                  },
                  ATTR: function (e, t, n) {
                      return function (r) {
                          var i = oe.attr(r, e);
                          return null == i ? "!=" === t : !t || (i += "", "=" === t ? i === n : "!=" === t ? i !== n : "^=" === t ? n && 0 === i.indexOf(n) : "*=" === t ? n && i.indexOf(n) > -1 : "$=" === t ? n && i.slice(-n.length) === n : "~=" === t ? (" " + i.replace($, " ") + " ").indexOf(n) > -1 : "|=" === t && (i === n || i.slice(0, n.length + 1) === n + "-"))
                      }
                  },
                  CHILD: function (e, t, n, r, i) {
                      var o = "nth" !== e.slice(0, 3),
                          a = "last" !== e.slice(-4),
                          s = "of-type" === t;
                      return 1 === r && 0 === i ? function (e) {
                          return !!e.parentNode
                      } : function (t, n, u) {
                          var l, c, f, p, d, h, g = o !== a ? "nextSibling" : "previousSibling",
                              y = t.parentNode,
                              v = s && t.nodeName.toLowerCase(),
                              m = !u && !s,
                              x = !1;
                          if (y) {
                              if (o) {
                                  while (g) {
                                      p = t;
                                      while (p = p[g])
                                          if (s ? p.nodeName.toLowerCase() === v : 1 === p.nodeType) return !1;
                                      h = g = "only" === e && !h && "nextSibling"
                                  }
                                  return !0
                              }
                              if (h = [a ? y.firstChild : y.lastChild], a && m) {
                                  x = (d = (l = (c = (f = (p = y)[b] || (p[b] = {}))[p.uniqueID] || (f[p.uniqueID] = {}))[e] || [])[0] === T && l[1]) && l[2], p = d && y.childNodes[d];
                                  while (p = ++d && p && p[g] || (x = d = 0) || h.pop())
                                      if (1 === p.nodeType && ++x && p === t) {
                                          c[e] = [T, d, x];
                                          break
                                      }
                              } else if (m && (x = d = (l = (c = (f = (p = t)[b] || (p[b] = {}))[p.uniqueID] || (f[p.uniqueID] = {}))[e] || [])[0] === T && l[1]), !1 === x)
                                  while (p = ++d && p && p[g] || (x = d = 0) || h.pop())
                                      if ((s ? p.nodeName.toLowerCase() === v : 1 === p.nodeType) && ++x && (m && ((c = (f = p[b] || (p[b] = {}))[p.uniqueID] || (f[p.uniqueID] = {}))[e] = [T, x]), p === t)) break;
                              return (x -= i) === r || x % r == 0 && x / r >= 0
                          }
                      }
                  },
                  PSEUDO: function (e, t) {
                      var n, i = r.pseudos[e] || r.setFilters[e.toLowerCase()] || oe.error("unsupported pseudo: " + e);
                      return i[b] ? i(t) : i.length > 1 ? (n = [e, e, "", t], r.setFilters.hasOwnProperty(e.toLowerCase()) ? se(function (e, n) {
                          var r, o = i(e, t),
                              a = o.length;
                          while (a--) e[r = O(e, o[a])] = !(n[r] = o[a])
                      }) : function (e) {
                          return i(e, 0, n)
                      }) : i
                  }
              },
              pseudos: {
                  not: se(function (e) {
                      var t = [],
                          n = [],
                          r = s(e.replace(B, "$1"));
                      return r[b] ? se(function (e, t, n, i) {
                          var o, a = r(e, null, i, []),
                              s = e.length;
                          while (s--)(o = a[s]) && (e[s] = !(t[s] = o))
                      }) : function (e, i, o) {
                          return t[0] = e, r(t, null, o, n), t[0] = null, !n.pop()
                      }
                  }),
                  has: se(function (e) {
                      return function (t) {
                          return oe(e, t).length > 0
                      }
                  }),
                  contains: se(function (e) {
                      return e = e.replace(Z, ee),
                          function (t) {
                              return (t.textContent || t.innerText || i(t)).indexOf(e) > -1
                          }
                  }),
                  lang: se(function (e) {
                      return U.test(e || "") || oe.error("unsupported lang: " + e), e = e.replace(Z, ee).toLowerCase(),
                          function (t) {
                              var n;
                              do {
                                  if (n = g ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang")) return (n = n.toLowerCase()) === e || 0 === n.indexOf(e + "-")
                              } while ((t = t.parentNode) && 1 === t.nodeType);
                              return !1
                          }
                  }),
                  target: function (t) {
                      var n = e.location && e.location.hash;
                      return n && n.slice(1) === t.id
                  },
                  root: function (e) {
                      return e === h
                  },
                  focus: function (e) {
                      return e === d.activeElement && (!d.hasFocus || d.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
                  },
                  enabled: de(!1),
                  disabled: de(!0),
                  checked: function (e) {
                      var t = e.nodeName.toLowerCase();
                      return "input" === t && !!e.checked || "option" === t && !!e.selected
                  },
                  selected: function (e) {
                      return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected
                  },
                  empty: function (e) {
                      for (e = e.firstChild; e; e = e.nextSibling)
                          if (e.nodeType < 6) return !1;
                      return !0
                  },
                  parent: function (e) {
                      return !r.pseudos.empty(e)
                  },
                  header: function (e) {
                      return Y.test(e.nodeName)
                  },
                  input: function (e) {
                      return G.test(e.nodeName)
                  },
                  button: function (e) {
                      var t = e.nodeName.toLowerCase();
                      return "input" === t && "button" === e.type || "button" === t
                  },
                  text: function (e) {
                      var t;
                      return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
                  },
                  first: he(function () {
                      return [0]
                  }),
                  last: he(function (e, t) {
                      return [t - 1]
                  }),
                  eq: he(function (e, t, n) {
                      return [n < 0 ? n + t : n]
                  }),
                  even: he(function (e, t) {
                      for (var n = 0; n < t; n += 2) e.push(n);
                      return e
                  }),
                  odd: he(function (e, t) {
                      for (var n = 1; n < t; n += 2) e.push(n);
                      return e
                  }),
                  lt: he(function (e, t, n) {
                      for (var r = n < 0 ? n + t : n; --r >= 0;) e.push(r);
                      return e
                  }),
                  gt: he(function (e, t, n) {
                      for (var r = n < 0 ? n + t : n; ++r < t;) e.push(r);
                      return e
                  })
              }
          }).pseudos.nth = r.pseudos.eq;
          for (t in {
                  radio: !0,
                  checkbox: !0,
                  file: !0,
                  password: !0,
                  image: !0
              }) r.pseudos[t] = fe(t);
          for (t in {
                  submit: !0,
                  reset: !0
              }) r.pseudos[t] = pe(t);
  
          function ye() {}
          ye.prototype = r.filters = r.pseudos, r.setFilters = new ye, a = oe.tokenize = function (e, t) {
              var n, i, o, a, s, u, l, c = k[e + " "];
              if (c) return t ? 0 : c.slice(0);
              s = e, u = [], l = r.preFilter;
              while (s) {
                  n && !(i = F.exec(s)) || (i && (s = s.slice(i[0].length) || s), u.push(o = [])), n = !1, (i = _.exec(s)) && (n = i.shift(), o.push({
                      value: n,
                      type: i[0].replace(B, " ")
                  }), s = s.slice(n.length));
                  for (a in r.filter) !(i = V[a].exec(s)) || l[a] && !(i = l[a](i)) || (n = i.shift(), o.push({
                      value: n,
                      type: a,
                      matches: i
                  }), s = s.slice(n.length));
                  if (!n) break
              }
              return t ? s.length : s ? oe.error(e) : k(e, u).slice(0)
          };
  
          function ve(e) {
              for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value;
              return r
          }
  
          function me(e, t, n) {
              var r = t.dir,
                  i = t.next,
                  o = i || r,
                  a = n && "parentNode" === o,
                  s = C++;
              return t.first ? function (t, n, i) {
                  while (t = t[r])
                      if (1 === t.nodeType || a) return e(t, n, i);
                  return !1
              } : function (t, n, u) {
                  var l, c, f, p = [T, s];
                  if (u) {
                      while (t = t[r])
                          if ((1 === t.nodeType || a) && e(t, n, u)) return !0
                  } else
                      while (t = t[r])
                          if (1 === t.nodeType || a)
                              if (f = t[b] || (t[b] = {}), c = f[t.uniqueID] || (f[t.uniqueID] = {}), i && i === t.nodeName.toLowerCase()) t = t[r] || t;
                              else {
                                  if ((l = c[o]) && l[0] === T && l[1] === s) return p[2] = l[2];
                                  if (c[o] = p, p[2] = e(t, n, u)) return !0
                              } return !1
              }
          }
  
          function xe(e) {
              return e.length > 1 ? function (t, n, r) {
                  var i = e.length;
                  while (i--)
                      if (!e[i](t, n, r)) return !1;
                  return !0
              } : e[0]
          }
  
          function be(e, t, n) {
              for (var r = 0, i = t.length; r < i; r++) oe(e, t[r], n);
              return n
          }
  
          function we(e, t, n, r, i) {
              for (var o, a = [], s = 0, u = e.length, l = null != t; s < u; s++)(o = e[s]) && (n && !n(o, r, i) || (a.push(o), l && t.push(s)));
              return a
          }
  
          function Te(e, t, n, r, i, o) {
              return r && !r[b] && (r = Te(r)), i && !i[b] && (i = Te(i, o)), se(function (o, a, s, u) {
                  var l, c, f, p = [],
                      d = [],
                      h = a.length,
                      g = o || be(t || "*", s.nodeType ? [s] : s, []),
                      y = !e || !o && t ? g : we(g, p, e, s, u),
                      v = n ? i || (o ? e : h || r) ? [] : a : y;
                  if (n && n(y, v, s, u), r) {
                      l = we(v, d), r(l, [], s, u), c = l.length;
                      while (c--)(f = l[c]) && (v[d[c]] = !(y[d[c]] = f))
                  }
                  if (o) {
                      if (i || e) {
                          if (i) {
                              l = [], c = v.length;
                              while (c--)(f = v[c]) && l.push(y[c] = f);
                              i(null, v = [], l, u)
                          }
                          c = v.length;
                          while (c--)(f = v[c]) && (l = i ? O(o, f) : p[c]) > -1 && (o[l] = !(a[l] = f))
                      }
                  } else v = we(v === a ? v.splice(h, v.length) : v), i ? i(null, a, v, u) : L.apply(a, v)
              })
          }
  
          function Ce(e) {
              for (var t, n, i, o = e.length, a = r.relative[e[0].type], s = a || r.relative[" "], u = a ? 1 : 0, c = me(function (e) {
                      return e === t
                  }, s, !0), f = me(function (e) {
                      return O(t, e) > -1
                  }, s, !0), p = [function (e, n, r) {
                      var i = !a && (r || n !== l) || ((t = n).nodeType ? c(e, n, r) : f(e, n, r));
                      return t = null, i
                  }]; u < o; u++)
                  if (n = r.relative[e[u].type]) p = [me(xe(p), n)];
                  else {
                      if ((n = r.filter[e[u].type].apply(null, e[u].matches))[b]) {
                          for (i = ++u; i < o; i++)
                              if (r.relative[e[i].type]) break;
                          return Te(u > 1 && xe(p), u > 1 && ve(e.slice(0, u - 1).concat({
                              value: " " === e[u - 2].type ? "*" : ""
                          })).replace(B, "$1"), n, u < i && Ce(e.slice(u, i)), i < o && Ce(e = e.slice(i)), i < o && ve(e))
                      }
                      p.push(n)
                  } return xe(p)
          }
  
          function Ee(e, t) {
              var n = t.length > 0,
                  i = e.length > 0,
                  o = function (o, a, s, u, c) {
                      var f, h, y, v = 0,
                          m = "0",
                          x = o && [],
                          b = [],
                          w = l,
                          C = o || i && r.find.TAG("*", c),
                          E = T += null == w ? 1 : Math.random() || .1,
                          k = C.length;
                      for (c && (l = a === d || a || c); m !== k && null != (f = C[m]); m++) {
                          if (i && f) {
                              h = 0, a || f.ownerDocument === d || (p(f), s = !g);
                              while (y = e[h++])
                                  if (y(f, a || d, s)) {
                                      u.push(f);
                                      break
                                  } c && (T = E)
                          }
                          n && ((f = !y && f) && v--, o && x.push(f))
                      }
                      if (v += m, n && m !== v) {
                          h = 0;
                          while (y = t[h++]) y(x, b, a, s);
                          if (o) {
                              if (v > 0)
                                  while (m--) x[m] || b[m] || (b[m] = j.call(u));
                              b = we(b)
                          }
                          L.apply(u, b), c && !o && b.length > 0 && v + t.length > 1 && oe.uniqueSort(u)
                      }
                      return c && (T = E, l = w), x
                  };
              return n ? se(o) : o
          }
          return s = oe.compile = function (e, t) {
              var n, r = [],
                  i = [],
                  o = S[e + " "];
              if (!o) {
                  t || (t = a(e)), n = t.length;
                  while (n--)(o = Ce(t[n]))[b] ? r.push(o) : i.push(o);
                  (o = S(e, Ee(i, r))).selector = e
              }
              return o
          }, u = oe.select = function (e, t, n, i) {
              var o, u, l, c, f, p = "function" == typeof e && e,
                  d = !i && a(e = p.selector || e);
              if (n = n || [], 1 === d.length) {
                  if ((u = d[0] = d[0].slice(0)).length > 2 && "ID" === (l = u[0]).type && 9 === t.nodeType && g && r.relative[u[1].type]) {
                      if (!(t = (r.find.ID(l.matches[0].replace(Z, ee), t) || [])[0])) return n;
                      p && (t = t.parentNode), e = e.slice(u.shift().value.length)
                  }
                  o = V.needsContext.test(e) ? 0 : u.length;
                  while (o--) {
                      if (l = u[o], r.relative[c = l.type]) break;
                      if ((f = r.find[c]) && (i = f(l.matches[0].replace(Z, ee), K.test(u[0].type) && ge(t.parentNode) || t))) {
                          if (u.splice(o, 1), !(e = i.length && ve(u))) return L.apply(n, i), n;
                          break
                      }
                  }
              }
              return (p || s(e, d))(i, t, !g, n, !t || K.test(e) && ge(t.parentNode) || t), n
          }, n.sortStable = b.split("").sort(D).join("") === b, n.detectDuplicates = !!f, p(), n.sortDetached = ue(function (e) {
              return 1 & e.compareDocumentPosition(d.createElement("fieldset"))
          }), ue(function (e) {
              return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href")
          }) || le("type|href|height|width", function (e, t, n) {
              if (!n) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
          }), n.attributes && ue(function (e) {
              return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value")
          }) || le("value", function (e, t, n) {
              if (!n && "input" === e.nodeName.toLowerCase()) return e.defaultValue
          }), ue(function (e) {
              return null == e.getAttribute("disabled")
          }) || le(P, function (e, t, n) {
              var r;
              if (!n) return !0 === e[t] ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
          }), oe
      }(e);
      w.find = E, w.expr = E.selectors, w.expr[":"] = w.expr.pseudos, w.uniqueSort = w.unique = E.uniqueSort, w.text = E.getText, w.isXMLDoc = E.isXML, w.contains = E.contains, w.escapeSelector = E.escape;
      var k = function (e, t, n) {
              var r = [],
                  i = void 0 !== n;
              while ((e = e[t]) && 9 !== e.nodeType)
                  if (1 === e.nodeType) {
                      if (i && w(e).is(n)) break;
                      r.push(e)
                  } return r
          },
          S = function (e, t) {
              for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
              return n
          },
          D = w.expr.match.needsContext;
  
      function N(e, t) {
          return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
      }
      var A = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
  
      function j(e, t, n) {
          return g(t) ? w.grep(e, function (e, r) {
              return !!t.call(e, r, e) !== n
          }) : t.nodeType ? w.grep(e, function (e) {
              return e === t !== n
          }) : "string" != typeof t ? w.grep(e, function (e) {
              return u.call(t, e) > -1 !== n
          }) : w.filter(t, e, n)
      }
      w.filter = function (e, t, n) {
          var r = t[0];
          return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === r.nodeType ? w.find.matchesSelector(r, e) ? [r] : [] : w.find.matches(e, w.grep(t, function (e) {
              return 1 === e.nodeType
          }))
      }, w.fn.extend({
          find: function (e) {
              var t, n, r = this.length,
                  i = this;
              if ("string" != typeof e) return this.pushStack(w(e).filter(function () {
                  for (t = 0; t < r; t++)
                      if (w.contains(i[t], this)) return !0
              }));
              for (n = this.pushStack([]), t = 0; t < r; t++) w.find(e, i[t], n);
              return r > 1 ? w.uniqueSort(n) : n
          },
          filter: function (e) {
              return this.pushStack(j(this, e || [], !1))
          },
          not: function (e) {
              return this.pushStack(j(this, e || [], !0))
          },
          is: function (e) {
              return !!j(this, "string" == typeof e && D.test(e) ? w(e) : e || [], !1).length
          }
      });
      var q, L = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
      (w.fn.init = function (e, t, n) {
          var i, o;
          if (!e) return this;
          if (n = n || q, "string" == typeof e) {
              if (!(i = "<" === e[0] && ">" === e[e.length - 1] && e.length >= 3 ? [null, e, null] : L.exec(e)) || !i[1] && t) return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e);
              if (i[1]) {
                  if (t = t instanceof w ? t[0] : t, w.merge(this, w.parseHTML(i[1], t && t.nodeType ? t.ownerDocument || t : r, !0)), A.test(i[1]) && w.isPlainObject(t))
                      for (i in t) g(this[i]) ? this[i](t[i]) : this.attr(i, t[i]);
                  return this
              }
              return (o = r.getElementById(i[2])) && (this[0] = o, this.length = 1), this
          }
          return e.nodeType ? (this[0] = e, this.length = 1, this) : g(e) ? void 0 !== n.ready ? n.ready(e) : e(w) : w.makeArray(e, this)
      }).prototype = w.fn, q = w(r);
      var H = /^(?:parents|prev(?:Until|All))/,
          O = {
              children: !0,
              contents: !0,
              next: !0,
              prev: !0
          };
      w.fn.extend({
          has: function (e) {
              var t = w(e, this),
                  n = t.length;
              return this.filter(function () {
                  for (var e = 0; e < n; e++)
                      if (w.contains(this, t[e])) return !0
              })
          },
          closest: function (e, t) {
              var n, r = 0,
                  i = this.length,
                  o = [],
                  a = "string" != typeof e && w(e);
              if (!D.test(e))
                  for (; r < i; r++)
                      for (n = this[r]; n && n !== t; n = n.parentNode)
                          if (n.nodeType < 11 && (a ? a.index(n) > -1 : 1 === n.nodeType && w.find.matchesSelector(n, e))) {
                              o.push(n);
                              break
                          } return this.pushStack(o.length > 1 ? w.uniqueSort(o) : o)
          },
          index: function (e) {
              return e ? "string" == typeof e ? u.call(w(e), this[0]) : u.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
          },
          add: function (e, t) {
              return this.pushStack(w.uniqueSort(w.merge(this.get(), w(e, t))))
          },
          addBack: function (e) {
              return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
          }
      });
  
      function P(e, t) {
          while ((e = e[t]) && 1 !== e.nodeType);
          return e
      }
      w.each({
          parent: function (e) {
              var t = e.parentNode;
              return t && 11 !== t.nodeType ? t : null
          },
          parents: function (e) {
              return k(e, "parentNode")
          },
          parentsUntil: function (e, t, n) {
              return k(e, "parentNode", n)
          },
          next: function (e) {
              return P(e, "nextSibling")
          },
          prev: function (e) {
              return P(e, "previousSibling")
          },
          nextAll: function (e) {
              return k(e, "nextSibling")
          },
          prevAll: function (e) {
              return k(e, "previousSibling")
          },
          nextUntil: function (e, t, n) {
              return k(e, "nextSibling", n)
          },
          prevUntil: function (e, t, n) {
              return k(e, "previousSibling", n)
          },
          siblings: function (e) {
              return S((e.parentNode || {}).firstChild, e)
          },
          children: function (e) {
              return S(e.firstChild)
          },
          contents: function (e) {
              return N(e, "iframe") ? e.contentDocument : (N(e, "template") && (e = e.content || e), w.merge([], e.childNodes))
          }
      }, function (e, t) {
          w.fn[e] = function (n, r) {
              var i = w.map(this, t, n);
              return "Until" !== e.slice(-5) && (r = n), r && "string" == typeof r && (i = w.filter(r, i)), this.length > 1 && (O[e] || w.uniqueSort(i), H.test(e) && i.reverse()), this.pushStack(i)
          }
      });
      var M = /[^\x20\t\r\n\f]+/g;
  
      function R(e) {
          var t = {};
          return w.each(e.match(M) || [], function (e, n) {
              t[n] = !0
          }), t
      }
      w.Callbacks = function (e) {
          e = "string" == typeof e ? R(e) : w.extend({}, e);
          var t, n, r, i, o = [],
              a = [],
              s = -1,
              u = function () {
                  for (i = i || e.once, r = t = !0; a.length; s = -1) {
                      n = a.shift();
                      while (++s < o.length) !1 === o[s].apply(n[0], n[1]) && e.stopOnFalse && (s = o.length, n = !1)
                  }
                  e.memory || (n = !1), t = !1, i && (o = n ? [] : "")
              },
              l = {
                  add: function () {
                      return o && (n && !t && (s = o.length - 1, a.push(n)), function t(n) {
                          w.each(n, function (n, r) {
                              g(r) ? e.unique && l.has(r) || o.push(r) : r && r.length && "string" !== x(r) && t(r)
                          })
                      }(arguments), n && !t && u()), this
                  },
                  remove: function () {
                      return w.each(arguments, function (e, t) {
                          var n;
                          while ((n = w.inArray(t, o, n)) > -1) o.splice(n, 1), n <= s && s--
                      }), this
                  },
                  has: function (e) {
                      return e ? w.inArray(e, o) > -1 : o.length > 0
                  },
                  empty: function () {
                      return o && (o = []), this
                  },
                  disable: function () {
                      return i = a = [], o = n = "", this
                  },
                  disabled: function () {
                      return !o
                  },
                  lock: function () {
                      return i = a = [], n || t || (o = n = ""), this
                  },
                  locked: function () {
                      return !!i
                  },
                  fireWith: function (e, n) {
                      return i || (n = [e, (n = n || []).slice ? n.slice() : n], a.push(n), t || u()), this
                  },
                  fire: function () {
                      return l.fireWith(this, arguments), this
                  },
                  fired: function () {
                      return !!r
                  }
              };
          return l
      };
  
      function I(e) {
          return e
      }
  
      function W(e) {
          throw e
      }
  
      function $(e, t, n, r) {
          var i;
          try {
              e && g(i = e.promise) ? i.call(e).done(t).fail(n) : e && g(i = e.then) ? i.call(e, t, n) : t.apply(void 0, [e].slice(r))
          } catch (e) {
              n.apply(void 0, [e])
          }
      }
      w.extend({
          Deferred: function (t) {
              var n = [["notify", "progress", w.Callbacks("memory"), w.Callbacks("memory"), 2], ["resolve", "done", w.Callbacks("once memory"), w.Callbacks("once memory"), 0, "resolved"], ["reject", "fail", w.Callbacks("once memory"), w.Callbacks("once memory"), 1, "rejected"]],
                  r = "pending",
                  i = {
                      state: function () {
                          return r
                      },
                      always: function () {
                          return o.done(arguments).fail(arguments), this
                      },
                      "catch": function (e) {
                          return i.then(null, e)
                      },
                      pipe: function () {
                          var e = arguments;
                          return w.Deferred(function (t) {
                              w.each(n, function (n, r) {
                                  var i = g(e[r[4]]) && e[r[4]];
                                  o[r[1]](function () {
                                      var e = i && i.apply(this, arguments);
                                      e && g(e.promise) ? e.promise().progress(t.notify).done(t.resolve).fail(t.reject) : t[r[0] + "With"](this, i ? [e] : arguments)
                                  })
                              }), e = null
                          }).promise()
                      },
                      then: function (t, r, i) {
                          var o = 0;
  
                          function a(t, n, r, i) {
                              return function () {
                                  var s = this,
                                      u = arguments,
                                      l = function () {
                                          var e, l;
                                          if (!(t < o)) {
                                              if ((e = r.apply(s, u)) === n.promise()) throw new TypeError("Thenable self-resolution");
                                              l = e && ("object" == typeof e || "function" == typeof e) && e.then, g(l) ? i ? l.call(e, a(o, n, I, i), a(o, n, W, i)) : (o++, l.call(e, a(o, n, I, i), a(o, n, W, i), a(o, n, I, n.notifyWith))) : (r !== I && (s = void 0, u = [e]), (i || n.resolveWith)(s, u))
                                          }
                                      },
                                      c = i ? l : function () {
                                          try {
                                              l()
                                          } catch (e) {
                                              w.Deferred.exceptionHook && w.Deferred.exceptionHook(e, c.stackTrace), t + 1 >= o && (r !== W && (s = void 0, u = [e]), n.rejectWith(s, u))
                                          }
                                      };
                                  t ? c() : (w.Deferred.getStackHook && (c.stackTrace = w.Deferred.getStackHook()), e.setTimeout(c))
                              }
                          }
                          return w.Deferred(function (e) {
                              n[0][3].add(a(0, e, g(i) ? i : I, e.notifyWith)), n[1][3].add(a(0, e, g(t) ? t : I)), n[2][3].add(a(0, e, g(r) ? r : W))
                          }).promise()
                      },
                      promise: function (e) {
                          return null != e ? w.extend(e, i) : i
                      }
                  },
                  o = {};
              return w.each(n, function (e, t) {
                  var a = t[2],
                      s = t[5];
                  i[t[1]] = a.add, s && a.add(function () {
                      r = s
                  }, n[3 - e][2].disable, n[3 - e][3].disable, n[0][2].lock, n[0][3].lock), a.add(t[3].fire), o[t[0]] = function () {
                      return o[t[0] + "With"](this === o ? void 0 : this, arguments), this
                  }, o[t[0] + "With"] = a.fireWith
              }), i.promise(o), t && t.call(o, o), o
          },
          when: function (e) {
              var t = arguments.length,
                  n = t,
                  r = Array(n),
                  i = o.call(arguments),
                  a = w.Deferred(),
                  s = function (e) {
                      return function (n) {
                          r[e] = this, i[e] = arguments.length > 1 ? o.call(arguments) : n, --t || a.resolveWith(r, i)
                      }
                  };
              if (t <= 1 && ($(e, a.done(s(n)).resolve, a.reject, !t), "pending" === a.state() || g(i[n] && i[n].then))) return a.then();
              while (n--) $(i[n], s(n), a.reject);
              return a.promise()
          }
      });
      var B = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
      w.Deferred.exceptionHook = function (t, n) {
          e.console && e.console.warn && t && B.test(t.name) && e.console.warn("jQuery.Deferred exception: " + t.message, t.stack, n)
      }, w.readyException = function (t) {
          e.setTimeout(function () {
              throw t
          })
      };
      var F = w.Deferred();
      w.fn.ready = function (e) {
          return F.then(e)["catch"](function (e) {
              w.readyException(e)
          }), this
      }, w.extend({
          isReady: !1,
          readyWait: 1,
          ready: function (e) {
              (!0 === e ? --w.readyWait : w.isReady) || (w.isReady = !0, !0 !== e && --w.readyWait > 0 || F.resolveWith(r, [w]))
          }
      }), w.ready.then = F.then;
  
      function _() {
          r.removeEventListener("DOMContentLoaded", _), e.removeEventListener("load", _), w.ready()
      }
      "complete" === r.readyState || "loading" !== r.readyState && !r.documentElement.doScroll ? e.setTimeout(w.ready) : (r.addEventListener("DOMContentLoaded", _), e.addEventListener("load", _));
      var z = function (e, t, n, r, i, o, a) {
              var s = 0,
                  u = e.length,
                  l = null == n;
              if ("object" === x(n)) {
                  i = !0;
                  for (s in n) z(e, t, s, n[s], !0, o, a)
              } else if (void 0 !== r && (i = !0, g(r) || (a = !0), l && (a ? (t.call(e, r), t = null) : (l = t, t = function (e, t, n) {
                      return l.call(w(e), n)
                  })), t))
                  for (; s < u; s++) t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n)));
              return i ? e : l ? t.call(e) : u ? t(e[0], n) : o
          },
          X = /^-ms-/,
          U = /-([a-z])/g;
  
      function V(e, t) {
          return t.toUpperCase()
      }
  
      function G(e) {
          return e.replace(X, "ms-").replace(U, V)
      }
      var Y = function (e) {
          return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
      };
  
      function Q() {
          this.expando = w.expando + Q.uid++
      }
      Q.uid = 1, Q.prototype = {
          cache: function (e) {
              var t = e[this.expando];
              return t || (t = {}, Y(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, {
                  value: t,
                  configurable: !0
              }))), t
          },
          set: function (e, t, n) {
              var r, i = this.cache(e);
              if ("string" == typeof t) i[G(t)] = n;
              else
                  for (r in t) i[G(r)] = t[r];
              return i
          },
          get: function (e, t) {
              return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][G(t)]
          },
          access: function (e, t, n) {
              return void 0 === t || t && "string" == typeof t && void 0 === n ? this.get(e, t) : (this.set(e, t, n), void 0 !== n ? n : t)
          },
          remove: function (e, t) {
              var n, r = e[this.expando];
              if (void 0 !== r) {
                  if (void 0 !== t) {
                      n = (t = Array.isArray(t) ? t.map(G) : (t = G(t)) in r ? [t] : t.match(M) || []).length;
                      while (n--) delete r[t[n]]
                  }(void 0 === t || w.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando])
              }
          },
          hasData: function (e) {
              var t = e[this.expando];
              return void 0 !== t && !w.isEmptyObject(t)
          }
      };
      var J = new Q,
          K = new Q,
          Z = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
          ee = /[A-Z]/g;
  
      function te(e) {
          return "true" === e || "false" !== e && ("null" === e ? null : e === +e + "" ? +e : Z.test(e) ? JSON.parse(e) : e)
      }
  
      function ne(e, t, n) {
          var r;
          if (void 0 === n && 1 === e.nodeType)
              if (r = "data-" + t.replace(ee, "-$&").toLowerCase(), "string" == typeof (n = e.getAttribute(r))) {
                  try {
                      n = te(n)
                  } catch (e) {}
                  K.set(e, t, n)
              } else n = void 0;
          return n
      }
      w.extend({
          hasData: function (e) {
              return K.hasData(e) || J.hasData(e)
          },
          data: function (e, t, n) {
              return K.access(e, t, n)
          },
          removeData: function (e, t) {
              K.remove(e, t)
          },
          _data: function (e, t, n) {
              return J.access(e, t, n)
          },
          _removeData: function (e, t) {
              J.remove(e, t)
          }
      }), w.fn.extend({
          data: function (e, t) {
              var n, r, i, o = this[0],
                  a = o && o.attributes;
              if (void 0 === e) {
                  if (this.length && (i = K.get(o), 1 === o.nodeType && !J.get(o, "hasDataAttrs"))) {
                      n = a.length;
                      while (n--) a[n] && 0 === (r = a[n].name).indexOf("data-") && (r = G(r.slice(5)), ne(o, r, i[r]));
                      J.set(o, "hasDataAttrs", !0)
                  }
                  return i
              }
              return "object" == typeof e ? this.each(function () {
                  K.set(this, e)
              }) : z(this, function (t) {
                  var n;
                  if (o && void 0 === t) {
                      if (void 0 !== (n = K.get(o, e))) return n;
                      if (void 0 !== (n = ne(o, e))) return n
                  } else this.each(function () {
                      K.set(this, e, t)
                  })
              }, null, t, arguments.length > 1, null, !0)
          },
          removeData: function (e) {
              return this.each(function () {
                  K.remove(this, e)
              })
          }
      }), w.extend({
          queue: function (e, t, n) {
              var r;
              if (e) return t = (t || "fx") + "queue", r = J.get(e, t), n && (!r || Array.isArray(n) ? r = J.access(e, t, w.makeArray(n)) : r.push(n)), r || []
          },
          dequeue: function (e, t) {
              t = t || "fx";
              var n = w.queue(e, t),
                  r = n.length,
                  i = n.shift(),
                  o = w._queueHooks(e, t),
                  a = function () {
                      w.dequeue(e, t)
                  };
              "inprogress" === i && (i = n.shift(), r--), i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, a, o)), !r && o && o.empty.fire()
          },
          _queueHooks: function (e, t) {
              var n = t + "queueHooks";
              return J.get(e, n) || J.access(e, n, {
                  empty: w.Callbacks("once memory").add(function () {
                      J.remove(e, [t + "queue", n])
                  })
              })
          }
      }), w.fn.extend({
          queue: function (e, t) {
              var n = 2;
              return "string" != typeof e && (t = e, e = "fx", n--), arguments.length < n ? w.queue(this[0], e) : void 0 === t ? this : this.each(function () {
                  var n = w.queue(this, e, t);
                  w._queueHooks(this, e), "fx" === e && "inprogress" !== n[0] && w.dequeue(this, e)
              })
          },
          dequeue: function (e) {
              return this.each(function () {
                  w.dequeue(this, e)
              })
          },
          clearQueue: function (e) {
              return this.queue(e || "fx", [])
          },
          promise: function (e, t) {
              var n, r = 1,
                  i = w.Deferred(),
                  o = this,
                  a = this.length,
                  s = function () {
                      --r || i.resolveWith(o, [o])
                  };
              "string" != typeof e && (t = e, e = void 0), e = e || "fx";
              while (a--)(n = J.get(o[a], e + "queueHooks")) && n.empty && (r++, n.empty.add(s));
              return s(), i.promise(t)
          }
      });
      var re = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
          ie = new RegExp("^(?:([+-])=|)(" + re + ")([a-z%]*)$", "i"),
          oe = ["Top", "Right", "Bottom", "Left"],
          ae = function (e, t) {
              return "none" === (e = t || e).style.display || "" === e.style.display && w.contains(e.ownerDocument, e) && "none" === w.css(e, "display")
          },
          se = function (e, t, n, r) {
              var i, o, a = {};
              for (o in t) a[o] = e.style[o], e.style[o] = t[o];
              i = n.apply(e, r || []);
              for (o in t) e.style[o] = a[o];
              return i
          };
  
      function ue(e, t, n, r) {
          var i, o, a = 20,
              s = r ? function () {
                  return r.cur()
              } : function () {
                  return w.css(e, t, "")
              },
              u = s(),
              l = n && n[3] || (w.cssNumber[t] ? "" : "px"),
              c = (w.cssNumber[t] || "px" !== l && +u) && ie.exec(w.css(e, t));
          if (c && c[3] !== l) {
              u /= 2, l = l || c[3], c = +u || 1;
              while (a--) w.style(e, t, c + l), (1 - o) * (1 - (o = s() / u || .5)) <= 0 && (a = 0), c /= o;
              c *= 2, w.style(e, t, c + l), n = n || []
          }
          return n && (c = +c || +u || 0, i = n[1] ? c + (n[1] + 1) * n[2] : +n[2], r && (r.unit = l, r.start = c, r.end = i)), i
      }
      var le = {};
  
      function ce(e) {
          var t, n = e.ownerDocument,
              r = e.nodeName,
              i = le[r];
          return i || (t = n.body.appendChild(n.createElement(r)), i = w.css(t, "display"), t.parentNode.removeChild(t), "none" === i && (i = "block"), le[r] = i, i)
      }
  
      function fe(e, t) {
          for (var n, r, i = [], o = 0, a = e.length; o < a; o++)(r = e[o]).style && (n = r.style.display, t ? ("none" === n && (i[o] = J.get(r, "display") || null, i[o] || (r.style.display = "")), "" === r.style.display && ae(r) && (i[o] = ce(r))) : "none" !== n && (i[o] = "none", J.set(r, "display", n)));
          for (o = 0; o < a; o++) null != i[o] && (e[o].style.display = i[o]);
          return e
      }
      w.fn.extend({
          show: function () {
              return fe(this, !0)
          },
          hide: function () {
              return fe(this)
          },
          toggle: function (e) {
              return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function () {
                  ae(this) ? w(this).show() : w(this).hide()
              })
          }
      });
      var pe = /^(?:checkbox|radio)$/i,
          de = /<([a-z][^\/\0>\x20\t\r\n\f]+)/i,
          he = /^$|^module$|\/(?:java|ecma)script/i,
          ge = {
              option: [1, "<select multiple='multiple'>", "</select>"],
              thead: [1, "<table>", "</table>"],
              col: [2, "<table><colgroup>", "</colgroup></table>"],
              tr: [2, "<table><tbody>", "</tbody></table>"],
              td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
              _default: [0, "", ""]
          };
      ge.optgroup = ge.option, ge.tbody = ge.tfoot = ge.colgroup = ge.caption = ge.thead, ge.th = ge.td;
  
      function ye(e, t) {
          var n;
          return n = "undefined" != typeof e.getElementsByTagName ? e.getElementsByTagName(t || "*") : "undefined" != typeof e.querySelectorAll ? e.querySelectorAll(t || "*") : [], void 0 === t || t && N(e, t) ? w.merge([e], n) : n
      }
  
      function ve(e, t) {
          for (var n = 0, r = e.length; n < r; n++) J.set(e[n], "globalEval", !t || J.get(t[n], "globalEval"))
      }
      var me = /<|&#?\w+;/;
  
      function xe(e, t, n, r, i) {
          for (var o, a, s, u, l, c, f = t.createDocumentFragment(), p = [], d = 0, h = e.length; d < h; d++)
              if ((o = e[d]) || 0 === o)
                  if ("object" === x(o)) w.merge(p, o.nodeType ? [o] : o);
                  else if (me.test(o)) {
              a = a || f.appendChild(t.createElement("div")), s = (de.exec(o) || ["", ""])[1].toLowerCase(), u = ge[s] || ge._default, a.innerHTML = u[1] + w.htmlPrefilter(o) + u[2], c = u[0];
              while (c--) a = a.lastChild;
              w.merge(p, a.childNodes), (a = f.firstChild).textContent = ""
          } else p.push(t.createTextNode(o));
          f.textContent = "", d = 0;
          while (o = p[d++])
              if (r && w.inArray(o, r) > -1) i && i.push(o);
              else if (l = w.contains(o.ownerDocument, o), a = ye(f.appendChild(o), "script"), l && ve(a), n) {
              c = 0;
              while (o = a[c++]) he.test(o.type || "") && n.push(o)
          }
          return f
      }! function () {
          var e = r.createDocumentFragment().appendChild(r.createElement("div")),
              t = r.createElement("input");
          t.setAttribute("type", "radio"), t.setAttribute("checked", "checked"), t.setAttribute("name", "t"), e.appendChild(t), h.checkClone = e.cloneNode(!0).cloneNode(!0).lastChild.checked, e.innerHTML = "<textarea>x</textarea>", h.noCloneChecked = !!e.cloneNode(!0).lastChild.defaultValue
      }();
      var be = r.documentElement,
          we = /^key/,
          Te = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
          Ce = /^([^.]*)(?:\.(.+)|)/;
  
      function Ee() {
          return !0
      }
  
      function ke() {
          return !1
      }
  
      function Se() {
          try {
              return r.activeElement
          } catch (e) {}
      }
  
      function De(e, t, n, r, i, o) {
          var a, s;
          if ("object" == typeof t) {
              "string" != typeof n && (r = r || n, n = void 0);
              for (s in t) De(e, s, n, r, t[s], o);
              return e
          }
          if (null == r && null == i ? (i = n, r = n = void 0) : null == i && ("string" == typeof n ? (i = r, r = void 0) : (i = r, r = n, n = void 0)), !1 === i) i = ke;
          else if (!i) return e;
          return 1 === o && (a = i, (i = function (e) {
              return w().off(e), a.apply(this, arguments)
          }).guid = a.guid || (a.guid = w.guid++)), e.each(function () {
              w.event.add(this, t, i, r, n)
          })
      }
      w.event = {
          global: {},
          add: function (e, t, n, r, i) {
              var o, a, s, u, l, c, f, p, d, h, g, y = J.get(e);
              if (y) {
                  n.handler && (n = (o = n).handler, i = o.selector), i && w.find.matchesSelector(be, i), n.guid || (n.guid = w.guid++), (u = y.events) || (u = y.events = {}), (a = y.handle) || (a = y.handle = function (t) {
                      return "undefined" != typeof w && w.event.triggered !== t.type ? w.event.dispatch.apply(e, arguments) : void 0
                  }), l = (t = (t || "").match(M) || [""]).length;
                  while (l--) d = g = (s = Ce.exec(t[l]) || [])[1], h = (s[2] || "").split(".").sort(), d && (f = w.event.special[d] || {}, d = (i ? f.delegateType : f.bindType) || d, f = w.event.special[d] || {}, c = w.extend({
                      type: d,
                      origType: g,
                      data: r,
                      handler: n,
                      guid: n.guid,
                      selector: i,
                      needsContext: i && w.expr.match.needsContext.test(i),
                      namespace: h.join(".")
                  }, o), (p = u[d]) || ((p = u[d] = []).delegateCount = 0, f.setup && !1 !== f.setup.call(e, r, h, a) || e.addEventListener && e.addEventListener(d, a)), f.add && (f.add.call(e, c), c.handler.guid || (c.handler.guid = n.guid)), i ? p.splice(p.delegateCount++, 0, c) : p.push(c), w.event.global[d] = !0)
              }
          },
          remove: function (e, t, n, r, i) {
              var o, a, s, u, l, c, f, p, d, h, g, y = J.hasData(e) && J.get(e);
              if (y && (u = y.events)) {
                  l = (t = (t || "").match(M) || [""]).length;
                  while (l--)
                      if (s = Ce.exec(t[l]) || [], d = g = s[1], h = (s[2] || "").split(".").sort(), d) {
                          f = w.event.special[d] || {}, p = u[d = (r ? f.delegateType : f.bindType) || d] || [], s = s[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"), a = o = p.length;
                          while (o--) c = p[o], !i && g !== c.origType || n && n.guid !== c.guid || s && !s.test(c.namespace) || r && r !== c.selector && ("**" !== r || !c.selector) || (p.splice(o, 1), c.selector && p.delegateCount--, f.remove && f.remove.call(e, c));
                          a && !p.length && (f.teardown && !1 !== f.teardown.call(e, h, y.handle) || w.removeEvent(e, d, y.handle), delete u[d])
                      } else
                          for (d in u) w.event.remove(e, d + t[l], n, r, !0);
                  w.isEmptyObject(u) && J.remove(e, "handle events")
              }
          },
          dispatch: function (e) {
              var t = w.event.fix(e),
                  n, r, i, o, a, s, u = new Array(arguments.length),
                  l = (J.get(this, "events") || {})[t.type] || [],
                  c = w.event.special[t.type] || {};
              for (u[0] = t, n = 1; n < arguments.length; n++) u[n] = arguments[n];
              if (t.delegateTarget = this, !c.preDispatch || !1 !== c.preDispatch.call(this, t)) {
                  s = w.event.handlers.call(this, t, l), n = 0;
                  while ((o = s[n++]) && !t.isPropagationStopped()) {
                      t.currentTarget = o.elem, r = 0;
                      while ((a = o.handlers[r++]) && !t.isImmediatePropagationStopped()) t.rnamespace && !t.rnamespace.test(a.namespace) || (t.handleObj = a, t.data = a.data, void 0 !== (i = ((w.event.special[a.origType] || {}).handle || a.handler).apply(o.elem, u)) && !1 === (t.result = i) && (t.preventDefault(), t.stopPropagation()))
                  }
                  return c.postDispatch && c.postDispatch.call(this, t), t.result
              }
          },
          handlers: function (e, t) {
              var n, r, i, o, a, s = [],
                  u = t.delegateCount,
                  l = e.target;
              if (u && l.nodeType && !("click" === e.type && e.button >= 1))
                  for (; l !== this; l = l.parentNode || this)
                      if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) {
                          for (o = [], a = {}, n = 0; n < u; n++) void 0 === a[i = (r = t[n]).selector + " "] && (a[i] = r.needsContext ? w(i, this).index(l) > -1 : w.find(i, this, null, [l]).length), a[i] && o.push(r);
                          o.length && s.push({
                              elem: l,
                              handlers: o
                          })
                      } return l = this, u < t.length && s.push({
                  elem: l,
                  handlers: t.slice(u)
              }), s
          },
          addProp: function (e, t) {
              Object.defineProperty(w.Event.prototype, e, {
                  enumerable: !0,
                  configurable: !0,
                  get: g(t) ? function () {
                      if (this.originalEvent) return t(this.originalEvent)
                  } : function () {
                      if (this.originalEvent) return this.originalEvent[e]
                  },
                  set: function (t) {
                      Object.defineProperty(this, e, {
                          enumerable: !0,
                          configurable: !0,
                          writable: !0,
                          value: t
                      })
                  }
              })
          },
          fix: function (e) {
              return e[w.expando] ? e : new w.Event(e)
          },
          special: {
              load: {
                  noBubble: !0
              },
              focus: {
                  trigger: function () {
                      if (this !== Se() && this.focus) return this.focus(), !1
                  },
                  delegateType: "focusin"
              },
              blur: {
                  trigger: function () {
                      if (this === Se() && this.blur) return this.blur(), !1
                  },
                  delegateType: "focusout"
              },
              click: {
                  trigger: function () {
                      if ("checkbox" === this.type && this.click && N(this, "input")) return this.click(), !1
                  },
                  _default: function (e) {
                      return N(e.target, "a")
                  }
              },
              beforeunload: {
                  postDispatch: function (e) {
                      void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
                  }
              }
          }
      }, w.removeEvent = function (e, t, n) {
          e.removeEventListener && e.removeEventListener(t, n)
      }, w.Event = function (e, t) {
          if (!(this instanceof w.Event)) return new w.Event(e, t);
          e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? Ee : ke, this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode : e.target, this.currentTarget = e.currentTarget, this.relatedTarget = e.relatedTarget) : this.type = e, t && w.extend(this, t), this.timeStamp = e && e.timeStamp || Date.now(), this[w.expando] = !0
      }, w.Event.prototype = {
          constructor: w.Event,
          isDefaultPrevented: ke,
          isPropagationStopped: ke,
          isImmediatePropagationStopped: ke,
          isSimulated: !1,
          preventDefault: function () {
              var e = this.originalEvent;
              this.isDefaultPrevented = Ee, e && !this.isSimulated && e.preventDefault()
          },
          stopPropagation: function () {
              var e = this.originalEvent;
              this.isPropagationStopped = Ee, e && !this.isSimulated && e.stopPropagation()
          },
          stopImmediatePropagation: function () {
              var e = this.originalEvent;
              this.isImmediatePropagationStopped = Ee, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation()
          }
      }, w.each({
          altKey: !0,
          bubbles: !0,
          cancelable: !0,
          changedTouches: !0,
          ctrlKey: !0,
          detail: !0,
          eventPhase: !0,
          metaKey: !0,
          pageX: !0,
          pageY: !0,
          shiftKey: !0,
          view: !0,
          "char": !0,
          charCode: !0,
          key: !0,
          keyCode: !0,
          button: !0,
          buttons: !0,
          clientX: !0,
          clientY: !0,
          offsetX: !0,
          offsetY: !0,
          pointerId: !0,
          pointerType: !0,
          screenX: !0,
          screenY: !0,
          targetTouches: !0,
          toElement: !0,
          touches: !0,
          which: function (e) {
              var t = e.button;
              return null == e.which && we.test(e.type) ? null != e.charCode ? e.charCode : e.keyCode : !e.which && void 0 !== t && Te.test(e.type) ? 1 & t ? 1 : 2 & t ? 3 : 4 & t ? 2 : 0 : e.which
          }
      }, w.event.addProp), w.each({
          mouseenter: "mouseover",
          mouseleave: "mouseout",
          pointerenter: "pointerover",
          pointerleave: "pointerout"
      }, function (e, t) {
          w.event.special[e] = {
              delegateType: t,
              bindType: t,
              handle: function (e) {
                  var n, r = this,
                      i = e.relatedTarget,
                      o = e.handleObj;
                  return i && (i === r || w.contains(r, i)) || (e.type = o.origType, n = o.handler.apply(this, arguments), e.type = t), n
              }
          }
      }), w.fn.extend({
          on: function (e, t, n, r) {
              return De(this, e, t, n, r)
          },
          one: function (e, t, n, r) {
              return De(this, e, t, n, r, 1)
          },
          off: function (e, t, n) {
              var r, i;
              if (e && e.preventDefault && e.handleObj) return r = e.handleObj, w(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler), this;
              if ("object" == typeof e) {
                  for (i in e) this.off(i, t, e[i]);
                  return this
              }
              return !1 !== t && "function" != typeof t || (n = t, t = void 0), !1 === n && (n = ke), this.each(function () {
                  w.event.remove(this, e, n, t)
              })
          }
      });
      var Ne = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
          Ae = /<script|<style|<link/i,
          je = /checked\s*(?:[^=]|=\s*.checked.)/i,
          qe = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
  
      function Le(e, t) {
          return N(e, "table") && N(11 !== t.nodeType ? t : t.firstChild, "tr") ? w(e).children("tbody")[0] || e : e
      }
  
      function He(e) {
          return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e
      }
  
      function Oe(e) {
          return "true/" === (e.type || "").slice(0, 5) ? e.type = e.type.slice(5) : e.removeAttribute("type"), e
      }
  
      function Pe(e, t) {
          var n, r, i, o, a, s, u, l;
          if (1 === t.nodeType) {
              if (J.hasData(e) && (o = J.access(e), a = J.set(t, o), l = o.events)) {
                  delete a.handle, a.events = {};
                  for (i in l)
                      for (n = 0, r = l[i].length; n < r; n++) w.event.add(t, i, l[i][n])
              }
              K.hasData(e) && (s = K.access(e), u = w.extend({}, s), K.set(t, u))
          }
      }
  
      function Me(e, t) {
          var n = t.nodeName.toLowerCase();
          "input" === n && pe.test(e.type) ? t.checked = e.checked : "input" !== n && "textarea" !== n || (t.defaultValue = e.defaultValue)
      }
  
      function Re(e, t, n, r) {
          t = a.apply([], t);
          var i, o, s, u, l, c, f = 0,
              p = e.length,
              d = p - 1,
              y = t[0],
              v = g(y);
          if (v || p > 1 && "string" == typeof y && !h.checkClone && je.test(y)) return e.each(function (i) {
              var o = e.eq(i);
              v && (t[0] = y.call(this, i, o.html())), Re(o, t, n, r)
          });
          if (p && (i = xe(t, e[0].ownerDocument, !1, e, r), o = i.firstChild, 1 === i.childNodes.length && (i = o), o || r)) {
              for (u = (s = w.map(ye(i, "script"), He)).length; f < p; f++) l = i, f !== d && (l = w.clone(l, !0, !0), u && w.merge(s, ye(l, "script"))), n.call(e[f], l, f);
              if (u)
                  for (c = s[s.length - 1].ownerDocument, w.map(s, Oe), f = 0; f < u; f++) l = s[f], he.test(l.type || "") && !J.access(l, "globalEval") && w.contains(c, l) && (l.src && "module" !== (l.type || "").toLowerCase() ? w._evalUrl && w._evalUrl(l.src) : m(l.textContent.replace(qe, ""), c, l))
          }
          return e
      }
  
      function Ie(e, t, n) {
          for (var r, i = t ? w.filter(t, e) : e, o = 0; null != (r = i[o]); o++) n || 1 !== r.nodeType || w.cleanData(ye(r)), r.parentNode && (n && w.contains(r.ownerDocument, r) && ve(ye(r, "script")), r.parentNode.removeChild(r));
          return e
      }
      w.extend({
          htmlPrefilter: function (e) {
              return e.replace(Ne, "<$1></$2>")
          },
          clone: function (e, t, n) {
              var r, i, o, a, s = e.cloneNode(!0),
                  u = w.contains(e.ownerDocument, e);
              if (!(h.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || w.isXMLDoc(e)))
                  for (a = ye(s), r = 0, i = (o = ye(e)).length; r < i; r++) Me(o[r], a[r]);
              if (t)
                  if (n)
                      for (o = o || ye(e), a = a || ye(s), r = 0, i = o.length; r < i; r++) Pe(o[r], a[r]);
                  else Pe(e, s);
              return (a = ye(s, "script")).length > 0 && ve(a, !u && ye(e, "script")), s
          },
          cleanData: function (e) {
              for (var t, n, r, i = w.event.special, o = 0; void 0 !== (n = e[o]); o++)
                  if (Y(n)) {
                      if (t = n[J.expando]) {
                          if (t.events)
                              for (r in t.events) i[r] ? w.event.remove(n, r) : w.removeEvent(n, r, t.handle);
                          n[J.expando] = void 0
                      }
                      n[K.expando] && (n[K.expando] = void 0)
                  }
          }
      }), w.fn.extend({
          detach: function (e) {
              return Ie(this, e, !0)
          },
          remove: function (e) {
              return Ie(this, e)
          },
          text: function (e) {
              return z(this, function (e) {
                  return void 0 === e ? w.text(this) : this.empty().each(function () {
                      1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e)
                  })
              }, null, e, arguments.length)
          },
          append: function () {
              return Re(this, arguments, function (e) {
                  1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || Le(this, e).appendChild(e)
              })
          },
          prepend: function () {
              return Re(this, arguments, function (e) {
                  if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                      var t = Le(this, e);
                      t.insertBefore(e, t.firstChild)
                  }
              })
          },
          before: function () {
              return Re(this, arguments, function (e) {
                  this.parentNode && this.parentNode.insertBefore(e, this)
              })
          },
          after: function () {
              return Re(this, arguments, function (e) {
                  this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
              })
          },
          empty: function () {
              for (var e, t = 0; null != (e = this[t]); t++) 1 === e.nodeType && (w.cleanData(ye(e, !1)), e.textContent = "");
              return this
          },
          clone: function (e, t) {
              return e = null != e && e, t = null == t ? e : t, this.map(function () {
                  return w.clone(this, e, t)
              })
          },
          html: function (e) {
              return z(this, function (e) {
                  var t = this[0] || {},
                      n = 0,
                      r = this.length;
                  if (void 0 === e && 1 === t.nodeType) return t.innerHTML;
                  if ("string" == typeof e && !Ae.test(e) && !ge[(de.exec(e) || ["", ""])[1].toLowerCase()]) {
                      e = w.htmlPrefilter(e);
                      try {
                          for (; n < r; n++) 1 === (t = this[n] || {}).nodeType && (w.cleanData(ye(t, !1)), t.innerHTML = e);
                          t = 0
                      } catch (e) {}
                  }
                  t && this.empty().append(e)
              }, null, e, arguments.length)
          },
          replaceWith: function () {
              var e = [];
              return Re(this, arguments, function (t) {
                  var n = this.parentNode;
                  w.inArray(this, e) < 0 && (w.cleanData(ye(this)), n && n.replaceChild(t, this))
              }, e)
          }
      }), w.each({
          appendTo: "append",
          prependTo: "prepend",
          insertBefore: "before",
          insertAfter: "after",
          replaceAll: "replaceWith"
      }, function (e, t) {
          w.fn[e] = function (e) {
              for (var n, r = [], i = w(e), o = i.length - 1, a = 0; a <= o; a++) n = a === o ? this : this.clone(!0), w(i[a])[t](n), s.apply(r, n.get());
              return this.pushStack(r)
          }
      });
      var We = new RegExp("^(" + re + ")(?!px)[a-z%]+$", "i"),
          $e = function (t) {
              var n = t.ownerDocument.defaultView;
              return n && n.opener || (n = e), n.getComputedStyle(t)
          },
          Be = new RegExp(oe.join("|"), "i");
      ! function () {
          function t() {
              if (c) {
                  l.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0", c.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%", be.appendChild(l).appendChild(c);
                  var t = e.getComputedStyle(c);
                  i = "1%" !== t.top, u = 12 === n(t.marginLeft), c.style.right = "60%", s = 36 === n(t.right), o = 36 === n(t.width), c.style.position = "absolute", a = 36 === c.offsetWidth || "absolute", be.removeChild(l), c = null
              }
          }
  
          function n(e) {
              return Math.round(parseFloat(e))
          }
          var i, o, a, s, u, l = r.createElement("div"),
              c = r.createElement("div");
          c.style && (c.style.backgroundClip = "content-box", c.cloneNode(!0).style.backgroundClip = "", h.clearCloneStyle = "content-box" === c.style.backgroundClip, w.extend(h, {
              boxSizingReliable: function () {
                  return t(), o
              },
              pixelBoxStyles: function () {
                  return t(), s
              },
              pixelPosition: function () {
                  return t(), i
              },
              reliableMarginLeft: function () {
                  return t(), u
              },
              scrollboxSize: function () {
                  return t(), a
              }
          }))
      }();
  
      function Fe(e, t, n) {
          var r, i, o, a, s = e.style;
          return (n = n || $e(e)) && ("" !== (a = n.getPropertyValue(t) || n[t]) || w.contains(e.ownerDocument, e) || (a = w.style(e, t)), !h.pixelBoxStyles() && We.test(a) && Be.test(t) && (r = s.width, i = s.minWidth, o = s.maxWidth, s.minWidth = s.maxWidth = s.width = a, a = n.width, s.width = r, s.minWidth = i, s.maxWidth = o)), void 0 !== a ? a + "" : a
      }
  
      function _e(e, t) {
          return {
              get: function () {
                  if (!e()) return (this.get = t).apply(this, arguments);
                  delete this.get
              }
          }
      }
      var ze = /^(none|table(?!-c[ea]).+)/,
          Xe = /^--/,
          Ue = {
              position: "absolute",
              visibility: "hidden",
              display: "block"
          },
          Ve = {
              letterSpacing: "0",
              fontWeight: "400"
          },
          Ge = ["Webkit", "Moz", "ms"],
          Ye = r.createElement("div").style;
  
      function Qe(e) {
          if (e in Ye) return e;
          var t = e[0].toUpperCase() + e.slice(1),
              n = Ge.length;
          while (n--)
              if ((e = Ge[n] + t) in Ye) return e
      }
  
      function Je(e) {
          var t = w.cssProps[e];
          return t || (t = w.cssProps[e] = Qe(e) || e), t
      }
  
      function Ke(e, t, n) {
          var r = ie.exec(t);
          return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t
      }
  
      function Ze(e, t, n, r, i, o) {
          var a = "width" === t ? 1 : 0,
              s = 0,
              u = 0;
          if (n === (r ? "border" : "content")) return 0;
          for (; a < 4; a += 2) "margin" === n && (u += w.css(e, n + oe[a], !0, i)), r ? ("content" === n && (u -= w.css(e, "padding" + oe[a], !0, i)), "margin" !== n && (u -= w.css(e, "border" + oe[a] + "Width", !0, i))) : (u += w.css(e, "padding" + oe[a], !0, i), "padding" !== n ? u += w.css(e, "border" + oe[a] + "Width", !0, i) : s += w.css(e, "border" + oe[a] + "Width", !0, i));
          return !r && o >= 0 && (u += Math.max(0, Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - o - u - s - .5))), u
      }
  
      function et(e, t, n) {
          var r = $e(e),
              i = Fe(e, t, r),
              o = "border-box" === w.css(e, "boxSizing", !1, r),
              a = o;
          if (We.test(i)) {
              if (!n) return i;
              i = "auto"
          }
          return a = a && (h.boxSizingReliable() || i === e.style[t]), ("auto" === i || !parseFloat(i) && "inline" === w.css(e, "display", !1, r)) && (i = e["offset" + t[0].toUpperCase() + t.slice(1)], a = !0), (i = parseFloat(i) || 0) + Ze(e, t, n || (o ? "border" : "content"), a, r, i) + "px"
      }
      w.extend({
          cssHooks: {
              opacity: {
                  get: function (e, t) {
                      if (t) {
                          var n = Fe(e, "opacity");
                          return "" === n ? "1" : n
                      }
                  }
              }
          },
          cssNumber: {
              animationIterationCount: !0,
              columnCount: !0,
              fillOpacity: !0,
              flexGrow: !0,
              flexShrink: !0,
              fontWeight: !0,
              lineHeight: !0,
              opacity: !0,
              order: !0,
              orphans: !0,
              widows: !0,
              zIndex: !0,
              zoom: !0
          },
          cssProps: {},
          style: function (e, t, n, r) {
              if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
                  var i, o, a, s = G(t),
                      u = Xe.test(t),
                      l = e.style;
                  if (u || (t = Je(s)), a = w.cssHooks[t] || w.cssHooks[s], void 0 === n) return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t];
                  "string" == (o = typeof n) && (i = ie.exec(n)) && i[1] && (n = ue(e, t, i), o = "number"), null != n && n === n && ("number" === o && (n += i && i[3] || (w.cssNumber[s] ? "" : "px")), h.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (l[t] = "inherit"), a && "set" in a && void 0 === (n = a.set(e, n, r)) || (u ? l.setProperty(t, n) : l[t] = n))
              }
          },
          css: function (e, t, n, r) {
              var i, o, a, s = G(t);
              return Xe.test(t) || (t = Je(s)), (a = w.cssHooks[t] || w.cssHooks[s]) && "get" in a && (i = a.get(e, !0, n)), void 0 === i && (i = Fe(e, t, r)), "normal" === i && t in Ve && (i = Ve[t]), "" === n || n ? (o = parseFloat(i), !0 === n || isFinite(o) ? o || 0 : i) : i
          }
      }), w.each(["height", "width"], function (e, t) {
          w.cssHooks[t] = {
              get: function (e, n, r) {
                  if (n) return !ze.test(w.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? et(e, t, r) : se(e, Ue, function () {
                      return et(e, t, r)
                  })
              },
              set: function (e, n, r) {
                  var i, o = $e(e),
                      a = "border-box" === w.css(e, "boxSizing", !1, o),
                      s = r && Ze(e, t, r, a, o);
                  return a && h.scrollboxSize() === o.position && (s -= Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - parseFloat(o[t]) - Ze(e, t, "border", !1, o) - .5)), s && (i = ie.exec(n)) && "px" !== (i[3] || "px") && (e.style[t] = n, n = w.css(e, t)), Ke(e, n, s)
              }
          }
      }), w.cssHooks.marginLeft = _e(h.reliableMarginLeft, function (e, t) {
          if (t) return (parseFloat(Fe(e, "marginLeft")) || e.getBoundingClientRect().left - se(e, {
              marginLeft: 0
          }, function () {
              return e.getBoundingClientRect().left
          })) + "px"
      }), w.each({
          margin: "",
          padding: "",
          border: "Width"
      }, function (e, t) {
          w.cssHooks[e + t] = {
              expand: function (n) {
                  for (var r = 0, i = {}, o = "string" == typeof n ? n.split(" ") : [n]; r < 4; r++) i[e + oe[r] + t] = o[r] || o[r - 2] || o[0];
                  return i
              }
          }, "margin" !== e && (w.cssHooks[e + t].set = Ke)
      }), w.fn.extend({
          css: function (e, t) {
              return z(this, function (e, t, n) {
                  var r, i, o = {},
                      a = 0;
                  if (Array.isArray(t)) {
                      for (r = $e(e), i = t.length; a < i; a++) o[t[a]] = w.css(e, t[a], !1, r);
                      return o
                  }
                  return void 0 !== n ? w.style(e, t, n) : w.css(e, t)
              }, e, t, arguments.length > 1)
          }
      });
  
      function tt(e, t, n, r, i) {
          return new tt.prototype.init(e, t, n, r, i)
      }
      w.Tween = tt, tt.prototype = {
          constructor: tt,
          init: function (e, t, n, r, i, o) {
              this.elem = e, this.prop = n, this.easing = i || w.easing._default, this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (w.cssNumber[n] ? "" : "px")
          },
          cur: function () {
              var e = tt.propHooks[this.prop];
              return e && e.get ? e.get(this) : tt.propHooks._default.get(this)
          },
          run: function (e) {
              var t, n = tt.propHooks[this.prop];
              return this.options.duration ? this.pos = t = w.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : tt.propHooks._default.set(this), this
          }
      }, tt.prototype.init.prototype = tt.prototype, tt.propHooks = {
          _default: {
              get: function (e) {
                  var t;
                  return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = w.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0
              },
              set: function (e) {
                  w.fx.step[e.prop] ? w.fx.step[e.prop](e) : 1 !== e.elem.nodeType || null == e.elem.style[w.cssProps[e.prop]] && !w.cssHooks[e.prop] ? e.elem[e.prop] = e.now : w.style(e.elem, e.prop, e.now + e.unit)
              }
          }
      }, tt.propHooks.scrollTop = tt.propHooks.scrollLeft = {
          set: function (e) {
              e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
          }
      }, w.easing = {
          linear: function (e) {
              return e
          },
          swing: function (e) {
              return .5 - Math.cos(e * Math.PI) / 2
          },
          _default: "swing"
      }, w.fx = tt.prototype.init, w.fx.step = {};
      var nt, rt, it = /^(?:toggle|show|hide)$/,
          ot = /queueHooks$/;
  
      function at() {
          rt && (!1 === r.hidden && e.requestAnimationFrame ? e.requestAnimationFrame(at) : e.setTimeout(at, w.fx.interval), w.fx.tick())
      }
  
      function st() {
          return e.setTimeout(function () {
              nt = void 0
          }), nt = Date.now()
      }
  
      function ut(e, t) {
          var n, r = 0,
              i = {
                  height: e
              };
          for (t = t ? 1 : 0; r < 4; r += 2 - t) i["margin" + (n = oe[r])] = i["padding" + n] = e;
          return t && (i.opacity = i.width = e), i
      }
  
      function lt(e, t, n) {
          for (var r, i = (pt.tweeners[t] || []).concat(pt.tweeners["*"]), o = 0, a = i.length; o < a; o++)
              if (r = i[o].call(n, t, e)) return r
      }
  
      function ct(e, t, n) {
          var r, i, o, a, s, u, l, c, f = "width" in t || "height" in t,
              p = this,
              d = {},
              h = e.style,
              g = e.nodeType && ae(e),
              y = J.get(e, "fxshow");
          n.queue || (null == (a = w._queueHooks(e, "fx")).unqueued && (a.unqueued = 0, s = a.empty.fire, a.empty.fire = function () {
              a.unqueued || s()
          }), a.unqueued++, p.always(function () {
              p.always(function () {
                  a.unqueued--, w.queue(e, "fx").length || a.empty.fire()
              })
          }));
          for (r in t)
              if (i = t[r], it.test(i)) {
                  if (delete t[r], o = o || "toggle" === i, i === (g ? "hide" : "show")) {
                      if ("show" !== i || !y || void 0 === y[r]) continue;
                      g = !0
                  }
                  d[r] = y && y[r] || w.style(e, r)
              } if ((u = !w.isEmptyObject(t)) || !w.isEmptyObject(d)) {
              f && 1 === e.nodeType && (n.overflow = [h.overflow, h.overflowX, h.overflowY], null == (l = y && y.display) && (l = J.get(e, "display")), "none" === (c = w.css(e, "display")) && (l ? c = l : (fe([e], !0), l = e.style.display || l, c = w.css(e, "display"), fe([e]))), ("inline" === c || "inline-block" === c && null != l) && "none" === w.css(e, "float") && (u || (p.done(function () {
                  h.display = l
              }), null == l && (c = h.display, l = "none" === c ? "" : c)), h.display = "inline-block")), n.overflow && (h.overflow = "hidden", p.always(function () {
                  h.overflow = n.overflow[0], h.overflowX = n.overflow[1], h.overflowY = n.overflow[2]
              })), u = !1;
              for (r in d) u || (y ? "hidden" in y && (g = y.hidden) : y = J.access(e, "fxshow", {
                  display: l
              }), o && (y.hidden = !g), g && fe([e], !0), p.done(function () {
                  g || fe([e]), J.remove(e, "fxshow");
                  for (r in d) w.style(e, r, d[r])
              })), u = lt(g ? y[r] : 0, r, p), r in y || (y[r] = u.start, g && (u.end = u.start, u.start = 0))
          }
      }
  
      function ft(e, t) {
          var n, r, i, o, a;
          for (n in e)
              if (r = G(n), i = t[r], o = e[n], Array.isArray(o) && (i = o[1], o = e[n] = o[0]), n !== r && (e[r] = o, delete e[n]), (a = w.cssHooks[r]) && "expand" in a) {
                  o = a.expand(o), delete e[r];
                  for (n in o) n in e || (e[n] = o[n], t[n] = i)
              } else t[r] = i
      }
  
      function pt(e, t, n) {
          var r, i, o = 0,
              a = pt.prefilters.length,
              s = w.Deferred().always(function () {
                  delete u.elem
              }),
              u = function () {
                  if (i) return !1;
                  for (var t = nt || st(), n = Math.max(0, l.startTime + l.duration - t), r = 1 - (n / l.duration || 0), o = 0, a = l.tweens.length; o < a; o++) l.tweens[o].run(r);
                  return s.notifyWith(e, [l, r, n]), r < 1 && a ? n : (a || s.notifyWith(e, [l, 1, 0]), s.resolveWith(e, [l]), !1)
              },
              l = s.promise({
                  elem: e,
                  props: w.extend({}, t),
                  opts: w.extend(!0, {
                      specialEasing: {},
                      easing: w.easing._default
                  }, n),
                  originalProperties: t,
                  originalOptions: n,
                  startTime: nt || st(),
                  duration: n.duration,
                  tweens: [],
                  createTween: function (t, n) {
                      var r = w.Tween(e, l.opts, t, n, l.opts.specialEasing[t] || l.opts.easing);
                      return l.tweens.push(r), r
                  },
                  stop: function (t) {
                      var n = 0,
                          r = t ? l.tweens.length : 0;
                      if (i) return this;
                      for (i = !0; n < r; n++) l.tweens[n].run(1);
                      return t ? (s.notifyWith(e, [l, 1, 0]), s.resolveWith(e, [l, t])) : s.rejectWith(e, [l, t]), this
                  }
              }),
              c = l.props;
          for (ft(c, l.opts.specialEasing); o < a; o++)
              if (r = pt.prefilters[o].call(l, e, c, l.opts)) return g(r.stop) && (w._queueHooks(l.elem, l.opts.queue).stop = r.stop.bind(r)), r;
          return w.map(c, lt, l), g(l.opts.start) && l.opts.start.call(e, l), l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always), w.fx.timer(w.extend(u, {
              elem: e,
              anim: l,
              queue: l.opts.queue
          })), l
      }
      w.Animation = w.extend(pt, {
              tweeners: {
                  "*": [function (e, t) {
                      var n = this.createTween(e, t);
                      return ue(n.elem, e, ie.exec(t), n), n
                  }]
              },
              tweener: function (e, t) {
                  g(e) ? (t = e, e = ["*"]) : e = e.match(M);
                  for (var n, r = 0, i = e.length; r < i; r++) n = e[r], pt.tweeners[n] = pt.tweeners[n] || [], pt.tweeners[n].unshift(t)
              },
              prefilters: [ct],
              prefilter: function (e, t) {
                  t ? pt.prefilters.unshift(e) : pt.prefilters.push(e)
              }
          }), w.speed = function (e, t, n) {
              var r = e && "object" == typeof e ? w.extend({}, e) : {
                  complete: n || !n && t || g(e) && e,
                  duration: e,
                  easing: n && t || t && !g(t) && t
              };
              return w.fx.off ? r.duration = 0 : "number" != typeof r.duration && (r.duration in w.fx.speeds ? r.duration = w.fx.speeds[r.duration] : r.duration = w.fx.speeds._default), null != r.queue && !0 !== r.queue || (r.queue = "fx"), r.old = r.complete, r.complete = function () {
                  g(r.old) && r.old.call(this), r.queue && w.dequeue(this, r.queue)
              }, r
          }, w.fn.extend({
              fadeTo: function (e, t, n, r) {
                  return this.filter(ae).css("opacity", 0).show().end().animate({
                      opacity: t
                  }, e, n, r)
              },
              animate: function (e, t, n, r) {
                  var i = w.isEmptyObject(e),
                      o = w.speed(t, n, r),
                      a = function () {
                          var t = pt(this, w.extend({}, e), o);
                          (i || J.get(this, "finish")) && t.stop(!0)
                      };
                  return a.finish = a, i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a)
              },
              stop: function (e, t, n) {
                  var r = function (e) {
                      var t = e.stop;
                      delete e.stop, t(n)
                  };
                  return "string" != typeof e && (n = t, t = e, e = void 0), t && !1 !== e && this.queue(e || "fx", []), this.each(function () {
                      var t = !0,
                          i = null != e && e + "queueHooks",
                          o = w.timers,
                          a = J.get(this);
                      if (i) a[i] && a[i].stop && r(a[i]);
                      else
                          for (i in a) a[i] && a[i].stop && ot.test(i) && r(a[i]);
                      for (i = o.length; i--;) o[i].elem !== this || null != e && o[i].queue !== e || (o[i].anim.stop(n), t = !1, o.splice(i, 1));
                      !t && n || w.dequeue(this, e)
                  })
              },
              finish: function (e) {
                  return !1 !== e && (e = e || "fx"), this.each(function () {
                      var t, n = J.get(this),
                          r = n[e + "queue"],
                          i = n[e + "queueHooks"],
                          o = w.timers,
                          a = r ? r.length : 0;
                      for (n.finish = !0, w.queue(this, e, []), i && i.stop && i.stop.call(this, !0), t = o.length; t--;) o[t].elem === this && o[t].queue === e && (o[t].anim.stop(!0), o.splice(t, 1));
                      for (t = 0; t < a; t++) r[t] && r[t].finish && r[t].finish.call(this);
                      delete n.finish
                  })
              }
          }), w.each(["toggle", "show", "hide"], function (e, t) {
              var n = w.fn[t];
              w.fn[t] = function (e, r, i) {
                  return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(ut(t, !0), e, r, i)
              }
          }), w.each({
              slideDown: ut("show"),
              slideUp: ut("hide"),
              slideToggle: ut("toggle"),
              fadeIn: {
                  opacity: "show"
              },
              fadeOut: {
                  opacity: "hide"
              },
              fadeToggle: {
                  opacity: "toggle"
              }
          }, function (e, t) {
              w.fn[e] = function (e, n, r) {
                  return this.animate(t, e, n, r)
              }
          }), w.timers = [], w.fx.tick = function () {
              var e, t = 0,
                  n = w.timers;
              for (nt = Date.now(); t < n.length; t++)(e = n[t])() || n[t] !== e || n.splice(t--, 1);
              n.length || w.fx.stop(), nt = void 0
          }, w.fx.timer = function (e) {
              w.timers.push(e), w.fx.start()
          }, w.fx.interval = 13, w.fx.start = function () {
              rt || (rt = !0, at())
          }, w.fx.stop = function () {
              rt = null
          }, w.fx.speeds = {
              slow: 600,
              fast: 200,
              _default: 400
          }, w.fn.delay = function (t, n) {
              return t = w.fx ? w.fx.speeds[t] || t : t, n = n || "fx", this.queue(n, function (n, r) {
                  var i = e.setTimeout(n, t);
                  r.stop = function () {
                      e.clearTimeout(i)
                  }
              })
          },
          function () {
              var e = r.createElement("input"),
                  t = r.createElement("select").appendChild(r.createElement("option"));
              e.type = "checkbox", h.checkOn = "" !== e.value, h.optSelected = t.selected, (e = r.createElement("input")).value = "t", e.type = "radio", h.radioValue = "t" === e.value
          }();
      var dt, ht = w.expr.attrHandle;
      w.fn.extend({
          attr: function (e, t) {
              return z(this, w.attr, e, t, arguments.length > 1)
          },
          removeAttr: function (e) {
              return this.each(function () {
                  w.removeAttr(this, e)
              })
          }
      }), w.extend({
          attr: function (e, t, n) {
              var r, i, o = e.nodeType;
              if (3 !== o && 8 !== o && 2 !== o) return "undefined" == typeof e.getAttribute ? w.prop(e, t, n) : (1 === o && w.isXMLDoc(e) || (i = w.attrHooks[t.toLowerCase()] || (w.expr.match.bool.test(t) ? dt : void 0)), void 0 !== n ? null === n ? void w.removeAttr(e, t) : i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : (e.setAttribute(t, n + ""), n) : i && "get" in i && null !== (r = i.get(e, t)) ? r : null == (r = w.find.attr(e, t)) ? void 0 : r)
          },
          attrHooks: {
              type: {
                  set: function (e, t) {
                      if (!h.radioValue && "radio" === t && N(e, "input")) {
                          var n = e.value;
                          return e.setAttribute("type", t), n && (e.value = n), t
                      }
                  }
              }
          },
          removeAttr: function (e, t) {
              var n, r = 0,
                  i = t && t.match(M);
              if (i && 1 === e.nodeType)
                  while (n = i[r++]) e.removeAttribute(n)
          }
      }), dt = {
          set: function (e, t, n) {
              return !1 === t ? w.removeAttr(e, n) : e.setAttribute(n, n), n
          }
      }, w.each(w.expr.match.bool.source.match(/\w+/g), function (e, t) {
          var n = ht[t] || w.find.attr;
          ht[t] = function (e, t, r) {
              var i, o, a = t.toLowerCase();
              return r || (o = ht[a], ht[a] = i, i = null != n(e, t, r) ? a : null, ht[a] = o), i
          }
      });
      var gt = /^(?:input|select|textarea|button)$/i,
          yt = /^(?:a|area)$/i;
      w.fn.extend({
          prop: function (e, t) {
              return z(this, w.prop, e, t, arguments.length > 1)
          },
          removeProp: function (e) {
              return this.each(function () {
                  delete this[w.propFix[e] || e]
              })
          }
      }), w.extend({
          prop: function (e, t, n) {
              var r, i, o = e.nodeType;
              if (3 !== o && 8 !== o && 2 !== o) return 1 === o && w.isXMLDoc(e) || (t = w.propFix[t] || t, i = w.propHooks[t]), void 0 !== n ? i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : e[t] = n : i && "get" in i && null !== (r = i.get(e, t)) ? r : e[t]
          },
          propHooks: {
              tabIndex: {
                  get: function (e) {
                      var t = w.find.attr(e, "tabindex");
                      return t ? parseInt(t, 10) : gt.test(e.nodeName) || yt.test(e.nodeName) && e.href ? 0 : -1
                  }
              }
          },
          propFix: {
              "for": "htmlFor",
              "class": "className"
          }
      }), h.optSelected || (w.propHooks.selected = {
          get: function (e) {
              var t = e.parentNode;
              return t && t.parentNode && t.parentNode.selectedIndex, null
          },
          set: function (e) {
              var t = e.parentNode;
              t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex)
          }
      }), w.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () {
          w.propFix[this.toLowerCase()] = this
      });
  
      function vt(e) {
          return (e.match(M) || []).join(" ")
      }
  
      function mt(e) {
          return e.getAttribute && e.getAttribute("class") || ""
      }
  
      function xt(e) {
          return Array.isArray(e) ? e : "string" == typeof e ? e.match(M) || [] : []
      }
      w.fn.extend({
          addClass: function (e) {
              var t, n, r, i, o, a, s, u = 0;
              if (g(e)) return this.each(function (t) {
                  w(this).addClass(e.call(this, t, mt(this)))
              });
              if ((t = xt(e)).length)
                  while (n = this[u++])
                      if (i = mt(n), r = 1 === n.nodeType && " " + vt(i) + " ") {
                          a = 0;
                          while (o = t[a++]) r.indexOf(" " + o + " ") < 0 && (r += o + " ");
                          i !== (s = vt(r)) && n.setAttribute("class", s)
                      } return this
          },
          removeClass: function (e) {
              var t, n, r, i, o, a, s, u = 0;
              if (g(e)) return this.each(function (t) {
                  w(this).removeClass(e.call(this, t, mt(this)))
              });
              if (!arguments.length) return this.attr("class", "");
              if ((t = xt(e)).length)
                  while (n = this[u++])
                      if (i = mt(n), r = 1 === n.nodeType && " " + vt(i) + " ") {
                          a = 0;
                          while (o = t[a++])
                              while (r.indexOf(" " + o + " ") > -1) r = r.replace(" " + o + " ", " ");
                          i !== (s = vt(r)) && n.setAttribute("class", s)
                      } return this
          },
          toggleClass: function (e, t) {
              var n = typeof e,
                  r = "string" === n || Array.isArray(e);
              return "boolean" == typeof t && r ? t ? this.addClass(e) : this.removeClass(e) : g(e) ? this.each(function (n) {
                  w(this).toggleClass(e.call(this, n, mt(this), t), t)
              }) : this.each(function () {
                  var t, i, o, a;
                  if (r) {
                      i = 0, o = w(this), a = xt(e);
                      while (t = a[i++]) o.hasClass(t) ? o.removeClass(t) : o.addClass(t)
                  } else void 0 !== e && "boolean" !== n || ((t = mt(this)) && J.set(this, "__className__", t), this.setAttribute && this.setAttribute("class", t || !1 === e ? "" : J.get(this, "__className__") || ""))
              })
          },
          hasClass: function (e) {
              var t, n, r = 0;
              t = " " + e + " ";
              while (n = this[r++])
                  if (1 === n.nodeType && (" " + vt(mt(n)) + " ").indexOf(t) > -1) return !0;
              return !1
          }
      });
      var bt = /\r/g;
      w.fn.extend({
          val: function (e) {
              var t, n, r, i = this[0]; {
                  if (arguments.length) return r = g(e), this.each(function (n) {
                      var i;
                      1 === this.nodeType && (null == (i = r ? e.call(this, n, w(this).val()) : e) ? i = "" : "number" == typeof i ? i += "" : Array.isArray(i) && (i = w.map(i, function (e) {
                          return null == e ? "" : e + ""
                      })), (t = w.valHooks[this.type] || w.valHooks[this.nodeName.toLowerCase()]) && "set" in t && void 0 !== t.set(this, i, "value") || (this.value = i))
                  });
                  if (i) return (t = w.valHooks[i.type] || w.valHooks[i.nodeName.toLowerCase()]) && "get" in t && void 0 !== (n = t.get(i, "value")) ? n : "string" == typeof (n = i.value) ? n.replace(bt, "") : null == n ? "" : n
              }
          }
      }), w.extend({
          valHooks: {
              option: {
                  get: function (e) {
                      var t = w.find.attr(e, "value");
                      return null != t ? t : vt(w.text(e))
                  }
              },
              select: {
                  get: function (e) {
                      var t, n, r, i = e.options,
                          o = e.selectedIndex,
                          a = "select-one" === e.type,
                          s = a ? null : [],
                          u = a ? o + 1 : i.length;
                      for (r = o < 0 ? u : a ? o : 0; r < u; r++)
                          if (((n = i[r]).selected || r === o) && !n.disabled && (!n.parentNode.disabled || !N(n.parentNode, "optgroup"))) {
                              if (t = w(n).val(), a) return t;
                              s.push(t)
                          } return s
                  },
                  set: function (e, t) {
                      var n, r, i = e.options,
                          o = w.makeArray(t),
                          a = i.length;
                      while (a--)((r = i[a]).selected = w.inArray(w.valHooks.option.get(r), o) > -1) && (n = !0);
                      return n || (e.selectedIndex = -1), o
                  }
              }
          }
      }), w.each(["radio", "checkbox"], function () {
          w.valHooks[this] = {
              set: function (e, t) {
                  if (Array.isArray(t)) return e.checked = w.inArray(w(e).val(), t) > -1
              }
          }, h.checkOn || (w.valHooks[this].get = function (e) {
              return null === e.getAttribute("value") ? "on" : e.value
          })
      }), h.focusin = "onfocusin" in e;
      var wt = /^(?:focusinfocus|focusoutblur)$/,
          Tt = function (e) {
              e.stopPropagation()
          };
      w.extend(w.event, {
          trigger: function (t, n, i, o) {
              var a, s, u, l, c, p, d, h, v = [i || r],
                  m = f.call(t, "type") ? t.type : t,
                  x = f.call(t, "namespace") ? t.namespace.split(".") : [];
              if (s = h = u = i = i || r, 3 !== i.nodeType && 8 !== i.nodeType && !wt.test(m + w.event.triggered) && (m.indexOf(".") > -1 && (m = (x = m.split(".")).shift(), x.sort()), c = m.indexOf(":") < 0 && "on" + m, t = t[w.expando] ? t : new w.Event(m, "object" == typeof t && t), t.isTrigger = o ? 2 : 3, t.namespace = x.join("."), t.rnamespace = t.namespace ? new RegExp("(^|\\.)" + x.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, t.result = void 0, t.target || (t.target = i), n = null == n ? [t] : w.makeArray(n, [t]), d = w.event.special[m] || {}, o || !d.trigger || !1 !== d.trigger.apply(i, n))) {
                  if (!o && !d.noBubble && !y(i)) {
                      for (l = d.delegateType || m, wt.test(l + m) || (s = s.parentNode); s; s = s.parentNode) v.push(s), u = s;
                      u === (i.ownerDocument || r) && v.push(u.defaultView || u.parentWindow || e)
                  }
                  a = 0;
                  while ((s = v[a++]) && !t.isPropagationStopped()) h = s, t.type = a > 1 ? l : d.bindType || m, (p = (J.get(s, "events") || {})[t.type] && J.get(s, "handle")) && p.apply(s, n), (p = c && s[c]) && p.apply && Y(s) && (t.result = p.apply(s, n), !1 === t.result && t.preventDefault());
                  return t.type = m, o || t.isDefaultPrevented() || d._default && !1 !== d._default.apply(v.pop(), n) || !Y(i) || c && g(i[m]) && !y(i) && ((u = i[c]) && (i[c] = null), w.event.triggered = m, t.isPropagationStopped() && h.addEventListener(m, Tt), i[m](), t.isPropagationStopped() && h.removeEventListener(m, Tt), w.event.triggered = void 0, u && (i[c] = u)), t.result
              }
          },
          simulate: function (e, t, n) {
              var r = w.extend(new w.Event, n, {
                  type: e,
                  isSimulated: !0
              });
              w.event.trigger(r, null, t)
          }
      }), w.fn.extend({
          trigger: function (e, t) {
              return this.each(function () {
                  w.event.trigger(e, t, this)
              })
          },
          triggerHandler: function (e, t) {
              var n = this[0];
              if (n) return w.event.trigger(e, t, n, !0)
          }
      }), h.focusin || w.each({
          focus: "focusin",
          blur: "focusout"
      }, function (e, t) {
          var n = function (e) {
              w.event.simulate(t, e.target, w.event.fix(e))
          };
          w.event.special[t] = {
              setup: function () {
                  var r = this.ownerDocument || this,
                      i = J.access(r, t);
                  i || r.addEventListener(e, n, !0), J.access(r, t, (i || 0) + 1)
              },
              teardown: function () {
                  var r = this.ownerDocument || this,
                      i = J.access(r, t) - 1;
                  i ? J.access(r, t, i) : (r.removeEventListener(e, n, !0), J.remove(r, t))
              }
          }
      });
      var Ct = e.location,
          Et = Date.now(),
          kt = /\?/;
      w.parseXML = function (t) {
          var n;
          if (!t || "string" != typeof t) return null;
          try {
              n = (new e.DOMParser).parseFromString(t, "text/xml")
          } catch (e) {
              n = void 0
          }
          return n && !n.getElementsByTagName("parsererror").length || w.error("Invalid XML: " + t), n
      };
      var St = /\[\]$/,
          Dt = /\r?\n/g,
          Nt = /^(?:submit|button|image|reset|file)$/i,
          At = /^(?:input|select|textarea|keygen)/i;
  
      function jt(e, t, n, r) {
          var i;
          if (Array.isArray(t)) w.each(t, function (t, i) {
              n || St.test(e) ? r(e, i) : jt(e + "[" + ("object" == typeof i && null != i ? t : "") + "]", i, n, r)
          });
          else if (n || "object" !== x(t)) r(e, t);
          else
              for (i in t) jt(e + "[" + i + "]", t[i], n, r)
      }
      w.param = function (e, t) {
          var n, r = [],
              i = function (e, t) {
                  var n = g(t) ? t() : t;
                  r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n)
              };
          if (Array.isArray(e) || e.jquery && !w.isPlainObject(e)) w.each(e, function () {
              i(this.name, this.value)
          });
          else
              for (n in e) jt(n, e[n], t, i);
          return r.join("&")
      }, w.fn.extend({
          serialize: function () {
              return w.param(this.serializeArray())
          },
          serializeArray: function () {
              return this.map(function () {
                  var e = w.prop(this, "elements");
                  return e ? w.makeArray(e) : this
              }).filter(function () {
                  var e = this.type;
                  return this.name && !w(this).is(":disabled") && At.test(this.nodeName) && !Nt.test(e) && (this.checked || !pe.test(e))
              }).map(function (e, t) {
                  var n = w(this).val();
                  return null == n ? null : Array.isArray(n) ? w.map(n, function (e) {
                      return {
                          name: t.name,
                          value: e.replace(Dt, "\r\n")
                      }
                  }) : {
                      name: t.name,
                      value: n.replace(Dt, "\r\n")
                  }
              }).get()
          }
      });
      var qt = /%20/g,
          Lt = /#.*$/,
          Ht = /([?&])_=[^&]*/,
          Ot = /^(.*?):[ \t]*([^\r\n]*)$/gm,
          Pt = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
          Mt = /^(?:GET|HEAD)$/,
          Rt = /^\/\//,
          It = {},
          Wt = {},
          $t = "*/".concat("*"),
          Bt = r.createElement("a");
      Bt.href = Ct.href;
  
      function Ft(e) {
          return function (t, n) {
              "string" != typeof t && (n = t, t = "*");
              var r, i = 0,
                  o = t.toLowerCase().match(M) || [];
              if (g(n))
                  while (r = o[i++]) "+" === r[0] ? (r = r.slice(1) || "*", (e[r] = e[r] || []).unshift(n)) : (e[r] = e[r] || []).push(n)
          }
      }
  
      function _t(e, t, n, r) {
          var i = {},
              o = e === Wt;
  
          function a(s) {
              var u;
              return i[s] = !0, w.each(e[s] || [], function (e, s) {
                  var l = s(t, n, r);
                  return "string" != typeof l || o || i[l] ? o ? !(u = l) : void 0 : (t.dataTypes.unshift(l), a(l), !1)
              }), u
          }
          return a(t.dataTypes[0]) || !i["*"] && a("*")
      }
  
      function zt(e, t) {
          var n, r, i = w.ajaxSettings.flatOptions || {};
          for (n in t) void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]);
          return r && w.extend(!0, e, r), e
      }
  
      function Xt(e, t, n) {
          var r, i, o, a, s = e.contents,
              u = e.dataTypes;
          while ("*" === u[0]) u.shift(), void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type"));
          if (r)
              for (i in s)
                  if (s[i] && s[i].test(r)) {
                      u.unshift(i);
                      break
                  } if (u[0] in n) o = u[0];
          else {
              for (i in n) {
                  if (!u[0] || e.converters[i + " " + u[0]]) {
                      o = i;
                      break
                  }
                  a || (a = i)
              }
              o = o || a
          }
          if (o) return o !== u[0] && u.unshift(o), n[o]
      }
  
      function Ut(e, t, n, r) {
          var i, o, a, s, u, l = {},
              c = e.dataTypes.slice();
          if (c[1])
              for (a in e.converters) l[a.toLowerCase()] = e.converters[a];
          o = c.shift();
          while (o)
              if (e.responseFields[o] && (n[e.responseFields[o]] = t), !u && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), u = o, o = c.shift())
                  if ("*" === o) o = u;
                  else if ("*" !== u && u !== o) {
              if (!(a = l[u + " " + o] || l["* " + o]))
                  for (i in l)
                      if ((s = i.split(" "))[1] === o && (a = l[u + " " + s[0]] || l["* " + s[0]])) {
                          !0 === a ? a = l[i] : !0 !== l[i] && (o = s[0], c.unshift(s[1]));
                          break
                      } if (!0 !== a)
                  if (a && e["throws"]) t = a(t);
                  else try {
                      t = a(t)
                  } catch (e) {
                      return {
                          state: "parsererror",
                          error: a ? e : "No conversion from " + u + " to " + o
                      }
                  }
          }
          return {
              state: "success",
              data: t
          }
      }
      w.extend({
          active: 0,
          lastModified: {},
          etag: {},
          ajaxSettings: {
              url: Ct.href,
              type: "GET",
              isLocal: Pt.test(Ct.protocol),
              global: !0,
              processData: !0,
              async: !0,
              contentType: "application/x-www-form-urlencoded; charset=UTF-8",
              accepts: {
                  "*": $t,
                  text: "text/plain",
                  html: "text/html",
                  xml: "application/xml, text/xml",
                  json: "application/json, text/javascript"
              },
              contents: {
                  xml: /\bxml\b/,
                  html: /\bhtml/,
                  json: /\bjson\b/
              },
              responseFields: {
                  xml: "responseXML",
                  text: "responseText",
                  json: "responseJSON"
              },
              converters: {
                  "* text": String,
                  "text html": !0,
                  "text json": JSON.parse,
                  "text xml": w.parseXML
              },
              flatOptions: {
                  url: !0,
                  context: !0
              }
          },
          ajaxSetup: function (e, t) {
              return t ? zt(zt(e, w.ajaxSettings), t) : zt(w.ajaxSettings, e)
          },
          ajaxPrefilter: Ft(It),
          ajaxTransport: Ft(Wt),
          ajax: function (t, n) {
              "object" == typeof t && (n = t, t = void 0), n = n || {};
              var i, o, a, s, u, l, c, f, p, d, h = w.ajaxSetup({}, n),
                  g = h.context || h,
                  y = h.context && (g.nodeType || g.jquery) ? w(g) : w.event,
                  v = w.Deferred(),
                  m = w.Callbacks("once memory"),
                  x = h.statusCode || {},
                  b = {},
                  T = {},
                  C = "canceled",
                  E = {
                      readyState: 0,
                      getResponseHeader: function (e) {
                          var t;
                          if (c) {
                              if (!s) {
                                  s = {};
                                  while (t = Ot.exec(a)) s[t[1].toLowerCase()] = t[2]
                              }
                              t = s[e.toLowerCase()]
                          }
                          return null == t ? null : t
                      },
                      getAllResponseHeaders: function () {
                          return c ? a : null
                      },
                      setRequestHeader: function (e, t) {
                          return null == c && (e = T[e.toLowerCase()] = T[e.toLowerCase()] || e, b[e] = t), this
                      },
                      overrideMimeType: function (e) {
                          return null == c && (h.mimeType = e), this
                      },
                      statusCode: function (e) {
                          var t;
                          if (e)
                              if (c) E.always(e[E.status]);
                              else
                                  for (t in e) x[t] = [x[t], e[t]];
                          return this
                      },
                      abort: function (e) {
                          var t = e || C;
                          return i && i.abort(t), k(0, t), this
                      }
                  };
              if (v.promise(E), h.url = ((t || h.url || Ct.href) + "").replace(Rt, Ct.protocol + "//"), h.type = n.method || n.type || h.method || h.type, h.dataTypes = (h.dataType || "*").toLowerCase().match(M) || [""], null == h.crossDomain) {
                  l = r.createElement("a");
                  try {
                      l.href = h.url, l.href = l.href, h.crossDomain = Bt.protocol + "//" + Bt.host != l.protocol + "//" + l.host
                  } catch (e) {
                      h.crossDomain = !0
                  }
              }
              if (h.data && h.processData && "string" != typeof h.data && (h.data = w.param(h.data, h.traditional)), _t(It, h, n, E), c) return E;
              (f = w.event && h.global) && 0 == w.active++ && w.event.trigger("ajaxStart"), h.type = h.type.toUpperCase(), h.hasContent = !Mt.test(h.type), o = h.url.replace(Lt, ""), h.hasContent ? h.data && h.processData && 0 === (h.contentType || "").indexOf("application/x-www-form-urlencoded") && (h.data = h.data.replace(qt, "+")) : (d = h.url.slice(o.length), h.data && (h.processData || "string" == typeof h.data) && (o += (kt.test(o) ? "&" : "?") + h.data, delete h.data), !1 === h.cache && (o = o.replace(Ht, "$1"), d = (kt.test(o) ? "&" : "?") + "_=" + Et++ + d), h.url = o + d), h.ifModified && (w.lastModified[o] && E.setRequestHeader("If-Modified-Since", w.lastModified[o]), w.etag[o] && E.setRequestHeader("If-None-Match", w.etag[o])), (h.data && h.hasContent && !1 !== h.contentType || n.contentType) && E.setRequestHeader("Content-Type", h.contentType), E.setRequestHeader("Accept", h.dataTypes[0] && h.accepts[h.dataTypes[0]] ? h.accepts[h.dataTypes[0]] + ("*" !== h.dataTypes[0] ? ", " + $t + "; q=0.01" : "") : h.accepts["*"]);
              for (p in h.headers) E.setRequestHeader(p, h.headers[p]);
              if (h.beforeSend && (!1 === h.beforeSend.call(g, E, h) || c)) return E.abort();
              if (C = "abort", m.add(h.complete), E.done(h.success), E.fail(h.error), i = _t(Wt, h, n, E)) {
                  if (E.readyState = 1, f && y.trigger("ajaxSend", [E, h]), c) return E;
                  h.async && h.timeout > 0 && (u = e.setTimeout(function () {
                      E.abort("timeout")
                  }, h.timeout));
                  try {
                      c = !1, i.send(b, k)
                  } catch (e) {
                      if (c) throw e;
                      k(-1, e)
                  }
              } else k(-1, "No Transport");
  
              function k(t, n, r, s) {
                  var l, p, d, b, T, C = n;
                  c || (c = !0, u && e.clearTimeout(u), i = void 0, a = s || "", E.readyState = t > 0 ? 4 : 0, l = t >= 200 && t < 300 || 304 === t, r && (b = Xt(h, E, r)), b = Ut(h, b, E, l), l ? (h.ifModified && ((T = E.getResponseHeader("Last-Modified")) && (w.lastModified[o] = T), (T = E.getResponseHeader("etag")) && (w.etag[o] = T)), 204 === t || "HEAD" === h.type ? C = "nocontent" : 304 === t ? C = "notmodified" : (C = b.state, p = b.data, l = !(d = b.error))) : (d = C, !t && C || (C = "error", t < 0 && (t = 0))), E.status = t, E.statusText = (n || C) + "", l ? v.resolveWith(g, [p, C, E]) : v.rejectWith(g, [E, C, d]), E.statusCode(x), x = void 0, f && y.trigger(l ? "ajaxSuccess" : "ajaxError", [E, h, l ? p : d]), m.fireWith(g, [E, C]), f && (y.trigger("ajaxComplete", [E, h]), --w.active || w.event.trigger("ajaxStop")))
              }
              return E
          },
          getJSON: function (e, t, n) {
              return w.get(e, t, n, "json")
          },
          getScript: function (e, t) {
              return w.get(e, void 0, t, "script")
          }
      }), w.each(["get", "post"], function (e, t) {
          w[t] = function (e, n, r, i) {
              return g(n) && (i = i || r, r = n, n = void 0), w.ajax(w.extend({
                  url: e,
                  type: t,
                  dataType: i,
                  data: n,
                  success: r
              }, w.isPlainObject(e) && e))
          }
      }), w._evalUrl = function (e) {
          return w.ajax({
              url: e,
              type: "GET",
              dataType: "script",
              cache: !0,
              async: !1,
              global: !1,
              "throws": !0
          })
      }, w.fn.extend({
          wrapAll: function (e) {
              var t;
              return this[0] && (g(e) && (e = e.call(this[0])), t = w(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function () {
                  var e = this;
                  while (e.firstElementChild) e = e.firstElementChild;
                  return e
              }).append(this)), this
          },
          wrapInner: function (e) {
              return g(e) ? this.each(function (t) {
                  w(this).wrapInner(e.call(this, t))
              }) : this.each(function () {
                  var t = w(this),
                      n = t.contents();
                  n.length ? n.wrapAll(e) : t.append(e)
              })
          },
          wrap: function (e) {
              var t = g(e);
              return this.each(function (n) {
                  w(this).wrapAll(t ? e.call(this, n) : e)
              })
          },
          unwrap: function (e) {
              return this.parent(e).not("body").each(function () {
                  w(this).replaceWith(this.childNodes)
              }), this
          }
      }), w.expr.pseudos.hidden = function (e) {
          return !w.expr.pseudos.visible(e)
      }, w.expr.pseudos.visible = function (e) {
          return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
      }, w.ajaxSettings.xhr = function () {
          try {
              return new e.XMLHttpRequest
          } catch (e) {}
      };
      var Vt = {
              0: 200,
              1223: 204
          },
          Gt = w.ajaxSettings.xhr();
      h.cors = !!Gt && "withCredentials" in Gt, h.ajax = Gt = !!Gt, w.ajaxTransport(function (t) {
          var n, r;
          if (h.cors || Gt && !t.crossDomain) return {
              send: function (i, o) {
                  var a, s = t.xhr();
                  if (s.open(t.type, t.url, t.async, t.username, t.password), t.xhrFields)
                      for (a in t.xhrFields) s[a] = t.xhrFields[a];
                  t.mimeType && s.overrideMimeType && s.overrideMimeType(t.mimeType), t.crossDomain || i["X-Requested-With"] || (i["X-Requested-With"] = "XMLHttpRequest");
                  for (a in i) s.setRequestHeader(a, i[a]);
                  n = function (e) {
                      return function () {
                          n && (n = r = s.onload = s.onerror = s.onabort = s.ontimeout = s.onreadystatechange = null, "abort" === e ? s.abort() : "error" === e ? "number" != typeof s.status ? o(0, "error") : o(s.status, s.statusText) : o(Vt[s.status] || s.status, s.statusText, "text" !== (s.responseType || "text") || "string" != typeof s.responseText ? {
                              binary: s.response
                          } : {
                              text: s.responseText
                          }, s.getAllResponseHeaders()))
                      }
                  }, s.onload = n(), r = s.onerror = s.ontimeout = n("error"), void 0 !== s.onabort ? s.onabort = r : s.onreadystatechange = function () {
                      4 === s.readyState && e.setTimeout(function () {
                          n && r()
                      })
                  }, n = n("abort");
                  try {
                      s.send(t.hasContent && t.data || null)
                  } catch (e) {
                      if (n) throw e
                  }
              },
              abort: function () {
                  n && n()
              }
          }
      }), w.ajaxPrefilter(function (e) {
          e.crossDomain && (e.contents.script = !1)
      }), w.ajaxSetup({
          accepts: {
              script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
          },
          contents: {
              script: /\b(?:java|ecma)script\b/
          },
          converters: {
              "text script": function (e) {
                  return w.globalEval(e), e
              }
          }
      }), w.ajaxPrefilter("script", function (e) {
          void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET")
      }), w.ajaxTransport("script", function (e) {
          if (e.crossDomain) {
              var t, n;
              return {
                  send: function (i, o) {
                      t = w("<script>").prop({
                          charset: e.scriptCharset,
                          src: e.url
                      }).on("load error", n = function (e) {
                          t.remove(), n = null, e && o("error" === e.type ? 404 : 200, e.type)
                      }), r.head.appendChild(t[0])
                  },
                  abort: function () {
                      n && n()
                  }
              }
          }
      });
      var Yt = [],
          Qt = /(=)\?(?=&|$)|\?\?/;
      w.ajaxSetup({
          jsonp: "callback",
          jsonpCallback: function () {
              var e = Yt.pop() || w.expando + "_" + Et++;
              return this[e] = !0, e
          }
      }), w.ajaxPrefilter("json jsonp", function (t, n, r) {
          var i, o, a, s = !1 !== t.jsonp && (Qt.test(t.url) ? "url" : "string" == typeof t.data && 0 === (t.contentType || "").indexOf("application/x-www-form-urlencoded") && Qt.test(t.data) && "data");
          if (s || "jsonp" === t.dataTypes[0]) return i = t.jsonpCallback = g(t.jsonpCallback) ? t.jsonpCallback() : t.jsonpCallback, s ? t[s] = t[s].replace(Qt, "$1" + i) : !1 !== t.jsonp && (t.url += (kt.test(t.url) ? "&" : "?") + t.jsonp + "=" + i), t.converters["script json"] = function () {
              return a || w.error(i + " was not called"), a[0]
          }, t.dataTypes[0] = "json", o = e[i], e[i] = function () {
              a = arguments
          }, r.always(function () {
              void 0 === o ? w(e).removeProp(i) : e[i] = o, t[i] && (t.jsonpCallback = n.jsonpCallback, Yt.push(i)), a && g(o) && o(a[0]), a = o = void 0
          }), "script"
      }), h.createHTMLDocument = function () {
          var e = r.implementation.createHTMLDocument("").body;
          return e.innerHTML = "<form></form><form></form>", 2 === e.childNodes.length
      }(), w.parseHTML = function (e, t, n) {
          if ("string" != typeof e) return [];
          "boolean" == typeof t && (n = t, t = !1);
          var i, o, a;
          return t || (h.createHTMLDocument ? ((i = (t = r.implementation.createHTMLDocument("")).createElement("base")).href = r.location.href, t.head.appendChild(i)) : t = r), o = A.exec(e), a = !n && [], o ? [t.createElement(o[1])] : (o = xe([e], t, a), a && a.length && w(a).remove(), w.merge([], o.childNodes))
      }, w.fn.load = function (e, t, n) {
          var r, i, o, a = this,
              s = e.indexOf(" ");
          return s > -1 && (r = vt(e.slice(s)), e = e.slice(0, s)), g(t) ? (n = t, t = void 0) : t && "object" == typeof t && (i = "POST"), a.length > 0 && w.ajax({
              url: e,
              type: i || "GET",
              dataType: "html",
              data: t
          }).done(function (e) {
              o = arguments, a.html(r ? w("<div>").append(w.parseHTML(e)).find(r) : e)
          }).always(n && function (e, t) {
              a.each(function () {
                  n.apply(this, o || [e.responseText, t, e])
              })
          }), this
      }, w.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function (e, t) {
          w.fn[t] = function (e) {
              return this.on(t, e)
          }
      }), w.expr.pseudos.animated = function (e) {
          return w.grep(w.timers, function (t) {
              return e === t.elem
          }).length
      }, w.offset = {
          setOffset: function (e, t, n) {
              var r, i, o, a, s, u, l, c = w.css(e, "position"),
                  f = w(e),
                  p = {};
              "static" === c && (e.style.position = "relative"), s = f.offset(), o = w.css(e, "top"), u = w.css(e, "left"), (l = ("absolute" === c || "fixed" === c) && (o + u).indexOf("auto") > -1) ? (a = (r = f.position()).top, i = r.left) : (a = parseFloat(o) || 0, i = parseFloat(u) || 0), g(t) && (t = t.call(e, n, w.extend({}, s))), null != t.top && (p.top = t.top - s.top + a), null != t.left && (p.left = t.left - s.left + i), "using" in t ? t.using.call(e, p) : f.css(p)
          }
      }, w.fn.extend({
          offset: function (e) {
              if (arguments.length) return void 0 === e ? this : this.each(function (t) {
                  w.offset.setOffset(this, e, t)
              });
              var t, n, r = this[0];
              if (r) return r.getClientRects().length ? (t = r.getBoundingClientRect(), n = r.ownerDocument.defaultView, {
                  top: t.top + n.pageYOffset,
                  left: t.left + n.pageXOffset
              }) : {
                  top: 0,
                  left: 0
              }
          },
          position: function () {
              if (this[0]) {
                  var e, t, n, r = this[0],
                      i = {
                          top: 0,
                          left: 0
                      };
                  if ("fixed" === w.css(r, "position")) t = r.getBoundingClientRect();
                  else {
                      t = this.offset(), n = r.ownerDocument, e = r.offsetParent || n.documentElement;
                      while (e && (e === n.body || e === n.documentElement) && "static" === w.css(e, "position")) e = e.parentNode;
                      e && e !== r && 1 === e.nodeType && ((i = w(e).offset()).top += w.css(e, "borderTopWidth", !0), i.left += w.css(e, "borderLeftWidth", !0))
                  }
                  return {
                      top: t.top - i.top - w.css(r, "marginTop", !0),
                      left: t.left - i.left - w.css(r, "marginLeft", !0)
                  }
              }
          },
          offsetParent: function () {
              return this.map(function () {
                  var e = this.offsetParent;
                  while (e && "static" === w.css(e, "position")) e = e.offsetParent;
                  return e || be
              })
          }
      }), w.each({
          scrollLeft: "pageXOffset",
          scrollTop: "pageYOffset"
      }, function (e, t) {
          var n = "pageYOffset" === t;
          w.fn[e] = function (r) {
              return z(this, function (e, r, i) {
                  var o;
                  if (y(e) ? o = e : 9 === e.nodeType && (o = e.defaultView), void 0 === i) return o ? o[t] : e[r];
                  o ? o.scrollTo(n ? o.pageXOffset : i, n ? i : o.pageYOffset) : e[r] = i
              }, e, r, arguments.length)
          }
      }), w.each(["top", "left"], function (e, t) {
          w.cssHooks[t] = _e(h.pixelPosition, function (e, n) {
              if (n) return n = Fe(e, t), We.test(n) ? w(e).position()[t] + "px" : n
          })
      }), w.each({
          Height: "height",
          Width: "width"
      }, function (e, t) {
          w.each({
              padding: "inner" + e,
              content: t,
              "": "outer" + e
          }, function (n, r) {
              w.fn[r] = function (i, o) {
                  var a = arguments.length && (n || "boolean" != typeof i),
                      s = n || (!0 === i || !0 === o ? "margin" : "border");
                  return z(this, function (t, n, i) {
                      var o;
                      return y(t) ? 0 === r.indexOf("outer") ? t["inner" + e] : t.document.documentElement["client" + e] : 9 === t.nodeType ? (o = t.documentElement, Math.max(t.body["scroll" + e], o["scroll" + e], t.body["offset" + e], o["offset" + e], o["client" + e])) : void 0 === i ? w.css(t, n, s) : w.style(t, n, i, s)
                  }, t, a ? i : void 0, a)
              }
          })
      }), w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function (e, t) {
          w.fn[t] = function (e, n) {
              return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
          }
      }), w.fn.extend({
          hover: function (e, t) {
              return this.mouseenter(e).mouseleave(t || e)
          }
      }), w.fn.extend({
          bind: function (e, t, n) {
              return this.on(e, null, t, n)
          },
          unbind: function (e, t) {
              return this.off(e, null, t)
          },
          delegate: function (e, t, n, r) {
              return this.on(t, e, n, r)
          },
          undelegate: function (e, t, n) {
              return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
          }
      }), w.proxy = function (e, t) {
          var n, r, i;
          if ("string" == typeof t && (n = e[t], t = e, e = n), g(e)) return r = o.call(arguments, 2), i = function () {
              return e.apply(t || this, r.concat(o.call(arguments)))
          }, i.guid = e.guid = e.guid || w.guid++, i
      }, w.holdReady = function (e) {
          e ? w.readyWait++ : w.ready(!0)
      }, w.isArray = Array.isArray, w.parseJSON = JSON.parse, w.nodeName = N, w.isFunction = g, w.isWindow = y, w.camelCase = G, w.type = x, w.now = Date.now, w.isNumeric = function (e) {
          var t = w.type(e);
          return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e))
      }, "function" == typeof define && define.amd && define("jquery", [], function () {
          return w
      });
      var Jt = e.jQuery,
          Kt = e.$;
      return w.noConflict = function (t) {
          return e.$ === w && (e.$ = Kt), t && e.jQuery === w && (e.jQuery = Jt), w
      }, t || (e.jQuery = e.$ = w), w
  });
  
  /*!
   * Bootstrap v4.3.1 (https://getbootstrap.com/)
   * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
   */
  ! function (t, e) {
      "object" == typeof exports && "undefined" != typeof module ? e(exports, require("jquery")) : "function" == typeof define && define.amd ? define(["exports", "jquery"], e) : e((t = t || self).bootstrap = {}, t.jQuery)
  }(this, function (t, p) {
      "use strict";
  
      function i(t, e) {
          for (var n = 0; n < e.length; n++) {
              var i = e[n];
              i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
          }
      }
  
      function s(t, e, n) {
          return e && i(t.prototype, e), n && i(t, n), t
      }
  
      function l(o) {
          for (var t = 1; t < arguments.length; t++) {
              var r = null != arguments[t] ? arguments[t] : {},
                  e = Object.keys(r);
              "function" == typeof Object.getOwnPropertySymbols && (e = e.concat(Object.getOwnPropertySymbols(r).filter(function (t) {
                  return Object.getOwnPropertyDescriptor(r, t).enumerable
              }))), e.forEach(function (t) {
                  var e, n, i;
                  e = o, i = r[n = t], n in e ? Object.defineProperty(e, n, {
                      value: i,
                      enumerable: !0,
                      configurable: !0,
                      writable: !0
                  }) : e[n] = i
              })
          }
          return o
      }
      p = p && p.hasOwnProperty("default") ? p.default : p;
      var e = "transitionend";
  
      function n(t) {
          var e = this,
              n = !1;
          return p(this).one(m.TRANSITION_END, function () {
              n = !0
          }), setTimeout(function () {
              n || m.triggerTransitionEnd(e)
          }, t), this
      }
      var m = {
          TRANSITION_END: "bsTransitionEnd",
          getUID: function (t) {
              for (; t += ~~(1e6 * Math.random()), document.getElementById(t););
              return t
          },
          getSelectorFromElement: function (t) {
              var e = t.getAttribute("data-target");
              if (!e || "#" === e) {
                  var n = t.getAttribute("href");
                  e = n && "#" !== n ? n.trim() : ""
              }
              try {
                  return document.querySelector(e) ? e : null
              } catch (t) {
                  return null
              }
          },
          getTransitionDurationFromElement: function (t) {
              if (!t) return 0;
              var e = p(t).css("transition-duration"),
                  n = p(t).css("transition-delay"),
                  i = parseFloat(e),
                  o = parseFloat(n);
              return i || o ? (e = e.split(",")[0], n = n.split(",")[0], 1e3 * (parseFloat(e) + parseFloat(n))) : 0
          },
          reflow: function (t) {
              return t.offsetHeight
          },
          triggerTransitionEnd: function (t) {
              p(t).trigger(e)
          },
          supportsTransitionEnd: function () {
              return Boolean(e)
          },
          isElement: function (t) {
              return (t[0] || t).nodeType
          },
          typeCheckConfig: function (t, e, n) {
              for (var i in n)
                  if (Object.prototype.hasOwnProperty.call(n, i)) {
                      var o = n[i],
                          r = e[i],
                          s = r && m.isElement(r) ? "element" : (a = r, {}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase());
                      if (!new RegExp(o).test(s)) throw new Error(t.toUpperCase() + ': Option "' + i + '" provided type "' + s + '" but expected type "' + o + '".')
                  } var a
          },
          findShadowRoot: function (t) {
              if (!document.documentElement.attachShadow) return null;
              if ("function" != typeof t.getRootNode) return t instanceof ShadowRoot ? t : t.parentNode ? m.findShadowRoot(t.parentNode) : null;
              var e = t.getRootNode();
              return e instanceof ShadowRoot ? e : null
          }
      };
      p.fn.emulateTransitionEnd = n, p.event.special[m.TRANSITION_END] = {
          bindType: e,
          delegateType: e,
          handle: function (t) {
              if (p(t.target).is(this)) return t.handleObj.handler.apply(this, arguments)
          }
      };
      var o = "alert",
          r = "bs.alert",
          a = "." + r,
          c = p.fn[o],
          h = {
              CLOSE: "close" + a,
              CLOSED: "closed" + a,
              CLICK_DATA_API: "click" + a + ".data-api"
          },
          u = "alert",
          f = "fade",
          d = "show",
          g = function () {
              function i(t) {
                  this._element = t
              }
              var t = i.prototype;
              return t.close = function (t) {
                  var e = this._element;
                  t && (e = this._getRootElement(t)), this._triggerCloseEvent(e).isDefaultPrevented() || this._removeElement(e)
              }, t.dispose = function () {
                  p.removeData(this._element, r), this._element = null
              }, t._getRootElement = function (t) {
                  var e = m.getSelectorFromElement(t),
                      n = !1;
                  return e && (n = document.querySelector(e)), n || (n = p(t).closest("." + u)[0]), n
              }, t._triggerCloseEvent = function (t) {
                  var e = p.Event(h.CLOSE);
                  return p(t).trigger(e), e
              }, t._removeElement = function (e) {
                  var n = this;
                  if (p(e).removeClass(d), p(e).hasClass(f)) {
                      var t = m.getTransitionDurationFromElement(e);
                      p(e).one(m.TRANSITION_END, function (t) {
                          return n._destroyElement(e, t)
                      }).emulateTransitionEnd(t)
                  } else this._destroyElement(e)
              }, t._destroyElement = function (t) {
                  p(t).detach().trigger(h.CLOSED).remove()
              }, i._jQueryInterface = function (n) {
                  return this.each(function () {
                      var t = p(this),
                          e = t.data(r);
                      e || (e = new i(this), t.data(r, e)), "close" === n && e[n](this)
                  })
              }, i._handleDismiss = function (e) {
                  return function (t) {
                      t && t.preventDefault(), e.close(this)
                  }
              }, s(i, null, [{
                  key: "VERSION",
                  get: function () {
                      return "4.3.1"
                  }
              }]), i
          }();
      p(document).on(h.CLICK_DATA_API, '[data-dismiss="alert"]', g._handleDismiss(new g)), p.fn[o] = g._jQueryInterface, p.fn[o].Constructor = g, p.fn[o].noConflict = function () {
          return p.fn[o] = c, g._jQueryInterface
      };
      var _ = "button",
          v = "bs.button",
          y = "." + v,
          E = ".data-api",
          b = p.fn[_],
          w = "active",
          C = "btn",
          T = "focus",
          S = '[data-toggle^="button"]',
          D = '[data-toggle="buttons"]',
          I = 'input:not([type="hidden"])',
          A = ".active",
          O = ".btn",
          N = {
              CLICK_DATA_API: "click" + y + E,
              FOCUS_BLUR_DATA_API: "focus" + y + E + " blur" + y + E
          },
          k = function () {
              function n(t) {
                  this._element = t
              }
              var t = n.prototype;
              return t.toggle = function () {
                  var t = !0,
                      e = !0,
                      n = p(this._element).closest(D)[0];
                  if (n) {
                      var i = this._element.querySelector(I);
                      if (i) {
                          if ("radio" === i.type)
                              if (i.checked && this._element.classList.contains(w)) t = !1;
                              else {
                                  var o = n.querySelector(A);
                                  o && p(o).removeClass(w)
                              } if (t) {
                              if (i.hasAttribute("disabled") || n.hasAttribute("disabled") || i.classList.contains("disabled") || n.classList.contains("disabled")) return;
                              i.checked = !this._element.classList.contains(w), p(i).trigger("change")
                          }
                          i.focus(), e = !1
                      }
                  }
                  e && this._element.setAttribute("aria-pressed", !this._element.classList.contains(w)), t && p(this._element).toggleClass(w)
              }, t.dispose = function () {
                  p.removeData(this._element, v), this._element = null
              }, n._jQueryInterface = function (e) {
                  return this.each(function () {
                      var t = p(this).data(v);
                      t || (t = new n(this), p(this).data(v, t)), "toggle" === e && t[e]()
                  })
              }, s(n, null, [{
                  key: "VERSION",
                  get: function () {
                      return "4.3.1"
                  }
              }]), n
          }();
      p(document).on(N.CLICK_DATA_API, S, function (t) {
          t.preventDefault();
          var e = t.target;
          p(e).hasClass(C) || (e = p(e).closest(O)), k._jQueryInterface.call(p(e), "toggle")
      }).on(N.FOCUS_BLUR_DATA_API, S, function (t) {
          var e = p(t.target).closest(O)[0];
          p(e).toggleClass(T, /^focus(in)?$/.test(t.type))
      }), p.fn[_] = k._jQueryInterface, p.fn[_].Constructor = k, p.fn[_].noConflict = function () {
          return p.fn[_] = b, k._jQueryInterface
      };
      var L = "carousel",
          x = "bs.carousel",
          P = "." + x,
          H = ".data-api",
          j = p.fn[L],
          R = {
              interval: 5e3,
              keyboard: !0,
              slide: !1,
              pause: "hover",
              wrap: !0,
              touch: !0
          },
          F = {
              interval: "(number|boolean)",
              keyboard: "boolean",
              slide: "(boolean|string)",
              pause: "(string|boolean)",
              wrap: "boolean",
              touch: "boolean"
          },
          M = "next",
          W = "prev",
          U = "left",
          B = "right",
          q = {
              SLIDE: "slide" + P,
              SLID: "slid" + P,
              KEYDOWN: "keydown" + P,
              MOUSEENTER: "mouseenter" + P,
              MOUSELEAVE: "mouseleave" + P,
              TOUCHSTART: "touchstart" + P,
              TOUCHMOVE: "touchmove" + P,
              TOUCHEND: "touchend" + P,
              POINTERDOWN: "pointerdown" + P,
              POINTERUP: "pointerup" + P,
              DRAG_START: "dragstart" + P,
              LOAD_DATA_API: "load" + P + H,
              CLICK_DATA_API: "click" + P + H
          },
          K = "carousel",
          Q = "active",
          V = "slide",
          Y = "carousel-item-right",
          z = "carousel-item-left",
          X = "carousel-item-next",
          G = "carousel-item-prev",
          $ = "pointer-event",
          J = ".active",
          Z = ".active.carousel-item",
          tt = ".carousel-item",
          et = ".carousel-item img",
          nt = ".carousel-item-next, .carousel-item-prev",
          it = ".carousel-indicators",
          ot = "[data-slide], [data-slide-to]",
          rt = '[data-ride="carousel"]',
          st = {
              TOUCH: "touch",
              PEN: "pen"
          },
          at = function () {
              function r(t, e) {
                  this._items = null, this._interval = null, this._activeElement = null, this._isPaused = !1, this._isSliding = !1, this.touchTimeout = null, this.touchStartX = 0, this.touchDeltaX = 0, this._config = this._getConfig(e), this._element = t, this._indicatorsElement = this._element.querySelector(it), this._touchSupported = "ontouchstart" in document.documentElement || 0 < navigator.maxTouchPoints, this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent), this._addEventListeners()
              }
              var t = r.prototype;
              return t.next = function () {
                  this._isSliding || this._slide(M)
              }, t.nextWhenVisible = function () {
                  !document.hidden && p(this._element).is(":visible") && "hidden" !== p(this._element).css("visibility") && this.next()
              }, t.prev = function () {
                  this._isSliding || this._slide(W)
              }, t.pause = function (t) {
                  t || (this._isPaused = !0), this._element.querySelector(nt) && (m.triggerTransitionEnd(this._element), this.cycle(!0)), clearInterval(this._interval), this._interval = null
              }, t.cycle = function (t) {
                  t || (this._isPaused = !1), this._interval && (clearInterval(this._interval), this._interval = null), this._config.interval && !this._isPaused && (this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval))
              }, t.to = function (t) {
                  var e = this;
                  this._activeElement = this._element.querySelector(Z);
                  var n = this._getItemIndex(this._activeElement);
                  if (!(t > this._items.length - 1 || t < 0))
                      if (this._isSliding) p(this._element).one(q.SLID, function () {
                          return e.to(t)
                      });
                      else {
                          if (n === t) return this.pause(), void this.cycle();
                          var i = n < t ? M : W;
                          this._slide(i, this._items[t])
                      }
              }, t.dispose = function () {
                  p(this._element).off(P), p.removeData(this._element, x), this._items = null, this._config = null, this._element = null, this._interval = null, this._isPaused = null, this._isSliding = null, this._activeElement = null, this._indicatorsElement = null
              }, t._getConfig = function (t) {
                  return t = l({}, R, t), m.typeCheckConfig(L, t, F), t
              }, t._handleSwipe = function () {
                  var t = Math.abs(this.touchDeltaX);
                  if (!(t <= 40)) {
                      var e = t / this.touchDeltaX;
                      0 < e && this.prev(), e < 0 && this.next()
                  }
              }, t._addEventListeners = function () {
                  var e = this;
                  this._config.keyboard && p(this._element).on(q.KEYDOWN, function (t) {
                      return e._keydown(t)
                  }), "hover" === this._config.pause && p(this._element).on(q.MOUSEENTER, function (t) {
                      return e.pause(t)
                  }).on(q.MOUSELEAVE, function (t) {
                      return e.cycle(t)
                  }), this._config.touch && this._addTouchEventListeners()
              }, t._addTouchEventListeners = function () {
                  var n = this;
                  if (this._touchSupported) {
                      var e = function (t) {
                              n._pointerEvent && st[t.originalEvent.pointerType.toUpperCase()] ? n.touchStartX = t.originalEvent.clientX : n._pointerEvent || (n.touchStartX = t.originalEvent.touches[0].clientX)
                          },
                          i = function (t) {
                              n._pointerEvent && st[t.originalEvent.pointerType.toUpperCase()] && (n.touchDeltaX = t.originalEvent.clientX - n.touchStartX), n._handleSwipe(), "hover" === n._config.pause && (n.pause(), n.touchTimeout && clearTimeout(n.touchTimeout), n.touchTimeout = setTimeout(function (t) {
                                  return n.cycle(t)
                              }, 500 + n._config.interval))
                          };
                      p(this._element.querySelectorAll(et)).on(q.DRAG_START, function (t) {
                          return t.preventDefault()
                      }), this._pointerEvent ? (p(this._element).on(q.POINTERDOWN, function (t) {
                          return e(t)
                      }), p(this._element).on(q.POINTERUP, function (t) {
                          return i(t)
                      }), this._element.classList.add($)) : (p(this._element).on(q.TOUCHSTART, function (t) {
                          return e(t)
                      }), p(this._element).on(q.TOUCHMOVE, function (t) {
                          var e;
                          (e = t).originalEvent.touches && 1 < e.originalEvent.touches.length ? n.touchDeltaX = 0 : n.touchDeltaX = e.originalEvent.touches[0].clientX - n.touchStartX
                      }), p(this._element).on(q.TOUCHEND, function (t) {
                          return i(t)
                      }))
                  }
              }, t._keydown = function (t) {
                  if (!/input|textarea/i.test(t.target.tagName)) switch (t.which) {
                      case 37:
                          t.preventDefault(), this.prev();
                          break;
                      case 39:
                          t.preventDefault(), this.next()
                  }
              }, t._getItemIndex = function (t) {
                  return this._items = t && t.parentNode ? [].slice.call(t.parentNode.querySelectorAll(tt)) : [], this._items.indexOf(t)
              }, t._getItemByDirection = function (t, e) {
                  var n = t === M,
                      i = t === W,
                      o = this._getItemIndex(e),
                      r = this._items.length - 1;
                  if ((i && 0 === o || n && o === r) && !this._config.wrap) return e;
                  var s = (o + (t === W ? -1 : 1)) % this._items.length;
                  return -1 === s ? this._items[this._items.length - 1] : this._items[s]
              }, t._triggerSlideEvent = function (t, e) {
                  var n = this._getItemIndex(t),
                      i = this._getItemIndex(this._element.querySelector(Z)),
                      o = p.Event(q.SLIDE, {
                          relatedTarget: t,
                          direction: e,
                          from: i,
                          to: n
                      });
                  return p(this._element).trigger(o), o
              }, t._setActiveIndicatorElement = function (t) {
                  if (this._indicatorsElement) {
                      var e = [].slice.call(this._indicatorsElement.querySelectorAll(J));
                      p(e).removeClass(Q);
                      var n = this._indicatorsElement.children[this._getItemIndex(t)];
                      n && p(n).addClass(Q)
                  }
              }, t._slide = function (t, e) {
                  var n, i, o, r = this,
                      s = this._element.querySelector(Z),
                      a = this._getItemIndex(s),
                      l = e || s && this._getItemByDirection(t, s),
                      c = this._getItemIndex(l),
                      h = Boolean(this._interval);
                  if (o = t === M ? (n = z, i = X, U) : (n = Y, i = G, B), l && p(l).hasClass(Q)) this._isSliding = !1;
                  else if (!this._triggerSlideEvent(l, o).isDefaultPrevented() && s && l) {
                      this._isSliding = !0, h && this.pause(), this._setActiveIndicatorElement(l);
                      var u = p.Event(q.SLID, {
                          relatedTarget: l,
                          direction: o,
                          from: a,
                          to: c
                      });
                      if (p(this._element).hasClass(V)) {
                          p(l).addClass(i), m.reflow(l), p(s).addClass(n), p(l).addClass(n);
                          var f = parseInt(l.getAttribute("data-interval"), 10);
                          this._config.interval = f ? (this._config.defaultInterval = this._config.defaultInterval || this._config.interval, f) : this._config.defaultInterval || this._config.interval;
                          var d = m.getTransitionDurationFromElement(s);
                          p(s).one(m.TRANSITION_END, function () {
                              p(l).removeClass(n + " " + i).addClass(Q), p(s).removeClass(Q + " " + i + " " + n), r._isSliding = !1, setTimeout(function () {
                                  return p(r._element).trigger(u)
                              }, 0)
                          }).emulateTransitionEnd(d)
                      } else p(s).removeClass(Q), p(l).addClass(Q), this._isSliding = !1, p(this._element).trigger(u);
                      h && this.cycle()
                  }
              }, r._jQueryInterface = function (i) {
                  return this.each(function () {
                      var t = p(this).data(x),
                          e = l({}, R, p(this).data());
                      "object" == typeof i && (e = l({}, e, i));
                      var n = "string" == typeof i ? i : e.slide;
                      if (t || (t = new r(this, e), p(this).data(x, t)), "number" == typeof i) t.to(i);
                      else if ("string" == typeof n) {
                          if ("undefined" == typeof t[n]) throw new TypeError('No method named "' + n + '"');
                          t[n]()
                      } else e.interval && e.ride && (t.pause(), t.cycle())
                  })
              }, r._dataApiClickHandler = function (t) {
                  var e = m.getSelectorFromElement(this);
                  if (e) {
                      var n = p(e)[0];
                      if (n && p(n).hasClass(K)) {
                          var i = l({}, p(n).data(), p(this).data()),
                              o = this.getAttribute("data-slide-to");
                          o && (i.interval = !1), r._jQueryInterface.call(p(n), i), o && p(n).data(x).to(o), t.preventDefault()
                      }
                  }
              }, s(r, null, [{
                  key: "VERSION",
                  get: function () {
                      return "4.3.1"
                  }
              }, {
                  key: "Default",
                  get: function () {
                      return R
                  }
              }]), r
          }();
      p(document).on(q.CLICK_DATA_API, ot, at._dataApiClickHandler), p(window).on(q.LOAD_DATA_API, function () {
          for (var t = [].slice.call(document.querySelectorAll(rt)), e = 0, n = t.length; e < n; e++) {
              var i = p(t[e]);
              at._jQueryInterface.call(i, i.data())
          }
      }), p.fn[L] = at._jQueryInterface, p.fn[L].Constructor = at, p.fn[L].noConflict = function () {
          return p.fn[L] = j, at._jQueryInterface
      };
      var lt = "collapse",
          ct = "bs.collapse",
          ht = "." + ct,
          ut = p.fn[lt],
          ft = {
              toggle: !0,
              parent: ""
          },
          dt = {
              toggle: "boolean",
              parent: "(string|element)"
          },
          pt = {
              SHOW: "show" + ht,
              SHOWN: "shown" + ht,
              HIDE: "hide" + ht,
              HIDDEN: "hidden" + ht,
              CLICK_DATA_API: "click" + ht + ".data-api"
          },
          mt = "show",
          gt = "collapse",
          _t = "collapsing",
          vt = "collapsed",
          yt = "width",
          Et = "height",
          bt = ".show, .collapsing",
          wt = '[data-toggle="collapse"]',
          Ct = function () {
              function a(e, t) {
                  this._isTransitioning = !1, this._element = e, this._config = this._getConfig(t), this._triggerArray = [].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#' + e.id + '"],[data-toggle="collapse"][data-target="#' + e.id + '"]'));
                  for (var n = [].slice.call(document.querySelectorAll(wt)), i = 0, o = n.length; i < o; i++) {
                      var r = n[i],
                          s = m.getSelectorFromElement(r),
                          a = [].slice.call(document.querySelectorAll(s)).filter(function (t) {
                              return t === e
                          });
                      null !== s && 0 < a.length && (this._selector = s, this._triggerArray.push(r))
                  }
                  this._parent = this._config.parent ? this._getParent() : null, this._config.parent || this._addAriaAndCollapsedClass(this._element, this._triggerArray), this._config.toggle && this.toggle()
              }
              var t = a.prototype;
              return t.toggle = function () {
                  p(this._element).hasClass(mt) ? this.hide() : this.show()
              }, t.show = function () {
                  var t, e, n = this;
                  if (!this._isTransitioning && !p(this._element).hasClass(mt) && (this._parent && 0 === (t = [].slice.call(this._parent.querySelectorAll(bt)).filter(function (t) {
                          return "string" == typeof n._config.parent ? t.getAttribute("data-parent") === n._config.parent : t.classList.contains(gt)
                      })).length && (t = null), !(t && (e = p(t).not(this._selector).data(ct)) && e._isTransitioning))) {
                      var i = p.Event(pt.SHOW);
                      if (p(this._element).trigger(i), !i.isDefaultPrevented()) {
                          t && (a._jQueryInterface.call(p(t).not(this._selector), "hide"), e || p(t).data(ct, null));
                          var o = this._getDimension();
                          p(this._element).removeClass(gt).addClass(_t), this._element.style[o] = 0, this._triggerArray.length && p(this._triggerArray).removeClass(vt).attr("aria-expanded", !0), this.setTransitioning(!0);
                          var r = "scroll" + (o[0].toUpperCase() + o.slice(1)),
                              s = m.getTransitionDurationFromElement(this._element);
                          p(this._element).one(m.TRANSITION_END, function () {
                              p(n._element).removeClass(_t).addClass(gt).addClass(mt), n._element.style[o] = "", n.setTransitioning(!1), p(n._element).trigger(pt.SHOWN)
                          }).emulateTransitionEnd(s), this._element.style[o] = this._element[r] + "px"
                      }
                  }
              }, t.hide = function () {
                  var t = this;
                  if (!this._isTransitioning && p(this._element).hasClass(mt)) {
                      var e = p.Event(pt.HIDE);
                      if (p(this._element).trigger(e), !e.isDefaultPrevented()) {
                          var n = this._getDimension();
                          this._element.style[n] = this._element.getBoundingClientRect()[n] + "px", m.reflow(this._element), p(this._element).addClass(_t).removeClass(gt).removeClass(mt);
                          var i = this._triggerArray.length;
                          if (0 < i)
                              for (var o = 0; o < i; o++) {
                                  var r = this._triggerArray[o],
                                      s = m.getSelectorFromElement(r);
                                  if (null !== s) p([].slice.call(document.querySelectorAll(s))).hasClass(mt) || p(r).addClass(vt).attr("aria-expanded", !1)
                              }
                          this.setTransitioning(!0);
                          this._element.style[n] = "";
                          var a = m.getTransitionDurationFromElement(this._element);
                          p(this._element).one(m.TRANSITION_END, function () {
                              t.setTransitioning(!1), p(t._element).removeClass(_t).addClass(gt).trigger(pt.HIDDEN)
                          }).emulateTransitionEnd(a)
                      }
                  }
              }, t.setTransitioning = function (t) {
                  this._isTransitioning = t
              }, t.dispose = function () {
                  p.removeData(this._element, ct), this._config = null, this._parent = null, this._element = null, this._triggerArray = null, this._isTransitioning = null
              }, t._getConfig = function (t) {
                  return (t = l({}, ft, t)).toggle = Boolean(t.toggle), m.typeCheckConfig(lt, t, dt), t
              }, t._getDimension = function () {
                  return p(this._element).hasClass(yt) ? yt : Et
              }, t._getParent = function () {
                  var t, n = this;
                  m.isElement(this._config.parent) ? (t = this._config.parent, "undefined" != typeof this._config.parent.jquery && (t = this._config.parent[0])) : t = document.querySelector(this._config.parent);
                  var e = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]',
                      i = [].slice.call(t.querySelectorAll(e));
                  return p(i).each(function (t, e) {
                      n._addAriaAndCollapsedClass(a._getTargetFromElement(e), [e])
                  }), t
              }, t._addAriaAndCollapsedClass = function (t, e) {
                  var n = p(t).hasClass(mt);
                  e.length && p(e).toggleClass(vt, !n).attr("aria-expanded", n)
              }, a._getTargetFromElement = function (t) {
                  var e = m.getSelectorFromElement(t);
                  return e ? document.querySelector(e) : null
              }, a._jQueryInterface = function (i) {
                  return this.each(function () {
                      var t = p(this),
                          e = t.data(ct),
                          n = l({}, ft, t.data(), "object" == typeof i && i ? i : {});
                      if (!e && n.toggle && /show|hide/.test(i) && (n.toggle = !1), e || (e = new a(this, n), t.data(ct, e)), "string" == typeof i) {
                          if ("undefined" == typeof e[i]) throw new TypeError('No method named "' + i + '"');
                          e[i]()
                      }
                  })
              }, s(a, null, [{
                  key: "VERSION",
                  get: function () {
                      return "4.3.1"
                  }
              }, {
                  key: "Default",
                  get: function () {
                      return ft
                  }
              }]), a
          }();
      p(document).on(pt.CLICK_DATA_API, wt, function (t) {
          "A" === t.currentTarget.tagName && t.preventDefault();
          var n = p(this),
              e = m.getSelectorFromElement(this),
              i = [].slice.call(document.querySelectorAll(e));
          p(i).each(function () {
              var t = p(this),
                  e = t.data(ct) ? "toggle" : n.data();
              Ct._jQueryInterface.call(t, e)
          })
      }), p.fn[lt] = Ct._jQueryInterface, p.fn[lt].Constructor = Ct, p.fn[lt].noConflict = function () {
          return p.fn[lt] = ut, Ct._jQueryInterface
      };
      for (var Tt = "undefined" != typeof window && "undefined" != typeof document, St = ["Edge", "Trident", "Firefox"], Dt = 0, It = 0; It < St.length; It += 1)
          if (Tt && 0 <= navigator.userAgent.indexOf(St[It])) {
              Dt = 1;
              break
          } var At = Tt && window.Promise ? function (t) {
          var e = !1;
          return function () {
              e || (e = !0, window.Promise.resolve().then(function () {
                  e = !1, t()
              }))
          }
      } : function (t) {
          var e = !1;
          return function () {
              e || (e = !0, setTimeout(function () {
                  e = !1, t()
              }, Dt))
          }
      };
  
      function Ot(t) {
          return t && "[object Function]" === {}.toString.call(t)
      }
  
      function Nt(t, e) {
          if (1 !== t.nodeType) return [];
          var n = t.ownerDocument.defaultView.getComputedStyle(t, null);
          return e ? n[e] : n
      }
  
      function kt(t) {
          return "HTML" === t.nodeName ? t : t.parentNode || t.host
      }
  
      function Lt(t) {
          if (!t) return document.body;
          switch (t.nodeName) {
              case "HTML":
              case "BODY":
                  return t.ownerDocument.body;
              case "#document":
                  return t.body
          }
          var e = Nt(t),
              n = e.overflow,
              i = e.overflowX,
              o = e.overflowY;
          return /(auto|scroll|overlay)/.test(n + o + i) ? t : Lt(kt(t))
      }
      var xt = Tt && !(!window.MSInputMethodContext || !document.documentMode),
          Pt = Tt && /MSIE 10/.test(navigator.userAgent);
  
      function Ht(t) {
          return 11 === t ? xt : 10 === t ? Pt : xt || Pt
      }
  
      function jt(t) {
          if (!t) return document.documentElement;
          for (var e = Ht(10) ? document.body : null, n = t.offsetParent || null; n === e && t.nextElementSibling;) n = (t = t.nextElementSibling).offsetParent;
          var i = n && n.nodeName;
          return i && "BODY" !== i && "HTML" !== i ? -1 !== ["TH", "TD", "TABLE"].indexOf(n.nodeName) && "static" === Nt(n, "position") ? jt(n) : n : t ? t.ownerDocument.documentElement : document.documentElement
      }
  
      function Rt(t) {
          return null !== t.parentNode ? Rt(t.parentNode) : t
      }
  
      function Ft(t, e) {
          if (!(t && t.nodeType && e && e.nodeType)) return document.documentElement;
          var n = t.compareDocumentPosition(e) & Node.DOCUMENT_POSITION_FOLLOWING,
              i = n ? t : e,
              o = n ? e : t,
              r = document.createRange();
          r.setStart(i, 0), r.setEnd(o, 0);
          var s, a, l = r.commonAncestorContainer;
          if (t !== l && e !== l || i.contains(o)) return "BODY" === (a = (s = l).nodeName) || "HTML" !== a && jt(s.firstElementChild) !== s ? jt(l) : l;
          var c = Rt(t);
          return c.host ? Ft(c.host, e) : Ft(t, Rt(e).host)
      }
  
      function Mt(t) {
          var e = "top" === (1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : "top") ? "scrollTop" : "scrollLeft",
              n = t.nodeName;
          if ("BODY" !== n && "HTML" !== n) return t[e];
          var i = t.ownerDocument.documentElement;
          return (t.ownerDocument.scrollingElement || i)[e]
      }
  
      function Wt(t, e) {
          var n = "x" === e ? "Left" : "Top",
              i = "Left" === n ? "Right" : "Bottom";
          return parseFloat(t["border" + n + "Width"], 10) + parseFloat(t["border" + i + "Width"], 10)
      }
  
      function Ut(t, e, n, i) {
          return Math.max(e["offset" + t], e["scroll" + t], n["client" + t], n["offset" + t], n["scroll" + t], Ht(10) ? parseInt(n["offset" + t]) + parseInt(i["margin" + ("Height" === t ? "Top" : "Left")]) + parseInt(i["margin" + ("Height" === t ? "Bottom" : "Right")]) : 0)
      }
  
      function Bt(t) {
          var e = t.body,
              n = t.documentElement,
              i = Ht(10) && getComputedStyle(n);
          return {
              height: Ut("Height", e, n, i),
              width: Ut("Width", e, n, i)
          }
      }
      var qt = function () {
              function i(t, e) {
                  for (var n = 0; n < e.length; n++) {
                      var i = e[n];
                      i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(t, i.key, i)
                  }
              }
              return function (t, e, n) {
                  return e && i(t.prototype, e), n && i(t, n), t
              }
          }(),
          Kt = function (t, e, n) {
              return e in t ? Object.defineProperty(t, e, {
                  value: n,
                  enumerable: !0,
                  configurable: !0,
                  writable: !0
              }) : t[e] = n, t
          },
          Qt = Object.assign || function (t) {
              for (var e = 1; e < arguments.length; e++) {
                  var n = arguments[e];
                  for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (t[i] = n[i])
              }
              return t
          };
  
      function Vt(t) {
          return Qt({}, t, {
              right: t.left + t.width,
              bottom: t.top + t.height
          })
      }
  
      function Yt(t) {
          var e = {};
          try {
              if (Ht(10)) {
                  e = t.getBoundingClientRect();
                  var n = Mt(t, "top"),
                      i = Mt(t, "left");
                  e.top += n, e.left += i, e.bottom += n, e.right += i
              } else e = t.getBoundingClientRect()
          } catch (t) {}
          var o = {
                  left: e.left,
                  top: e.top,
                  width: e.right - e.left,
                  height: e.bottom - e.top
              },
              r = "HTML" === t.nodeName ? Bt(t.ownerDocument) : {},
              s = r.width || t.clientWidth || o.right - o.left,
              a = r.height || t.clientHeight || o.bottom - o.top,
              l = t.offsetWidth - s,
              c = t.offsetHeight - a;
          if (l || c) {
              var h = Nt(t);
              l -= Wt(h, "x"), c -= Wt(h, "y"), o.width -= l, o.height -= c
          }
          return Vt(o)
      }
  
      function zt(t, e) {
          var n = 2 < arguments.length && void 0 !== arguments[2] && arguments[2],
              i = Ht(10),
              o = "HTML" === e.nodeName,
              r = Yt(t),
              s = Yt(e),
              a = Lt(t),
              l = Nt(e),
              c = parseFloat(l.borderTopWidth, 10),
              h = parseFloat(l.borderLeftWidth, 10);
          n && o && (s.top = Math.max(s.top, 0), s.left = Math.max(s.left, 0));
          var u = Vt({
              top: r.top - s.top - c,
              left: r.left - s.left - h,
              width: r.width,
              height: r.height
          });
          if (u.marginTop = 0, u.marginLeft = 0, !i && o) {
              var f = parseFloat(l.marginTop, 10),
                  d = parseFloat(l.marginLeft, 10);
              u.top -= c - f, u.bottom -= c - f, u.left -= h - d, u.right -= h - d, u.marginTop = f, u.marginLeft = d
          }
          return (i && !n ? e.contains(a) : e === a && "BODY" !== a.nodeName) && (u = function (t, e) {
              var n = 2 < arguments.length && void 0 !== arguments[2] && arguments[2],
                  i = Mt(e, "top"),
                  o = Mt(e, "left"),
                  r = n ? -1 : 1;
              return t.top += i * r, t.bottom += i * r, t.left += o * r, t.right += o * r, t
          }(u, e)), u
      }
  
      function Xt(t) {
          if (!t || !t.parentElement || Ht()) return document.documentElement;
          for (var e = t.parentElement; e && "none" === Nt(e, "transform");) e = e.parentElement;
          return e || document.documentElement
      }
  
      function Gt(t, e, n, i) {
          var o = 4 < arguments.length && void 0 !== arguments[4] && arguments[4],
              r = {
                  top: 0,
                  left: 0
              },
              s = o ? Xt(t) : Ft(t, e);
          if ("viewport" === i) r = function (t) {
              var e = 1 < arguments.length && void 0 !== arguments[1] && arguments[1],
                  n = t.ownerDocument.documentElement,
                  i = zt(t, n),
                  o = Math.max(n.clientWidth, window.innerWidth || 0),
                  r = Math.max(n.clientHeight, window.innerHeight || 0),
                  s = e ? 0 : Mt(n),
                  a = e ? 0 : Mt(n, "left");
              return Vt({
                  top: s - i.top + i.marginTop,
                  left: a - i.left + i.marginLeft,
                  width: o,
                  height: r
              })
          }(s, o);
          else {
              var a = void 0;
              "scrollParent" === i ? "BODY" === (a = Lt(kt(e))).nodeName && (a = t.ownerDocument.documentElement) : a = "window" === i ? t.ownerDocument.documentElement : i;
              var l = zt(a, s, o);
              if ("HTML" !== a.nodeName || function t(e) {
                      var n = e.nodeName;
                      if ("BODY" === n || "HTML" === n) return !1;
                      if ("fixed" === Nt(e, "position")) return !0;
                      var i = kt(e);
                      return !!i && t(i)
                  }(s)) r = l;
              else {
                  var c = Bt(t.ownerDocument),
                      h = c.height,
                      u = c.width;
                  r.top += l.top - l.marginTop, r.bottom = h + l.top, r.left += l.left - l.marginLeft, r.right = u + l.left
              }
          }
          var f = "number" == typeof (n = n || 0);
          return r.left += f ? n : n.left || 0, r.top += f ? n : n.top || 0, r.right -= f ? n : n.right || 0, r.bottom -= f ? n : n.bottom || 0, r
      }
  
      function $t(t, e, i, n, o) {
          var r = 5 < arguments.length && void 0 !== arguments[5] ? arguments[5] : 0;
          if (-1 === t.indexOf("auto")) return t;
          var s = Gt(i, n, r, o),
              a = {
                  top: {
                      width: s.width,
                      height: e.top - s.top
                  },
                  right: {
                      width: s.right - e.right,
                      height: s.height
                  },
                  bottom: {
                      width: s.width,
                      height: s.bottom - e.bottom
                  },
                  left: {
                      width: e.left - s.left,
                      height: s.height
                  }
              },
              l = Object.keys(a).map(function (t) {
                  return Qt({
                      key: t
                  }, a[t], {
                      area: (e = a[t], e.width * e.height)
                  });
                  var e
              }).sort(function (t, e) {
                  return e.area - t.area
              }),
              c = l.filter(function (t) {
                  var e = t.width,
                      n = t.height;
                  return e >= i.clientWidth && n >= i.clientHeight
              }),
              h = 0 < c.length ? c[0].key : l[0].key,
              u = t.split("-")[1];
          return h + (u ? "-" + u : "")
      }
  
      function Jt(t, e, n) {
          var i = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;
          return zt(n, i ? Xt(e) : Ft(e, n), i)
      }
  
      function Zt(t) {
          var e = t.ownerDocument.defaultView.getComputedStyle(t),
              n = parseFloat(e.marginTop || 0) + parseFloat(e.marginBottom || 0),
              i = parseFloat(e.marginLeft || 0) + parseFloat(e.marginRight || 0);
          return {
              width: t.offsetWidth + i,
              height: t.offsetHeight + n
          }
      }
  
      function te(t) {
          var e = {
              left: "right",
              right: "left",
              bottom: "top",
              top: "bottom"
          };
          return t.replace(/left|right|bottom|top/g, function (t) {
              return e[t]
          })
      }
  
      function ee(t, e, n) {
          n = n.split("-")[0];
          var i = Zt(t),
              o = {
                  width: i.width,
                  height: i.height
              },
              r = -1 !== ["right", "left"].indexOf(n),
              s = r ? "top" : "left",
              a = r ? "left" : "top",
              l = r ? "height" : "width",
              c = r ? "width" : "height";
          return o[s] = e[s] + e[l] / 2 - i[l] / 2, o[a] = n === a ? e[a] - i[c] : e[te(a)], o
      }
  
      function ne(t, e) {
          return Array.prototype.find ? t.find(e) : t.filter(e)[0]
      }
  
      function ie(t, n, e) {
          return (void 0 === e ? t : t.slice(0, function (t, e, n) {
              if (Array.prototype.findIndex) return t.findIndex(function (t) {
                  return t[e] === n
              });
              var i = ne(t, function (t) {
                  return t[e] === n
              });
              return t.indexOf(i)
          }(t, "name", e))).forEach(function (t) {
              t.function && console.warn("`modifier.function` is deprecated, use `modifier.fn`!");
              var e = t.function || t.fn;
              t.enabled && Ot(e) && (n.offsets.popper = Vt(n.offsets.popper), n.offsets.reference = Vt(n.offsets.reference), n = e(n, t))
          }), n
      }
  
      function oe(t, n) {
          return t.some(function (t) {
              var e = t.name;
              return t.enabled && e === n
          })
      }
  
      function re(t) {
          for (var e = [!1, "ms", "Webkit", "Moz", "O"], n = t.charAt(0).toUpperCase() + t.slice(1), i = 0; i < e.length; i++) {
              var o = e[i],
                  r = o ? "" + o + n : t;
              if ("undefined" != typeof document.body.style[r]) return r
          }
          return null
      }
  
      function se(t) {
          var e = t.ownerDocument;
          return e ? e.defaultView : window
      }
  
      function ae(t, e, n, i) {
          n.updateBound = i, se(t).addEventListener("resize", n.updateBound, {
              passive: !0
          });
          var o = Lt(t);
          return function t(e, n, i, o) {
              var r = "BODY" === e.nodeName,
                  s = r ? e.ownerDocument.defaultView : e;
              s.addEventListener(n, i, {
                  passive: !0
              }), r || t(Lt(s.parentNode), n, i, o), o.push(s)
          }(o, "scroll", n.updateBound, n.scrollParents), n.scrollElement = o, n.eventsEnabled = !0, n
      }
  
      function le() {
          var t, e;
          this.state.eventsEnabled && (cancelAnimationFrame(this.scheduleUpdate), this.state = (t = this.reference, e = this.state, se(t).removeEventListener("resize", e.updateBound), e.scrollParents.forEach(function (t) {
              t.removeEventListener("scroll", e.updateBound)
          }), e.updateBound = null, e.scrollParents = [], e.scrollElement = null, e.eventsEnabled = !1, e))
      }
  
      function ce(t) {
          return "" !== t && !isNaN(parseFloat(t)) && isFinite(t)
      }
  
      function he(n, i) {
          Object.keys(i).forEach(function (t) {
              var e = ""; - 1 !== ["width", "height", "top", "right", "bottom", "left"].indexOf(t) && ce(i[t]) && (e = "px"), n.style[t] = i[t] + e
          })
      }
      var ue = Tt && /Firefox/i.test(navigator.userAgent);
  
      function fe(t, e, n) {
          var i = ne(t, function (t) {
                  return t.name === e
              }),
              o = !!i && t.some(function (t) {
                  return t.name === n && t.enabled && t.order < i.order
              });
          if (!o) {
              var r = "`" + e + "`",
                  s = "`" + n + "`";
              console.warn(s + " modifier is required by " + r + " modifier in order to work, be sure to include it before " + r + "!")
          }
          return o
      }
      var de = ["auto-start", "auto", "auto-end", "top-start", "top", "top-end", "right-start", "right", "right-end", "bottom-end", "bottom", "bottom-start", "left-end", "left", "left-start"],
          pe = de.slice(3);
  
      function me(t) {
          var e = 1 < arguments.length && void 0 !== arguments[1] && arguments[1],
              n = pe.indexOf(t),
              i = pe.slice(n + 1).concat(pe.slice(0, n));
          return e ? i.reverse() : i
      }
      var ge = "flip",
          _e = "clockwise",
          ve = "counterclockwise";
  
      function ye(t, o, r, e) {
          var s = [0, 0],
              a = -1 !== ["right", "left"].indexOf(e),
              n = t.split(/(\+|\-)/).map(function (t) {
                  return t.trim()
              }),
              i = n.indexOf(ne(n, function (t) {
                  return -1 !== t.search(/,|\s/)
              }));
          n[i] && -1 === n[i].indexOf(",") && console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");
          var l = /\s*,\s*|\s+/,
              c = -1 !== i ? [n.slice(0, i).concat([n[i].split(l)[0]]), [n[i].split(l)[1]].concat(n.slice(i + 1))] : [n];
          return (c = c.map(function (t, e) {
              var n = (1 === e ? !a : a) ? "height" : "width",
                  i = !1;
              return t.reduce(function (t, e) {
                  return "" === t[t.length - 1] && -1 !== ["+", "-"].indexOf(e) ? (t[t.length - 1] = e, i = !0, t) : i ? (t[t.length - 1] += e, i = !1, t) : t.concat(e)
              }, []).map(function (t) {
                  return function (t, e, n, i) {
                      var o = t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),
                          r = +o[1],
                          s = o[2];
                      if (!r) return t;
                      if (0 !== s.indexOf("%")) return "vh" !== s && "vw" !== s ? r : ("vh" === s ? Math.max(document.documentElement.clientHeight, window.innerHeight || 0) : Math.max(document.documentElement.clientWidth, window.innerWidth || 0)) / 100 * r;
                      var a = void 0;
                      switch (s) {
                          case "%p":
                              a = n;
                              break;
                          case "%":
                          case "%r":
                          default:
                              a = i
                      }
                      return Vt(a)[e] / 100 * r
                  }(t, n, o, r)
              })
          })).forEach(function (n, i) {
              n.forEach(function (t, e) {
                  ce(t) && (s[i] += t * ("-" === n[e - 1] ? -1 : 1))
              })
          }), s
      }
      var Ee = {
              placement: "bottom",
              positionFixed: !1,
              eventsEnabled: !0,
              removeOnDestroy: !1,
              onCreate: function () {},
              onUpdate: function () {},
              modifiers: {
                  shift: {
                      order: 100,
                      enabled: !0,
                      fn: function (t) {
                          var e = t.placement,
                              n = e.split("-")[0],
                              i = e.split("-")[1];
                          if (i) {
                              var o = t.offsets,
                                  r = o.reference,
                                  s = o.popper,
                                  a = -1 !== ["bottom", "top"].indexOf(n),
                                  l = a ? "left" : "top",
                                  c = a ? "width" : "height",
                                  h = {
                                      start: Kt({}, l, r[l]),
                                      end: Kt({}, l, r[l] + r[c] - s[c])
                                  };
                              t.offsets.popper = Qt({}, s, h[i])
                          }
                          return t
                      }
                  },
                  offset: {
                      order: 200,
                      enabled: !0,
                      fn: function (t, e) {
                          var n = e.offset,
                              i = t.placement,
                              o = t.offsets,
                              r = o.popper,
                              s = o.reference,
                              a = i.split("-")[0],
                              l = void 0;
                          return l = ce(+n) ? [+n, 0] : ye(n, r, s, a), "left" === a ? (r.top += l[0], r.left -= l[1]) : "right" === a ? (r.top += l[0], r.left += l[1]) : "top" === a ? (r.left += l[0], r.top -= l[1]) : "bottom" === a && (r.left += l[0], r.top += l[1]), t.popper = r, t
                      },
                      offset: 0
                  },
                  preventOverflow: {
                      order: 300,
                      enabled: !0,
                      fn: function (t, i) {
                          var e = i.boundariesElement || jt(t.instance.popper);
                          t.instance.reference === e && (e = jt(e));
                          var n = re("transform"),
                              o = t.instance.popper.style,
                              r = o.top,
                              s = o.left,
                              a = o[n];
                          o.top = "", o.left = "", o[n] = "";
                          var l = Gt(t.instance.popper, t.instance.reference, i.padding, e, t.positionFixed);
                          o.top = r, o.left = s, o[n] = a, i.boundaries = l;
                          var c = i.priority,
                              h = t.offsets.popper,
                              u = {
                                  primary: function (t) {
                                      var e = h[t];
                                      return h[t] < l[t] && !i.escapeWithReference && (e = Math.max(h[t], l[t])), Kt({}, t, e)
                                  },
                                  secondary: function (t) {
                                      var e = "right" === t ? "left" : "top",
                                          n = h[e];
                                      return h[t] > l[t] && !i.escapeWithReference && (n = Math.min(h[e], l[t] - ("right" === t ? h.width : h.height))), Kt({}, e, n)
                                  }
                              };
                          return c.forEach(function (t) {
                              var e = -1 !== ["left", "top"].indexOf(t) ? "primary" : "secondary";
                              h = Qt({}, h, u[e](t))
                          }), t.offsets.popper = h, t
                      },
                      priority: ["left", "right", "top", "bottom"],
                      padding: 5,
                      boundariesElement: "scrollParent"
                  },
                  keepTogether: {
                      order: 400,
                      enabled: !0,
                      fn: function (t) {
                          var e = t.offsets,
                              n = e.popper,
                              i = e.reference,
                              o = t.placement.split("-")[0],
                              r = Math.floor,
                              s = -1 !== ["top", "bottom"].indexOf(o),
                              a = s ? "right" : "bottom",
                              l = s ? "left" : "top",
                              c = s ? "width" : "height";
                          return n[a] < r(i[l]) && (t.offsets.popper[l] = r(i[l]) - n[c]), n[l] > r(i[a]) && (t.offsets.popper[l] = r(i[a])), t
                      }
                  },
                  arrow: {
                      order: 500,
                      enabled: !0,
                      fn: function (t, e) {
                          var n;
                          if (!fe(t.instance.modifiers, "arrow", "keepTogether")) return t;
                          var i = e.element;
                          if ("string" == typeof i) {
                              if (!(i = t.instance.popper.querySelector(i))) return t
                          } else if (!t.instance.popper.contains(i)) return console.warn("WARNING: `arrow.element` must be child of its popper element!"), t;
                          var o = t.placement.split("-")[0],
                              r = t.offsets,
                              s = r.popper,
                              a = r.reference,
                              l = -1 !== ["left", "right"].indexOf(o),
                              c = l ? "height" : "width",
                              h = l ? "Top" : "Left",
                              u = h.toLowerCase(),
                              f = l ? "left" : "top",
                              d = l ? "bottom" : "right",
                              p = Zt(i)[c];
                          a[d] - p < s[u] && (t.offsets.popper[u] -= s[u] - (a[d] - p)), a[u] + p > s[d] && (t.offsets.popper[u] += a[u] + p - s[d]), t.offsets.popper = Vt(t.offsets.popper);
                          var m = a[u] + a[c] / 2 - p / 2,
                              g = Nt(t.instance.popper),
                              _ = parseFloat(g["margin" + h], 10),
                              v = parseFloat(g["border" + h + "Width"], 10),
                              y = m - t.offsets.popper[u] - _ - v;
                          return y = Math.max(Math.min(s[c] - p, y), 0), t.arrowElement = i, t.offsets.arrow = (Kt(n = {}, u, Math.round(y)), Kt(n, f, ""), n), t
                      },
                      element: "[x-arrow]"
                  },
                  flip: {
                      order: 600,
                      enabled: !0,
                      fn: function (p, m) {
                          if (oe(p.instance.modifiers, "inner")) return p;
                          if (p.flipped && p.placement === p.originalPlacement) return p;
                          var g = Gt(p.instance.popper, p.instance.reference, m.padding, m.boundariesElement, p.positionFixed),
                              _ = p.placement.split("-")[0],
                              v = te(_),
                              y = p.placement.split("-")[1] || "",
                              E = [];
                          switch (m.behavior) {
                              case ge:
                                  E = [_, v];
                                  break;
                              case _e:
                                  E = me(_);
                                  break;
                              case ve:
                                  E = me(_, !0);
                                  break;
                              default:
                                  E = m.behavior
                          }
                          return E.forEach(function (t, e) {
                              if (_ !== t || E.length === e + 1) return p;
                              _ = p.placement.split("-")[0], v = te(_);
                              var n, i = p.offsets.popper,
                                  o = p.offsets.reference,
                                  r = Math.floor,
                                  s = "left" === _ && r(i.right) > r(o.left) || "right" === _ && r(i.left) < r(o.right) || "top" === _ && r(i.bottom) > r(o.top) || "bottom" === _ && r(i.top) < r(o.bottom),
                                  a = r(i.left) < r(g.left),
                                  l = r(i.right) > r(g.right),
                                  c = r(i.top) < r(g.top),
                                  h = r(i.bottom) > r(g.bottom),
                                  u = "left" === _ && a || "right" === _ && l || "top" === _ && c || "bottom" === _ && h,
                                  f = -1 !== ["top", "bottom"].indexOf(_),
                                  d = !!m.flipVariations && (f && "start" === y && a || f && "end" === y && l || !f && "start" === y && c || !f && "end" === y && h);
                              (s || u || d) && (p.flipped = !0, (s || u) && (_ = E[e + 1]), d && (y = "end" === (n = y) ? "start" : "start" === n ? "end" : n), p.placement = _ + (y ? "-" + y : ""), p.offsets.popper = Qt({}, p.offsets.popper, ee(p.instance.popper, p.offsets.reference, p.placement)), p = ie(p.instance.modifiers, p, "flip"))
                          }), p
                      },
                      behavior: "flip",
                      padding: 5,
                      boundariesElement: "viewport"
                  },
                  inner: {
                      order: 700,
                      enabled: !1,
                      fn: function (t) {
                          var e = t.placement,
                              n = e.split("-")[0],
                              i = t.offsets,
                              o = i.popper,
                              r = i.reference,
                              s = -1 !== ["left", "right"].indexOf(n),
                              a = -1 === ["top", "left"].indexOf(n);
                          return o[s ? "left" : "top"] = r[n] - (a ? o[s ? "width" : "height"] : 0), t.placement = te(e), t.offsets.popper = Vt(o), t
                      }
                  },
                  hide: {
                      order: 800,
                      enabled: !0,
                      fn: function (t) {
                          if (!fe(t.instance.modifiers, "hide", "preventOverflow")) return t;
                          var e = t.offsets.reference,
                              n = ne(t.instance.modifiers, function (t) {
                                  return "preventOverflow" === t.name
                              }).boundaries;
                          if (e.bottom < n.top || e.left > n.right || e.top > n.bottom || e.right < n.left) {
                              if (!0 === t.hide) return t;
                              t.hide = !0, t.attributes["x-out-of-boundaries"] = ""
                          } else {
                              if (!1 === t.hide) return t;
                              t.hide = !1, t.attributes["x-out-of-boundaries"] = !1
                          }
                          return t
                      }
                  },
                  computeStyle: {
                      order: 850,
                      enabled: !0,
                      fn: function (t, e) {
                          var n = e.x,
                              i = e.y,
                              o = t.offsets.popper,
                              r = ne(t.instance.modifiers, function (t) {
                                  return "applyStyle" === t.name
                              }).gpuAcceleration;
                          void 0 !== r && console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");
                          var s, a, l, c, h, u, f, d, p, m, g, _, v, y, E = void 0 !== r ? r : e.gpuAcceleration,
                              b = jt(t.instance.popper),
                              w = Yt(b),
                              C = {
                                  position: o.position
                              },
                              T = (s = t, a = window.devicePixelRatio < 2 || !ue, l = s.offsets, c = l.popper, h = l.reference, u = Math.round, f = Math.floor, d = function (t) {
                                  return t
                              }, p = u(h.width), m = u(c.width), g = -1 !== ["left", "right"].indexOf(s.placement), _ = -1 !== s.placement.indexOf("-"), y = a ? u : d, {
                                  left: (v = a ? g || _ || p % 2 == m % 2 ? u : f : d)(p % 2 == 1 && m % 2 == 1 && !_ && a ? c.left - 1 : c.left),
                                  top: y(c.top),
                                  bottom: y(c.bottom),
                                  right: v(c.right)
                              }),
                              S = "bottom" === n ? "top" : "bottom",
                              D = "right" === i ? "left" : "right",
                              I = re("transform"),
                              A = void 0,
                              O = void 0;
                          if (O = "bottom" === S ? "HTML" === b.nodeName ? -b.clientHeight + T.bottom : -w.height + T.bottom : T.top, A = "right" === D ? "HTML" === b.nodeName ? -b.clientWidth + T.right : -w.width + T.right : T.left, E && I) C[I] = "translate3d(" + A + "px, " + O + "px, 0)", C[S] = 0, C[D] = 0, C.willChange = "transform";
                          else {
                              var N = "bottom" === S ? -1 : 1,
                                  k = "right" === D ? -1 : 1;
                              C[S] = O * N, C[D] = A * k, C.willChange = S + ", " + D
                          }
                          var L = {
                              "x-placement": t.placement
                          };
                          return t.attributes = Qt({}, L, t.attributes), t.styles = Qt({}, C, t.styles), t.arrowStyles = Qt({}, t.offsets.arrow, t.arrowStyles), t
                      },
                      gpuAcceleration: !0,
                      x: "bottom",
                      y: "right"
                  },
                  applyStyle: {
                      order: 900,
                      enabled: !0,
                      fn: function (t) {
                          var e, n;
                          return he(t.instance.popper, t.styles), e = t.instance.popper, n = t.attributes, Object.keys(n).forEach(function (t) {
                              !1 !== n[t] ? e.setAttribute(t, n[t]) : e.removeAttribute(t)
                          }), t.arrowElement && Object.keys(t.arrowStyles).length && he(t.arrowElement, t.arrowStyles), t
                      },
                      onLoad: function (t, e, n, i, o) {
                          var r = Jt(o, e, t, n.positionFixed),
                              s = $t(n.placement, r, e, t, n.modifiers.flip.boundariesElement, n.modifiers.flip.padding);
                          return e.setAttribute("x-placement", s), he(e, {
                              position: n.positionFixed ? "fixed" : "absolute"
                          }), n
                      },
                      gpuAcceleration: void 0
                  }
              }
          },
          be = function () {
              function r(t, e) {
                  var n = this,
                      i = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {};
                  ! function (t, e) {
                      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                  }(this, r), this.scheduleUpdate = function () {
                      return requestAnimationFrame(n.update)
                  }, this.update = At(this.update.bind(this)), this.options = Qt({}, r.Defaults, i), this.state = {
                      isDestroyed: !1,
                      isCreated: !1,
                      scrollParents: []
                  }, this.reference = t && t.jquery ? t[0] : t, this.popper = e && e.jquery ? e[0] : e, this.options.modifiers = {}, Object.keys(Qt({}, r.Defaults.modifiers, i.modifiers)).forEach(function (t) {
                      n.options.modifiers[t] = Qt({}, r.Defaults.modifiers[t] || {}, i.modifiers ? i.modifiers[t] : {})
                  }), this.modifiers = Object.keys(this.options.modifiers).map(function (t) {
                      return Qt({
                          name: t
                      }, n.options.modifiers[t])
                  }).sort(function (t, e) {
                      return t.order - e.order
                  }), this.modifiers.forEach(function (t) {
                      t.enabled && Ot(t.onLoad) && t.onLoad(n.reference, n.popper, n.options, t, n.state)
                  }), this.update();
                  var o = this.options.eventsEnabled;
                  o && this.enableEventListeners(), this.state.eventsEnabled = o
              }
              return qt(r, [{
                  key: "update",
                  value: function () {
                      return function () {
                          if (!this.state.isDestroyed) {
                              var t = {
                                  instance: this,
                                  styles: {},
                                  arrowStyles: {},
                                  attributes: {},
                                  flipped: !1,
                                  offsets: {}
                              };
                              t.offsets.reference = Jt(this.state, this.popper, this.reference, this.options.positionFixed), t.placement = $t(this.options.placement, t.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding), t.originalPlacement = t.placement, t.positionFixed = this.options.positionFixed, t.offsets.popper = ee(this.popper, t.offsets.reference, t.placement), t.offsets.popper.position = this.options.positionFixed ? "fixed" : "absolute", t = ie(this.modifiers, t), this.state.isCreated ? this.options.onUpdate(t) : (this.state.isCreated = !0, this.options.onCreate(t))
                          }
                      }.call(this)
                  }
              }, {
                  key: "destroy",
                  value: function () {
                      return function () {
                          return this.state.isDestroyed = !0, oe(this.modifiers, "applyStyle") && (this.popper.removeAttribute("x-placement"), this.popper.style.position = "", this.popper.style.top = "", this.popper.style.left = "", this.popper.style.right = "", this.popper.style.bottom = "", this.popper.style.willChange = "", this.popper.style[re("transform")] = ""), this.disableEventListeners(), this.options.removeOnDestroy && this.popper.parentNode.removeChild(this.popper), this
                      }.call(this)
                  }
              }, {
                  key: "enableEventListeners",
                  value: function () {
                      return function () {
                          this.state.eventsEnabled || (this.state = ae(this.reference, this.options, this.state, this.scheduleUpdate))
                      }.call(this)
                  }
              }, {
                  key: "disableEventListeners",
                  value: function () {
                      return le.call(this)
                  }
              }]), r
          }();
      be.Utils = ("undefined" != typeof window ? window : global).PopperUtils, be.placements = de, be.Defaults = Ee;
      var we = "dropdown",
          Ce = "bs.dropdown",
          Te = "." + Ce,
          Se = ".data-api",
          De = p.fn[we],
          Ie = new RegExp("38|40|27"),
          Ae = {
              HIDE: "hide" + Te,
              HIDDEN: "hidden" + Te,
              SHOW: "show" + Te,
              SHOWN: "shown" + Te,
              CLICK: "click" + Te,
              CLICK_DATA_API: "click" + Te + Se,
              KEYDOWN_DATA_API: "keydown" + Te + Se,
              KEYUP_DATA_API: "keyup" + Te + Se
          },
          Oe = "disabled",
          Ne = "show",
          ke = "dropup",
          Le = "dropright",
          xe = "dropleft",
          Pe = "dropdown-menu-right",
          He = "position-static",
          je = '[data-toggle="dropdown"]',
          Re = ".dropdown form",
          Fe = ".dropdown-menu",
          Me = ".navbar-nav",
          We = ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",
          Ue = "top-start",
          Be = "top-end",
          qe = "bottom-start",
          Ke = "bottom-end",
          Qe = "right-start",
          Ve = "left-start",
          Ye = {
              offset: 0,
              flip: !0,
              boundary: "scrollParent",
              reference: "toggle",
              display: "dynamic"
          },
          ze = {
              offset: "(number|string|function)",
              flip: "boolean",
              boundary: "(string|element)",
              reference: "(string|element)",
              display: "string"
          },
          Xe = function () {
              function c(t, e) {
                  this._element = t, this._popper = null, this._config = this._getConfig(e), this._menu = this._getMenuElement(), this._inNavbar = this._detectNavbar(), this._addEventListeners()
              }
              var t = c.prototype;
              return t.toggle = function () {
                  if (!this._element.disabled && !p(this._element).hasClass(Oe)) {
                      var t = c._getParentFromElement(this._element),
                          e = p(this._menu).hasClass(Ne);
                      if (c._clearMenus(), !e) {
                          var n = {
                                  relatedTarget: this._element
                              },
                              i = p.Event(Ae.SHOW, n);
                          if (p(t).trigger(i), !i.isDefaultPrevented()) {
                              if (!this._inNavbar) {
                                  if ("undefined" == typeof be) throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");
                                  var o = this._element;
                                  "parent" === this._config.reference ? o = t : m.isElement(this._config.reference) && (o = this._config.reference, "undefined" != typeof this._config.reference.jquery && (o = this._config.reference[0])), "scrollParent" !== this._config.boundary && p(t).addClass(He), this._popper = new be(o, this._menu, this._getPopperConfig())
                              }
                              "ontouchstart" in document.documentElement && 0 === p(t).closest(Me).length && p(document.body).children().on("mouseover", null, p.noop), this._element.focus(), this._element.setAttribute("aria-expanded", !0), p(this._menu).toggleClass(Ne), p(t).toggleClass(Ne).trigger(p.Event(Ae.SHOWN, n))
                          }
                      }
                  }
              }, t.show = function () {
                  if (!(this._element.disabled || p(this._element).hasClass(Oe) || p(this._menu).hasClass(Ne))) {
                      var t = {
                              relatedTarget: this._element
                          },
                          e = p.Event(Ae.SHOW, t),
                          n = c._getParentFromElement(this._element);
                      p(n).trigger(e), e.isDefaultPrevented() || (p(this._menu).toggleClass(Ne), p(n).toggleClass(Ne).trigger(p.Event(Ae.SHOWN, t)))
                  }
              }, t.hide = function () {
                  if (!this._element.disabled && !p(this._element).hasClass(Oe) && p(this._menu).hasClass(Ne)) {
                      var t = {
                              relatedTarget: this._element
                          },
                          e = p.Event(Ae.HIDE, t),
                          n = c._getParentFromElement(this._element);
                      p(n).trigger(e), e.isDefaultPrevented() || (p(this._menu).toggleClass(Ne), p(n).toggleClass(Ne).trigger(p.Event(Ae.HIDDEN, t)))
                  }
              }, t.dispose = function () {
                  p.removeData(this._element, Ce), p(this._element).off(Te), this._element = null, (this._menu = null) !== this._popper && (this._popper.destroy(), this._popper = null)
              }, t.update = function () {
                  this._inNavbar = this._detectNavbar(), null !== this._popper && this._popper.scheduleUpdate()
              }, t._addEventListeners = function () {
                  var e = this;
                  p(this._element).on(Ae.CLICK, function (t) {
                      t.preventDefault(), t.stopPropagation(), e.toggle()
                  })
              }, t._getConfig = function (t) {
                  return t = l({}, this.constructor.Default, p(this._element).data(), t), m.typeCheckConfig(we, t, this.constructor.DefaultType), t
              }, t._getMenuElement = function () {
                  if (!this._menu) {
                      var t = c._getParentFromElement(this._element);
                      t && (this._menu = t.querySelector(Fe))
                  }
                  return this._menu
              }, t._getPlacement = function () {
                  var t = p(this._element.parentNode),
                      e = qe;
                  return t.hasClass(ke) ? (e = Ue, p(this._menu).hasClass(Pe) && (e = Be)) : t.hasClass(Le) ? e = Qe : t.hasClass(xe) ? e = Ve : p(this._menu).hasClass(Pe) && (e = Ke), e
              }, t._detectNavbar = function () {
                  return 0 < p(this._element).closest(".navbar").length
              }, t._getOffset = function () {
                  var e = this,
                      t = {};
                  return "function" == typeof this._config.offset ? t.fn = function (t) {
                      return t.offsets = l({}, t.offsets, e._config.offset(t.offsets, e._element) || {}), t
                  } : t.offset = this._config.offset, t
              }, t._getPopperConfig = function () {
                  var t = {
                      placement: this._getPlacement(),
                      modifiers: {
                          offset: this._getOffset(),
                          flip: {
                              enabled: this._config.flip
                          },
                          preventOverflow: {
                              boundariesElement: this._config.boundary
                          }
                      }
                  };
                  return "static" === this._config.display && (t.modifiers.applyStyle = {
                      enabled: !1
                  }), t
              }, c._jQueryInterface = function (e) {
                  return this.each(function () {
                      var t = p(this).data(Ce);
                      if (t || (t = new c(this, "object" == typeof e ? e : null), p(this).data(Ce, t)), "string" == typeof e) {
                          if ("undefined" == typeof t[e]) throw new TypeError('No method named "' + e + '"');
                          t[e]()
                      }
                  })
              }, c._clearMenus = function (t) {
                  if (!t || 3 !== t.which && ("keyup" !== t.type || 9 === t.which))
                      for (var e = [].slice.call(document.querySelectorAll(je)), n = 0, i = e.length; n < i; n++) {
                          var o = c._getParentFromElement(e[n]),
                              r = p(e[n]).data(Ce),
                              s = {
                                  relatedTarget: e[n]
                              };
                          if (t && "click" === t.type && (s.clickEvent = t), r) {
                              var a = r._menu;
                              if (p(o).hasClass(Ne) && !(t && ("click" === t.type && /input|textarea/i.test(t.target.tagName) || "keyup" === t.type && 9 === t.which) && p.contains(o, t.target))) {
                                  var l = p.Event(Ae.HIDE, s);
                                  p(o).trigger(l), l.isDefaultPrevented() || ("ontouchstart" in document.documentElement && p(document.body).children().off("mouseover", null, p.noop), e[n].setAttribute("aria-expanded", "false"), p(a).removeClass(Ne), p(o).removeClass(Ne).trigger(p.Event(Ae.HIDDEN, s)))
                              }
                          }
                      }
              }, c._getParentFromElement = function (t) {
                  var e, n = m.getSelectorFromElement(t);
                  return n && (e = document.querySelector(n)), e || t.parentNode
              }, c._dataApiKeydownHandler = function (t) {
                  if ((/input|textarea/i.test(t.target.tagName) ? !(32 === t.which || 27 !== t.which && (40 !== t.which && 38 !== t.which || p(t.target).closest(Fe).length)) : Ie.test(t.which)) && (t.preventDefault(), t.stopPropagation(), !this.disabled && !p(this).hasClass(Oe))) {
                      var e = c._getParentFromElement(this),
                          n = p(e).hasClass(Ne);
                      if (n && (!n || 27 !== t.which && 32 !== t.which)) {
                          var i = [].slice.call(e.querySelectorAll(We));
                          if (0 !== i.length) {
                              var o = i.indexOf(t.target);
                              38 === t.which && 0 < o && o--, 40 === t.which && o < i.length - 1 && o++, o < 0 && (o = 0), i[o].focus()
                          }
                      } else {
                          if (27 === t.which) {
                              var r = e.querySelector(je);
                              p(r).trigger("focus")
                          }
                          p(this).trigger("click")
                      }
                  }
              }, s(c, null, [{
                  key: "VERSION",
                  get: function () {
                      return "4.3.1"
                  }
              }, {
                  key: "Default",
                  get: function () {
                      return Ye
                  }
              }, {
                  key: "DefaultType",
                  get: function () {
                      return ze
                  }
              }]), c
          }();
      p(document).on(Ae.KEYDOWN_DATA_API, je, Xe._dataApiKeydownHandler).on(Ae.KEYDOWN_DATA_API, Fe, Xe._dataApiKeydownHandler).on(Ae.CLICK_DATA_API + " " + Ae.KEYUP_DATA_API, Xe._clearMenus).on(Ae.CLICK_DATA_API, je, function (t) {
          t.preventDefault(), t.stopPropagation(), Xe._jQueryInterface.call(p(this), "toggle")
      }).on(Ae.CLICK_DATA_API, Re, function (t) {
          t.stopPropagation()
      }), p.fn[we] = Xe._jQueryInterface, p.fn[we].Constructor = Xe, p.fn[we].noConflict = function () {
          return p.fn[we] = De, Xe._jQueryInterface
      };
      var Ge = "modal",
          $e = "bs.modal",
          Je = "." + $e,
          Ze = p.fn[Ge],
          tn = {
              backdrop: !0,
              keyboard: !0,
              focus: !0,
              show: !0
          },
          en = {
              backdrop: "(boolean|string)",
              keyboard: "boolean",
              focus: "boolean",
              show: "boolean"
          },
          nn = {
              HIDE: "hide" + Je,
              HIDDEN: "hidden" + Je,
              SHOW: "show" + Je,
              SHOWN: "shown" + Je,
              FOCUSIN: "focusin" + Je,
              RESIZE: "resize" + Je,
              CLICK_DISMISS: "click.dismiss" + Je,
              KEYDOWN_DISMISS: "keydown.dismiss" + Je,
              MOUSEUP_DISMISS: "mouseup.dismiss" + Je,
              MOUSEDOWN_DISMISS: "mousedown.dismiss" + Je,
              CLICK_DATA_API: "click" + Je + ".data-api"
          },
          on = "modal-dialog-scrollable",
          rn = "modal-scrollbar-measure",
          sn = "modal-backdrop",
          an = "modal-open",
          ln = "fade",
          cn = "show",
          hn = ".modal-dialog",
          un = ".modal-body",
          fn = '[data-toggle="modal"]',
          dn = '[data-dismiss="modal"]',
          pn = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",
          mn = ".sticky-top",
          gn = function () {
              function o(t, e) {
                  this._config = this._getConfig(e), this._element = t, this._dialog = t.querySelector(hn), this._backdrop = null, this._isShown = !1, this._isBodyOverflowing = !1, this._ignoreBackdropClick = !1, this._isTransitioning = !1, this._scrollbarWidth = 0
              }
              var t = o.prototype;
              return t.toggle = function (t) {
                  return this._isShown ? this.hide() : this.show(t)
              }, t.show = function (t) {
                  var e = this;
                  if (!this._isShown && !this._isTransitioning) {
                      p(this._element).hasClass(ln) && (this._isTransitioning = !0);
                      var n = p.Event(nn.SHOW, {
                          relatedTarget: t
                      });
                      p(this._element).trigger(n), this._isShown || n.isDefaultPrevented() || (this._isShown = !0, this._checkScrollbar(), this._setScrollbar(), this._adjustDialog(), this._setEscapeEvent(), this._setResizeEvent(), p(this._element).on(nn.CLICK_DISMISS, dn, function (t) {
                          return e.hide(t)
                      }), p(this._dialog).on(nn.MOUSEDOWN_DISMISS, function () {
                          p(e._element).one(nn.MOUSEUP_DISMISS, function (t) {
                              p(t.target).is(e._element) && (e._ignoreBackdropClick = !0)
                          })
                      }), this._showBackdrop(function () {
                          return e._showElement(t)
                      }))
                  }
              }, t.hide = function (t) {
                  var e = this;
                  if (t && t.preventDefault(), this._isShown && !this._isTransitioning) {
                      var n = p.Event(nn.HIDE);
                      if (p(this._element).trigger(n), this._isShown && !n.isDefaultPrevented()) {
                          this._isShown = !1;
                          var i = p(this._element).hasClass(ln);
                          if (i && (this._isTransitioning = !0), this._setEscapeEvent(), this._setResizeEvent(), p(document).off(nn.FOCUSIN), p(this._element).removeClass(cn), p(this._element).off(nn.CLICK_DISMISS), p(this._dialog).off(nn.MOUSEDOWN_DISMISS), i) {
                              var o = m.getTransitionDurationFromElement(this._element);
                              p(this._element).one(m.TRANSITION_END, function (t) {
                                  return e._hideModal(t)
                              }).emulateTransitionEnd(o)
                          } else this._hideModal()
                      }
                  }
              }, t.dispose = function () {
                  [window, this._element, this._dialog].forEach(function (t) {
                      return p(t).off(Je)
                  }), p(document).off(nn.FOCUSIN), p.removeData(this._element, $e), this._config = null, this._element = null, this._dialog = null, this._backdrop = null, this._isShown = null, this._isBodyOverflowing = null, this._ignoreBackdropClick = null, this._isTransitioning = null, this._scrollbarWidth = null
              }, t.handleUpdate = function () {
                  this._adjustDialog()
              }, t._getConfig = function (t) {
                  return t = l({}, tn, t), m.typeCheckConfig(Ge, t, en), t
              }, t._showElement = function (t) {
                  var e = this,
                      n = p(this._element).hasClass(ln);
                  this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE || document.body.appendChild(this._element), this._element.style.display = "block", this._element.removeAttribute("aria-hidden"), this._element.setAttribute("aria-modal", !0), p(this._dialog).hasClass(on) ? this._dialog.querySelector(un).scrollTop = 0 : this._element.scrollTop = 0, n && m.reflow(this._element), p(this._element).addClass(cn), this._config.focus && this._enforceFocus();
                  var i = p.Event(nn.SHOWN, {
                          relatedTarget: t
                      }),
                      o = function () {
                          e._config.focus && e._element.focus(), e._isTransitioning = !1, p(e._element).trigger(i)
                      };
                  if (n) {
                      var r = m.getTransitionDurationFromElement(this._dialog);
                      p(this._dialog).one(m.TRANSITION_END, o).emulateTransitionEnd(r)
                  } else o()
              }, t._enforceFocus = function () {
                  var e = this;
                  p(document).off(nn.FOCUSIN).on(nn.FOCUSIN, function (t) {
                      document !== t.target && e._element !== t.target && 0 === p(e._element).has(t.target).length && e._element.focus()
                  })
              }, t._setEscapeEvent = function () {
                  var e = this;
                  this._isShown && this._config.keyboard ? p(this._element).on(nn.KEYDOWN_DISMISS, function (t) {
                      27 === t.which && (t.preventDefault(), e.hide())
                  }) : this._isShown || p(this._element).off(nn.KEYDOWN_DISMISS)
              }, t._setResizeEvent = function () {
                  var e = this;
                  this._isShown ? p(window).on(nn.RESIZE, function (t) {
                      return e.handleUpdate(t)
                  }) : p(window).off(nn.RESIZE)
              }, t._hideModal = function () {
                  var t = this;
                  this._element.style.display = "none", this._element.setAttribute("aria-hidden", !0), this._element.removeAttribute("aria-modal"), this._isTransitioning = !1, this._showBackdrop(function () {
                      p(document.body).removeClass(an), t._resetAdjustments(), t._resetScrollbar(), p(t._element).trigger(nn.HIDDEN)
                  })
              }, t._removeBackdrop = function () {
                  this._backdrop && (p(this._backdrop).remove(), this._backdrop = null)
              }, t._showBackdrop = function (t) {
                  var e = this,
                      n = p(this._element).hasClass(ln) ? ln : "";
                  if (this._isShown && this._config.backdrop) {
                      if (this._backdrop = document.createElement("div"), this._backdrop.className = sn, n && this._backdrop.classList.add(n), p(this._backdrop).appendTo(document.body), p(this._element).on(nn.CLICK_DISMISS, function (t) {
                              e._ignoreBackdropClick ? e._ignoreBackdropClick = !1 : t.target === t.currentTarget && ("static" === e._config.backdrop ? e._element.focus() : e.hide())
                          }), n && m.reflow(this._backdrop), p(this._backdrop).addClass(cn), !t) return;
                      if (!n) return void t();
                      var i = m.getTransitionDurationFromElement(this._backdrop);
                      p(this._backdrop).one(m.TRANSITION_END, t).emulateTransitionEnd(i)
                  } else if (!this._isShown && this._backdrop) {
                      p(this._backdrop).removeClass(cn);
                      var o = function () {
                          e._removeBackdrop(), t && t()
                      };
                      if (p(this._element).hasClass(ln)) {
                          var r = m.getTransitionDurationFromElement(this._backdrop);
                          p(this._backdrop).one(m.TRANSITION_END, o).emulateTransitionEnd(r)
                      } else o()
                  } else t && t()
              }, t._adjustDialog = function () {
                  var t = this._element.scrollHeight > document.documentElement.clientHeight;
                  !this._isBodyOverflowing && t && (this._element.style.paddingLeft = this._scrollbarWidth + "px"), this._isBodyOverflowing && !t && (this._element.style.paddingRight = this._scrollbarWidth + "px")
              }, t._resetAdjustments = function () {
                  this._element.style.paddingLeft = "", this._element.style.paddingRight = ""
              }, t._checkScrollbar = function () {
                  var t = document.body.getBoundingClientRect();
                  this._isBodyOverflowing = t.left + t.right < window.innerWidth, this._scrollbarWidth = this._getScrollbarWidth()
              }, t._setScrollbar = function () {
                  var o = this;
                  if (this._isBodyOverflowing) {
                      var t = [].slice.call(document.querySelectorAll(pn)),
                          e = [].slice.call(document.querySelectorAll(mn));
                      p(t).each(function (t, e) {
                          var n = e.style.paddingRight,
                              i = p(e).css("padding-right");
                          p(e).data("padding-right", n).css("padding-right", parseFloat(i) + o._scrollbarWidth + "px")
                      }), p(e).each(function (t, e) {
                          var n = e.style.marginRight,
                              i = p(e).css("margin-right");
                          p(e).data("margin-right", n).css("margin-right", parseFloat(i) - o._scrollbarWidth + "px")
                      });
                      var n = document.body.style.paddingRight,
                          i = p(document.body).css("padding-right");
                      p(document.body).data("padding-right", n).css("padding-right", parseFloat(i) + this._scrollbarWidth + "px")
                  }
                  p(document.body).addClass(an)
              }, t._resetScrollbar = function () {
                  var t = [].slice.call(document.querySelectorAll(pn));
                  p(t).each(function (t, e) {
                      var n = p(e).data("padding-right");
                      p(e).removeData("padding-right"), e.style.paddingRight = n || ""
                  });
                  var e = [].slice.call(document.querySelectorAll("" + mn));
                  p(e).each(function (t, e) {
                      var n = p(e).data("margin-right");
                      "undefined" != typeof n && p(e).css("margin-right", n).removeData("margin-right")
                  });
                  var n = p(document.body).data("padding-right");
                  p(document.body).removeData("padding-right"), document.body.style.paddingRight = n || ""
              }, t._getScrollbarWidth = function () {
                  var t = document.createElement("div");
                  t.className = rn, document.body.appendChild(t);
                  var e = t.getBoundingClientRect().width - t.clientWidth;
                  return document.body.removeChild(t), e
              }, o._jQueryInterface = function (n, i) {
                  return this.each(function () {
                      var t = p(this).data($e),
                          e = l({}, tn, p(this).data(), "object" == typeof n && n ? n : {});
                      if (t || (t = new o(this, e), p(this).data($e, t)), "string" == typeof n) {
                          if ("undefined" == typeof t[n]) throw new TypeError('No method named "' + n + '"');
                          t[n](i)
                      } else e.show && t.show(i)
                  })
              }, s(o, null, [{
                  key: "VERSION",
                  get: function () {
                      return "4.3.1"
                  }
              }, {
                  key: "Default",
                  get: function () {
                      return tn
                  }
              }]), o
          }();
      p(document).on(nn.CLICK_DATA_API, fn, function (t) {
          var e, n = this,
              i = m.getSelectorFromElement(this);
          i && (e = document.querySelector(i));
          var o = p(e).data($e) ? "toggle" : l({}, p(e).data(), p(this).data());
          "A" !== this.tagName && "AREA" !== this.tagName || t.preventDefault();
          var r = p(e).one(nn.SHOW, function (t) {
              t.isDefaultPrevented() || r.one(nn.HIDDEN, function () {
                  p(n).is(":visible") && n.focus()
              })
          });
          gn._jQueryInterface.call(p(e), o, this)
      }), p.fn[Ge] = gn._jQueryInterface, p.fn[Ge].Constructor = gn, p.fn[Ge].noConflict = function () {
          return p.fn[Ge] = Ze, gn._jQueryInterface
      };
      var _n = ["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"],
          vn = {
              "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i],
              a: ["target", "href", "title", "rel"],
              area: [],
              b: [],
              br: [],
              col: [],
              code: [],
              div: [],
              em: [],
              hr: [],
              h1: [],
              h2: [],
              h3: [],
              h4: [],
              h5: [],
              h6: [],
              i: [],
              img: ["src", "alt", "title", "width", "height"],
              li: [],
              ol: [],
              p: [],
              pre: [],
              s: [],
              small: [],
              span: [],
              sub: [],
              sup: [],
              strong: [],
              u: [],
              ul: []
          },
          yn = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,
          En = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;
  
      function bn(t, s, e) {
          if (0 === t.length) return t;
          if (e && "function" == typeof e) return e(t);
          for (var n = (new window.DOMParser).parseFromString(t, "text/html"), a = Object.keys(s), l = [].slice.call(n.body.querySelectorAll("*")), i = function (t, e) {
                  var n = l[t],
                      i = n.nodeName.toLowerCase();
                  if (-1 === a.indexOf(n.nodeName.toLowerCase())) return n.parentNode.removeChild(n), "continue";
                  var o = [].slice.call(n.attributes),
                      r = [].concat(s["*"] || [], s[i] || []);
                  o.forEach(function (t) {
                      (function (t, e) {
                          var n = t.nodeName.toLowerCase();
                          if (-1 !== e.indexOf(n)) return -1 === _n.indexOf(n) || Boolean(t.nodeValue.match(yn) || t.nodeValue.match(En));
                          for (var i = e.filter(function (t) {
                                  return t instanceof RegExp
                              }), o = 0, r = i.length; o < r; o++)
                              if (n.match(i[o])) return !0;
                          return !1
                      })(t, r) || n.removeAttribute(t.nodeName)
                  })
              }, o = 0, r = l.length; o < r; o++) i(o);
          return n.body.innerHTML
      }
      var wn = "tooltip",
          Cn = "bs.tooltip",
          Tn = "." + Cn,
          Sn = p.fn[wn],
          Dn = "bs-tooltip",
          In = new RegExp("(^|\\s)" + Dn + "\\S+", "g"),
          An = ["sanitize", "whiteList", "sanitizeFn"],
          On = {
              animation: "boolean",
              template: "string",
              title: "(string|element|function)",
              trigger: "string",
              delay: "(number|object)",
              html: "boolean",
              selector: "(string|boolean)",
              placement: "(string|function)",
              offset: "(number|string|function)",
              container: "(string|element|boolean)",
              fallbackPlacement: "(string|array)",
              boundary: "(string|element)",
              sanitize: "boolean",
              sanitizeFn: "(null|function)",
              whiteList: "object"
          },
          Nn = {
              AUTO: "auto",
              TOP: "top",
              RIGHT: "right",
              BOTTOM: "bottom",
              LEFT: "left"
          },
          kn = {
              animation: !0,
              template: '<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',
              trigger: "hover focus",
              title: "",
              delay: 0,
              html: !1,
              selector: !1,
              placement: "top",
              offset: 0,
              container: !1,
              fallbackPlacement: "flip",
              boundary: "scrollParent",
              sanitize: !0,
              sanitizeFn: null,
              whiteList: vn
          },
          Ln = "show",
          xn = "out",
          Pn = {
              HIDE: "hide" + Tn,
              HIDDEN: "hidden" + Tn,
              SHOW: "show" + Tn,
              SHOWN: "shown" + Tn,
              INSERTED: "inserted" + Tn,
              CLICK: "click" + Tn,
              FOCUSIN: "focusin" + Tn,
              FOCUSOUT: "focusout" + Tn,
              MOUSEENTER: "mouseenter" + Tn,
              MOUSELEAVE: "mouseleave" + Tn
          },
          Hn = "fade",
          jn = "show",
          Rn = ".tooltip-inner",
          Fn = ".arrow",
          Mn = "hover",
          Wn = "focus",
          Un = "click",
          Bn = "manual",
          qn = function () {
              function i(t, e) {
                  if ("undefined" == typeof be) throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");
                  this._isEnabled = !0, this._timeout = 0, this._hoverState = "", this._activeTrigger = {}, this._popper = null, this.element = t, this.config = this._getConfig(e), this.tip = null, this._setListeners()
              }
              var t = i.prototype;
              return t.enable = function () {
                  this._isEnabled = !0
              }, t.disable = function () {
                  this._isEnabled = !1
              }, t.toggleEnabled = function () {
                  this._isEnabled = !this._isEnabled
              }, t.toggle = function (t) {
                  if (this._isEnabled)
                      if (t) {
                          var e = this.constructor.DATA_KEY,
                              n = p(t.currentTarget).data(e);
                          n || (n = new this.constructor(t.currentTarget, this._getDelegateConfig()), p(t.currentTarget).data(e, n)), n._activeTrigger.click = !n._activeTrigger.click, n._isWithActiveTrigger() ? n._enter(null, n) : n._leave(null, n)
                      } else {
                          if (p(this.getTipElement()).hasClass(jn)) return void this._leave(null, this);
                          this._enter(null, this)
                      }
              }, t.dispose = function () {
                  clearTimeout(this._timeout), p.removeData(this.element, this.constructor.DATA_KEY), p(this.element).off(this.constructor.EVENT_KEY), p(this.element).closest(".modal").off("hide.bs.modal"), this.tip && p(this.tip).remove(), this._isEnabled = null, this._timeout = null, this._hoverState = null, (this._activeTrigger = null) !== this._popper && this._popper.destroy(), this._popper = null, this.element = null, this.config = null, this.tip = null
              }, t.show = function () {
                  var e = this;
                  if ("none" === p(this.element).css("display")) throw new Error("Please use show on visible elements");
                  var t = p.Event(this.constructor.Event.SHOW);
                  if (this.isWithContent() && this._isEnabled) {
                      p(this.element).trigger(t);
                      var n = m.findShadowRoot(this.element),
                          i = p.contains(null !== n ? n : this.element.ownerDocument.documentElement, this.element);
                      if (t.isDefaultPrevented() || !i) return;
                      var o = this.getTipElement(),
                          r = m.getUID(this.constructor.NAME);
                      o.setAttribute("id", r), this.element.setAttribute("aria-describedby", r), this.setContent(), this.config.animation && p(o).addClass(Hn);
                      var s = "function" == typeof this.config.placement ? this.config.placement.call(this, o, this.element) : this.config.placement,
                          a = this._getAttachment(s);
                      this.addAttachmentClass(a);
                      var l = this._getContainer();
                      p(o).data(this.constructor.DATA_KEY, this), p.contains(this.element.ownerDocument.documentElement, this.tip) || p(o).appendTo(l), p(this.element).trigger(this.constructor.Event.INSERTED), this._popper = new be(this.element, o, {
                          placement: a,
                          modifiers: {
                              offset: this._getOffset(),
                              flip: {
                                  behavior: this.config.fallbackPlacement
                              },
                              arrow: {
                                  element: Fn
                              },
                              preventOverflow: {
                                  boundariesElement: this.config.boundary
                              }
                          },
                          onCreate: function (t) {
                              t.originalPlacement !== t.placement && e._handlePopperPlacementChange(t)
                          },
                          onUpdate: function (t) {
                              return e._handlePopperPlacementChange(t)
                          }
                      }), p(o).addClass(jn), "ontouchstart" in document.documentElement && p(document.body).children().on("mouseover", null, p.noop);
                      var c = function () {
                          e.config.animation && e._fixTransition();
                          var t = e._hoverState;
                          e._hoverState = null, p(e.element).trigger(e.constructor.Event.SHOWN), t === xn && e._leave(null, e)
                      };
                      if (p(this.tip).hasClass(Hn)) {
                          var h = m.getTransitionDurationFromElement(this.tip);
                          p(this.tip).one(m.TRANSITION_END, c).emulateTransitionEnd(h)
                      } else c()
                  }
              }, t.hide = function (t) {
                  var e = this,
                      n = this.getTipElement(),
                      i = p.Event(this.constructor.Event.HIDE),
                      o = function () {
                          e._hoverState !== Ln && n.parentNode && n.parentNode.removeChild(n), e._cleanTipClass(), e.element.removeAttribute("aria-describedby"), p(e.element).trigger(e.constructor.Event.HIDDEN), null !== e._popper && e._popper.destroy(), t && t()
                      };
                  if (p(this.element).trigger(i), !i.isDefaultPrevented()) {
                      if (p(n).removeClass(jn), "ontouchstart" in document.documentElement && p(document.body).children().off("mouseover", null, p.noop), this._activeTrigger[Un] = !1, this._activeTrigger[Wn] = !1, this._activeTrigger[Mn] = !1, p(this.tip).hasClass(Hn)) {
                          var r = m.getTransitionDurationFromElement(n);
                          p(n).one(m.TRANSITION_END, o).emulateTransitionEnd(r)
                      } else o();
                      this._hoverState = ""
                  }
              }, t.update = function () {
                  null !== this._popper && this._popper.scheduleUpdate()
              }, t.isWithContent = function () {
                  return Boolean(this.getTitle())
              }, t.addAttachmentClass = function (t) {
                  p(this.getTipElement()).addClass(Dn + "-" + t)
              }, t.getTipElement = function () {
                  return this.tip = this.tip || p(this.config.template)[0], this.tip
              }, t.setContent = function () {
                  var t = this.getTipElement();
                  this.setElementContent(p(t.querySelectorAll(Rn)), this.getTitle()), p(t).removeClass(Hn + " " + jn)
              }, t.setElementContent = function (t, e) {
                  "object" != typeof e || !e.nodeType && !e.jquery ? this.config.html ? (this.config.sanitize && (e = bn(e, this.config.whiteList, this.config.sanitizeFn)), t.html(e)) : t.text(e) : this.config.html ? p(e).parent().is(t) || t.empty().append(e) : t.text(p(e).text())
              }, t.getTitle = function () {
                  var t = this.element.getAttribute("data-original-title");
                  return t || (t = "function" == typeof this.config.title ? this.config.title.call(this.element) : this.config.title), t
              }, t._getOffset = function () {
                  var e = this,
                      t = {};
                  return "function" == typeof this.config.offset ? t.fn = function (t) {
                      return t.offsets = l({}, t.offsets, e.config.offset(t.offsets, e.element) || {}), t
                  } : t.offset = this.config.offset, t
              }, t._getContainer = function () {
                  return !1 === this.config.container ? document.body : m.isElement(this.config.container) ? p(this.config.container) : p(document).find(this.config.container)
              }, t._getAttachment = function (t) {
                  return Nn[t.toUpperCase()]
              }, t._setListeners = function () {
                  var i = this;
                  this.config.trigger.split(" ").forEach(function (t) {
                      if ("click" === t) p(i.element).on(i.constructor.Event.CLICK, i.config.selector, function (t) {
                          return i.toggle(t)
                      });
                      else if (t !== Bn) {
                          var e = t === Mn ? i.constructor.Event.MOUSEENTER : i.constructor.Event.FOCUSIN,
                              n = t === Mn ? i.constructor.Event.MOUSELEAVE : i.constructor.Event.FOCUSOUT;
                          p(i.element).on(e, i.config.selector, function (t) {
                              return i._enter(t)
                          }).on(n, i.config.selector, function (t) {
                              return i._leave(t)
                          })
                      }
                  }), p(this.element).closest(".modal").on("hide.bs.modal", function () {
                      i.element && i.hide()
                  }), this.config.selector ? this.config = l({}, this.config, {
                      trigger: "manual",
                      selector: ""
                  }) : this._fixTitle()
              }, t._fixTitle = function () {
                  var t = typeof this.element.getAttribute("data-original-title");
                  (this.element.getAttribute("title") || "string" !== t) && (this.element.setAttribute("data-original-title", this.element.getAttribute("title") || ""), this.element.setAttribute("title", ""))
              }, t._enter = function (t, e) {
                  var n = this.constructor.DATA_KEY;
                  (e = e || p(t.currentTarget).data(n)) || (e = new this.constructor(t.currentTarget, this._getDelegateConfig()), p(t.currentTarget).data(n, e)), t && (e._activeTrigger["focusin" === t.type ? Wn : Mn] = !0), p(e.getTipElement()).hasClass(jn) || e._hoverState === Ln ? e._hoverState = Ln : (clearTimeout(e._timeout), e._hoverState = Ln, e.config.delay && e.config.delay.show ? e._timeout = setTimeout(function () {
                      e._hoverState === Ln && e.show()
                  }, e.config.delay.show) : e.show())
              }, t._leave = function (t, e) {
                  var n = this.constructor.DATA_KEY;
                  (e = e || p(t.currentTarget).data(n)) || (e = new this.constructor(t.currentTarget, this._getDelegateConfig()), p(t.currentTarget).data(n, e)), t && (e._activeTrigger["focusout" === t.type ? Wn : Mn] = !1), e._isWithActiveTrigger() || (clearTimeout(e._timeout), e._hoverState = xn, e.config.delay && e.config.delay.hide ? e._timeout = setTimeout(function () {
                      e._hoverState === xn && e.hide()
                  }, e.config.delay.hide) : e.hide())
              }, t._isWithActiveTrigger = function () {
                  for (var t in this._activeTrigger)
                      if (this._activeTrigger[t]) return !0;
                  return !1
              }, t._getConfig = function (t) {
                  var e = p(this.element).data();
                  return Object.keys(e).forEach(function (t) {
                      -1 !== An.indexOf(t) && delete e[t]
                  }), "number" == typeof (t = l({}, this.constructor.Default, e, "object" == typeof t && t ? t : {})).delay && (t.delay = {
                      show: t.delay,
                      hide: t.delay
                  }), "number" == typeof t.title && (t.title = t.title.toString()), "number" == typeof t.content && (t.content = t.content.toString()), m.typeCheckConfig(wn, t, this.constructor.DefaultType), t.sanitize && (t.template = bn(t.template, t.whiteList, t.sanitizeFn)), t
              }, t._getDelegateConfig = function () {
                  var t = {};
                  if (this.config)
                      for (var e in this.config) this.constructor.Default[e] !== this.config[e] && (t[e] = this.config[e]);
                  return t
              }, t._cleanTipClass = function () {
                  var t = p(this.getTipElement()),
                      e = t.attr("class").match(In);
                  null !== e && e.length && t.removeClass(e.join(""))
              }, t._handlePopperPlacementChange = function (t) {
                  var e = t.instance;
                  this.tip = e.popper, this._cleanTipClass(), this.addAttachmentClass(this._getAttachment(t.placement))
              }, t._fixTransition = function () {
                  var t = this.getTipElement(),
                      e = this.config.animation;
                  null === t.getAttribute("x-placement") && (p(t).removeClass(Hn), this.config.animation = !1, this.hide(), this.show(), this.config.animation = e)
              }, i._jQueryInterface = function (n) {
                  return this.each(function () {
                      var t = p(this).data(Cn),
                          e = "object" == typeof n && n;
                      if ((t || !/dispose|hide/.test(n)) && (t || (t = new i(this, e), p(this).data(Cn, t)), "string" == typeof n)) {
                          if ("undefined" == typeof t[n]) throw new TypeError('No method named "' + n + '"');
                          t[n]()
                      }
                  })
              }, s(i, null, [{
                  key: "VERSION",
                  get: function () {
                      return "4.3.1"
                  }
              }, {
                  key: "Default",
                  get: function () {
                      return kn
                  }
              }, {
                  key: "NAME",
                  get: function () {
                      return wn
                  }
              }, {
                  key: "DATA_KEY",
                  get: function () {
                      return Cn
                  }
              }, {
                  key: "Event",
                  get: function () {
                      return Pn
                  }
              }, {
                  key: "EVENT_KEY",
                  get: function () {
                      return Tn
                  }
              }, {
                  key: "DefaultType",
                  get: function () {
                      return On
                  }
              }]), i
          }();
      p.fn[wn] = qn._jQueryInterface, p.fn[wn].Constructor = qn, p.fn[wn].noConflict = function () {
          return p.fn[wn] = Sn, qn._jQueryInterface
      };
      var Kn = "popover",
          Qn = "bs.popover",
          Vn = "." + Qn,
          Yn = p.fn[Kn],
          zn = "bs-popover",
          Xn = new RegExp("(^|\\s)" + zn + "\\S+", "g"),
          Gn = l({}, qn.Default, {
              placement: "right",
              trigger: "click",
              content: "",
              template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'
          }),
          $n = l({}, qn.DefaultType, {
              content: "(string|element|function)"
          }),
          Jn = "fade",
          Zn = "show",
          ti = ".popover-header",
          ei = ".popover-body",
          ni = {
              HIDE: "hide" + Vn,
              HIDDEN: "hidden" + Vn,
              SHOW: "show" + Vn,
              SHOWN: "shown" + Vn,
              INSERTED: "inserted" + Vn,
              CLICK: "click" + Vn,
              FOCUSIN: "focusin" + Vn,
              FOCUSOUT: "focusout" + Vn,
              MOUSEENTER: "mouseenter" + Vn,
              MOUSELEAVE: "mouseleave" + Vn
          },
          ii = function (t) {
              var e, n;
  
              function i() {
                  return t.apply(this, arguments) || this
              }
              n = t, (e = i).prototype = Object.create(n.prototype), (e.prototype.constructor = e).__proto__ = n;
              var o = i.prototype;
              return o.isWithContent = function () {
                  return this.getTitle() || this._getContent()
              }, o.addAttachmentClass = function (t) {
                  p(this.getTipElement()).addClass(zn + "-" + t)
              }, o.getTipElement = function () {
                  return this.tip = this.tip || p(this.config.template)[0], this.tip
              }, o.setContent = function () {
                  var t = p(this.getTipElement());
                  this.setElementContent(t.find(ti), this.getTitle());
                  var e = this._getContent();
                  "function" == typeof e && (e = e.call(this.element)), this.setElementContent(t.find(ei), e), t.removeClass(Jn + " " + Zn)
              }, o._getContent = function () {
                  return this.element.getAttribute("data-content") || this.config.content
              }, o._cleanTipClass = function () {
                  var t = p(this.getTipElement()),
                      e = t.attr("class").match(Xn);
                  null !== e && 0 < e.length && t.removeClass(e.join(""))
              }, i._jQueryInterface = function (n) {
                  return this.each(function () {
                      var t = p(this).data(Qn),
                          e = "object" == typeof n ? n : null;
                      if ((t || !/dispose|hide/.test(n)) && (t || (t = new i(this, e), p(this).data(Qn, t)), "string" == typeof n)) {
                          if ("undefined" == typeof t[n]) throw new TypeError('No method named "' + n + '"');
                          t[n]()
                      }
                  })
              }, s(i, null, [{
                  key: "VERSION",
                  get: function () {
                      return "4.3.1"
                  }
              }, {
                  key: "Default",
                  get: function () {
                      return Gn
                  }
              }, {
                  key: "NAME",
                  get: function () {
                      return Kn
                  }
              }, {
                  key: "DATA_KEY",
                  get: function () {
                      return Qn
                  }
              }, {
                  key: "Event",
                  get: function () {
                      return ni
                  }
              }, {
                  key: "EVENT_KEY",
                  get: function () {
                      return Vn
                  }
              }, {
                  key: "DefaultType",
                  get: function () {
                      return $n
                  }
              }]), i
          }(qn);
      p.fn[Kn] = ii._jQueryInterface, p.fn[Kn].Constructor = ii, p.fn[Kn].noConflict = function () {
          return p.fn[Kn] = Yn, ii._jQueryInterface
      };
      var oi = "scrollspy",
          ri = "bs.scrollspy",
          si = "." + ri,
          ai = p.fn[oi],
          li = {
              offset: 10,
              method: "auto",
              target: ""
          },
          ci = {
              offset: "number",
              method: "string",
              target: "(string|element)"
          },
          hi = {
              ACTIVATE: "activate" + si,
              SCROLL: "scroll" + si,
              LOAD_DATA_API: "load" + si + ".data-api"
          },
          ui = "dropdown-item",
          fi = "active",
          di = '[data-spy="scroll"]',
          pi = ".nav, .list-group",
          mi = ".nav-link",
          gi = ".nav-item",
          _i = ".list-group-item",
          vi = ".dropdown",
          yi = ".dropdown-item",
          Ei = ".dropdown-toggle",
          bi = "offset",
          wi = "position",
          Ci = function () {
              function n(t, e) {
                  var n = this;
                  this._element = t, this._scrollElement = "BODY" === t.tagName ? window : t, this._config = this._getConfig(e), this._selector = this._config.target + " " + mi + "," + this._config.target + " " + _i + "," + this._config.target + " " + yi, this._offsets = [], this._targets = [], this._activeTarget = null, this._scrollHeight = 0, p(this._scrollElement).on(hi.SCROLL, function (t) {
                      return n._process(t)
                  }), this.refresh(), this._process()
              }
              var t = n.prototype;
              return t.refresh = function () {
                  var e = this,
                      t = this._scrollElement === this._scrollElement.window ? bi : wi,
                      o = "auto" === this._config.method ? t : this._config.method,
                      r = o === wi ? this._getScrollTop() : 0;
                  this._offsets = [], this._targets = [], this._scrollHeight = this._getScrollHeight(), [].slice.call(document.querySelectorAll(this._selector)).map(function (t) {
                      var e, n = m.getSelectorFromElement(t);
                      if (n && (e = document.querySelector(n)), e) {
                          var i = e.getBoundingClientRect();
                          if (i.width || i.height) return [p(e)[o]().top + r, n]
                      }
                      return null
                  }).filter(function (t) {
                      return t
                  }).sort(function (t, e) {
                      return t[0] - e[0]
                  }).forEach(function (t) {
                      e._offsets.push(t[0]), e._targets.push(t[1])
                  })
              }, t.dispose = function () {
                  p.removeData(this._element, ri), p(this._scrollElement).off(si), this._element = null, this._scrollElement = null, this._config = null, this._selector = null, this._offsets = null, this._targets = null, this._activeTarget = null, this._scrollHeight = null
              }, t._getConfig = function (t) {
                  if ("string" != typeof (t = l({}, li, "object" == typeof t && t ? t : {})).target) {
                      var e = p(t.target).attr("id");
                      e || (e = m.getUID(oi), p(t.target).attr("id", e)), t.target = "#" + e
                  }
                  return m.typeCheckConfig(oi, t, ci), t
              }, t._getScrollTop = function () {
                  return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop
              }, t._getScrollHeight = function () {
                  return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)
              }, t._getOffsetHeight = function () {
                  return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height
              }, t._process = function () {
                  var t = this._getScrollTop() + this._config.offset,
                      e = this._getScrollHeight(),
                      n = this._config.offset + e - this._getOffsetHeight();
                  if (this._scrollHeight !== e && this.refresh(), n <= t) {
                      var i = this._targets[this._targets.length - 1];
                      this._activeTarget !== i && this._activate(i)
                  } else {
                      if (this._activeTarget && t < this._offsets[0] && 0 < this._offsets[0]) return this._activeTarget = null, void this._clear();
                      for (var o = this._offsets.length; o--;) {
                          this._activeTarget !== this._targets[o] && t >= this._offsets[o] && ("undefined" == typeof this._offsets[o + 1] || t < this._offsets[o + 1]) && this._activate(this._targets[o])
                      }
                  }
              }, t._activate = function (e) {
                  this._activeTarget = e, this._clear();
                  var t = this._selector.split(",").map(function (t) {
                          return t + '[data-target="' + e + '"],' + t + '[href="' + e + '"]'
                      }),
                      n = p([].slice.call(document.querySelectorAll(t.join(","))));
                  n.hasClass(ui) ? (n.closest(vi).find(Ei).addClass(fi), n.addClass(fi)) : (n.addClass(fi), n.parents(pi).prev(mi + ", " + _i).addClass(fi), n.parents(pi).prev(gi).children(mi).addClass(fi)), p(this._scrollElement).trigger(hi.ACTIVATE, {
                      relatedTarget: e
                  })
              }, t._clear = function () {
                  [].slice.call(document.querySelectorAll(this._selector)).filter(function (t) {
                      return t.classList.contains(fi)
                  }).forEach(function (t) {
                      return t.classList.remove(fi)
                  })
              }, n._jQueryInterface = function (e) {
                  return this.each(function () {
                      var t = p(this).data(ri);
                      if (t || (t = new n(this, "object" == typeof e && e), p(this).data(ri, t)), "string" == typeof e) {
                          if ("undefined" == typeof t[e]) throw new TypeError('No method named "' + e + '"');
                          t[e]()
                      }
                  })
              }, s(n, null, [{
                  key: "VERSION",
                  get: function () {
                      return "4.3.1"
                  }
              }, {
                  key: "Default",
                  get: function () {
                      return li
                  }
              }]), n
          }();
      p(window).on(hi.LOAD_DATA_API, function () {
          for (var t = [].slice.call(document.querySelectorAll(di)), e = t.length; e--;) {
              var n = p(t[e]);
              Ci._jQueryInterface.call(n, n.data())
          }
      }), p.fn[oi] = Ci._jQueryInterface, p.fn[oi].Constructor = Ci, p.fn[oi].noConflict = function () {
          return p.fn[oi] = ai, Ci._jQueryInterface
      };
      var Ti = "bs.tab",
          Si = "." + Ti,
          Di = p.fn.tab,
          Ii = {
              HIDE: "hide" + Si,
              HIDDEN: "hidden" + Si,
              SHOW: "show" + Si,
              SHOWN: "shown" + Si,
              CLICK_DATA_API: "click" + Si + ".data-api"
          },
          Ai = "dropdown-menu",
          Oi = "active",
          Ni = "disabled",
          ki = "fade",
          Li = "show",
          xi = ".dropdown",
          Pi = ".nav, .list-group",
          Hi = ".active",
          ji = "> li > .active",
          Ri = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
          Fi = ".dropdown-toggle",
          Mi = "> .dropdown-menu .active",
          Wi = function () {
              function i(t) {
                  this._element = t
              }
              var t = i.prototype;
              return t.show = function () {
                  var n = this;
                  if (!(this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && p(this._element).hasClass(Oi) || p(this._element).hasClass(Ni))) {
                      var t, i, e = p(this._element).closest(Pi)[0],
                          o = m.getSelectorFromElement(this._element);
                      if (e) {
                          var r = "UL" === e.nodeName || "OL" === e.nodeName ? ji : Hi;
                          i = (i = p.makeArray(p(e).find(r)))[i.length - 1]
                      }
                      var s = p.Event(Ii.HIDE, {
                              relatedTarget: this._element
                          }),
                          a = p.Event(Ii.SHOW, {
                              relatedTarget: i
                          });
                      if (i && p(i).trigger(s), p(this._element).trigger(a), !a.isDefaultPrevented() && !s.isDefaultPrevented()) {
                          o && (t = document.querySelector(o)), this._activate(this._element, e);
                          var l = function () {
                              var t = p.Event(Ii.HIDDEN, {
                                      relatedTarget: n._element
                                  }),
                                  e = p.Event(Ii.SHOWN, {
                                      relatedTarget: i
                                  });
                              p(i).trigger(t), p(n._element).trigger(e)
                          };
                          t ? this._activate(t, t.parentNode, l) : l()
                      }
                  }
              }, t.dispose = function () {
                  p.removeData(this._element, Ti), this._element = null
              }, t._activate = function (t, e, n) {
                  var i = this,
                      o = (!e || "UL" !== e.nodeName && "OL" !== e.nodeName ? p(e).children(Hi) : p(e).find(ji))[0],
                      r = n && o && p(o).hasClass(ki),
                      s = function () {
                          return i._transitionComplete(t, o, n)
                      };
                  if (o && r) {
                      var a = m.getTransitionDurationFromElement(o);
                      p(o).removeClass(Li).one(m.TRANSITION_END, s).emulateTransitionEnd(a)
                  } else s()
              }, t._transitionComplete = function (t, e, n) {
                  if (e) {
                      p(e).removeClass(Oi);
                      var i = p(e.parentNode).find(Mi)[0];
                      i && p(i).removeClass(Oi), "tab" === e.getAttribute("role") && e.setAttribute("aria-selected", !1)
                  }
                  if (p(t).addClass(Oi), "tab" === t.getAttribute("role") && t.setAttribute("aria-selected", !0), m.reflow(t), t.classList.contains(ki) && t.classList.add(Li), t.parentNode && p(t.parentNode).hasClass(Ai)) {
                      var o = p(t).closest(xi)[0];
                      if (o) {
                          var r = [].slice.call(o.querySelectorAll(Fi));
                          p(r).addClass(Oi)
                      }
                      t.setAttribute("aria-expanded", !0)
                  }
                  n && n()
              }, i._jQueryInterface = function (n) {
                  return this.each(function () {
                      var t = p(this),
                          e = t.data(Ti);
                      if (e || (e = new i(this), t.data(Ti, e)), "string" == typeof n) {
                          if ("undefined" == typeof e[n]) throw new TypeError('No method named "' + n + '"');
                          e[n]()
                      }
                  })
              }, s(i, null, [{
                  key: "VERSION",
                  get: function () {
                      return "4.3.1"
                  }
              }]), i
          }();
      p(document).on(Ii.CLICK_DATA_API, Ri, function (t) {
          t.preventDefault(), Wi._jQueryInterface.call(p(this), "show")
      }), p.fn.tab = Wi._jQueryInterface, p.fn.tab.Constructor = Wi, p.fn.tab.noConflict = function () {
          return p.fn.tab = Di, Wi._jQueryInterface
      };
      var Ui = "toast",
          Bi = "bs.toast",
          qi = "." + Bi,
          Ki = p.fn[Ui],
          Qi = {
              CLICK_DISMISS: "click.dismiss" + qi,
              HIDE: "hide" + qi,
              HIDDEN: "hidden" + qi,
              SHOW: "show" + qi,
              SHOWN: "shown" + qi
          },
          Vi = "fade",
          Yi = "hide",
          zi = "show",
          Xi = "showing",
          Gi = {
              animation: "boolean",
              autohide: "boolean",
              delay: "number"
          },
          $i = {
              animation: !0,
              autohide: !0,
              delay: 500
          },
          Ji = '[data-dismiss="toast"]',
          Zi = function () {
              function i(t, e) {
                  this._element = t, this._config = this._getConfig(e), this._timeout = null, this._setListeners()
              }
              var t = i.prototype;
              return t.show = function () {
                  var t = this;
                  p(this._element).trigger(Qi.SHOW), this._config.animation && this._element.classList.add(Vi);
                  var e = function () {
                      t._element.classList.remove(Xi), t._element.classList.add(zi), p(t._element).trigger(Qi.SHOWN), t._config.autohide && t.hide()
                  };
                  if (this._element.classList.remove(Yi), this._element.classList.add(Xi), this._config.animation) {
                      var n = m.getTransitionDurationFromElement(this._element);
                      p(this._element).one(m.TRANSITION_END, e).emulateTransitionEnd(n)
                  } else e()
              }, t.hide = function (t) {
                  var e = this;
                  this._element.classList.contains(zi) && (p(this._element).trigger(Qi.HIDE), t ? this._close() : this._timeout = setTimeout(function () {
                      e._close()
                  }, this._config.delay))
              }, t.dispose = function () {
                  clearTimeout(this._timeout), this._timeout = null, this._element.classList.contains(zi) && this._element.classList.remove(zi), p(this._element).off(Qi.CLICK_DISMISS), p.removeData(this._element, Bi), this._element = null, this._config = null
              }, t._getConfig = function (t) {
                  return t = l({}, $i, p(this._element).data(), "object" == typeof t && t ? t : {}), m.typeCheckConfig(Ui, t, this.constructor.DefaultType), t
              }, t._setListeners = function () {
                  var t = this;
                  p(this._element).on(Qi.CLICK_DISMISS, Ji, function () {
                      return t.hide(!0)
                  })
              }, t._close = function () {
                  var t = this,
                      e = function () {
                          t._element.classList.add(Yi), p(t._element).trigger(Qi.HIDDEN)
                      };
                  if (this._element.classList.remove(zi), this._config.animation) {
                      var n = m.getTransitionDurationFromElement(this._element);
                      p(this._element).one(m.TRANSITION_END, e).emulateTransitionEnd(n)
                  } else e()
              }, i._jQueryInterface = function (n) {
                  return this.each(function () {
                      var t = p(this),
                          e = t.data(Bi);
                      if (e || (e = new i(this, "object" == typeof n && n), t.data(Bi, e)), "string" == typeof n) {
                          if ("undefined" == typeof e[n]) throw new TypeError('No method named "' + n + '"');
                          e[n](this)
                      }
                  })
              }, s(i, null, [{
                  key: "VERSION",
                  get: function () {
                      return "4.3.1"
                  }
              }, {
                  key: "DefaultType",
                  get: function () {
                      return Gi
                  }
              }, {
                  key: "Default",
                  get: function () {
                      return $i
                  }
              }]), i
          }();
      p.fn[Ui] = Zi._jQueryInterface, p.fn[Ui].Constructor = Zi, p.fn[Ui].noConflict = function () {
              return p.fn[Ui] = Ki, Zi._jQueryInterface
          },
          function () {
              if ("undefined" == typeof p) throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");
              var t = p.fn.jquery.split(" ")[0].split(".");
              if (t[0] < 2 && t[1] < 9 || 1 === t[0] && 9 === t[1] && t[2] < 1 || 4 <= t[0]) throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")
          }(), t.Util = m, t.Alert = g, t.Button = k, t.Carousel = at, t.Collapse = Ct, t.Dropdown = Xe, t.Modal = gn, t.Popover = ii, t.Scrollspy = Ci, t.Tab = Wi, t.Toast = Zi, t.Tooltip = qn, Object.defineProperty(t, "__esModule", {
              value: !0
          })
  });
  //# sourceMappingURL=bootstrap.bundle.min.js.map
  /*!
   * Datepicker for Bootstrap v1.9.0 (https://github.com/uxsolutions/bootstrap-datepicker)
   *
   * Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
   */
  
  (function (factory) {
      if (typeof define === 'function' && define.amd) {
          define(['jquery'], factory);
      } else if (typeof exports === 'object') {
          factory(require('jquery'));
      } else {
          factory(jQuery);
      }
  }(function ($, undefined) {
      function UTCDate() {
          return new Date(Date.UTC.apply(Date, arguments));
      }
  
      function UTCToday() {
          var today = new Date();
          return UTCDate(today.getFullYear(), today.getMonth(), today.getDate());
      }
  
      function isUTCEquals(date1, date2) {
          return (
              date1.getUTCFullYear() === date2.getUTCFullYear() &&
              date1.getUTCMonth() === date2.getUTCMonth() &&
              date1.getUTCDate() === date2.getUTCDate()
          );
      }
  
      function alias(method, deprecationMsg) {
          return function () {
              if (deprecationMsg !== undefined) {
                  $.fn.datepicker.deprecated(deprecationMsg);
              }
  
              return this[method].apply(this, arguments);
          };
      }
  
      function isValidDate(d) {
          return d && !isNaN(d.getTime());
      }
  
      var DateArray = (function () {
          var extras = {
              get: function (i) {
                  return this.slice(i)[0];
              },
              contains: function (d) {
                  // Array.indexOf is not cross-browser;
                  // $.inArray doesn't work with Dates
                  var val = d && d.valueOf();
                  for (var i = 0, l = this.length; i < l; i++)
                      // Use date arithmetic to allow dates with different times to match
                      if (0 <= this[i].valueOf() - val && this[i].valueOf() - val < 1000 * 60 * 60 * 24)
                          return i;
                  return -1;
              },
              remove: function (i) {
                  this.splice(i, 1);
              },
              replace: function (new_array) {
                  if (!new_array)
                      return;
                  if (!$.isArray(new_array))
                      new_array = [new_array];
                  this.clear();
                  this.push.apply(this, new_array);
              },
              clear: function () {
                  this.length = 0;
              },
              copy: function () {
                  var a = new DateArray();
                  a.replace(this);
                  return a;
              }
          };
  
          return function () {
              var a = [];
              a.push.apply(a, arguments);
              $.extend(a, extras);
              return a;
          };
      })();
  
  
      // Picker object
  
      var Datepicker = function (element, options) {
          $.data(element, 'datepicker', this);
  
          this._events = [];
          this._secondaryEvents = [];
  
          this._process_options(options);
  
          this.dates = new DateArray();
          this.viewDate = this.o.defaultViewDate;
          this.focusDate = null;
  
          this.element = $(element);
          this.isInput = this.element.is('input');
          this.inputField = this.isInput ? this.element : this.element.find('input');
          this.component = this.element.hasClass('date') ? this.element.find('.add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn') : false;
          if (this.component && this.component.length === 0)
              this.component = false;
          this.isInline = !this.component && this.element.is('div');
  
          this.picker = $(DPGlobal.template);
  
          // Checking templates and inserting
          if (this._check_template(this.o.templates.leftArrow)) {
              this.picker.find('.prev').html(this.o.templates.leftArrow);
          }
  
          if (this._check_template(this.o.templates.rightArrow)) {
              this.picker.find('.next').html(this.o.templates.rightArrow);
          }
  
          this._buildEvents();
          this._attachEvents();
  
          if (this.isInline) {
              this.picker.addClass('datepicker-inline').appendTo(this.element);
          } else {
              this.picker.addClass('datepicker-dropdown dropdown-menu');
          }
  
          if (this.o.rtl) {
              this.picker.addClass('datepicker-rtl');
          }
  
          if (this.o.calendarWeeks) {
              this.picker.find('.datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear')
                  .attr('colspan', function (i, val) {
                      return Number(val) + 1;
                  });
          }
  
          this._process_options({
              startDate: this._o.startDate,
              endDate: this._o.endDate,
              daysOfWeekDisabled: this.o.daysOfWeekDisabled,
              daysOfWeekHighlighted: this.o.daysOfWeekHighlighted,
              datesDisabled: this.o.datesDisabled
          });
  
          this._allow_update = false;
          this.setViewMode(this.o.startView);
          this._allow_update = true;
  
          this.fillDow();
          this.fillMonths();
  
          this.update();
  
          if (this.isInline) {
              this.show();
          }
      };
  
      Datepicker.prototype = {
          constructor: Datepicker,
  
          _resolveViewName: function (view) {
              $.each(DPGlobal.viewModes, function (i, viewMode) {
                  if (view === i || $.inArray(view, viewMode.names) !== -1) {
                      view = i;
                      return false;
                  }
              });
  
              return view;
          },
  
          _resolveDaysOfWeek: function (daysOfWeek) {
              if (!$.isArray(daysOfWeek))
                  daysOfWeek = daysOfWeek.split(/[,\s]*/);
              return $.map(daysOfWeek, Number);
          },
  
          _check_template: function (tmp) {
              try {
                  // If empty
                  if (tmp === undefined || tmp === "") {
                      return false;
                  }
                  // If no html, everything ok
                  if ((tmp.match(/[<>]/g) || []).length <= 0) {
                      return true;
                  }
                  // Checking if html is fine
                  var jDom = $(tmp);
                  return jDom.length > 0;
              } catch (ex) {
                  return false;
              }
          },
  
          _process_options: function (opts) {
              // Store raw options for reference
              this._o = $.extend({}, this._o, opts);
              // Processed options
              var o = this.o = $.extend({}, this._o);
  
              // Check if "de-DE" style date is available, if not language should
              // fallback to 2 letter code eg "de"
              var lang = o.language;
              if (!dates[lang]) {
                  lang = lang.split('-')[0];
                  if (!dates[lang])
                      lang = defaults.language;
              }
              o.language = lang;
  
              // Retrieve view index from any aliases
              o.startView = this._resolveViewName(o.startView);
              o.minViewMode = this._resolveViewName(o.minViewMode);
              o.maxViewMode = this._resolveViewName(o.maxViewMode);
  
              // Check view is between min and max
              o.startView = Math.max(this.o.minViewMode, Math.min(this.o.maxViewMode, o.startView));
  
              // true, false, or Number > 0
              if (o.multidate !== true) {
                  o.multidate = Number(o.multidate) || false;
                  if (o.multidate !== false)
                      o.multidate = Math.max(0, o.multidate);
              }
              o.multidateSeparator = String(o.multidateSeparator);
  
              o.weekStart %= 7;
              o.weekEnd = (o.weekStart + 6) % 7;
  
              var format = DPGlobal.parseFormat(o.format);
              if (o.startDate !== -Infinity) {
                  if (!!o.startDate) {
                      if (o.startDate instanceof Date)
                          o.startDate = this._local_to_utc(this._zero_time(o.startDate));
                      else
                          o.startDate = DPGlobal.parseDate(o.startDate, format, o.language, o.assumeNearbyYear);
                  } else {
                      o.startDate = -Infinity;
                  }
              }
              if (o.endDate !== Infinity) {
                  if (!!o.endDate) {
                      if (o.endDate instanceof Date)
                          o.endDate = this._local_to_utc(this._zero_time(o.endDate));
                      else
                          o.endDate = DPGlobal.parseDate(o.endDate, format, o.language, o.assumeNearbyYear);
                  } else {
                      o.endDate = Infinity;
                  }
              }
  
              o.daysOfWeekDisabled = this._resolveDaysOfWeek(o.daysOfWeekDisabled || []);
              o.daysOfWeekHighlighted = this._resolveDaysOfWeek(o.daysOfWeekHighlighted || []);
  
              o.datesDisabled = o.datesDisabled || [];
              if (!$.isArray(o.datesDisabled)) {
                  o.datesDisabled = o.datesDisabled.split(',');
              }
              o.datesDisabled = $.map(o.datesDisabled, function (d) {
                  return DPGlobal.parseDate(d, format, o.language, o.assumeNearbyYear);
              });
  
              var plc = String(o.orientation).toLowerCase().split(/\s+/g),
                  _plc = o.orientation.toLowerCase();
              plc = $.grep(plc, function (word) {
                  return /^auto|left|right|top|bottom$/.test(word);
              });
              o.orientation = {
                  x: 'auto',
                  y: 'auto'
              };
              if (!_plc || _plc === 'auto')
              ; // no action
              else if (plc.length === 1) {
                  switch (plc[0]) {
                      case 'top':
                      case 'bottom':
                          o.orientation.y = plc[0];
                          break;
                      case 'left':
                      case 'right':
                          o.orientation.x = plc[0];
                          break;
                  }
              } else {
                  _plc = $.grep(plc, function (word) {
                      return /^left|right$/.test(word);
                  });
                  o.orientation.x = _plc[0] || 'auto';
  
                  _plc = $.grep(plc, function (word) {
                      return /^top|bottom$/.test(word);
                  });
                  o.orientation.y = _plc[0] || 'auto';
              }
              if (o.defaultViewDate instanceof Date || typeof o.defaultViewDate === 'string') {
                  o.defaultViewDate = DPGlobal.parseDate(o.defaultViewDate, format, o.language, o.assumeNearbyYear);
              } else if (o.defaultViewDate) {
                  var year = o.defaultViewDate.year || new Date().getFullYear();
                  var month = o.defaultViewDate.month || 0;
                  var day = o.defaultViewDate.day || 1;
                  o.defaultViewDate = UTCDate(year, month, day);
              } else {
                  o.defaultViewDate = UTCToday();
              }
          },
          _applyEvents: function (evs) {
              for (var i = 0, el, ch, ev; i < evs.length; i++) {
                  el = evs[i][0];
                  if (evs[i].length === 2) {
                      ch = undefined;
                      ev = evs[i][1];
                  } else if (evs[i].length === 3) {
                      ch = evs[i][1];
                      ev = evs[i][2];
                  }
                  el.on(ev, ch);
              }
          },
          _unapplyEvents: function (evs) {
              for (var i = 0, el, ev, ch; i < evs.length; i++) {
                  el = evs[i][0];
                  if (evs[i].length === 2) {
                      ch = undefined;
                      ev = evs[i][1];
                  } else if (evs[i].length === 3) {
                      ch = evs[i][1];
                      ev = evs[i][2];
                  }
                  el.off(ev, ch);
              }
          },
          _buildEvents: function () {
              var events = {
                  keyup: $.proxy(function (e) {
                      if ($.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1)
                          this.update();
                  }, this),
                  keydown: $.proxy(this.keydown, this),
                  paste: $.proxy(this.paste, this)
              };
  
              if (this.o.showOnFocus === true) {
                  events.focus = $.proxy(this.show, this);
              }
  
              if (this.isInput) { // single input
                  this._events = [
                      [this.element, events]
                  ];
              }
              // component: input + button
              else if (this.component && this.inputField.length) {
                  this._events = [
                      // For components that are not readonly, allow keyboard nav
                      [this.inputField, events],
                      [this.component, {
                          click: $.proxy(this.show, this)
                      }]
                  ];
              } else {
                  this._events = [
  					[this.element, {
                          click: $.proxy(this.show, this),
                          keydown: $.proxy(this.keydown, this)
  					}]
  				];
              }
              this._events.push(
                  // Component: listen for blur on element descendants
  				[this.element, '*', {
                      blur: $.proxy(function (e) {
                          this._focused_from = e.target;
                      }, this)
  				}],
                  // Input: listen for blur on element
  				[this.element, {
                      blur: $.proxy(function (e) {
                          this._focused_from = e.target;
                      }, this)
  				}]
              );
  
              if (this.o.immediateUpdates) {
                  // Trigger input updates immediately on changed year/month
                  this._events.push([this.element, {
                      'changeYear changeMonth': $.proxy(function (e) {
                          this.update(e.date);
                      }, this)
  				}]);
              }
  
              this._secondaryEvents = [
  				[this.picker, {
                      click: $.proxy(this.click, this)
  				}],
  				[this.picker, '.prev, .next', {
                      click: $.proxy(this.navArrowsClick, this)
  				}],
  				[this.picker, '.day:not(.disabled)', {
                      click: $.proxy(this.dayCellClick, this)
  				}],
  				[$(window), {
                      resize: $.proxy(this.place, this)
  				}],
  				[$(document), {
                      'mousedown touchstart': $.proxy(function (e) {
                          // Clicked outside the datepicker, hide it
                          if (!(
                                  this.element.is(e.target) ||
                                  this.element.find(e.target).length ||
                                  this.picker.is(e.target) ||
                                  this.picker.find(e.target).length ||
                                  this.isInline
                              )) {
                              this.hide();
                          }
                      }, this)
  				}]
  			];
          },
          _attachEvents: function () {
              this._detachEvents();
              this._applyEvents(this._events);
          },
          _detachEvents: function () {
              this._unapplyEvents(this._events);
          },
          _attachSecondaryEvents: function () {
              this._detachSecondaryEvents();
              this._applyEvents(this._secondaryEvents);
          },
          _detachSecondaryEvents: function () {
              this._unapplyEvents(this._secondaryEvents);
          },
          _trigger: function (event, altdate) {
              var date = altdate || this.dates.get(-1),
                  local_date = this._utc_to_local(date);
  
              this.element.trigger({
                  type: event,
                  date: local_date,
                  viewMode: this.viewMode,
                  dates: $.map(this.dates, this._utc_to_local),
                  format: $.proxy(function (ix, format) {
                      if (arguments.length === 0) {
                          ix = this.dates.length - 1;
                          format = this.o.format;
                      } else if (typeof ix === 'string') {
                          format = ix;
                          ix = this.dates.length - 1;
                      }
                      format = format || this.o.format;
                      var date = this.dates.get(ix);
                      return DPGlobal.formatDate(date, format, this.o.language);
                  }, this)
              });
          },
  
          show: function () {
              if (this.inputField.is(':disabled') || (this.inputField.prop('readonly') && this.o.enableOnReadonly === false))
                  return;
              if (!this.isInline)
                  this.picker.appendTo(this.o.container);
              this.place();
              this.picker.show();
              this._attachSecondaryEvents();
              this._trigger('show');
              if ((window.navigator.msMaxTouchPoints || 'ontouchstart' in document) && this.o.disableTouchKeyboard) {
                  $(this.element).blur();
              }
              return this;
          },
  
          hide: function () {
              if (this.isInline || !this.picker.is(':visible'))
                  return this;
              this.focusDate = null;
              this.picker.hide().detach();
              this._detachSecondaryEvents();
              this.setViewMode(this.o.startView);
  
              if (this.o.forceParse && this.inputField.val())
                  this.setValue();
              this._trigger('hide');
              return this;
          },
  
          destroy: function () {
              this.hide();
              this._detachEvents();
              this._detachSecondaryEvents();
              this.picker.remove();
              delete this.element.data().datepicker;
              if (!this.isInput) {
                  delete this.element.data().date;
              }
              return this;
          },
  
          paste: function (e) {
              var dateString;
              if (e.originalEvent.clipboardData && e.originalEvent.clipboardData.types &&
                  $.inArray('text/plain', e.originalEvent.clipboardData.types) !== -1) {
                  dateString = e.originalEvent.clipboardData.getData('text/plain');
              } else if (window.clipboardData) {
                  dateString = window.clipboardData.getData('Text');
              } else {
                  return;
              }
              this.setDate(dateString);
              this.update();
              e.preventDefault();
          },
  
          _utc_to_local: function (utc) {
              if (!utc) {
                  return utc;
              }
  
              var local = new Date(utc.getTime() + (utc.getTimezoneOffset() * 60000));
  
              if (local.getTimezoneOffset() !== utc.getTimezoneOffset()) {
                  local = new Date(utc.getTime() + (local.getTimezoneOffset() * 60000));
              }
  
              return local;
          },
          _local_to_utc: function (local) {
              return local && new Date(local.getTime() - (local.getTimezoneOffset() * 60000));
          },
          _zero_time: function (local) {
              return local && new Date(local.getFullYear(), local.getMonth(), local.getDate());
          },
          _zero_utc_time: function (utc) {
              return utc && UTCDate(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate());
          },
  
          getDates: function () {
              return $.map(this.dates, this._utc_to_local);
          },
  
          getUTCDates: function () {
              return $.map(this.dates, function (d) {
                  return new Date(d);
              });
          },
  
          getDate: function () {
              return this._utc_to_local(this.getUTCDate());
          },
  
          getUTCDate: function () {
              var selected_date = this.dates.get(-1);
              if (selected_date !== undefined) {
                  return new Date(selected_date);
              } else {
                  return null;
              }
          },
  
          clearDates: function () {
              this.inputField.val('');
              this.update();
              this._trigger('changeDate');
  
              if (this.o.autoclose) {
                  this.hide();
              }
          },
  
          setDates: function () {
              var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
              this.update.apply(this, args);
              this._trigger('changeDate');
              this.setValue();
              return this;
          },
  
          setUTCDates: function () {
              var args = $.isArray(arguments[0]) ? arguments[0] : arguments;
              this.setDates.apply(this, $.map(args, this._utc_to_local));
              return this;
          },
  
          setDate: alias('setDates'),
          setUTCDate: alias('setUTCDates'),
          remove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead'),
  
          setValue: function () {
              var formatted = this.getFormattedDate();
              this.inputField.val(formatted);
              return this;
          },
  
          getFormattedDate: function (format) {
              if (format === undefined)
                  format = this.o.format;
  
              var lang = this.o.language;
              return $.map(this.dates, function (d) {
                  return DPGlobal.formatDate(d, format, lang);
              }).join(this.o.multidateSeparator);
          },
  
          getStartDate: function () {
              return this.o.startDate;
          },
  
          setStartDate: function (startDate) {
              this._process_options({
                  startDate: startDate
              });
              this.update();
              this.updateNavArrows();
              return this;
          },
  
          getEndDate: function () {
              return this.o.endDate;
          },
  
          setEndDate: function (endDate) {
              this._process_options({
                  endDate: endDate
              });
              this.update();
              this.updateNavArrows();
              return this;
          },
  
          setDaysOfWeekDisabled: function (daysOfWeekDisabled) {
              this._process_options({
                  daysOfWeekDisabled: daysOfWeekDisabled
              });
              this.update();
              return this;
          },
  
          setDaysOfWeekHighlighted: function (daysOfWeekHighlighted) {
              this._process_options({
                  daysOfWeekHighlighted: daysOfWeekHighlighted
              });
              this.update();
              return this;
          },
  
          setDatesDisabled: function (datesDisabled) {
              this._process_options({
                  datesDisabled: datesDisabled
              });
              this.update();
              return this;
          },
  
          place: function () {
              if (this.isInline)
                  return this;
              var calendarWidth = this.picker.outerWidth(),
                  calendarHeight = this.picker.outerHeight(),
                  visualPadding = 10,
                  container = $(this.o.container),
                  windowWidth = container.width(),
                  scrollTop = this.o.container === 'body' ? $(document).scrollTop() : container.scrollTop(),
                  appendOffset = container.offset();
  
              var parentsZindex = [0];
              this.element.parents().each(function () {
                  var itemZIndex = $(this).css('z-index');
                  if (itemZIndex !== 'auto' && Number(itemZIndex) !== 0) parentsZindex.push(Number(itemZIndex));
              });
              var zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset;
              var offset = this.component ? this.component.parent().offset() : this.element.offset();
              var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false);
              var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false);
              var left = offset.left - appendOffset.left;
              var top = offset.top - appendOffset.top;
  
              if (this.o.container !== 'body') {
                  top += scrollTop;
              }
  
              this.picker.removeClass(
                  'datepicker-orient-top datepicker-orient-bottom ' +
                  'datepicker-orient-right datepicker-orient-left'
              );
  
              if (this.o.orientation.x !== 'auto') {
                  this.picker.addClass('datepicker-orient-' + this.o.orientation.x);
                  if (this.o.orientation.x === 'right')
                      left -= calendarWidth - width;
              }
              // auto x orientation is best-placement: if it crosses a window
              // edge, fudge it sideways
              else {
                  if (offset.left < 0) {
                      // component is outside the window on the left side. Move it into visible range
                      this.picker.addClass('datepicker-orient-left');
                      left -= offset.left - visualPadding;
                  } else if (left + calendarWidth > windowWidth) {
                      // the calendar passes the widow right edge. Align it to component right side
                      this.picker.addClass('datepicker-orient-right');
                      left += width - calendarWidth;
                  } else {
                      if (this.o.rtl) {
                          // Default to right
                          this.picker.addClass('datepicker-orient-right');
                      } else {
                          // Default to left
                          this.picker.addClass('datepicker-orient-left');
                      }
                  }
              }
  
              // auto y orientation is best-situation: top or bottom, no fudging,
              // decision based on which shows more of the calendar
              var yorient = this.o.orientation.y,
                  top_overflow;
              if (yorient === 'auto') {
                  top_overflow = -scrollTop + top - calendarHeight;
                  yorient = top_overflow < 0 ? 'bottom' : 'top';
              }
  
              this.picker.addClass('datepicker-orient-' + yorient);
              if (yorient === 'top')
                  top -= calendarHeight + parseInt(this.picker.css('padding-top'));
              else
                  top += height;
  
              if (this.o.rtl) {
                  var right = windowWidth - (left + width);
                  this.picker.css({
                      top: top,
                      right: right,
                      zIndex: zIndex
                  });
              } else {
                  this.picker.css({
                      top: top,
                      left: left,
                      zIndex: zIndex
                  });
              }
              return this;
          },
  
          _allow_update: true,
          update: function () {
              if (!this._allow_update)
                  return this;
  
              var oldDates = this.dates.copy(),
                  dates = [],
                  fromArgs = false;
              if (arguments.length) {
                  $.each(arguments, $.proxy(function (i, date) {
                      if (date instanceof Date)
                          date = this._local_to_utc(date);
                      dates.push(date);
                  }, this));
                  fromArgs = true;
              } else {
                  dates = this.isInput ?
                      this.element.val() :
                      this.element.data('date') || this.inputField.val();
                  if (dates && this.o.multidate)
                      dates = dates.split(this.o.multidateSeparator);
                  else
                      dates = [dates];
                  delete this.element.data().date;
              }
  
              dates = $.map(dates, $.proxy(function (date) {
                  return DPGlobal.parseDate(date, this.o.format, this.o.language, this.o.assumeNearbyYear);
              }, this));
              dates = $.grep(dates, $.proxy(function (date) {
                  return (
                      !this.dateWithinRange(date) ||
                      !date
                  );
              }, this), true);
              this.dates.replace(dates);
  
              if (this.o.updateViewDate) {
                  if (this.dates.length)
                      this.viewDate = new Date(this.dates.get(-1));
                  else if (this.viewDate < this.o.startDate)
                      this.viewDate = new Date(this.o.startDate);
                  else if (this.viewDate > this.o.endDate)
                      this.viewDate = new Date(this.o.endDate);
                  else
                      this.viewDate = this.o.defaultViewDate;
              }
  
              if (fromArgs) {
                  // setting date by clicking
                  this.setValue();
                  this.element.change();
              } else if (this.dates.length) {
                  // setting date by typing
                  if (String(oldDates) !== String(this.dates) && fromArgs) {
                      this._trigger('changeDate');
                      this.element.change();
                  }
              }
              if (!this.dates.length && oldDates.length) {
                  this._trigger('clearDate');
                  this.element.change();
              }
  
              this.fill();
              return this;
          },
  
          fillDow: function () {
              if (this.o.showWeekDays) {
                  var dowCnt = this.o.weekStart,
                      html = '<tr>';
                  if (this.o.calendarWeeks) {
                      html += '<th class="cw">&#160;</th>';
                  }
                  while (dowCnt < this.o.weekStart + 7) {
                      html += '<th class="dow';
                      if ($.inArray(dowCnt, this.o.daysOfWeekDisabled) !== -1)
                          html += ' disabled';
                      html += '">' + dates[this.o.language].daysMin[(dowCnt++) % 7] + '</th>';
                  }
                  html += '</tr>';
                  this.picker.find('.datepicker-days thead').append(html);
              }
          },
  
          fillMonths: function () {
              var localDate = this._utc_to_local(this.viewDate);
              var html = '';
              var focused;
              for (var i = 0; i < 12; i++) {
                  focused = localDate && localDate.getMonth() === i ? ' focused' : '';
                  html += '<span class="month' + focused + '">' + dates[this.o.language].monthsShort[i] + '</span>';
              }
              this.picker.find('.datepicker-months td').html(html);
          },
  
          setRange: function (range) {
              if (!range || !range.length)
                  delete this.range;
              else
                  this.range = $.map(range, function (d) {
                      return d.valueOf();
                  });
              this.fill();
          },
  
          getClassNames: function (date) {
              var cls = [],
                  year = this.viewDate.getUTCFullYear(),
                  month = this.viewDate.getUTCMonth(),
                  today = UTCToday();
              if (date.getUTCFullYear() < year || (date.getUTCFullYear() === year && date.getUTCMonth() < month)) {
                  cls.push('old');
              } else if (date.getUTCFullYear() > year || (date.getUTCFullYear() === year && date.getUTCMonth() > month)) {
                  cls.push('new');
              }
              if (this.focusDate && date.valueOf() === this.focusDate.valueOf())
                  cls.push('focused');
              // Compare internal UTC date with UTC today, not local today
              if (this.o.todayHighlight && isUTCEquals(date, today)) {
                  cls.push('today');
              }
              if (this.dates.contains(date) !== -1)
                  cls.push('active');
              if (!this.dateWithinRange(date)) {
                  cls.push('disabled');
              }
              if (this.dateIsDisabled(date)) {
                  cls.push('disabled', 'disabled-date');
              }
              if ($.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1) {
                  cls.push('highlighted');
              }
  
              if (this.range) {
                  if (date > this.range[0] && date < this.range[this.range.length - 1]) {
                      cls.push('range');
                  }
                  if ($.inArray(date.valueOf(), this.range) !== -1) {
                      cls.push('selected');
                  }
                  if (date.valueOf() === this.range[0]) {
                      cls.push('range-start');
                  }
                  if (date.valueOf() === this.range[this.range.length - 1]) {
                      cls.push('range-end');
                  }
              }
              return cls;
          },
  
          _fill_yearsView: function (selector, cssClass, factor, year, startYear, endYear, beforeFn) {
              var html = '';
              var step = factor / 10;
              var view = this.picker.find(selector);
              var startVal = Math.floor(year / factor) * factor;
              var endVal = startVal + step * 9;
              var focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step;
              var selected = $.map(this.dates, function (d) {
                  return Math.floor(d.getUTCFullYear() / step) * step;
              });
  
              var classes, tooltip, before;
              for (var currVal = startVal - step; currVal <= endVal + step; currVal += step) {
                  classes = [cssClass];
                  tooltip = null;
  
                  if (currVal === startVal - step) {
                      classes.push('old');
                  } else if (currVal === endVal + step) {
                      classes.push('new');
                  }
                  if ($.inArray(currVal, selected) !== -1) {
                      classes.push('active');
                  }
                  if (currVal < startYear || currVal > endYear) {
                      classes.push('disabled');
                  }
                  if (currVal === focusedVal) {
                      classes.push('focused');
                  }
  
                  if (beforeFn !== $.noop) {
                      before = beforeFn(new Date(currVal, 0, 1));
                      if (before === undefined) {
                          before = {};
                      } else if (typeof before === 'boolean') {
                          before = {
                              enabled: before
                          };
                      } else if (typeof before === 'string') {
                          before = {
                              classes: before
                          };
                      }
                      if (before.enabled === false) {
                          classes.push('disabled');
                      }
                      if (before.classes) {
                          classes = classes.concat(before.classes.split(/\s+/));
                      }
                      if (before.tooltip) {
                          tooltip = before.tooltip;
                      }
                  }
  
                  html += '<span class="' + classes.join(' ') + '"' + (tooltip ? ' title="' + tooltip + '"' : '') + '>' + currVal + '</span>';
              }
  
              view.find('.datepicker-switch').text(startVal + '-' + endVal);
              view.find('td').html(html);
          },
  
          fill: function () {
              var d = new Date(this.viewDate),
                  year = d.getUTCFullYear(),
                  month = d.getUTCMonth(),
                  startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,
                  startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,
                  endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,
                  endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,
                  todaytxt = dates[this.o.language].today || dates['en'].today || '',
                  cleartxt = dates[this.o.language].clear || dates['en'].clear || '',
                  titleFormat = dates[this.o.language].titleFormat || dates['en'].titleFormat,
                  todayDate = UTCToday(),
                  titleBtnVisible = (this.o.todayBtn === true || this.o.todayBtn === 'linked') && todayDate >= this.o.startDate && todayDate <= this.o.endDate && !this.weekOfDateIsDisabled(todayDate),
                  tooltip,
                  before;
              if (isNaN(year) || isNaN(month))
                  return;
              this.picker.find('.datepicker-days .datepicker-switch')
                  .text(DPGlobal.formatDate(d, titleFormat, this.o.language));
              this.picker.find('tfoot .today')
                  .text(todaytxt)
                  .css('display', titleBtnVisible ? 'table-cell' : 'none');
              this.picker.find('tfoot .clear')
                  .text(cleartxt)
                  .css('display', this.o.clearBtn === true ? 'table-cell' : 'none');
              this.picker.find('thead .datepicker-title')
                  .text(this.o.title)
                  .css('display', typeof this.o.title === 'string' && this.o.title !== '' ? 'table-cell' : 'none');
              this.updateNavArrows();
              this.fillMonths();
              var prevMonth = UTCDate(year, month, 0),
                  day = prevMonth.getUTCDate();
              prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.o.weekStart + 7) % 7);
              var nextMonth = new Date(prevMonth);
              if (prevMonth.getUTCFullYear() < 100) {
                  nextMonth.setUTCFullYear(prevMonth.getUTCFullYear());
              }
              nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);
              nextMonth = nextMonth.valueOf();
              var html = [];
              var weekDay, clsName;
              while (prevMonth.valueOf() < nextMonth) {
                  weekDay = prevMonth.getUTCDay();
                  if (weekDay === this.o.weekStart) {
                      html.push('<tr>');
                      if (this.o.calendarWeeks) {
                          // ISO 8601: First week contains first thursday.
                          // ISO also states week starts on Monday, but we can be more abstract here.
                          var
                              // Start of current week: based on weekstart/current date
                              ws = new Date(+prevMonth + (this.o.weekStart - weekDay - 7) % 7 * 864e5),
                              // Thursday of this week
                              th = new Date(Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5),
                              // First Thursday of year, year from thursday
                              yth = new Date(Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay()) % 7 * 864e5),
                              // Calendar week: ms between thursdays, div ms per day, div 7 days
                              calWeek = (th - yth) / 864e5 / 7 + 1;
                          html.push('<td class="cw">' + calWeek + '</td>');
                      }
                  }
                  clsName = this.getClassNames(prevMonth);
                  clsName.push('day');
  
                  var content = prevMonth.getUTCDate();
  
                  if (this.o.beforeShowDay !== $.noop) {
                      before = this.o.beforeShowDay(this._utc_to_local(prevMonth));
                      if (before === undefined)
                          before = {};
                      else if (typeof before === 'boolean')
                          before = {
                              enabled: before
                          };
                      else if (typeof before === 'string')
                          before = {
                              classes: before
                          };
                      if (before.enabled === false)
                          clsName.push('disabled');
                      if (before.classes)
                          clsName = clsName.concat(before.classes.split(/\s+/));
                      if (before.tooltip)
                          tooltip = before.tooltip;
                      if (before.content)
                          content = before.content;
                  }
  
                  //Check if uniqueSort exists (supported by jquery >=1.12 and >=2.2)
                  //Fallback to unique function for older jquery versions
                  if ($.isFunction($.uniqueSort)) {
                      clsName = $.uniqueSort(clsName);
                  } else {
                      clsName = $.unique(clsName);
                  }
  
                  html.push('<td class="' + clsName.join(' ') + '"' + (tooltip ? ' title="' + tooltip + '"' : '') + ' data-date="' + prevMonth.getTime().toString() + '">' + content + '</td>');
                  tooltip = null;
                  if (weekDay === this.o.weekEnd) {
                      html.push('</tr>');
                  }
                  prevMonth.setUTCDate(prevMonth.getUTCDate() + 1);
              }
              this.picker.find('.datepicker-days tbody').html(html.join(''));
  
              var monthsTitle = dates[this.o.language].monthsTitle || dates['en'].monthsTitle || 'Months';
              var months = this.picker.find('.datepicker-months')
                  .find('.datepicker-switch')
                  .text(this.o.maxViewMode < 2 ? monthsTitle : year)
                  .end()
                  .find('tbody span').removeClass('active');
  
              $.each(this.dates, function (i, d) {
                  if (d.getUTCFullYear() === year)
                      months.eq(d.getUTCMonth()).addClass('active');
              });
  
              if (year < startYear || year > endYear) {
                  months.addClass('disabled');
              }
              if (year === startYear) {
                  months.slice(0, startMonth).addClass('disabled');
              }
              if (year === endYear) {
                  months.slice(endMonth + 1).addClass('disabled');
              }
  
              if (this.o.beforeShowMonth !== $.noop) {
                  var that = this;
                  $.each(months, function (i, month) {
                      var moDate = new Date(year, i, 1);
                      var before = that.o.beforeShowMonth(moDate);
                      if (before === undefined)
                          before = {};
                      else if (typeof before === 'boolean')
                          before = {
                              enabled: before
                          };
                      else if (typeof before === 'string')
                          before = {
                              classes: before
                          };
                      if (before.enabled === false && !$(month).hasClass('disabled'))
                          $(month).addClass('disabled');
                      if (before.classes)
                          $(month).addClass(before.classes);
                      if (before.tooltip)
                          $(month).prop('title', before.tooltip);
                  });
              }
  
              // Generating decade/years picker
              this._fill_yearsView(
                  '.datepicker-years',
                  'year',
                  10,
                  year,
                  startYear,
                  endYear,
                  this.o.beforeShowYear
              );
  
              // Generating century/decades picker
              this._fill_yearsView(
                  '.datepicker-decades',
                  'decade',
                  100,
                  year,
                  startYear,
                  endYear,
                  this.o.beforeShowDecade
              );
  
              // Generating millennium/centuries picker
              this._fill_yearsView(
                  '.datepicker-centuries',
                  'century',
                  1000,
                  year,
                  startYear,
                  endYear,
                  this.o.beforeShowCentury
              );
          },
  
          updateNavArrows: function () {
              if (!this._allow_update)
                  return;
  
              var d = new Date(this.viewDate),
                  year = d.getUTCFullYear(),
                  month = d.getUTCMonth(),
                  startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity,
                  startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity,
                  endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity,
                  endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity,
                  prevIsDisabled,
                  nextIsDisabled,
                  factor = 1;
              switch (this.viewMode) {
                  case 4:
                      factor *= 10;
                      /* falls through */
                  case 3:
                      factor *= 10;
                      /* falls through */
                  case 2:
                      factor *= 10;
                      /* falls through */
                  case 1:
                      prevIsDisabled = Math.floor(year / factor) * factor <= startYear;
                      nextIsDisabled = Math.floor(year / factor) * factor + factor > endYear;
                      break;
                  case 0:
                      prevIsDisabled = year <= startYear && month <= startMonth;
                      nextIsDisabled = year >= endYear && month >= endMonth;
                      break;
              }
  
              this.picker.find('.prev').toggleClass('disabled', prevIsDisabled);
              this.picker.find('.next').toggleClass('disabled', nextIsDisabled);
          },
  
          click: function (e) {
              e.preventDefault();
              e.stopPropagation();
  
              var target, dir, day, year, month;
              target = $(e.target);
  
              // Clicked on the switch
              if (target.hasClass('datepicker-switch') && this.viewMode !== this.o.maxViewMode) {
                  this.setViewMode(this.viewMode + 1);
              }
  
              // Clicked on today button
              if (target.hasClass('today') && !target.hasClass('day')) {
                  this.setViewMode(0);
                  this._setDate(UTCToday(), this.o.todayBtn === 'linked' ? null : 'view');
              }
  
              // Clicked on clear button
              if (target.hasClass('clear')) {
                  this.clearDates();
              }
  
              if (!target.hasClass('disabled')) {
                  // Clicked on a month, year, decade, century
                  if (target.hasClass('month') ||
                      target.hasClass('year') ||
                      target.hasClass('decade') ||
                      target.hasClass('century')) {
                      this.viewDate.setUTCDate(1);
  
                      day = 1;
                      if (this.viewMode === 1) {
                          month = target.parent().find('span').index(target);
                          year = this.viewDate.getUTCFullYear();
                          this.viewDate.setUTCMonth(month);
                      } else {
                          month = 0;
                          year = Number(target.text());
                          this.viewDate.setUTCFullYear(year);
                      }
  
                      this._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate);
  
                      if (this.viewMode === this.o.minViewMode) {
                          this._setDate(UTCDate(year, month, day));
                      } else {
                          this.setViewMode(this.viewMode - 1);
                          this.fill();
                      }
                  }
              }
  
              if (this.picker.is(':visible') && this._focused_from) {
                  this._focused_from.focus();
              }
              delete this._focused_from;
          },
  
          dayCellClick: function (e) {
              var $target = $(e.currentTarget);
              var timestamp = $target.data('date');
              var date = new Date(timestamp);
  
              if (this.o.updateViewDate) {
                  if (date.getUTCFullYear() !== this.viewDate.getUTCFullYear()) {
                      this._trigger('changeYear', this.viewDate);
                  }
  
                  if (date.getUTCMonth() !== this.viewDate.getUTCMonth()) {
                      this._trigger('changeMonth', this.viewDate);
                  }
              }
              this._setDate(date);
          },
  
          // Clicked on prev or next
          navArrowsClick: function (e) {
              var $target = $(e.currentTarget);
              var dir = $target.hasClass('prev') ? -1 : 1;
              if (this.viewMode !== 0) {
                  dir *= DPGlobal.viewModes[this.viewMode].navStep * 12;
              }
              this.viewDate = this.moveMonth(this.viewDate, dir);
              this._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate);
              this.fill();
          },
  
          _toggle_multidate: function (date) {
              var ix = this.dates.contains(date);
              if (!date) {
                  this.dates.clear();
              }
  
              if (ix !== -1) {
                  if (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive) {
                      this.dates.remove(ix);
                  }
              } else if (this.o.multidate === false) {
                  this.dates.clear();
                  this.dates.push(date);
              } else {
                  this.dates.push(date);
              }
  
              if (typeof this.o.multidate === 'number')
                  while (this.dates.length > this.o.multidate)
                      this.dates.remove(0);
          },
  
          _setDate: function (date, which) {
              if (!which || which === 'date')
                  this._toggle_multidate(date && new Date(date));
              if ((!which && this.o.updateViewDate) || which === 'view')
                  this.viewDate = date && new Date(date);
  
              this.fill();
              this.setValue();
              if (!which || which !== 'view') {
                  this._trigger('changeDate');
              }
              this.inputField.trigger('change');
              if (this.o.autoclose && (!which || which === 'date')) {
                  this.hide();
              }
          },
  
          moveDay: function (date, dir) {
              var newDate = new Date(date);
              newDate.setUTCDate(date.getUTCDate() + dir);
  
              return newDate;
          },
  
          moveWeek: function (date, dir) {
              return this.moveDay(date, dir * 7);
          },
  
          moveMonth: function (date, dir) {
              if (!isValidDate(date))
                  return this.o.defaultViewDate;
              if (!dir)
                  return date;
              var new_date = new Date(date.valueOf()),
                  day = new_date.getUTCDate(),
                  month = new_date.getUTCMonth(),
                  mag = Math.abs(dir),
                  new_month, test;
              dir = dir > 0 ? 1 : -1;
              if (mag === 1) {
                  test = dir === -1
                      // If going back one month, make sure month is not current month
                      // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02)
                      ?
                      function () {
                          return new_date.getUTCMonth() === month;
                      }
                      // If going forward one month, make sure month is as expected
                      // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02)
                      :
                      function () {
                          return new_date.getUTCMonth() !== new_month;
                      };
                  new_month = month + dir;
                  new_date.setUTCMonth(new_month);
                  // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11
                  new_month = (new_month + 12) % 12;
              } else {
                  // For magnitudes >1, move one month at a time...
                  for (var i = 0; i < mag; i++)
                      // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)...
                      new_date = this.moveMonth(new_date, dir);
                  // ...then reset the day, keeping it in the new month
                  new_month = new_date.getUTCMonth();
                  new_date.setUTCDate(day);
                  test = function () {
                      return new_month !== new_date.getUTCMonth();
                  };
              }
              // Common date-resetting loop -- if date is beyond end of month, make it
              // end of month
              while (test()) {
                  new_date.setUTCDate(--day);
                  new_date.setUTCMonth(new_month);
              }
              return new_date;
          },
  
          moveYear: function (date, dir) {
              return this.moveMonth(date, dir * 12);
          },
  
          moveAvailableDate: function (date, dir, fn) {
              do {
                  date = this[fn](date, dir);
  
                  if (!this.dateWithinRange(date))
                      return false;
  
                  fn = 'moveDay';
              }
              while (this.dateIsDisabled(date));
  
              return date;
          },
  
          weekOfDateIsDisabled: function (date) {
              return $.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1;
          },
  
          dateIsDisabled: function (date) {
              return (
                  this.weekOfDateIsDisabled(date) ||
                  $.grep(this.o.datesDisabled, function (d) {
                      return isUTCEquals(date, d);
                  }).length > 0
              );
          },
  
          dateWithinRange: function (date) {
              return date >= this.o.startDate && date <= this.o.endDate;
          },
  
          keydown: function (e) {
              if (!this.picker.is(':visible')) {
                  if (e.keyCode === 40 || e.keyCode === 27) { // allow down to re-show picker
                      this.show();
                      e.stopPropagation();
                  }
                  return;
              }
              var dateChanged = false,
                  dir, newViewDate,
                  focusDate = this.focusDate || this.viewDate;
              switch (e.keyCode) {
                  case 27: // escape
                      if (this.focusDate) {
                          this.focusDate = null;
                          this.viewDate = this.dates.get(-1) || this.viewDate;
                          this.fill();
                      } else
                          this.hide();
                      e.preventDefault();
                      e.stopPropagation();
                      break;
                  case 37: // left
                  case 38: // up
                  case 39: // right
                  case 40: // down
                      if (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7)
                          break;
                      dir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1;
                      if (this.viewMode === 0) {
                          if (e.ctrlKey) {
                              newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');
  
                              if (newViewDate)
                                  this._trigger('changeYear', this.viewDate);
                          } else if (e.shiftKey) {
                              newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');
  
                              if (newViewDate)
                                  this._trigger('changeMonth', this.viewDate);
                          } else if (e.keyCode === 37 || e.keyCode === 39) {
                              newViewDate = this.moveAvailableDate(focusDate, dir, 'moveDay');
                          } else if (!this.weekOfDateIsDisabled(focusDate)) {
                              newViewDate = this.moveAvailableDate(focusDate, dir, 'moveWeek');
                          }
                      } else if (this.viewMode === 1) {
                          if (e.keyCode === 38 || e.keyCode === 40) {
                              dir = dir * 4;
                          }
                          newViewDate = this.moveAvailableDate(focusDate, dir, 'moveMonth');
                      } else if (this.viewMode === 2) {
                          if (e.keyCode === 38 || e.keyCode === 40) {
                              dir = dir * 4;
                          }
                          newViewDate = this.moveAvailableDate(focusDate, dir, 'moveYear');
                      }
                      if (newViewDate) {
                          this.focusDate = this.viewDate = newViewDate;
                          this.setValue();
                          this.fill();
                          e.preventDefault();
                      }
                      break;
                  case 13: // enter
                      if (!this.o.forceParse)
                          break;
                      focusDate = this.focusDate || this.dates.get(-1) || this.viewDate;
                      if (this.o.keyboardNavigation) {
                          this._toggle_multidate(focusDate);
                          dateChanged = true;
                      }
                      this.focusDate = null;
                      this.viewDate = this.dates.get(-1) || this.viewDate;
                      this.setValue();
                      this.fill();
                      if (this.picker.is(':visible')) {
                          e.preventDefault();
                          e.stopPropagation();
                          if (this.o.autoclose)
                              this.hide();
                      }
                      break;
                  case 9: // tab
                      this.focusDate = null;
                      this.viewDate = this.dates.get(-1) || this.viewDate;
                      this.fill();
                      this.hide();
                      break;
              }
              if (dateChanged) {
                  if (this.dates.length)
                      this._trigger('changeDate');
                  else
                      this._trigger('clearDate');
                  this.inputField.trigger('change');
              }
          },
  
          setViewMode: function (viewMode) {
              this.viewMode = viewMode;
              this.picker
                  .children('div')
                  .hide()
                  .filter('.datepicker-' + DPGlobal.viewModes[this.viewMode].clsName)
                  .show();
              this.updateNavArrows();
              this._trigger('changeViewMode', new Date(this.viewDate));
          }
      };
  
      var DateRangePicker = function (element, options) {
          $.data(element, 'datepicker', this);
          this.element = $(element);
          this.inputs = $.map(options.inputs, function (i) {
              return i.jquery ? i[0] : i;
          });
          delete options.inputs;
  
          this.keepEmptyValues = options.keepEmptyValues;
          delete options.keepEmptyValues;
  
          datepickerPlugin.call($(this.inputs), options)
              .on('changeDate', $.proxy(this.dateUpdated, this));
  
          this.pickers = $.map(this.inputs, function (i) {
              return $.data(i, 'datepicker');
          });
          this.updateDates();
      };
      DateRangePicker.prototype = {
          updateDates: function () {
              this.dates = $.map(this.pickers, function (i) {
                  return i.getUTCDate();
              });
              this.updateRanges();
          },
          updateRanges: function () {
              var range = $.map(this.dates, function (d) {
                  return d.valueOf();
              });
              $.each(this.pickers, function (i, p) {
                  p.setRange(range);
              });
          },
          clearDates: function () {
              $.each(this.pickers, function (i, p) {
                  p.clearDates();
              });
          },
          dateUpdated: function (e) {
              // `this.updating` is a workaround for preventing infinite recursion
              // between `changeDate` triggering and `setUTCDate` calling.  Until
              // there is a better mechanism.
              if (this.updating)
                  return;
              this.updating = true;
  
              var dp = $.data(e.target, 'datepicker');
  
              if (dp === undefined) {
                  return;
              }
  
              var new_date = dp.getUTCDate(),
                  keep_empty_values = this.keepEmptyValues,
                  i = $.inArray(e.target, this.inputs),
                  j = i - 1,
                  k = i + 1,
                  l = this.inputs.length;
              if (i === -1)
                  return;
  
              $.each(this.pickers, function (i, p) {
                  if (!p.getUTCDate() && (p === dp || !keep_empty_values))
                      p.setUTCDate(new_date);
              });
  
              if (new_date < this.dates[j]) {
                  // Date being moved earlier/left
                  while (j >= 0 && new_date < this.dates[j]) {
                      this.pickers[j--].setUTCDate(new_date);
                  }
              } else if (new_date > this.dates[k]) {
                  // Date being moved later/right
                  while (k < l && new_date > this.dates[k]) {
                      this.pickers[k++].setUTCDate(new_date);
                  }
              }
              this.updateDates();
  
              delete this.updating;
          },
          destroy: function () {
              $.map(this.pickers, function (p) {
                  p.destroy();
              });
              $(this.inputs).off('changeDate', this.dateUpdated);
              delete this.element.data().datepicker;
          },
          remove: alias('destroy', 'Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead')
      };
  
      function opts_from_el(el, prefix) {
          // Derive options from element data-attrs
          var data = $(el).data(),
              out = {},
              inkey,
              replace = new RegExp('^' + prefix.toLowerCase() + '([A-Z])');
          prefix = new RegExp('^' + prefix.toLowerCase());
  
          function re_lower(_, a) {
              return a.toLowerCase();
          }
          for (var key in data)
              if (prefix.test(key)) {
                  inkey = key.replace(replace, re_lower);
                  out[inkey] = data[key];
              }
          return out;
      }
  
      function opts_from_locale(lang) {
          // Derive options from locale plugins
          var out = {};
          // Check if "de-DE" style date is available, if not language should
          // fallback to 2 letter code eg "de"
          if (!dates[lang]) {
              lang = lang.split('-')[0];
              if (!dates[lang])
                  return;
          }
          var d = dates[lang];
          $.each(locale_opts, function (i, k) {
              if (k in d)
                  out[k] = d[k];
          });
          return out;
      }
  
      var old = $.fn.datepicker;
      var datepickerPlugin = function (option) {
          var args = Array.apply(null, arguments);
          args.shift();
          var internal_return;
          this.each(function () {
              var $this = $(this),
                  data = $this.data('datepicker'),
                  options = typeof option === 'object' && option;
              if (!data) {
                  var elopts = opts_from_el(this, 'date'),
                      // Preliminary otions
                      xopts = $.extend({}, defaults, elopts, options),
                      locopts = opts_from_locale(xopts.language),
                      // Options priority: js args, data-attrs, locales, defaults
                      opts = $.extend({}, defaults, locopts, elopts, options);
                  if ($this.hasClass('input-daterange') || opts.inputs) {
                      $.extend(opts, {
                          inputs: opts.inputs || $this.find('input').toArray()
                      });
                      data = new DateRangePicker(this, opts);
                  } else {
                      data = new Datepicker(this, opts);
                  }
                  $this.data('datepicker', data);
              }
              if (typeof option === 'string' && typeof data[option] === 'function') {
                  internal_return = data[option].apply(data, args);
              }
          });
  
          if (
              internal_return === undefined ||
              internal_return instanceof Datepicker ||
              internal_return instanceof DateRangePicker
          )
              return this;
  
          if (this.length > 1)
              throw new Error('Using only allowed for the collection of a single element (' + option + ' function)');
          else
              return internal_return;
      };
      $.fn.datepicker = datepickerPlugin;
  
      var defaults = $.fn.datepicker.defaults = {
          assumeNearbyYear: false,
          autoclose: false,
          beforeShowDay: $.noop,
          beforeShowMonth: $.noop,
          beforeShowYear: $.noop,
          beforeShowDecade: $.noop,
          beforeShowCentury: $.noop,
          calendarWeeks: false,
          clearBtn: false,
          toggleActive: false,
          daysOfWeekDisabled: [],
          daysOfWeekHighlighted: [],
          datesDisabled: [],
          endDate: Infinity,
          forceParse: true,
          format: 'mm/dd/yyyy',
          keepEmptyValues: false,
          keyboardNavigation: true,
          language: 'en',
          minViewMode: 0,
          maxViewMode: 4,
          multidate: false,
          multidateSeparator: ',',
          orientation: "auto",
          rtl: false,
          startDate: -Infinity,
          startView: 0,
          todayBtn: false,
          todayHighlight: false,
          updateViewDate: true,
          weekStart: 0,
          disableTouchKeyboard: false,
          enableOnReadonly: true,
          showOnFocus: true,
          zIndexOffset: 10,
          container: 'body',
          immediateUpdates: false,
          title: '',
          templates: {
              leftArrow: '&#x00AB;',
              rightArrow: '&#x00BB;'
          },
          showWeekDays: true
      };
      var locale_opts = $.fn.datepicker.locale_opts = [
  		'format',
  		'rtl',
  		'weekStart'
  	];
      $.fn.datepicker.Constructor = Datepicker;
      var dates = $.fn.datepicker.dates = {
          en: {
              days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
              daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
              daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
              months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
              monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
              today: "Today",
              clear: "Clear",
              titleFormat: "MM yyyy"
          }
      };
  
      var DPGlobal = {
          viewModes: [
              {
                  names: ['days', 'month'],
                  clsName: 'days',
                  e: 'changeMonth'
  			},
              {
                  names: ['months', 'year'],
                  clsName: 'months',
                  e: 'changeYear',
                  navStep: 1
  			},
              {
                  names: ['years', 'decade'],
                  clsName: 'years',
                  e: 'changeDecade',
                  navStep: 10
  			},
              {
                  names: ['decades', 'century'],
                  clsName: 'decades',
                  e: 'changeCentury',
                  navStep: 100
  			},
              {
                  names: ['centuries', 'millennium'],
                  clsName: 'centuries',
                  e: 'changeMillennium',
                  navStep: 1000
  			}
  		],
          validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g,
          nonpunctuation: /[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,
          parseFormat: function (format) {
              if (typeof format.toValue === 'function' && typeof format.toDisplay === 'function')
                  return format;
              // IE treats \0 as a string end in inputs (truncating the value),
              // so it's a bad format delimiter, anyway
              var separators = format.replace(this.validParts, '\0').split('\0'),
                  parts = format.match(this.validParts);
              if (!separators || !separators.length || !parts || parts.length === 0) {
                  throw new Error("Invalid date format.");
              }
              return {
                  separators: separators,
                  parts: parts
              };
          },
          parseDate: function (date, format, language, assumeNearby) {
              if (!date)
                  return undefined;
              if (date instanceof Date)
                  return date;
              if (typeof format === 'string')
                  format = DPGlobal.parseFormat(format);
              if (format.toValue)
                  return format.toValue(date, format, language);
              var fn_map = {
                      d: 'moveDay',
                      m: 'moveMonth',
                      w: 'moveWeek',
                      y: 'moveYear'
                  },
                  dateAliases = {
                      yesterday: '-1d',
                      today: '+0d',
                      tomorrow: '+1d'
                  },
                  parts, part, dir, i, fn;
              if (date in dateAliases) {
                  date = dateAliases[date];
              }
              if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(date)) {
                  parts = date.match(/([\-+]\d+)([dmwy])/gi);
                  date = new Date();
                  for (i = 0; i < parts.length; i++) {
                      part = parts[i].match(/([\-+]\d+)([dmwy])/i);
                      dir = Number(part[1]);
                      fn = fn_map[part[2].toLowerCase()];
                      date = Datepicker.prototype[fn](date, dir);
                  }
                  return Datepicker.prototype._zero_utc_time(date);
              }
  
              parts = date && date.match(this.nonpunctuation) || [];
  
              function applyNearbyYear(year, threshold) {
                  if (threshold === true)
                      threshold = 10;
  
                  // if year is 2 digits or less, than the user most likely is trying to get a recent century
                  if (year < 100) {
                      year += 2000;
                      // if the new year is more than threshold years in advance, use last century
                      if (year > ((new Date()).getFullYear() + threshold)) {
                          year -= 100;
                      }
                  }
  
                  return year;
              }
  
              var parsed = {},
                  setters_order = ['yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'd', 'dd'],
                  setters_map = {
                      yyyy: function (d, v) {
                          return d.setUTCFullYear(assumeNearby ? applyNearbyYear(v, assumeNearby) : v);
                      },
                      m: function (d, v) {
                          if (isNaN(d))
                              return d;
                          v -= 1;
                          while (v < 0) v += 12;
                          v %= 12;
                          d.setUTCMonth(v);
                          while (d.getUTCMonth() !== v)
                              d.setUTCDate(d.getUTCDate() - 1);
                          return d;
                      },
                      d: function (d, v) {
                          return d.setUTCDate(v);
                      }
                  },
                  val, filtered;
              setters_map['yy'] = setters_map['yyyy'];
              setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];
              setters_map['dd'] = setters_map['d'];
              date = UTCToday();
              var fparts = format.parts.slice();
              // Remove noop parts
              if (parts.length !== fparts.length) {
                  fparts = $(fparts).filter(function (i, p) {
                      return $.inArray(p, setters_order) !== -1;
                  }).toArray();
              }
              // Process remainder
              function match_part() {
                  var m = this.slice(0, parts[i].length),
                      p = parts[i].slice(0, m.length);
                  return m.toLowerCase() === p.toLowerCase();
              }
              if (parts.length === fparts.length) {
                  var cnt;
                  for (i = 0, cnt = fparts.length; i < cnt; i++) {
                      val = parseInt(parts[i], 10);
                      part = fparts[i];
                      if (isNaN(val)) {
                          switch (part) {
                              case 'MM':
                                  filtered = $(dates[language].months).filter(match_part);
                                  val = $.inArray(filtered[0], dates[language].months) + 1;
                                  break;
                              case 'M':
                                  filtered = $(dates[language].monthsShort).filter(match_part);
                                  val = $.inArray(filtered[0], dates[language].monthsShort) + 1;
                                  break;
                          }
                      }
                      parsed[part] = val;
                  }
                  var _date, s;
                  for (i = 0; i < setters_order.length; i++) {
                      s = setters_order[i];
                      if (s in parsed && !isNaN(parsed[s])) {
                          _date = new Date(date);
                          setters_map[s](_date, parsed[s]);
                          if (!isNaN(_date))
                              date = _date;
                      }
                  }
              }
              return date;
          },
          formatDate: function (date, format, language) {
              if (!date)
                  return '';
              if (typeof format === 'string')
                  format = DPGlobal.parseFormat(format);
              if (format.toDisplay)
                  return format.toDisplay(date, format, language);
              var val = {
                  d: date.getUTCDate(),
                  D: dates[language].daysShort[date.getUTCDay()],
                  DD: dates[language].days[date.getUTCDay()],
                  m: date.getUTCMonth() + 1,
                  M: dates[language].monthsShort[date.getUTCMonth()],
                  MM: dates[language].months[date.getUTCMonth()],
                  yy: date.getUTCFullYear().toString().substring(2),
                  yyyy: date.getUTCFullYear()
              };
              val.dd = (val.d < 10 ? '0' : '') + val.d;
              val.mm = (val.m < 10 ? '0' : '') + val.m;
              date = [];
              var seps = $.extend([], format.separators);
              for (var i = 0, cnt = format.parts.length; i <= cnt; i++) {
                  if (seps.length)
                      date.push(seps.shift());
                  date.push(val[format.parts[i]]);
              }
              return date.join('');
          },
          headTemplate: '<thead>' +
              '<tr>' +
              '<th colspan="7" class="datepicker-title"></th>' +
              '</tr>' +
              '<tr>' +
              '<th class="prev">' + defaults.templates.leftArrow + '</th>' +
              '<th colspan="5" class="datepicker-switch"></th>' +
              '<th class="next">' + defaults.templates.rightArrow + '</th>' +
              '</tr>' +
              '</thead>',
          contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>',
          footTemplate: '<tfoot>' +
              '<tr>' +
              '<th colspan="7" class="today"></th>' +
              '</tr>' +
              '<tr>' +
              '<th colspan="7" class="clear"></th>' +
              '</tr>' +
              '</tfoot>'
      };
      DPGlobal.template = '<div class="datepicker">' +
          '<div class="datepicker-days">' +
          '<table class="table-condensed">' +
          DPGlobal.headTemplate +
          '<tbody></tbody>' +
          DPGlobal.footTemplate +
          '</table>' +
          '</div>' +
          '<div class="datepicker-months">' +
          '<table class="table-condensed">' +
          DPGlobal.headTemplate +
          DPGlobal.contTemplate +
          DPGlobal.footTemplate +
          '</table>' +
          '</div>' +
          '<div class="datepicker-years">' +
          '<table class="table-condensed">' +
          DPGlobal.headTemplate +
          DPGlobal.contTemplate +
          DPGlobal.footTemplate +
          '</table>' +
          '</div>' +
          '<div class="datepicker-decades">' +
          '<table class="table-condensed">' +
          DPGlobal.headTemplate +
          DPGlobal.contTemplate +
          DPGlobal.footTemplate +
          '</table>' +
          '</div>' +
          '<div class="datepicker-centuries">' +
          '<table class="table-condensed">' +
          DPGlobal.headTemplate +
          DPGlobal.contTemplate +
          DPGlobal.footTemplate +
          '</table>' +
          '</div>' +
          '</div>';
  
      $.fn.datepicker.DPGlobal = DPGlobal;
  
  
      /* DATEPICKER NO CONFLICT
       * =================== */
  
      $.fn.datepicker.noConflict = function () {
          $.fn.datepicker = old;
          return this;
      };
  
      /* DATEPICKER VERSION
       * =================== */
      $.fn.datepicker.version = '1.9.0';
  
      $.fn.datepicker.deprecated = function (msg) {
          var console = window.console;
          if (console && console.warn) {
              console.warn('DEPRECATED: ' + msg);
          }
      };
  
  
      /* DATEPICKER DATA-API
       * ================== */
  
      $(document).on(
          'focus.datepicker.data-api click.datepicker.data-api',
          '[data-provide="datepicker"]',
          function (e) {
              var $this = $(this);
              if ($this.data('datepicker'))
                  return;
              e.preventDefault();
              // component click requires us to explicitly show it
              datepickerPlugin.call($this, 'show');
          }
      );
      $(function () {
          datepickerPlugin.call($('[data-provide="datepicker-inline"]'));
      });
  
  }));
  
  /*!
   * Bootstrap-select v1.13.5 (https://developer.snapappointments.com/bootstrap-select)
   *
   * Copyright 2012-2018 SnapAppointments, LLC
   * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE)
   */
  
  ! function (e, t) {
      void 0 === e && void 0 !== window && (e = window), "function" == typeof define && define.amd ? define(["jquery"], function (e) {
          return t(e)
      }) : "object" == typeof module && module.exports ? module.exports = t(require("jquery")) : t(e.jQuery)
  }(this, function (e) {
      ! function (G) {
          "use strict";
          "classList" in document.createElement("_") || function (e) {
              if ("Element" in e) {
                  var t = "classList",
                      i = "prototype",
                      n = e.Element[i],
                      s = Object,
                      o = function () {
                          var i = G(this);
                          return {
                              add: function (e) {
                                  return i.addClass(e)
                              },
                              remove: function (e) {
                                  return i.removeClass(e)
                              },
                              toggle: function (e, t) {
                                  return i.toggleClass(e, t)
                              },
                              contains: function (e) {
                                  return i.hasClass(e)
                              }
                          }
                      };
                  if (s.defineProperty) {
                      var l = {
                          get: o,
                          enumerable: !0,
                          configurable: !0
                      };
                      try {
                          s.defineProperty(n, t, l)
                      } catch (e) {
                          void 0 !== e.number && -2146823252 !== e.number || (l.enumerable = !1, s.defineProperty(n, t, l))
                      }
                  } else s[i].__defineGetter__ && n.__defineGetter__(t, o)
              }
          }(window);
          var e, c, t, i = document.createElement("_");
          if (i.classList.toggle("c3", !1), i.classList.contains("c3")) {
              var n = DOMTokenList.prototype.toggle;
              DOMTokenList.prototype.toggle = function (e, t) {
                  return 1 in arguments && !this.contains(e) == !t ? t : n.call(this, e)
              }
          }
  
          function S(e) {
              var t, i = [],
                  n = e && e.options;
              if (e.multiple)
                  for (var s = 0, o = n.length; s < o; s++)(t = n[s]).selected && i.push(t.value || t.text);
              else i = e.value;
              return i
          }
          i = null, String.prototype.startsWith || (e = function () {
              try {
                  var e = {},
                      t = Object.defineProperty,
                      i = t(e, e, e) && t
              } catch (e) {}
              return i
          }(), c = {}.toString, t = function (e) {
              if (null == this) throw new TypeError;
              var t = String(this);
              if (e && "[object RegExp]" == c.call(e)) throw new TypeError;
              var i = t.length,
                  n = String(e),
                  s = n.length,
                  o = 1 < arguments.length ? arguments[1] : void 0,
                  l = o ? Number(o) : 0;
              l != l && (l = 0);
              var r = Math.min(Math.max(l, 0), i);
              if (i < s + r) return !1;
              for (var a = -1; ++a < s;)
                  if (t.charCodeAt(r + a) != n.charCodeAt(a)) return !1;
              return !0
          }, e ? e(String.prototype, "startsWith", {
              value: t,
              configurable: !0,
              writable: !0
          }) : String.prototype.startsWith = t), Object.keys || (Object.keys = function (e, t, i) {
              for (t in i = [], e) i.hasOwnProperty.call(e, t) && i.push(t);
              return i
          });
          var s = {
              useDefault: !1,
              _set: G.valHooks.select.set
          };
          G.valHooks.select.set = function (e, t) {
              return t && !s.useDefault && G(e).data("selected", !0), s._set.apply(this, arguments)
          };
          var y = null,
              o = function () {
                  try {
                      return new Event("change"), !0
                  } catch (e) {
                      return !1
                  }
              }();
  
          function $(e, t, i, n) {
              for (var s = ["content", "subtext", "tokens"], o = !1, l = 0; l < s.length; l++) {
                  var r = s[l],
                      a = e[r];
                  if (a && (a = a.toString(), "content" === r && (a = a.replace(/<[^>]+>/g, "")), n && (a = m(a)), a = a.toUpperCase(), o = "contains" === i ? 0 <= a.indexOf(t) : a.startsWith(t))) break
              }
              return o
          }
  
          function z(e) {
              return parseInt(e, 10) || 0
          }
          G.fn.triggerNative = function (e) {
              var t, i = this[0];
              i.dispatchEvent ? (o ? t = new Event(e, {
                  bubbles: !0
              }) : (t = document.createEvent("Event")).initEvent(e, !0, !1), i.dispatchEvent(t)) : i.fireEvent ? ((t = document.createEventObject()).eventType = e, i.fireEvent("on" + e, t)) : this.trigger(e)
          };
          var l = {
                  "\xc0": "A",
                  "\xc1": "A",
                  "\xc2": "A",
                  "\xc3": "A",
                  "\xc4": "A",
                  "\xc5": "A",
                  "\xe0": "a",
                  "\xe1": "a",
                  "\xe2": "a",
                  "\xe3": "a",
                  "\xe4": "a",
                  "\xe5": "a",
                  "\xc7": "C",
                  "\xe7": "c",
                  "\xd0": "D",
                  "\xf0": "d",
                  "\xc8": "E",
                  "\xc9": "E",
                  "\xca": "E",
                  "\xcb": "E",
                  "\xe8": "e",
                  "\xe9": "e",
                  "\xea": "e",
                  "\xeb": "e",
                  "\xcc": "I",
                  "\xcd": "I",
                  "\xce": "I",
                  "\xcf": "I",
                  "\xec": "i",
                  "\xed": "i",
                  "\xee": "i",
                  "\xef": "i",
                  "\xd1": "N",
                  "\xf1": "n",
                  "\xd2": "O",
                  "\xd3": "O",
                  "\xd4": "O",
                  "\xd5": "O",
                  "\xd6": "O",
                  "\xd8": "O",
                  "\xf2": "o",
                  "\xf3": "o",
                  "\xf4": "o",
                  "\xf5": "o",
                  "\xf6": "o",
                  "\xf8": "o",
                  "\xd9": "U",
                  "\xda": "U",
                  "\xdb": "U",
                  "\xdc": "U",
                  "\xf9": "u",
                  "\xfa": "u",
                  "\xfb": "u",
                  "\xfc": "u",
                  "\xdd": "Y",
                  "\xfd": "y",
                  "\xff": "y",
                  "\xc6": "Ae",
                  "\xe6": "ae",
                  "\xde": "Th",
                  "\xfe": "th",
                  "\xdf": "ss",
                  "\u0100": "A",
                  "\u0102": "A",
                  "\u0104": "A",
                  "\u0101": "a",
                  "\u0103": "a",
                  "\u0105": "a",
                  "\u0106": "C",
                  "\u0108": "C",
                  "\u010a": "C",
                  "\u010c": "C",
                  "\u0107": "c",
                  "\u0109": "c",
                  "\u010b": "c",
                  "\u010d": "c",
                  "\u010e": "D",
                  "\u0110": "D",
                  "\u010f": "d",
                  "\u0111": "d",
                  "\u0112": "E",
                  "\u0114": "E",
                  "\u0116": "E",
                  "\u0118": "E",
                  "\u011a": "E",
                  "\u0113": "e",
                  "\u0115": "e",
                  "\u0117": "e",
                  "\u0119": "e",
                  "\u011b": "e",
                  "\u011c": "G",
                  "\u011e": "G",
                  "\u0120": "G",
                  "\u0122": "G",
                  "\u011d": "g",
                  "\u011f": "g",
                  "\u0121": "g",
                  "\u0123": "g",
                  "\u0124": "H",
                  "\u0126": "H",
                  "\u0125": "h",
                  "\u0127": "h",
                  "\u0128": "I",
                  "\u012a": "I",
                  "\u012c": "I",
                  "\u012e": "I",
                  "\u0130": "I",
                  "\u0129": "i",
                  "\u012b": "i",
                  "\u012d": "i",
                  "\u012f": "i",
                  "\u0131": "i",
                  "\u0134": "J",
                  "\u0135": "j",
                  "\u0136": "K",
                  "\u0137": "k",
                  "\u0138": "k",
                  "\u0139": "L",
                  "\u013b": "L",
                  "\u013d": "L",
                  "\u013f": "L",
                  "\u0141": "L",
                  "\u013a": "l",
                  "\u013c": "l",
                  "\u013e": "l",
                  "\u0140": "l",
                  "\u0142": "l",
                  "\u0143": "N",
                  "\u0145": "N",
                  "\u0147": "N",
                  "\u014a": "N",
                  "\u0144": "n",
                  "\u0146": "n",
                  "\u0148": "n",
                  "\u014b": "n",
                  "\u014c": "O",
                  "\u014e": "O",
                  "\u0150": "O",
                  "\u014d": "o",
                  "\u014f": "o",
                  "\u0151": "o",
                  "\u0154": "R",
                  "\u0156": "R",
                  "\u0158": "R",
                  "\u0155": "r",
                  "\u0157": "r",
                  "\u0159": "r",
                  "\u015a": "S",
                  "\u015c": "S",
                  "\u015e": "S",
                  "\u0160": "S",
                  "\u015b": "s",
                  "\u015d": "s",
                  "\u015f": "s",
                  "\u0161": "s",
                  "\u0162": "T",
                  "\u0164": "T",
                  "\u0166": "T",
                  "\u0163": "t",
                  "\u0165": "t",
                  "\u0167": "t",
                  "\u0168": "U",
                  "\u016a": "U",
                  "\u016c": "U",
                  "\u016e": "U",
                  "\u0170": "U",
                  "\u0172": "U",
                  "\u0169": "u",
                  "\u016b": "u",
                  "\u016d": "u",
                  "\u016f": "u",
                  "\u0171": "u",
                  "\u0173": "u",
                  "\u0174": "W",
                  "\u0175": "w",
                  "\u0176": "Y",
                  "\u0177": "y",
                  "\u0178": "Y",
                  "\u0179": "Z",
                  "\u017b": "Z",
                  "\u017d": "Z",
                  "\u017a": "z",
                  "\u017c": "z",
                  "\u017e": "z",
                  "\u0132": "IJ",
                  "\u0133": "ij",
                  "\u0152": "Oe",
                  "\u0153": "oe",
                  "\u0149": "'n",
                  "\u017f": "s"
              },
              r = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,
              a = RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\u1ab0-\\u1aff\\u1dc0-\\u1dff]", "g");
  
          function d(e) {
              return l[e]
          }
  
          function m(e) {
              return (e = e.toString()) && e.replace(r, d).replace(a, "")
          }
          var h = function (t) {
                  var i = function (e) {
                          return t[e]
                      },
                      e = "(?:" + Object.keys(t).join("|") + ")",
                      n = RegExp(e),
                      s = RegExp(e, "g");
                  return function (e) {
                      return e = null == e ? "" : "" + e, n.test(e) ? e.replace(s, i) : e
                  }
              },
              q = h({
                  "&": "&amp;",
                  "<": "&lt;",
                  ">": "&gt;",
                  '"': "&quot;",
                  "'": "&#x27;",
                  "`": "&#x60;"
              }),
              v = h({
                  "&amp;": "&",
                  "&lt;": "<",
                  "&gt;": ">",
                  "&quot;": '"',
                  "&#x27;": "'",
                  "&#x60;": "`"
              }),
              E = {
                  32: " ",
                  48: "0",
                  49: "1",
                  50: "2",
                  51: "3",
                  52: "4",
                  53: "5",
                  54: "6",
                  55: "7",
                  56: "8",
                  57: "9",
                  59: ";",
                  65: "A",
                  66: "B",
                  67: "C",
                  68: "D",
                  69: "E",
                  70: "F",
                  71: "G",
                  72: "H",
                  73: "I",
                  74: "J",
                  75: "K",
                  76: "L",
                  77: "M",
                  78: "N",
                  79: "O",
                  80: "P",
                  81: "Q",
                  82: "R",
                  83: "S",
                  84: "T",
                  85: "U",
                  86: "V",
                  87: "W",
                  88: "X",
                  89: "Y",
                  90: "Z",
                  96: "0",
                  97: "1",
                  98: "2",
                  99: "3",
                  100: "4",
                  101: "5",
                  102: "6",
                  103: "7",
                  104: "8",
                  105: "9"
              },
              C = 27,
              O = 13,
              T = 32,
              H = 9,
              D = 38,
              L = 40,
              K = {
                  success: !1,
                  major: "3"
              };
          try {
              K.full = (G.fn.dropdown.Constructor.VERSION || "").split(" ")[0].split("."), K.major = K.full[0], K.success = !0
          } catch (e) {
              console.warn("There was an issue retrieving Bootstrap's version. Ensure Bootstrap is being loaded before bootstrap-select and there is no namespace collision. If loading Bootstrap asynchronously, the version may need to be manually specified via $.fn.selectpicker.Constructor.BootstrapVersion.", e)
          }
          var p = 0,
              A = ".bs.select",
              Y = {
                  DISABLED: "disabled",
                  DIVIDER: "divider",
                  SHOW: "open",
                  DROPUP: "dropup",
                  MENU: "dropdown-menu",
                  MENURIGHT: "dropdown-menu-right",
                  MENULEFT: "dropdown-menu-left",
                  BUTTONCLASS: "btn-default",
                  POPOVERHEADER: "popover-title"
              },
              N = {
                  MENU: "." + Y.MENU
              };
          "4" === K.major && (Y.DIVIDER = "dropdown-divider", Y.SHOW = "show", Y.BUTTONCLASS = "btn-light", Y.POPOVERHEADER = "popover-header");
          var P = new RegExp(D + "|" + L),
              R = new RegExp("^" + H + "$|" + C),
              u = function (e, t) {
                  var i = this;
                  s.useDefault || (G.valHooks.select.set = s._set, s.useDefault = !0), this.$element = G(e), this.$newElement = null, this.$button = null, this.$menu = null, this.options = t, this.selectpicker = {
                      main: {
                          map: {
                              newIndex: {},
                              originalIndex: {}
                          }
                      },
                      current: {
                          map: {}
                      },
                      search: {
                          map: {}
                      },
                      view: {},
                      keydown: {
                          keyHistory: "",
                          resetKeyHistory: {
                              start: function () {
                                  return setTimeout(function () {
                                      i.selectpicker.keydown.keyHistory = ""
                                  }, 800)
                              }
                          }
                      }
                  }, null === this.options.title && (this.options.title = this.$element.attr("title"));
                  var n = this.options.windowPadding;
                  "number" == typeof n && (this.options.windowPadding = [n, n, n, n]), this.val = u.prototype.val, this.render = u.prototype.render, this.refresh = u.prototype.refresh, this.setStyle = u.prototype.setStyle, this.selectAll = u.prototype.selectAll, this.deselectAll = u.prototype.deselectAll, this.destroy = u.prototype.destroy, this.remove = u.prototype.remove, this.show = u.prototype.show, this.hide = u.prototype.hide, this.init()
              };
  
          function f(e) {
              var o, l = arguments,
                  r = e;
              if ([].shift.apply(l), !K.success) {
                  try {
                      K.full = (G.fn.dropdown.Constructor.VERSION || "").split(" ")[0].split(".")
                  } catch (e) {
                      K.full = u.BootstrapVersion.split(" ")[0].split(".")
                  }
                  K.major = K.full[0], K.success = !0, "4" === K.major && (Y.DIVIDER = "dropdown-divider", Y.SHOW = "show", Y.BUTTONCLASS = "btn-light", u.DEFAULTS.style = Y.BUTTONCLASS = "btn-light", Y.POPOVERHEADER = "popover-header")
              }
              var t = this.each(function () {
                  var e = G(this);
                  if (e.is("select")) {
                      var t = e.data("selectpicker"),
                          i = "object" == typeof r && r;
                      if (t) {
                          if (i)
                              for (var n in i) i.hasOwnProperty(n) && (t.options[n] = i[n])
                      } else {
                          var s = G.extend({}, u.DEFAULTS, G.fn.selectpicker.defaults || {}, e.data(), i);
                          s.template = G.extend({}, u.DEFAULTS.template, G.fn.selectpicker.defaults ? G.fn.selectpicker.defaults.template : {}, e.data().template, i.template), e.data("selectpicker", t = new u(this, s))
                      }
                      "string" == typeof r && (o = t[r] instanceof Function ? t[r].apply(t, l) : t.options[r])
                  }
              });
              return void 0 !== o ? o : t
          }
          u.VERSION = "1.13.5", u.BootstrapVersion = K.major, u.DEFAULTS = {
              noneSelectedText: "Nothing selected",
              noneResultsText: "No results matched {0}",
              countSelectedText: function (e, t) {
                  return 1 == e ? "{0} item selected" : "{0} items selected"
              },
              maxOptionsText: function (e, t) {
                  return [1 == e ? "Limit reached ({n} item max)" : "Limit reached ({n} items max)", 1 == t ? "Group limit reached ({n} item max)" : "Group limit reached ({n} items max)"]
              },
              selectAllText: "Select All",
              deselectAllText: "Deselect All",
              doneButton: !1,
              doneButtonText: "Close",
              multipleSeparator: ", ",
              styleBase: "btn",
              style: Y.BUTTONCLASS,
              size: "auto",
              title: null,
              selectedTextFormat: "values",
              width: !1,
              container: !1,
              hideDisabled: !1,
              showSubtext: !1,
              showIcon: !0,
              showContent: !0,
              dropupAuto: !0,
              header: !1,
              liveSearch: !1,
              liveSearchPlaceholder: null,
              liveSearchNormalize: !1,
              liveSearchStyle: "contains",
              actionsBox: !1,
              iconBase: "glyphicon",
              tickIcon: "glyphicon-ok",
              showTick: !1,
              template: {
                  caret: '<span class="caret"></span>'
              },
              maxOptions: !1,
              mobile: !1,
              selectOnTab: !1,
              dropdownAlignRight: !1,
              windowPadding: 0,
              virtualScroll: 600,
              display: !1
          }, "4" === K.major && (u.DEFAULTS.style = "btn-light", u.DEFAULTS.iconBase = "", u.DEFAULTS.tickIcon = "bs-ok-default"), u.prototype = {
              constructor: u,
              init: function () {
                  var i = this,
                      e = this.$element.attr("id");
                  this.selectId = p++, this.$element.addClass("bs-select-hidden"), this.multiple = this.$element.prop("multiple"), this.autofocus = this.$element.prop("autofocus"), this.$newElement = this.createDropdown(), this.createLi(), this.$element.after(this.$newElement).prependTo(this.$newElement), this.$button = this.$newElement.children("button"), this.$menu = this.$newElement.children(N.MENU), this.$menuInner = this.$menu.children(".inner"), this.$searchbox = this.$menu.find("input"), this.$element.removeClass("bs-select-hidden"), !0 === this.options.dropdownAlignRight && this.$menu.addClass(Y.MENURIGHT), void 0 !== e && this.$button.attr("data-id", e), this.checkDisabled(), this.clickListener(), this.options.liveSearch && this.liveSearchListener(), this.render(), this.setStyle(), this.setWidth(), this.options.container ? this.selectPosition() : this.$element.on("hide" + A, function () {
                      if (i.isVirtual()) {
                          var e = i.$menuInner[0],
                              t = e.firstChild.cloneNode(!1);
                          e.replaceChild(t, e.firstChild), e.scrollTop = 0
                      }
                  }), this.$menu.data("this", this), this.$newElement.data("this", this), this.options.mobile && this.mobile(), this.$newElement.on({
                      "hide.bs.dropdown": function (e) {
                          i.$menuInner.attr("aria-expanded", !1), i.$element.trigger("hide" + A, e)
                      },
                      "hidden.bs.dropdown": function (e) {
                          i.$element.trigger("hidden" + A, e)
                      },
                      "show.bs.dropdown": function (e) {
                          i.$menuInner.attr("aria-expanded", !0), i.$element.trigger("show" + A, e)
                      },
                      "shown.bs.dropdown": function (e) {
                          i.$element.trigger("shown" + A, e)
                      }
                  }), i.$element[0].hasAttribute("required") && this.$element.on("invalid", function () {
                      i.$button.addClass("bs-invalid"), i.$element.on("shown" + A + ".invalid", function () {
                          i.$element.val(i.$element.val()).off("shown" + A + ".invalid")
                      }).on("rendered" + A, function () {
                          this.validity.valid && i.$button.removeClass("bs-invalid"), i.$element.off("rendered" + A)
                      }), i.$button.on("blur" + A, function () {
                          i.$element.focus().blur(), i.$button.off("blur" + A)
                      })
                  }), setTimeout(function () {
                      i.$element.trigger("loaded" + A)
                  })
              },
              createDropdown: function () {
                  var e, t = this.multiple || this.options.showTick ? " show-tick" : "",
                      i = this.autofocus ? " autofocus" : "",
                      n = "",
                      s = "",
                      o = "",
                      l = "";
                  return this.options.header && (n = '<div class="' + Y.POPOVERHEADER + '"><button type="button" class="close" aria-hidden="true">&times;</button>' + this.options.header + "</div>"), this.options.liveSearch && (s = '<div class="bs-searchbox"><input type="text" class="form-control" autocomplete="off"' + (null === this.options.liveSearchPlaceholder ? "" : ' placeholder="' + q(this.options.liveSearchPlaceholder) + '"') + ' role="textbox" aria-label="Search"></div>'), this.multiple && this.options.actionsBox && (o = '<div class="bs-actionsbox"><div class="btn-group btn-group-sm btn-block"><button type="button" class="actions-btn bs-select-all btn ' + Y.BUTTONCLASS + '">' + this.options.selectAllText + '</button><button type="button" class="actions-btn bs-deselect-all btn ' + Y.BUTTONCLASS + '">' + this.options.deselectAllText + "</button></div></div>"), this.multiple && this.options.doneButton && (l = '<div class="bs-donebutton"><div class="btn-group btn-block"><button type="button" class="btn btn-sm ' + Y.BUTTONCLASS + '">' + this.options.doneButtonText + "</button></div></div>"), e = '<div class="dropdown bootstrap-select' + t + '"><button type="button" class="' + this.options.styleBase + ' dropdown-toggle" ' + ("static" === this.options.display ? 'data-display="static"' : "") + 'data-toggle="dropdown"' + i + ' role="button"><div class="filter-option"><div class="filter-option-inner"><div class="filter-option-inner-inner"></div></div> </div>' + ("4" === K.major ? "" : '<span class="bs-caret">' + this.options.template.caret + "</span>") + '</button><div class="' + Y.MENU + " " + ("4" === K.major ? "" : Y.SHOW) + '" role="combobox">' + n + s + o + '<div class="inner ' + Y.SHOW + '" role="listbox" aria-expanded="false" tabindex="-1"><ul class="' + Y.MENU + " inner " + ("4" === K.major ? Y.SHOW : "") + '"></ul></div>' + l + "</div></div>", G(e)
              },
              setPositionData: function () {
                  this.selectpicker.view.canHighlight = [];
                  for (var e = 0; e < this.selectpicker.current.data.length; e++) {
                      var t = this.selectpicker.current.data[e],
                          i = !0;
                      "divider" === t.type ? (i = !1, t.height = this.sizeInfo.dividerHeight) : "optgroup-label" === t.type ? (i = !1, t.height = this.sizeInfo.dropdownHeaderHeight) : t.height = this.sizeInfo.liHeight, t.disabled && (i = !1), this.selectpicker.view.canHighlight.push(i), t.position = (0 === e ? 0 : this.selectpicker.current.data[e - 1].position) + t.height
                  }
              },
              isVirtual: function () {
                  return !1 !== this.options.virtualScroll && this.selectpicker.main.elements.length >= this.options.virtualScroll || !0 === this.options.virtualScroll
              },
              createView: function (C, e) {
                  e = e || 0;
                  var O = this;
                  this.selectpicker.current = C ? this.selectpicker.search : this.selectpicker.main;
                  var z, T, H = [];
  
                  function i(e, t) {
                      var i, n, s, o, l, r, a, c, d, h, p = O.selectpicker.current.elements.length,
                          u = [],
                          f = !0,
                          m = O.isVirtual();
                      O.selectpicker.view.scrollTop = e, !0 === m && O.sizeInfo.hasScrollBar && O.$menu[0].offsetWidth > O.sizeInfo.totalMenuWidth && (O.sizeInfo.menuWidth = O.$menu[0].offsetWidth, O.sizeInfo.totalMenuWidth = O.sizeInfo.menuWidth + O.sizeInfo.scrollBarWidth, O.$menu.css("min-width", O.sizeInfo.menuWidth)), i = Math.ceil(O.sizeInfo.menuInnerHeight / O.sizeInfo.liHeight * 1.5), n = Math.round(p / i) || 1;
                      for (var v = 0; v < n; v++) {
                          var g = (v + 1) * i;
                          if (v === n - 1 && (g = p), u[v] = [v * i + (v ? 1 : 0), g], !p) break;
                          void 0 === l && e <= O.selectpicker.current.data[g - 1].position - O.sizeInfo.menuInnerHeight && (l = v)
                      }
                      if (void 0 === l && (l = 0), r = [O.selectpicker.view.position0, O.selectpicker.view.position1], s = Math.max(0, l - 1), o = Math.min(n - 1, l + 1), O.selectpicker.view.position0 = Math.max(0, u[s][0]) || 0, O.selectpicker.view.position1 = Math.min(p, u[o][1]) || 0, a = r[0] !== O.selectpicker.view.position0 || r[1] !== O.selectpicker.view.position1, void 0 !== O.activeIndex && (T = O.selectpicker.current.elements[O.selectpicker.current.map.newIndex[O.prevActiveIndex]], H = O.selectpicker.current.elements[O.selectpicker.current.map.newIndex[O.activeIndex]], z = O.selectpicker.current.elements[O.selectpicker.current.map.newIndex[O.selectedIndex]], t && (O.activeIndex !== O.selectedIndex && (H.classList.remove("active"), H.firstChild && H.firstChild.classList.remove("active")), O.activeIndex = void 0), O.activeIndex && O.activeIndex !== O.selectedIndex && z && z.length && (z.classList.remove("active"), z.firstChild && z.firstChild.classList.remove("active"))), void 0 !== O.prevActiveIndex && O.prevActiveIndex !== O.activeIndex && O.prevActiveIndex !== O.selectedIndex && T && T.length && (T.classList.remove("active"), T.firstChild && T.firstChild.classList.remove("active")), (t || a) && (c = O.selectpicker.view.visibleElements ? O.selectpicker.view.visibleElements.slice() : [], O.selectpicker.view.visibleElements = O.selectpicker.current.elements.slice(O.selectpicker.view.position0, O.selectpicker.view.position1), O.setOptionStatus(), (C || !1 === m && t) && (d = c, h = O.selectpicker.view.visibleElements, f = !(d.length === h.length && d.every(function (e, t) {
                              return e === h[t]
                          }))), (t || !0 === m) && f)) {
                          var b, w, I = O.$menuInner[0],
                              x = document.createDocumentFragment(),
                              k = I.firstChild.cloneNode(!1),
                              $ = !0 === m ? O.selectpicker.view.visibleElements : O.selectpicker.current.elements;
                          I.replaceChild(k, I.firstChild);
                          v = 0;
                          for (var E = $.length; v < E; v++) x.appendChild($[v]);
                          !0 === m && (b = 0 === O.selectpicker.view.position0 ? 0 : O.selectpicker.current.data[O.selectpicker.view.position0 - 1].position, w = O.selectpicker.view.position1 > p - 1 ? 0 : O.selectpicker.current.data[p - 1].position - O.selectpicker.current.data[O.selectpicker.view.position1 - 1].position, I.firstChild.style.marginTop = b + "px", I.firstChild.style.marginBottom = w + "px"), I.firstChild.appendChild(x)
                      }
                      if (O.prevActiveIndex = O.activeIndex, O.options.liveSearch) {
                          if (C && t) {
                              var S, y = 0;
                              O.selectpicker.view.canHighlight[y] || (y = 1 + O.selectpicker.view.canHighlight.slice(1).indexOf(!0)), S = O.selectpicker.view.visibleElements[y], O.selectpicker.view.currentActive && (O.selectpicker.view.currentActive.classList.remove("active"), O.selectpicker.view.currentActive.firstChild && O.selectpicker.view.currentActive.firstChild.classList.remove("active")), S && (S.classList.add("active"), S.firstChild && S.firstChild.classList.add("active")), O.activeIndex = O.selectpicker.current.map.originalIndex[y]
                          }
                      } else O.$menuInner.focus()
                  }
                  this.setPositionData(), i(e, !0), this.$menuInner.off("scroll.createView").on("scroll.createView", function (e, t) {
                      O.noScroll || i(this.scrollTop, t), O.noScroll = !1
                  }), G(window).off("resize" + A + "." + this.selectId + ".createView").on("resize" + A + "." + this.selectId + ".createView", function () {
                      O.$newElement.hasClass(Y.SHOW) && i(O.$menuInner[0].scrollTop)
                  })
              },
              createLi: function () {
                  var T, H = this,
                      D = [],
                      L = {},
                      A = 0,
                      N = 0,
                      P = [],
                      R = 0,
                      W = 0,
                      B = -1;
                  this.selectpicker.view.titleOption || (this.selectpicker.view.titleOption = document.createElement("option"));
                  var e, M = {
                          span: document.createElement("span"),
                          subtext: document.createElement("small"),
                          a: document.createElement("a"),
                          li: document.createElement("li"),
                          whitespace: document.createTextNode("\xa0")
                      },
                      U = document.createDocumentFragment();
                  (H.options.showTick || H.multiple) && ((e = M.span.cloneNode(!1)).className = H.options.iconBase + " " + H.options.tickIcon + " check-mark", M.a.appendChild(e)), M.a.setAttribute("role", "option"), M.subtext.className = "text-muted", M.text = M.span.cloneNode(!1), M.text.className = "text";
                  var V = function (e, t, i) {
                          var n = M.li.cloneNode(!1);
                          return e && (1 === e.nodeType || 11 === e.nodeType ? n.appendChild(e) : n.innerHTML = e), void 0 !== t && "" !== t && (n.className = t), null != i && n.classList.add("optgroup-" + i), n
                      },
                      j = function (e, t, i) {
                          var n = M.a.cloneNode(!0);
                          return e && (11 === e.nodeType ? n.appendChild(e) : n.insertAdjacentHTML("beforeend", e)), void 0 !== t && "" !== t && (n.className = t), "4" === K.major && n.classList.add("dropdown-item"), i && n.setAttribute("style", i), n
                      },
                      _ = function (e) {
                          var t, i, n = M.text.cloneNode(!1);
                          if (e.optionContent) n.innerHTML = e.optionContent;
                          else {
                              if (n.textContent = e.text, e.optionIcon) {
                                  var s = M.whitespace.cloneNode(!1);
                                  (i = M.span.cloneNode(!1)).className = H.options.iconBase + " " + e.optionIcon, U.appendChild(i), U.appendChild(s)
                              }
                              e.optionSubtext && ((t = M.subtext.cloneNode(!1)).innerHTML = e.optionSubtext, n.appendChild(t))
                          }
                          return U.appendChild(n), U
                      };
                  if (this.options.title && !this.multiple) {
                      B--;
                      var t = this.$element[0],
                          i = !1,
                          n = !this.selectpicker.view.titleOption.parentNode;
                      if (n) this.selectpicker.view.titleOption.className = "bs-title-option", this.selectpicker.view.titleOption.value = "", i = void 0 === G(t.options[t.selectedIndex]).attr("selected") && void 0 === this.$element.data("selected");
                      (n || 0 !== this.selectpicker.view.titleOption.index) && t.insertBefore(this.selectpicker.view.titleOption, t.firstChild), i && (t.selectedIndex = 0)
                  }
                  var F = this.$element.find("option");
                  F.each(function (e) {
                      var t = G(this);
                      if (B++, !t.hasClass("bs-title-option")) {
                          var i, n, s, o, l = t.data(),
                              r = this.className || "",
                              a = q(this.style.cssText),
                              c = l.content,
                              d = this.textContent,
                              h = l.tokens,
                              p = l.subtext,
                              u = l.icon,
                              f = t.parent(),
                              m = f[0],
                              v = "OPTGROUP" === m.tagName,
                              g = v && m.disabled,
                              b = this.disabled || g,
                              w = this.previousElementSibling && "OPTGROUP" === this.previousElementSibling.tagName,
                              I = f.data();
                          if (!0 === l.hidden || this.hidden || H.options.hideDisabled && (b || g)) return i = l.prevHiddenIndex, t.next().data("prevHiddenIndex", void 0 !== i ? i : e), B--, L[e] = {
                              type: "hidden",
                              data: l
                          }, w || void 0 !== i && (o = F[i].previousElementSibling) && "OPTGROUP" === o.tagName && !o.disabled && (w = !0), void(w && "divider" !== P[P.length - 1].type && (B++, D.push(V(!1, Y.DIVIDER, R + "div")), P.push({
                              type: "divider",
                              optID: R
                          })));
                          if (v && !0 !== l.divider) {
                              if (H.options.hideDisabled && b) {
                                  if (void 0 === I.allOptionsDisabled) {
                                      var x = f.children();
                                      f.data("allOptionsDisabled", x.filter(":disabled").length === x.length)
                                  }
                                  if (f.data("allOptionsDisabled")) return void B--
                              }
                              var k = " " + m.className || "",
                                  $ = this.previousElementSibling;
                              if (void 0 !== (i = l.prevHiddenIndex) && ($ = F[i].previousElementSibling), !$) {
                                  R += 1;
                                  var E = m.label,
                                      S = q(E),
                                      y = I.subtext,
                                      C = I.icon;
                                  0 !== e && 0 < D.length && (B++, D.push(V(!1, Y.DIVIDER, R + "div")), P.push({
                                      type: "divider",
                                      optID: R
                                  })), B++, s = function (e) {
                                      var t, i, n = M.text.cloneNode(!1);
                                      if (n.innerHTML = e.labelEscaped, e.labelIcon) {
                                          var s = M.whitespace.cloneNode(!1);
                                          (i = M.span.cloneNode(!1)).className = H.options.iconBase + " " + e.labelIcon, U.appendChild(i), U.appendChild(s)
                                      }
                                      return e.labelSubtext && ((t = M.subtext.cloneNode(!1)).textContent = e.labelSubtext, n.appendChild(t)), U.appendChild(n), U
                                  }({
                                      labelEscaped: S,
                                      labelSubtext: y,
                                      labelIcon: C
                                  }), D.push(V(s, "dropdown-header" + k, R)), P.push({
                                      content: S,
                                      subtext: y,
                                      type: "optgroup-label",
                                      optID: R
                                  }), W = B - 1
                              }
                              n = _({
                                  text: d,
                                  optionContent: c,
                                  optionSubtext: p,
                                  optionIcon: u
                              }), D.push(V(j(n, "opt " + r + k, a), "", R)), P.push({
                                  content: c || d,
                                  subtext: p,
                                  tokens: h,
                                  type: "option",
                                  optID: R,
                                  headerIndex: W,
                                  lastIndex: W + m.childElementCount,
                                  originalIndex: e,
                                  data: l
                              }), A++
                          } else !0 === l.divider ? (D.push(V(!1, Y.DIVIDER)), P.push({
                              type: "divider",
                              originalIndex: e,
                              data: l
                          })) : (!w && H.options.hideDisabled && void 0 !== (i = l.prevHiddenIndex) && (o = F[i].previousElementSibling) && "OPTGROUP" === o.tagName && !o.disabled && (w = !0), w && "divider" !== P[P.length - 1].type && (B++, D.push(V(!1, Y.DIVIDER, R + "div")), P.push({
                              type: "divider",
                              optID: R
                          })), n = _({
                              text: d,
                              optionContent: c,
                              optionSubtext: p,
                              optionIcon: u
                          }), D.push(V(j(n, r, a))), P.push({
                              content: c || d,
                              subtext: p,
                              tokens: h,
                              type: "option",
                              originalIndex: e,
                              data: l
                          }), A++);
                          H.selectpicker.main.map.newIndex[e] = B, H.selectpicker.main.map.originalIndex[B] = e;
                          var O = P[P.length - 1];
                          O.disabled = b;
                          var z = 0;
                          O.content && (z += O.content.length), O.subtext && (z += O.subtext.length), u && (z += 1), N < z && (N = z, T = D[D.length - 1])
                      }
                  }), this.selectpicker.main.elements = D, this.selectpicker.main.data = P, this.selectpicker.main.hidden = L, this.selectpicker.current = this.selectpicker.main, this.selectpicker.view.widestOption = T, this.selectpicker.view.availableOptionsCount = A
              },
              findLis: function () {
                  return this.$menuInner.find(".inner > li")
              },
              render: function () {
                  var e = this,
                      t = this.$element.find("option"),
                      i = [],
                      n = [];
                  this.togglePlaceholder(), this.tabIndex();
                  for (var s = 0, o = t.length; s < o; s++) {
                      var l = e.selectpicker.main.map.newIndex[s],
                          r = t[s],
                          a = e.selectpicker.main.data[l] || e.selectpicker.main.hidden[s];
                      if (r && r.selected && a && (i.push(r), n.length < 100 && "count" !== e.options.selectedTextFormat || 1 === i.length)) {
                          var c, d, h = a.data,
                              p = h.icon && e.options.showIcon ? '<i class="' + e.options.iconBase + " " + h.icon + '"></i> ' : "";
                          c = e.options.showSubtext && h.subtext && !e.multiple ? ' <small class="text-muted">' + h.subtext + "</small>" : "", d = r.title ? r.title : h.content && e.options.showContent ? h.content.toString() : p + r.innerHTML.trim() + c, n.push(d)
                      }
                  }
                  var u = this.multiple ? n.join(this.options.multipleSeparator) : n[0];
                  if (50 < i.length && (u += "..."), this.multiple && -1 !== this.options.selectedTextFormat.indexOf("count")) {
                      var f = this.options.selectedTextFormat.split(">");
                      if (1 < f.length && i.length > f[1] || 1 === f.length && 2 <= i.length) {
                          var m = this.selectpicker.view.availableOptionsCount;
                          u = ("function" == typeof this.options.countSelectedText ? this.options.countSelectedText(i.length, m) : this.options.countSelectedText).replace("{0}", i.length.toString()).replace("{1}", m.toString())
                      }
                  }
                  null == this.options.title && (this.options.title = this.$element.attr("title")), "static" == this.options.selectedTextFormat && (u = this.options.title), u || (u = void 0 !== this.options.title ? this.options.title : this.options.noneSelectedText), this.$button[0].title = v(u.replace(/<[^>]*>?/g, "").trim()), this.$button.find(".filter-option-inner-inner")[0].innerHTML = u, this.$element.trigger("rendered" + A)
              },
              setStyle: function (e, t) {
                  this.$element.attr("class") && this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, ""));
                  var i = e || this.options.style;
                  "add" == t ? this.$button.addClass(i) : "remove" == t ? this.$button.removeClass(i) : (this.$button.removeClass(this.options.style), this.$button.addClass(i))
              },
              liHeight: function (e) {
                  if (e || !1 !== this.options.size && !this.sizeInfo) {
                      this.sizeInfo || (this.sizeInfo = {});
                      var t = document.createElement("div"),
                          i = document.createElement("div"),
                          n = document.createElement("div"),
                          s = document.createElement("ul"),
                          o = document.createElement("li"),
                          l = document.createElement("li"),
                          r = document.createElement("li"),
                          a = document.createElement("a"),
                          c = document.createElement("span"),
                          d = this.options.header && 0 < this.$menu.find("." + Y.POPOVERHEADER).length ? this.$menu.find("." + Y.POPOVERHEADER)[0].cloneNode(!0) : null,
                          h = this.options.liveSearch ? document.createElement("div") : null,
                          p = this.options.actionsBox && this.multiple && 0 < this.$menu.find(".bs-actionsbox").length ? this.$menu.find(".bs-actionsbox")[0].cloneNode(!0) : null,
                          u = this.options.doneButton && this.multiple && 0 < this.$menu.find(".bs-donebutton").length ? this.$menu.find(".bs-donebutton")[0].cloneNode(!0) : null,
                          f = this.$element.find("option")[0];
                      if (this.sizeInfo.selectWidth = this.$newElement[0].offsetWidth, c.className = "text", a.className = "dropdown-item " + (f ? f.className : ""), t.className = this.$menu[0].parentNode.className + " " + Y.SHOW, t.style.width = this.sizeInfo.selectWidth + "px", "auto" === this.options.width && (i.style.minWidth = 0), i.className = Y.MENU + " " + Y.SHOW, n.className = "inner " + Y.SHOW, s.className = Y.MENU + " inner " + ("4" === K.major ? Y.SHOW : ""), o.className = Y.DIVIDER, l.className = "dropdown-header", c.appendChild(document.createTextNode("\u200b")), a.appendChild(c), r.appendChild(a), l.appendChild(c.cloneNode(!0)), this.selectpicker.view.widestOption && s.appendChild(this.selectpicker.view.widestOption.cloneNode(!0)), s.appendChild(r), s.appendChild(o), s.appendChild(l), d && i.appendChild(d), h) {
                          var m = document.createElement("input");
                          h.className = "bs-searchbox", m.className = "form-control", h.appendChild(m), i.appendChild(h)
                      }
                      p && i.appendChild(p), n.appendChild(s), i.appendChild(n), u && i.appendChild(u), t.appendChild(i), document.body.appendChild(t);
                      var v, g = a.offsetHeight,
                          b = l ? l.offsetHeight : 0,
                          w = d ? d.offsetHeight : 0,
                          I = h ? h.offsetHeight : 0,
                          x = p ? p.offsetHeight : 0,
                          k = u ? u.offsetHeight : 0,
                          $ = G(o).outerHeight(!0),
                          E = !!window.getComputedStyle && window.getComputedStyle(i),
                          S = i.offsetWidth,
                          y = E ? null : G(i),
                          C = {
                              vert: z(E ? E.paddingTop : y.css("paddingTop")) + z(E ? E.paddingBottom : y.css("paddingBottom")) + z(E ? E.borderTopWidth : y.css("borderTopWidth")) + z(E ? E.borderBottomWidth : y.css("borderBottomWidth")),
                              horiz: z(E ? E.paddingLeft : y.css("paddingLeft")) + z(E ? E.paddingRight : y.css("paddingRight")) + z(E ? E.borderLeftWidth : y.css("borderLeftWidth")) + z(E ? E.borderRightWidth : y.css("borderRightWidth"))
                          },
                          O = {
                              vert: C.vert + z(E ? E.marginTop : y.css("marginTop")) + z(E ? E.marginBottom : y.css("marginBottom")) + 2,
                              horiz: C.horiz + z(E ? E.marginLeft : y.css("marginLeft")) + z(E ? E.marginRight : y.css("marginRight")) + 2
                          };
                      n.style.overflowY = "scroll", v = i.offsetWidth - S, document.body.removeChild(t), this.sizeInfo.liHeight = g, this.sizeInfo.dropdownHeaderHeight = b, this.sizeInfo.headerHeight = w, this.sizeInfo.searchHeight = I, this.sizeInfo.actionsHeight = x, this.sizeInfo.doneButtonHeight = k, this.sizeInfo.dividerHeight = $, this.sizeInfo.menuPadding = C, this.sizeInfo.menuExtras = O, this.sizeInfo.menuWidth = S, this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth, this.sizeInfo.scrollBarWidth = v, this.sizeInfo.selectHeight = this.$newElement[0].offsetHeight, this.setPositionData()
                  }
              },
              getSelectPosition: function () {
                  var e, t = G(window),
                      i = this.$newElement.offset(),
                      n = G(this.options.container);
                  this.options.container && !n.is("body") ? ((e = n.offset()).top += parseInt(n.css("borderTopWidth")), e.left += parseInt(n.css("borderLeftWidth"))) : e = {
                      top: 0,
                      left: 0
                  };
                  var s = this.options.windowPadding;
                  this.sizeInfo.selectOffsetTop = i.top - e.top - t.scrollTop(), this.sizeInfo.selectOffsetBot = t.height() - this.sizeInfo.selectOffsetTop - this.sizeInfo.selectHeight - e.top - s[2], this.sizeInfo.selectOffsetLeft = i.left - e.left - t.scrollLeft(), this.sizeInfo.selectOffsetRight = t.width() - this.sizeInfo.selectOffsetLeft - this.sizeInfo.selectWidth - e.left - s[1], this.sizeInfo.selectOffsetTop -= s[0], this.sizeInfo.selectOffsetLeft -= s[3]
              },
              setMenuSize: function (e) {
                  this.getSelectPosition();
                  var t, i, n, s, o, l, r, a = this.sizeInfo.selectWidth,
                      c = this.sizeInfo.liHeight,
                      d = this.sizeInfo.headerHeight,
                      h = this.sizeInfo.searchHeight,
                      p = this.sizeInfo.actionsHeight,
                      u = this.sizeInfo.doneButtonHeight,
                      f = this.sizeInfo.dividerHeight,
                      m = this.sizeInfo.menuPadding,
                      v = 0;
                  if (this.options.dropupAuto && (r = c * this.selectpicker.current.elements.length + m.vert, this.$newElement.toggleClass(Y.DROPUP, this.sizeInfo.selectOffsetTop - this.sizeInfo.selectOffsetBot > this.sizeInfo.menuExtras.vert && r + this.sizeInfo.menuExtras.vert + 50 > this.sizeInfo.selectOffsetBot)), "auto" === this.options.size) s = 3 < this.selectpicker.current.elements.length ? 3 * this.sizeInfo.liHeight + this.sizeInfo.menuExtras.vert - 2 : 0, i = this.sizeInfo.selectOffsetBot - this.sizeInfo.menuExtras.vert, n = s + d + h + p + u, l = Math.max(s - m.vert, 0), this.$newElement.hasClass(Y.DROPUP) && (i = this.sizeInfo.selectOffsetTop - this.sizeInfo.menuExtras.vert), t = (o = i) - d - h - p - u - m.vert;
                  else if (this.options.size && "auto" != this.options.size && this.selectpicker.current.elements.length > this.options.size) {
                      for (var g = 0; g < this.options.size; g++) "divider" === this.selectpicker.current.data[g].type && v++;
                      t = (i = c * this.options.size + v * f + m.vert) - m.vert, o = i + d + h + p + u, n = l = ""
                  }
                  "auto" === this.options.dropdownAlignRight && this.$menu.toggleClass(Y.MENURIGHT, this.sizeInfo.selectOffsetLeft > this.sizeInfo.selectOffsetRight && this.sizeInfo.selectOffsetRight < this.sizeInfo.totalMenuWidth - a), this.$menu.css({
                      "max-height": o + "px",
                      overflow: "hidden",
                      "min-height": n + "px"
                  }), this.$menuInner.css({
                      "max-height": t + "px",
                      "overflow-y": "auto",
                      "min-height": l + "px"
                  }), this.sizeInfo.menuInnerHeight = t, this.selectpicker.current.data.length && this.selectpicker.current.data[this.selectpicker.current.data.length - 1].position > this.sizeInfo.menuInnerHeight && (this.sizeInfo.hasScrollBar = !0, this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth + this.sizeInfo.scrollBarWidth, this.$menu.css("min-width", this.sizeInfo.totalMenuWidth)), this.dropdown && this.dropdown._popper && this.dropdown._popper.update()
              },
              setSize: function (e) {
                  if (this.liHeight(e), this.options.header && this.$menu.css("padding-top", 0), !1 !== this.options.size) {
                      var t, i = this,
                          n = G(window),
                          s = 0;
                      this.setMenuSize(), "auto" === this.options.size ? (this.$searchbox.off("input.setMenuSize propertychange.setMenuSize").on("input.setMenuSize propertychange.setMenuSize", function () {
                          return i.setMenuSize()
                      }), n.off("resize" + A + "." + this.selectId + ".setMenuSize scroll" + A + "." + this.selectId + ".setMenuSize").on("resize" + A + "." + this.selectId + ".setMenuSize scroll" + A + "." + this.selectId + ".setMenuSize", function () {
                          return i.setMenuSize()
                      })) : this.options.size && "auto" != this.options.size && this.selectpicker.current.elements.length > this.options.size && (this.$searchbox.off("input.setMenuSize propertychange.setMenuSize"), n.off("resize" + A + "." + this.selectId + ".setMenuSize scroll" + A + "." + this.selectId + ".setMenuSize")), e ? s = this.$menuInner[0].scrollTop : i.multiple || "number" == typeof (t = i.selectpicker.main.map.newIndex[i.$element[0].selectedIndex]) && !1 !== i.options.size && (s = (s = i.sizeInfo.liHeight * t) - i.sizeInfo.menuInnerHeight / 2 + i.sizeInfo.liHeight / 2), i.createView(!1, s)
                  }
              },
              setWidth: function () {
                  var i = this;
                  "auto" === this.options.width ? requestAnimationFrame(function () {
                      i.$menu.css("min-width", "0"), i.liHeight(), i.setMenuSize();
                      var e = i.$newElement.clone().appendTo("body"),
                          t = e.css("width", "auto").children("button").outerWidth();
                      e.remove(), i.sizeInfo.selectWidth = Math.max(i.sizeInfo.totalMenuWidth, t), i.$newElement.css("width", i.sizeInfo.selectWidth + "px")
                  }) : "fit" === this.options.width ? (this.$menu.css("min-width", ""), this.$newElement.css("width", "").addClass("fit-width")) : this.options.width ? (this.$menu.css("min-width", ""), this.$newElement.css("width", this.options.width)) : (this.$menu.css("min-width", ""), this.$newElement.css("width", "")), this.$newElement.hasClass("fit-width") && "fit" !== this.options.width && this.$newElement.removeClass("fit-width")
              },
              selectPosition: function () {
                  this.$bsContainer = G('<div class="bs-container" />');
                  var n, s, o, l = this,
                      r = G(this.options.container),
                      e = function (e) {
                          var t = {},
                              i = l.options.display || !!G.fn.dropdown.Constructor.Default && G.fn.dropdown.Constructor.Default.display;
                          l.$bsContainer.addClass(e.attr("class").replace(/form-control|fit-width/gi, "")).toggleClass(Y.DROPUP, e.hasClass(Y.DROPUP)), n = e.offset(), r.is("body") ? s = {
                              top: 0,
                              left: 0
                          } : ((s = r.offset()).top += parseInt(r.css("borderTopWidth")) - r.scrollTop(), s.left += parseInt(r.css("borderLeftWidth")) - r.scrollLeft()), o = e.hasClass(Y.DROPUP) ? 0 : e[0].offsetHeight, (K.major < 4 || "static" === i) && (t.top = n.top - s.top + o, t.left = n.left - s.left), t.width = e[0].offsetWidth, l.$bsContainer.css(t)
                      };
                  this.$button.on("click.bs.dropdown.data-api", function () {
                      l.isDisabled() || (e(l.$newElement), l.$bsContainer.appendTo(l.options.container).toggleClass(Y.SHOW, !l.$button.hasClass(Y.SHOW)).append(l.$menu))
                  }), G(window).off("resize" + A + "." + this.selectId + " scroll" + A + "." + this.selectId).on("resize" + A + "." + this.selectId + " scroll" + A + "." + this.selectId, function () {
                      l.$newElement.hasClass(Y.SHOW) && e(l.$newElement)
                  }), this.$element.on("hide" + A, function () {
                      l.$menu.data("height", l.$menu.height()), l.$bsContainer.detach()
                  })
              },
              setOptionStatus: function () {
                  var e = this,
                      t = this.$element.find("option");
                  if (e.noScroll = !1, e.selectpicker.view.visibleElements && e.selectpicker.view.visibleElements.length)
                      for (var i = 0; i < e.selectpicker.view.visibleElements.length; i++) {
                          var n = e.selectpicker.current.map.originalIndex[i + e.selectpicker.view.position0],
                              s = t[n];
                          if (s) {
                              var o = this.selectpicker.main.map.newIndex[n],
                                  l = this.selectpicker.main.elements[o];
                              e.setDisabled(n, s.disabled || "OPTGROUP" === s.parentNode.tagName && s.parentNode.disabled, o, l), e.setSelected(n, s.selected, o, l)
                          }
                      }
              },
              setSelected: function (e, t, i, n) {
                  var s, o, l, r = void 0 !== this.activeIndex,
                      a = this.activeIndex === e || t && !this.multiple && !r;
                  i || (i = this.selectpicker.main.map.newIndex[e]), n || (n = this.selectpicker.main.elements[i]), l = n.firstChild, t && (this.selectedIndex = e), n.classList.toggle("selected", t), n.classList.toggle("active", a), a && (this.selectpicker.view.currentActive = n, this.activeIndex = e), l && (l.classList.toggle("selected", t), l.classList.toggle("active", a), l.setAttribute("aria-selected", t)), a || !r && t && void 0 !== this.prevActiveIndex && (s = this.selectpicker.main.map.newIndex[this.prevActiveIndex], (o = this.selectpicker.main.elements[s]).classList.remove("active"), o.firstChild && o.firstChild.classList.remove("active"))
              },
              setDisabled: function (e, t, i, n) {
                  var s;
                  i || (i = this.selectpicker.main.map.newIndex[e]), n || (n = this.selectpicker.main.elements[i]), s = n.firstChild, n.classList.toggle(Y.DISABLED, t), s && ("4" === K.major && s.classList.toggle(Y.DISABLED, t), s.setAttribute("aria-disabled", t), t ? s.setAttribute("tabindex", -1) : s.setAttribute("tabindex", 0))
              },
              isDisabled: function () {
                  return this.$element[0].disabled
              },
              checkDisabled: function () {
                  var e = this;
                  this.isDisabled() ? (this.$newElement.addClass(Y.DISABLED), this.$button.addClass(Y.DISABLED).attr("tabindex", -1).attr("aria-disabled", !0)) : (this.$button.hasClass(Y.DISABLED) && (this.$newElement.removeClass(Y.DISABLED), this.$button.removeClass(Y.DISABLED).attr("aria-disabled", !1)), -1 != this.$button.attr("tabindex") || this.$element.data("tabindex") || this.$button.removeAttr("tabindex")), this.$button.click(function () {
                      return !e.isDisabled()
                  })
              },
              togglePlaceholder: function () {
                  var e = this.$element[0],
                      t = e.selectedIndex,
                      i = -1 === t;
                  i || e.options[t].value || (i = !0), this.$button.toggleClass("bs-placeholder", i)
              },
              tabIndex: function () {
                  this.$element.data("tabindex") !== this.$element.attr("tabindex") && -98 !== this.$element.attr("tabindex") && "-98" !== this.$element.attr("tabindex") && (this.$element.data("tabindex", this.$element.attr("tabindex")), this.$button.attr("tabindex", this.$element.data("tabindex"))), this.$element.attr("tabindex", -98)
              },
              clickListener: function () {
                  var E = this,
                      t = G(document);
  
                  function e() {
                      E.options.liveSearch ? E.$searchbox.focus() : E.$menuInner.focus()
                  }
  
                  function i() {
                      E.dropdown && E.dropdown._popper && E.dropdown._popper.state.isCreated ? e() : requestAnimationFrame(i)
                  }
                  t.data("spaceSelect", !1), this.$button.on("keyup", function (e) {
                      /(32)/.test(e.keyCode.toString(10)) && t.data("spaceSelect") && (e.preventDefault(), t.data("spaceSelect", !1))
                  }), this.$newElement.on("show.bs.dropdown", function () {
                      3 < K.major && !E.dropdown && (E.dropdown = E.$button.data("bs.dropdown"), E.dropdown._menu = E.$menu[0])
                  }), this.$button.on("click.bs.dropdown.data-api", function () {
                      E.$newElement.hasClass(Y.SHOW) || E.setSize()
                  }), this.$element.on("shown" + A, function () {
                      E.$menuInner[0].scrollTop !== E.selectpicker.view.scrollTop && (E.$menuInner[0].scrollTop = E.selectpicker.view.scrollTop), 3 < K.major ? requestAnimationFrame(i) : e()
                  }), this.$menuInner.on("click", "li a", function (e, t) {
                      var i = G(this),
                          n = E.isVirtual() ? E.selectpicker.view.position0 : 0,
                          s = E.selectpicker.current.map.originalIndex[i.parent().index() + n],
                          o = S(E.$element[0]),
                          l = E.$element.prop("selectedIndex"),
                          r = !0;
                      if (E.multiple && 1 !== E.options.maxOptions && e.stopPropagation(), e.preventDefault(), !E.isDisabled() && !i.parent().hasClass(Y.DISABLED)) {
                          var a = E.$element.find("option"),
                              c = a.eq(s),
                              d = c.prop("selected"),
                              h = c.parent("optgroup"),
                              p = h.find("option"),
                              u = E.options.maxOptions,
                              f = h.data("maxOptions") || !1;
                          if (s === E.activeIndex && (t = !0), t || (E.prevActiveIndex = E.activeIndex, E.activeIndex = void 0), E.multiple) {
                              if (c.prop("selected", !d), E.setSelected(s, !d), i.blur(), !1 !== u || !1 !== f) {
                                  var m = u < a.filter(":selected").length,
                                      v = f < h.find("option:selected").length;
                                  if (u && m || f && v)
                                      if (u && 1 == u) {
                                          a.prop("selected", !1), c.prop("selected", !0);
                                          for (var g = 0; g < a.length; g++) E.setSelected(g, !1);
                                          E.setSelected(s, !0)
                                      } else if (f && 1 == f) {
                                      h.find("option:selected").prop("selected", !1), c.prop("selected", !0);
                                      for (g = 0; g < p.length; g++) {
                                          var b = p[g];
                                          E.setSelected(a.index(b), !1)
                                      }
                                      E.setSelected(s, !0)
                                  } else {
                                      var w = "string" == typeof E.options.maxOptionsText ? [E.options.maxOptionsText, E.options.maxOptionsText] : E.options.maxOptionsText,
                                          I = "function" == typeof w ? w(u, f) : w,
                                          x = I[0].replace("{n}", u),
                                          k = I[1].replace("{n}", f),
                                          $ = G('<div class="notify"></div>');
                                      I[2] && (x = x.replace("{var}", I[2][1 < u ? 0 : 1]), k = k.replace("{var}", I[2][1 < f ? 0 : 1])), c.prop("selected", !1), E.$menu.append($), u && m && ($.append(G("<div>" + x + "</div>")), r = !1, E.$element.trigger("maxReached" + A)), f && v && ($.append(G("<div>" + k + "</div>")), r = !1, E.$element.trigger("maxReachedGrp" + A)), setTimeout(function () {
                                          E.setSelected(s, !1)
                                      }, 10), $.delay(750).fadeOut(300, function () {
                                          G(this).remove()
                                      })
                                  }
                              }
                          } else a.prop("selected", !1), c.prop("selected", !0), E.setSelected(s, !0);
                          !E.multiple || E.multiple && 1 === E.options.maxOptions ? E.$button.focus() : E.options.liveSearch && E.$searchbox.focus(), r && (o != S(E.$element[0]) && E.multiple || l != E.$element.prop("selectedIndex") && !E.multiple) && (y = [s, c.prop("selected"), o], E.$element.triggerNative("change"))
                      }
                  }), this.$menu.on("click", "li." + Y.DISABLED + " a, ." + Y.POPOVERHEADER + ", ." + Y.POPOVERHEADER + " :not(.close)", function (e) {
                      e.currentTarget == this && (e.preventDefault(), e.stopPropagation(), E.options.liveSearch && !G(e.target).hasClass("close") ? E.$searchbox.focus() : E.$button.focus())
                  }), this.$menuInner.on("click", ".divider, .dropdown-header", function (e) {
                      e.preventDefault(), e.stopPropagation(), E.options.liveSearch ? E.$searchbox.focus() : E.$button.focus()
                  }), this.$menu.on("click", "." + Y.POPOVERHEADER + " .close", function () {
                      E.$button.click()
                  }), this.$searchbox.on("click", function (e) {
                      e.stopPropagation()
                  }), this.$menu.on("click", ".actions-btn", function (e) {
                      E.options.liveSearch ? E.$searchbox.focus() : E.$button.focus(), e.preventDefault(), e.stopPropagation(), G(this).hasClass("bs-select-all") ? E.selectAll() : E.deselectAll()
                  }), this.$element.on({
                      change: function () {
                          E.render(), E.$element.trigger("changed" + A, y), y = null
                      },
                      focus: function () {
                          E.options.mobile || E.$button.focus()
                      }
                  })
              },
              liveSearchListener: function () {
                  var u = this,
                      f = document.createElement("li");
                  this.$button.on("click.bs.dropdown.data-api", function () {
                      u.$searchbox.val() && u.$searchbox.val("")
                  }), this.$searchbox.on("click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api", function (e) {
                      e.stopPropagation()
                  }), this.$searchbox.on("input propertychange", function () {
                      var e = u.$searchbox.val();
                      if (u.selectpicker.search.map.newIndex = {}, u.selectpicker.search.map.originalIndex = {}, u.selectpicker.search.elements = [], u.selectpicker.search.data = [], e) {
                          var t = [],
                              i = e.toUpperCase(),
                              n = {},
                              s = [],
                              o = u._searchStyle(),
                              l = u.options.liveSearchNormalize;
                          l && (i = m(i)), u._$lisSelected = u.$menuInner.find(".selected");
                          for (var r = 0; r < u.selectpicker.main.data.length; r++) {
                              var a = u.selectpicker.main.data[r];
                              n[r] || (n[r] = $(a, i, o, l)), n[r] && void 0 !== a.headerIndex && -1 === s.indexOf(a.headerIndex) && (0 < a.headerIndex && (n[a.headerIndex - 1] = !0, s.push(a.headerIndex - 1)), n[a.headerIndex] = !0, s.push(a.headerIndex), n[a.lastIndex + 1] = !0), n[r] && "optgroup-label" !== a.type && s.push(r)
                          }
                          r = 0;
                          for (var c = s.length; r < c; r++) {
                              var d = s[r],
                                  h = s[r - 1],
                                  p = (a = u.selectpicker.main.data[d], u.selectpicker.main.data[h]);
                              ("divider" !== a.type || "divider" === a.type && p && "divider" !== p.type && c - 1 !== r) && (u.selectpicker.search.data.push(a), t.push(u.selectpicker.main.elements[d]), a.hasOwnProperty("originalIndex") && (u.selectpicker.search.map.newIndex[a.originalIndex] = t.length - 1, u.selectpicker.search.map.originalIndex[t.length - 1] = a.originalIndex))
                          }
                          u.activeIndex = void 0, u.noScroll = !0, u.$menuInner.scrollTop(0), u.selectpicker.search.elements = t, u.createView(!0), t.length || (f.className = "no-results", f.innerHTML = u.options.noneResultsText.replace("{0}", '"' + q(e) + '"'), u.$menuInner[0].firstChild.appendChild(f))
                      } else u.$menuInner.scrollTop(0), u.createView(!1)
                  })
              },
              _searchStyle: function () {
                  return this.options.liveSearchStyle || "contains"
              },
              val: function (e) {
                  return void 0 !== e ? (this.$element.val(e).triggerNative("change"), this.$element) : this.$element.val()
              },
              changeAll: function (e) {
                  if (this.multiple) {
                      void 0 === e && (e = !0);
                      var t = this.$element.find("option"),
                          i = 0,
                          n = 0,
                          s = S(this.$element[0]);
                      this.$element.addClass("bs-select-hidden");
                      for (var o = 0; o < this.selectpicker.current.elements.length; o++) {
                          var l = this.selectpicker.current.data[o],
                              r = t[this.selectpicker.current.map.originalIndex[o]];
                          r && !r.disabled && "divider" !== l.type && (r.selected && i++, r.selected = e, r.selected && n++)
                      }
                      this.$element.removeClass("bs-select-hidden"), i !== n && (this.setOptionStatus(), this.togglePlaceholder(), y = [null, null, s], this.$element.triggerNative("change"))
                  }
              },
              selectAll: function () {
                  return this.changeAll(!0)
              },
              deselectAll: function () {
                  return this.changeAll(!1)
              },
              toggle: function (e) {
                  (e = e || window.event) && e.stopPropagation(), this.$button.trigger("click.bs.dropdown.data-api")
              },
              keydown: function (e) {
                  var t, i, n, s, o, l = G(this),
                      r = l.hasClass("dropdown-toggle"),
                      a = (r ? l.closest(".dropdown") : l.closest(N.MENU)).data("this"),
                      c = a.findLis(),
                      d = !1,
                      h = e.which === H && !r && !a.options.selectOnTab,
                      p = P.test(e.which) || h,
                      u = a.$menuInner[0].scrollTop,
                      f = a.isVirtual(),
                      m = !0 === f ? a.selectpicker.view.position0 : 0;
                  if (!(i = a.$newElement.hasClass(Y.SHOW)) && (p || 48 <= e.which && e.which <= 57 || 96 <= e.which && e.which <= 105 || 65 <= e.which && e.which <= 90) && a.$button.trigger("click.bs.dropdown.data-api"), e.which === C && i && (e.preventDefault(), a.$button.trigger("click.bs.dropdown.data-api").focus()), p) {
                      if (!c.length) return;
                      void 0 === (t = !0 === f ? c.index(c.filter(".active")) : a.selectpicker.current.map.newIndex[a.activeIndex]) && (t = -1), -1 !== t && ((n = a.selectpicker.current.elements[t + m]).classList.remove("active"), n.firstChild && n.firstChild.classList.remove("active")), e.which === D ? (-1 !== t && t--, t + m < 0 && (t += c.length), a.selectpicker.view.canHighlight[t + m] || -1 === (t = a.selectpicker.view.canHighlight.slice(0, t + m).lastIndexOf(!0) - m) && (t = c.length - 1)) : (e.which === L || h) && (++t + m >= a.selectpicker.view.canHighlight.length && (t = 0), a.selectpicker.view.canHighlight[t + m] || (t = t + 1 + a.selectpicker.view.canHighlight.slice(t + m + 1).indexOf(!0))), e.preventDefault();
                      var v = m + t;
                      e.which === D ? 0 === m && t === c.length - 1 ? (a.$menuInner[0].scrollTop = a.$menuInner[0].scrollHeight, v = a.selectpicker.current.elements.length - 1) : d = (o = (s = a.selectpicker.current.data[v]).position - s.height) < u : (e.which === L || h) && (0 === t ? v = a.$menuInner[0].scrollTop = 0 : d = u < (o = (s = a.selectpicker.current.data[v]).position - a.sizeInfo.menuInnerHeight)), (n = a.selectpicker.current.elements[v]) && (n.classList.add("active"), n.firstChild && n.firstChild.classList.add("active")), a.activeIndex = a.selectpicker.current.map.originalIndex[v], a.selectpicker.view.currentActive = n, d && (a.$menuInner[0].scrollTop = o), a.options.liveSearch ? a.$searchbox.focus() : l.focus()
                  } else if (!l.is("input") && !R.test(e.which) || e.which === T && a.selectpicker.keydown.keyHistory) {
                      var g, b, w = [];
                      e.preventDefault(), a.selectpicker.keydown.keyHistory += E[e.which], a.selectpicker.keydown.resetKeyHistory.cancel && clearTimeout(a.selectpicker.keydown.resetKeyHistory.cancel), a.selectpicker.keydown.resetKeyHistory.cancel = a.selectpicker.keydown.resetKeyHistory.start(), b = a.selectpicker.keydown.keyHistory, /^(.)\1+$/.test(b) && (b = b.charAt(0));
                      for (var I = 0; I < a.selectpicker.current.data.length; I++) {
                          var x = a.selectpicker.current.data[I];
                          $(x, b, "startsWith", !0) && a.selectpicker.view.canHighlight[I] && (x.index = I, w.push(x.originalIndex))
                      }
                      if (w.length) {
                          var k = 0;
                          c.removeClass("active").find("a").removeClass("active"), 1 === b.length && (-1 === (k = w.indexOf(a.activeIndex)) || k === w.length - 1 ? k = 0 : k++), g = a.selectpicker.current.map.newIndex[w[k]], 0 < u - (s = a.selectpicker.current.data[g]).position ? (o = s.position - s.height, d = !0) : (o = s.position - a.sizeInfo.menuInnerHeight, d = s.position > u + a.sizeInfo.menuInnerHeight), (n = a.selectpicker.current.elements[g]).classList.add("active"), n.firstChild && n.firstChild.classList.add("active"), a.activeIndex = w[k], n.firstChild.focus(), d && (a.$menuInner[0].scrollTop = o), l.focus()
                      }
                  }
                  i && (e.which === T && !a.selectpicker.keydown.keyHistory || e.which === O || e.which === H && a.options.selectOnTab) && (e.which !== T && e.preventDefault(), a.options.liveSearch && e.which === T || (a.$menuInner.find(".active a").trigger("click", !0), l.focus(), a.options.liveSearch || (e.preventDefault(), G(document).data("spaceSelect", !0))))
              },
              mobile: function () {
                  this.$element.addClass("mobile-device")
              },
              refresh: function () {
                  var e = G.extend({}, this.options, this.$element.data());
                  this.options = e, this.selectpicker.main.map.newIndex = {}, this.selectpicker.main.map.originalIndex = {}, this.createLi(), this.checkDisabled(), this.render(), this.setStyle(), this.setWidth(), this.setSize(!0), this.$element.trigger("refreshed" + A)
              },
              hide: function () {
                  this.$newElement.hide()
              },
              show: function () {
                  this.$newElement.show()
              },
              remove: function () {
                  this.$newElement.remove(), this.$element.remove()
              },
              destroy: function () {
                  this.$newElement.before(this.$element).remove(), this.$bsContainer ? this.$bsContainer.remove() : this.$menu.remove(), this.$element.off(A).removeData("selectpicker").removeClass("bs-select-hidden selectpicker"), G(window).off(A + "." + this.selectId)
              }
          };
          var g = G.fn.selectpicker;
          G.fn.selectpicker = f, G.fn.selectpicker.Constructor = u, G.fn.selectpicker.noConflict = function () {
              return G.fn.selectpicker = g, this
          }, G(document).off("keydown.bs.dropdown.data-api").on("keydown" + A, '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', u.prototype.keydown).on("focusin.modal", '.bootstrap-select [data-toggle="dropdown"], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input', function (e) {
              e.stopPropagation()
          }), G(window).on("load" + A + ".data-api", function () {
              G(".selectpicker").each(function () {
                  var e = G(this);
                  f.call(e, e.data())
              })
          })
      }(e)
  });
  //# sourceMappingURL=bootstrap-select.js.map
  (function (factory) {
  
      if (typeof define === 'function' && define.amd) {
  
          // AMD. Register as an anonymous module.
          define([], factory);
  
      } else if (typeof exports === 'object') {
  
          // Node/CommonJS
          module.exports = factory();
  
      } else {
  
          // Browser globals
          window.wNumb = factory();
      }
  
  }(function () {
  
      'use strict';
  
      var FormatOptions = [
    'decimals',
    'thousand',
    'mark',
    'prefix',
    'suffix',
    'encoder',
    'decoder',
    'negativeBefore',
    'negative',
    'edit',
    'undo'
  ];
  
      // General
  
      // Reverse a string
      function strReverse(a) {
          return a.split('').reverse().join('');
      }
  
      // Check if a string starts with a specified prefix.
      function strStartsWith(input, match) {
          return input.substring(0, match.length) === match;
      }
  
      // Check is a string ends in a specified suffix.
      function strEndsWith(input, match) {
          return input.slice(-1 * match.length) === match;
      }
  
      // Throw an error if formatting options are incompatible.
      function throwEqualError(F, a, b) {
          if ((F[a] || F[b]) && (F[a] === F[b])) {
              throw new Error(a);
          }
      }
  
      // Check if a number is finite and not NaN
      function isValidNumber(input) {
          return typeof input === 'number' && isFinite(input);
      }
  
      // Provide rounding-accurate toFixed method.
      // Borrowed: http://stackoverflow.com/a/21323330/775265
      function toFixed(value, exp) {
          value = value.toString().split('e');
          value = Math.round(+(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp)));
          value = value.toString().split('e');
          return (+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp))).toFixed(exp);
      }
  
  
      // Formatting
  
      // Accept a number as input, output formatted string.
      function formatTo(decimals, thousand, mark, prefix, suffix, encoder, decoder, negativeBefore, negative, edit, undo, input) {
  
          var originalInput = input,
              inputIsNegative, inputPieces, inputBase, inputDecimals = '',
              output = '';
  
          // Apply user encoder to the input.
          // Expected outcome: number.
          if (encoder) {
              input = encoder(input);
          }
  
          // Stop if no valid number was provided, the number is infinite or NaN.
          if (!isValidNumber(input)) {
              return false;
          }
  
          // Rounding away decimals might cause a value of -0
          // when using very small ranges. Remove those cases.
          if (decimals !== false && parseFloat(input.toFixed(decimals)) === 0) {
              input = 0;
          }
  
          // Formatting is done on absolute numbers,
          // decorated by an optional negative symbol.
          if (input < 0) {
              inputIsNegative = true;
              input = Math.abs(input);
          }
  
          // Reduce the number of decimals to the specified option.
          if (decimals !== false) {
              input = toFixed(input, decimals);
          }
  
          // Transform the number into a string, so it can be split.
          input = input.toString();
  
          // Break the number on the decimal separator.
          if (input.indexOf('.') !== -1) {
              inputPieces = input.split('.');
  
              inputBase = inputPieces[0];
  
              if (mark) {
                  inputDecimals = mark + inputPieces[1];
              }
  
          } else {
  
              // If it isn't split, the entire number will do.
              inputBase = input;
          }
  
          // Group numbers in sets of three.
          if (thousand) {
              inputBase = strReverse(inputBase).match(/.{1,3}/g);
              inputBase = strReverse(inputBase.join(strReverse(thousand)));
          }
  
          // If the number is negative, prefix with negation symbol.
          if (inputIsNegative && negativeBefore) {
              output += negativeBefore;
          }
  
          // Prefix the number
          if (prefix) {
              output += prefix;
          }
  
          // Normal negative option comes after the prefix. Defaults to '-'.
          if (inputIsNegative && negative) {
              output += negative;
          }
  
          // Append the actual number.
          output += inputBase;
          output += inputDecimals;
  
          // Apply the suffix.
          if (suffix) {
              output += suffix;
          }
  
          // Run the output through a user-specified post-formatter.
          if (edit) {
              output = edit(output, originalInput);
          }
  
          // All done.
          return output;
      }
  
      // Accept a sting as input, output decoded number.
      function formatFrom(decimals, thousand, mark, prefix, suffix, encoder, decoder, negativeBefore, negative, edit, undo, input) {
  
          var originalInput = input,
              inputIsNegative, output = '';
  
          // User defined pre-decoder. Result must be a non empty string.
          if (undo) {
              input = undo(input);
          }
  
          // Test the input. Can't be empty.
          if (!input || typeof input !== 'string') {
              return false;
          }
  
          // If the string starts with the negativeBefore value: remove it.
          // Remember is was there, the number is negative.
          if (negativeBefore && strStartsWith(input, negativeBefore)) {
              input = input.replace(negativeBefore, '');
              inputIsNegative = true;
          }
  
          // Repeat the same procedure for the prefix.
          if (prefix && strStartsWith(input, prefix)) {
              input = input.replace(prefix, '');
          }
  
          // And again for negative.
          if (negative && strStartsWith(input, negative)) {
              input = input.replace(negative, '');
              inputIsNegative = true;
          }
  
          // Remove the suffix.
          // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice
          if (suffix && strEndsWith(input, suffix)) {
              input = input.slice(0, -1 * suffix.length);
          }
  
          // Remove the thousand grouping.
          if (thousand) {
              input = input.split(thousand).join('');
          }
  
          // Set the decimal separator back to period.
          if (mark) {
              input = input.replace(mark, '.');
          }
  
          // Prepend the negative symbol.
          if (inputIsNegative) {
              output += '-';
          }
  
          // Add the number
          output += input;
  
          // Trim all non-numeric characters (allow '.' and '-');
          output = output.replace(/[^0-9\.\-.]/g, '');
  
          // The value contains no parse-able number.
          if (output === '') {
              return false;
          }
  
          // Covert to number.
          output = Number(output);
  
          // Run the user-specified post-decoder.
          if (decoder) {
              output = decoder(output);
          }
  
          // Check is the output is valid, otherwise: return false.
          if (!isValidNumber(output)) {
              return false;
          }
  
          return output;
      }
  
  
      // Framework
  
      // Validate formatting options
      function validate(inputOptions) {
  
          var i, optionName, optionValue,
              filteredOptions = {};
  
          if (inputOptions['suffix'] === undefined) {
              inputOptions['suffix'] = inputOptions['postfix'];
          }
  
          for (i = 0; i < FormatOptions.length; i += 1) {
  
              optionName = FormatOptions[i];
              optionValue = inputOptions[optionName];
  
              if (optionValue === undefined) {
  
                  // Only default if negativeBefore isn't set.
                  if (optionName === 'negative' && !filteredOptions.negativeBefore) {
                      filteredOptions[optionName] = '-';
                      // Don't set a default for mark when 'thousand' is set.
                  } else if (optionName === 'mark' && filteredOptions.thousand !== '.') {
                      filteredOptions[optionName] = '.';
                  } else {
                      filteredOptions[optionName] = false;
                  }
  
                  // Floating points in JS are stable up to 7 decimals.
              } else if (optionName === 'decimals') {
                  if (optionValue >= 0 && optionValue < 8) {
                      filteredOptions[optionName] = optionValue;
                  } else {
                      throw new Error(optionName);
                  }
  
                  // These options, when provided, must be functions.
              } else if (optionName === 'encoder' || optionName === 'decoder' || optionName === 'edit' || optionName === 'undo') {
                  if (typeof optionValue === 'function') {
                      filteredOptions[optionName] = optionValue;
                  } else {
                      throw new Error(optionName);
                  }
  
                  // Other options are strings.
              } else {
  
                  if (typeof optionValue === 'string') {
                      filteredOptions[optionName] = optionValue;
                  } else {
                      throw new Error(optionName);
                  }
              }
          }
  
          // Some values can't be extracted from a
          // string if certain combinations are present.
          throwEqualError(filteredOptions, 'mark', 'thousand');
          throwEqualError(filteredOptions, 'prefix', 'negative');
          throwEqualError(filteredOptions, 'prefix', 'negativeBefore');
  
          return filteredOptions;
      }
  
      // Pass all options as function arguments
      function passAll(options, method, input) {
          var i, args = [];
  
          // Add all options in order of FormatOptions
          for (i = 0; i < FormatOptions.length; i += 1) {
              args.push(options[FormatOptions[i]]);
          }
  
          // Append the input, then call the method, presenting all
          // options as arguments.
          args.push(input);
          return method.apply('', args);
      }
  
      function wNumb(options) {
  
          if (!(this instanceof wNumb)) {
              return new wNumb(options);
          }
  
          if (typeof options !== "object") {
              return;
          }
  
          options = validate(options);
  
          // Call 'formatTo' with proper arguments.
          this.to = function (input) {
              return passAll(options, formatTo, input);
          };
  
          // Call 'formatFrom' with proper arguments.
          this.from = function (input) {
              return passAll(options, formatFrom, input);
          };
      }
  
      return wNumb;
  
  }));
  
  /*! nouislider - 12.1.0 - 10/25/2018 */
  ! function (t) {
      "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? module.exports = t() : window.noUiSlider = t()
  }(function () {
      "use strict";
      var et = "12.1.0";
  
      function s(t) {
          return null != t
      }
  
      function rt(t) {
          t.preventDefault()
      }
  
      function i(t) {
          return "number" == typeof t && !isNaN(t) && isFinite(t)
      }
  
      function nt(t, e, r) {
          0 < r && (at(t, e), setTimeout(function () {
              st(t, e)
          }, r))
      }
  
      function it(t) {
          return Math.max(Math.min(t, 100), 0)
      }
  
      function ot(t) {
          return Array.isArray(t) ? t : [t]
      }
  
      function e(t) {
          var e = (t = String(t)).split(".");
          return 1 < e.length ? e[1].length : 0
      }
  
      function at(t, e) {
          t.classList ? t.classList.add(e) : t.className += " " + e
      }
  
      function st(t, e) {
          t.classList ? t.classList.remove(e) : t.className = t.className.replace(new RegExp("(^|\\b)" + e.split(" ").join("|") + "(\\b|$)", "gi"), " ")
      }
  
      function lt(t) {
          var e = void 0 !== window.pageXOffset,
              r = "CSS1Compat" === (t.compatMode || "");
          return {
              x: e ? window.pageXOffset : r ? t.documentElement.scrollLeft : t.body.scrollLeft,
              y: e ? window.pageYOffset : r ? t.documentElement.scrollTop : t.body.scrollTop
          }
      }
  
      function c(t, e) {
          return 100 / (e - t)
      }
  
      function p(t, e) {
          return 100 * e / (t[1] - t[0])
      }
  
      function f(t, e) {
          for (var r = 1; t >= e[r];) r += 1;
          return r
      }
  
      function r(t, e, r) {
          if (r >= t.slice(-1)[0]) return 100;
          var n, i, o = f(r, t),
              a = t[o - 1],
              s = t[o],
              l = e[o - 1],
              u = e[o];
          return l + (i = r, p(n = [a, s], n[0] < 0 ? i + Math.abs(n[0]) : i - n[0]) / c(l, u))
      }
  
      function n(t, e, r, n) {
          if (100 === n) return n;
          var i, o, a = f(n, t),
              s = t[a - 1],
              l = t[a];
          return r ? (l - s) / 2 < n - s ? l : s : e[a - 1] ? t[a - 1] + (i = n - t[a - 1], o = e[a - 1], Math.round(i / o) * o) : n
      }
  
      function o(t, e, r) {
          var n;
          if ("number" == typeof e && (e = [e]), !Array.isArray(e)) throw new Error("noUiSlider (" + et + "): 'range' contains invalid value.");
          if (!i(n = "min" === t ? 0 : "max" === t ? 100 : parseFloat(t)) || !i(e[0])) throw new Error("noUiSlider (" + et + "): 'range' value isn't numeric.");
          r.xPct.push(n), r.xVal.push(e[0]), n ? r.xSteps.push(!isNaN(e[1]) && e[1]) : isNaN(e[1]) || (r.xSteps[0] = e[1]), r.xHighestCompleteStep.push(0)
      }
  
      function a(t, e, r) {
          if (!e) return !0;
          r.xSteps[t] = p([r.xVal[t], r.xVal[t + 1]], e) / c(r.xPct[t], r.xPct[t + 1]);
          var n = (r.xVal[t + 1] - r.xVal[t]) / r.xNumSteps[t],
              i = Math.ceil(Number(n.toFixed(3)) - 1),
              o = r.xVal[t] + r.xNumSteps[t] * i;
          r.xHighestCompleteStep[t] = o
      }
  
      function l(t, e, r) {
          var n;
          this.xPct = [], this.xVal = [], this.xSteps = [r || !1], this.xNumSteps = [!1], this.xHighestCompleteStep = [], this.snap = e;
          var i = [];
          for (n in t) t.hasOwnProperty(n) && i.push([t[n], n]);
          for (i.length && "object" == typeof i[0][0] ? i.sort(function (t, e) {
                  return t[0][0] - e[0][0]
              }) : i.sort(function (t, e) {
                  return t[0] - e[0]
              }), n = 0; n < i.length; n++) o(i[n][1], i[n][0], this);
          for (this.xNumSteps = this.xSteps.slice(0), n = 0; n < this.xNumSteps.length; n++) a(n, this.xNumSteps[n], this)
      }
      l.prototype.getMargin = function (t) {
          var e = this.xNumSteps[0];
          if (e && t / e % 1 != 0) throw new Error("noUiSlider (" + et + "): 'limit', 'margin' and 'padding' must be divisible by step.");
          return 2 === this.xPct.length && p(this.xVal, t)
      }, l.prototype.toStepping = function (t) {
          return t = r(this.xVal, this.xPct, t)
      }, l.prototype.fromStepping = function (t) {
          return function (t, e, r) {
              if (100 <= r) return t.slice(-1)[0];
              var n, i = f(r, e),
                  o = t[i - 1],
                  a = t[i],
                  s = e[i - 1],
                  l = e[i];
              return n = [o, a], (r - s) * c(s, l) * (n[1] - n[0]) / 100 + n[0]
          }(this.xVal, this.xPct, t)
      }, l.prototype.getStep = function (t) {
          return t = n(this.xPct, this.xSteps, this.snap, t)
      }, l.prototype.getNearbySteps = function (t) {
          var e = f(t, this.xPct);
          return {
              stepBefore: {
                  startValue: this.xVal[e - 2],
                  step: this.xNumSteps[e - 2],
                  highestStep: this.xHighestCompleteStep[e - 2]
              },
              thisStep: {
                  startValue: this.xVal[e - 1],
                  step: this.xNumSteps[e - 1],
                  highestStep: this.xHighestCompleteStep[e - 1]
              },
              stepAfter: {
                  startValue: this.xVal[e],
                  step: this.xNumSteps[e],
                  highestStep: this.xHighestCompleteStep[e]
              }
          }
      }, l.prototype.countStepDecimals = function () {
          var t = this.xNumSteps.map(e);
          return Math.max.apply(null, t)
      }, l.prototype.convert = function (t) {
          return this.getStep(this.toStepping(t))
      };
      var u = {
          to: function (t) {
              return void 0 !== t && t.toFixed(2)
          },
          from: Number
      };
  
      function d(t) {
          if ("object" == typeof (e = t) && "function" == typeof e.to && "function" == typeof e.from) return !0;
          var e;
          throw new Error("noUiSlider (" + et + "): 'format' requires 'to' and 'from' methods.")
      }
  
      function h(t, e) {
          if (!i(e)) throw new Error("noUiSlider (" + et + "): 'step' is not numeric.");
          t.singleStep = e
      }
  
      function m(t, e) {
          if ("object" != typeof e || Array.isArray(e)) throw new Error("noUiSlider (" + et + "): 'range' is not an object.");
          if (void 0 === e.min || void 0 === e.max) throw new Error("noUiSlider (" + et + "): Missing 'min' or 'max' in 'range'.");
          if (e.min === e.max) throw new Error("noUiSlider (" + et + "): 'range' 'min' and 'max' cannot be equal.");
          t.spectrum = new l(e, t.snap, t.singleStep)
      }
  
      function g(t, e) {
          if (e = ot(e), !Array.isArray(e) || !e.length) throw new Error("noUiSlider (" + et + "): 'start' option is incorrect.");
          t.handles = e.length, t.start = e
      }
  
      function v(t, e) {
          if ("boolean" != typeof (t.snap = e)) throw new Error("noUiSlider (" + et + "): 'snap' option must be a boolean.")
      }
  
      function b(t, e) {
          if ("boolean" != typeof (t.animate = e)) throw new Error("noUiSlider (" + et + "): 'animate' option must be a boolean.")
      }
  
      function S(t, e) {
          if ("number" != typeof (t.animationDuration = e)) throw new Error("noUiSlider (" + et + "): 'animationDuration' option must be a number.")
      }
  
      function w(t, e) {
          var r, n = [!1];
          if ("lower" === e ? e = [!0, !1] : "upper" === e && (e = [!1, !0]), !0 === e || !1 === e) {
              for (r = 1; r < t.handles; r++) n.push(e);
              n.push(!1)
          } else {
              if (!Array.isArray(e) || !e.length || e.length !== t.handles + 1) throw new Error("noUiSlider (" + et + "): 'connect' option doesn't match handle count.");
              n = e
          }
          t.connect = n
      }
  
      function x(t, e) {
          switch (e) {
              case "horizontal":
                  t.ort = 0;
                  break;
              case "vertical":
                  t.ort = 1;
                  break;
              default:
                  throw new Error("noUiSlider (" + et + "): 'orientation' option is invalid.")
          }
      }
  
      function y(t, e) {
          if (!i(e)) throw new Error("noUiSlider (" + et + "): 'margin' option must be numeric.");
          if (0 !== e && (t.margin = t.spectrum.getMargin(e), !t.margin)) throw new Error("noUiSlider (" + et + "): 'margin' option is only supported on linear sliders.")
      }
  
      function E(t, e) {
          if (!i(e)) throw new Error("noUiSlider (" + et + "): 'limit' option must be numeric.");
          if (t.limit = t.spectrum.getMargin(e), !t.limit || t.handles < 2) throw new Error("noUiSlider (" + et + "): 'limit' option is only supported on linear sliders with 2 or more handles.")
      }
  
      function C(t, e) {
          if (!i(e) && !Array.isArray(e)) throw new Error("noUiSlider (" + et + "): 'padding' option must be numeric or array of exactly 2 numbers.");
          if (Array.isArray(e) && 2 !== e.length && !i(e[0]) && !i(e[1])) throw new Error("noUiSlider (" + et + "): 'padding' option must be numeric or array of exactly 2 numbers.");
          if (0 !== e) {
              if (Array.isArray(e) || (e = [e, e]), !(t.padding = [t.spectrum.getMargin(e[0]), t.spectrum.getMargin(e[1])]) === t.padding[0] || !1 === t.padding[1]) throw new Error("noUiSlider (" + et + "): 'padding' option is only supported on linear sliders.");
              if (t.padding[0] < 0 || t.padding[1] < 0) throw new Error("noUiSlider (" + et + "): 'padding' option must be a positive number(s).");
              if (100 <= t.padding[0] + t.padding[1]) throw new Error("noUiSlider (" + et + "): 'padding' option must not exceed 100% of the range.")
          }
      }
  
      function N(t, e) {
          switch (e) {
              case "ltr":
                  t.dir = 0;
                  break;
              case "rtl":
                  t.dir = 1;
                  break;
              default:
                  throw new Error("noUiSlider (" + et + "): 'direction' option was not recognized.")
          }
      }
  
      function U(t, e) {
          if ("string" != typeof e) throw new Error("noUiSlider (" + et + "): 'behaviour' must be a string containing options.");
          var r = 0 <= e.indexOf("tap"),
              n = 0 <= e.indexOf("drag"),
              i = 0 <= e.indexOf("fixed"),
              o = 0 <= e.indexOf("snap"),
              a = 0 <= e.indexOf("hover"),
              s = 0 <= e.indexOf("unconstrained");
          if (i) {
              if (2 !== t.handles) throw new Error("noUiSlider (" + et + "): 'fixed' behaviour must be used with 2 handles");
              y(t, t.start[1] - t.start[0])
          }
          if (s && (t.margin || t.limit)) throw new Error("noUiSlider (" + et + "): 'unconstrained' behaviour cannot be used with margin or limit");
          t.events = {
              tap: r || o,
              drag: n,
              fixed: i,
              snap: o,
              hover: a,
              unconstrained: s
          }
      }
  
      function k(t, e) {
          if (!1 !== e)
              if (!0 === e) {
                  t.tooltips = [];
                  for (var r = 0; r < t.handles; r++) t.tooltips.push(!0)
              } else {
                  if (t.tooltips = ot(e), t.tooltips.length !== t.handles) throw new Error("noUiSlider (" + et + "): must pass a formatter for all handles.");
                  t.tooltips.forEach(function (t) {
                      if ("boolean" != typeof t && ("object" != typeof t || "function" != typeof t.to)) throw new Error("noUiSlider (" + et + "): 'tooltips' must be passed a formatter or 'false'.")
                  })
              }
      }
  
      function P(t, e) {
          d(t.ariaFormat = e)
      }
  
      function A(t, e) {
          d(t.format = e)
      }
  
      function M(t, e) {
          if ("boolean" != typeof (t.keyboardSupport = e)) throw new Error("noUiSlider (" + et + "): 'keyboardSupport' option must be a boolean.")
      }
  
      function V(t, e) {
          t.documentElement = e
      }
  
      function O(t, e) {
          if ("string" != typeof e && !1 !== e) throw new Error("noUiSlider (" + et + "): 'cssPrefix' must be a string or `false`.");
          t.cssPrefix = e
      }
  
      function L(t, e) {
          if ("object" != typeof e) throw new Error("noUiSlider (" + et + "): 'cssClasses' must be an object.");
          if ("string" == typeof t.cssPrefix)
              for (var r in t.cssClasses = {}, e) e.hasOwnProperty(r) && (t.cssClasses[r] = t.cssPrefix + e[r]);
          else t.cssClasses = e
      }
  
      function ut(e) {
          var r = {
                  margin: 0,
                  limit: 0,
                  padding: 0,
                  animate: !0,
                  animationDuration: 300,
                  ariaFormat: u,
                  format: u
              },
              n = {
                  step: {
                      r: !1,
                      t: h
                  },
                  start: {
                      r: !0,
                      t: g
                  },
                  connect: {
                      r: !0,
                      t: w
                  },
                  direction: {
                      r: !0,
                      t: N
                  },
                  snap: {
                      r: !1,
                      t: v
                  },
                  animate: {
                      r: !1,
                      t: b
                  },
                  animationDuration: {
                      r: !1,
                      t: S
                  },
                  range: {
                      r: !0,
                      t: m
                  },
                  orientation: {
                      r: !1,
                      t: x
                  },
                  margin: {
                      r: !1,
                      t: y
                  },
                  limit: {
                      r: !1,
                      t: E
                  },
                  padding: {
                      r: !1,
                      t: C
                  },
                  behaviour: {
                      r: !0,
                      t: U
                  },
                  ariaFormat: {
                      r: !1,
                      t: P
                  },
                  format: {
                      r: !1,
                      t: A
                  },
                  tooltips: {
                      r: !1,
                      t: k
                  },
                  keyboardSupport: {
                      r: !0,
                      t: M
                  },
                  documentElement: {
                      r: !1,
                      t: V
                  },
                  cssPrefix: {
                      r: !0,
                      t: O
                  },
                  cssClasses: {
                      r: !0,
                      t: L
                  }
              },
              i = {
                  connect: !1,
                  direction: "ltr",
                  behaviour: "tap",
                  orientation: "horizontal",
                  keyboardSupport: !0,
                  cssPrefix: "noUi-",
                  cssClasses: {
                      target: "target",
                      base: "base",
                      origin: "origin",
                      handle: "handle",
                      handleLower: "handle-lower",
                      handleUpper: "handle-upper",
                      horizontal: "horizontal",
                      vertical: "vertical",
                      background: "background",
                      connect: "connect",
                      connects: "connects",
                      ltr: "ltr",
                      rtl: "rtl",
                      draggable: "draggable",
                      drag: "state-drag",
                      tap: "state-tap",
                      active: "active",
                      tooltip: "tooltip",
                      pips: "pips",
                      pipsHorizontal: "pips-horizontal",
                      pipsVertical: "pips-vertical",
                      marker: "marker",
                      markerHorizontal: "marker-horizontal",
                      markerVertical: "marker-vertical",
                      markerNormal: "marker-normal",
                      markerLarge: "marker-large",
                      markerSub: "marker-sub",
                      value: "value",
                      valueHorizontal: "value-horizontal",
                      valueVertical: "value-vertical",
                      valueNormal: "value-normal",
                      valueLarge: "value-large",
                      valueSub: "value-sub"
                  }
              };
          e.format && !e.ariaFormat && (e.ariaFormat = e.format), Object.keys(n).forEach(function (t) {
              if (!s(e[t]) && void 0 === i[t]) {
                  if (n[t].r) throw new Error("noUiSlider (" + et + "): '" + t + "' is required.");
                  return !0
              }
              n[t].t(r, s(e[t]) ? e[t] : i[t])
          }), r.pips = e.pips;
          var t = document.createElement("div"),
              o = void 0 !== t.style.msTransform,
              a = void 0 !== t.style.transform;
          r.transformRule = a ? "transform" : o ? "msTransform" : "webkitTransform";
          return r.style = [["left", "top"], ["right", "bottom"]][r.dir][r.ort], r
      }
  
      function z(t, f, o) {
          var l, u, s, a, c, e, p, i, d = window.navigator.pointerEnabled ? {
                  start: "pointerdown",
                  move: "pointermove",
                  end: "pointerup"
              } : window.navigator.msPointerEnabled ? {
                  start: "MSPointerDown",
                  move: "MSPointerMove",
                  end: "MSPointerUp"
              } : {
                  start: "mousedown touchstart",
                  move: "mousemove touchmove",
                  end: "mouseup touchend"
              },
              h = window.CSS && CSS.supports && CSS.supports("touch-action", "none") && function () {
                  var t = !1;
                  try {
                      var e = Object.defineProperty({}, "passive", {
                          get: function () {
                              t = !0
                          }
                      });
                      window.addEventListener("test", null, e)
                  } catch (t) {}
                  return t
              }(),
              y = t,
              m = [],
              g = [],
              v = 0,
              E = f.spectrum,
              b = [],
              S = {},
              w = t.ownerDocument,
              x = f.documentElement || w.documentElement,
              C = w.body,
              N = -1,
              U = 0,
              k = 1,
              P = 2,
              A = "rtl" === w.dir || 1 === f.ort ? 0 : 100;
  
          function M(t, e) {
              var r = w.createElement("div");
              return e && at(r, e), t.appendChild(r), r
          }
  
          function V(t, e) {
              return !!e && M(t, f.cssClasses.connect)
          }
  
          function r(t, e) {
              return !!f.tooltips[e] && M(t.firstChild, f.cssClasses.tooltip)
          }
  
          function O(e, i, o) {
              var a = w.createElement("div"),
                  s = [];
              s[U] = f.cssClasses.valueNormal, s[k] = f.cssClasses.valueLarge, s[P] = f.cssClasses.valueSub;
              var l = [];
              l[U] = f.cssClasses.markerNormal, l[k] = f.cssClasses.markerLarge, l[P] = f.cssClasses.markerSub;
              var u = [f.cssClasses.valueHorizontal, f.cssClasses.valueVertical],
                  c = [f.cssClasses.markerHorizontal, f.cssClasses.markerVertical];
  
              function p(t, e) {
                  var r = e === f.cssClasses.value,
                      n = r ? s : l;
                  return e + " " + (r ? u : c)[f.ort] + " " + n[t]
              }
              return at(a, f.cssClasses.pips), at(a, 0 === f.ort ? f.cssClasses.pipsHorizontal : f.cssClasses.pipsVertical), Object.keys(e).forEach(function (t) {
                  ! function (t, e, r) {
                      if ((r = i ? i(e, r) : r) !== N) {
                          var n = M(a, !1);
                          n.className = p(r, f.cssClasses.marker), n.style[f.style] = t + "%", U < r && ((n = M(a, !1)).className = p(r, f.cssClasses.value), n.setAttribute("data-value", e), n.style[f.style] = t + "%", n.innerHTML = o.to(e))
                      }
                  }(t, e[t][0], e[t][1])
              }), a
          }
  
          function L() {
              var t;
              c && ((t = c).parentElement.removeChild(t), c = null)
          }
  
          function z(t) {
              L();
              var m, g, v, b, e, r, S, w, x, n = t.mode,
                  i = t.density || 1,
                  o = t.filter || !1,
                  a = function (t, e, r) {
                      if ("range" === t || "steps" === t) return E.xVal;
                      if ("count" === t) {
                          if (e < 2) throw new Error("noUiSlider (" + et + "): 'values' (>= 2) required for mode 'count'.");
                          var n = e - 1,
                              i = 100 / n;
                          for (e = []; n--;) e[n] = n * i;
                          e.push(100), t = "positions"
                      }
                      return "positions" === t ? e.map(function (t) {
                          return E.fromStepping(r ? E.getStep(t) : t)
                      }) : "values" === t ? r ? e.map(function (t) {
                          return E.fromStepping(E.getStep(E.toStepping(t)))
                      }) : e : void 0
                  }(n, t.values || !1, t.stepped || !1),
                  s = (m = i, g = n, v = a, b = {}, e = E.xVal[0], r = E.xVal[E.xVal.length - 1], w = S = !1, x = 0, (v = v.slice().sort(function (t, e) {
                      return t - e
                  }).filter(function (t) {
                      return !this[t] && (this[t] = !0)
                  }, {}))[0] !== e && (v.unshift(e), S = !0), v[v.length - 1] !== r && (v.push(r), w = !0), v.forEach(function (t, e) {
                      var r, n, i, o, a, s, l, u, c, p, f = t,
                          d = v[e + 1],
                          h = "steps" === g;
                      if (h && (r = E.xNumSteps[e]), r || (r = d - f), !1 !== f && void 0 !== d)
                          for (r = Math.max(r, 1e-7), n = f; n <= d; n = (n + r).toFixed(7) / 1) {
                              for (u = (a = (o = E.toStepping(n)) - x) / m, p = a / (c = Math.round(u)), i = 1; i <= c; i += 1) b[(s = x + i * p).toFixed(5)] = [E.fromStepping(s), 0];
                              l = -1 < v.indexOf(n) ? k : h ? P : U, !e && S && (l = 0), n === d && w || (b[o.toFixed(5)] = [n, l]), x = o
                          }
                  }), b),
                  l = t.format || {
                      to: Math.round
                  };
              return c = y.appendChild(O(s, o, l))
          }
  
          function j() {
              var t = l.getBoundingClientRect(),
                  e = "offset" + ["Width", "Height"][f.ort];
              return 0 === f.ort ? t.width || l[e] : t.height || l[e]
          }
  
          function F(n, i, o, a) {
              var e = function (t) {
                      return !!(t = function (t, e, r) {
                          var n, i, o = 0 === t.type.indexOf("touch"),
                              a = 0 === t.type.indexOf("mouse"),
                              s = 0 === t.type.indexOf("pointer");
                          0 === t.type.indexOf("MSPointer") && (s = !0);
                          if (o) {
                              var l = function (t) {
                                  return t.target === r || r.contains(t.target)
                              };
                              if ("touchstart" === t.type) {
                                  var u = Array.prototype.filter.call(t.touches, l);
                                  if (1 < u.length) return !1;
                                  n = u[0].pageX, i = u[0].pageY
                              } else {
                                  var c = Array.prototype.find.call(t.changedTouches, l);
                                  if (!c) return !1;
                                  n = c.pageX, i = c.pageY
                              }
                          }
                          e = e || lt(w), (a || s) && (n = t.clientX + e.x, i = t.clientY + e.y);
                          return t.pageOffset = e, t.points = [n, i], t.cursor = a || s, t
                      }(t, a.pageOffset, a.target || i)) && (!(y.hasAttribute("disabled") && !a.doNotReject) && (e = y, r = f.cssClasses.tap, !((e.classList ? e.classList.contains(r) : new RegExp("\\b" + r + "\\b").test(e.className)) && !a.doNotReject) && (!(n === d.start && void 0 !== t.buttons && 1 < t.buttons) && ((!a.hover || !t.buttons) && (h || t.preventDefault(), t.calcPoint = t.points[f.ort], void o(t, a))))));
                      var e, r
                  },
                  r = [];
              return n.split(" ").forEach(function (t) {
                  i.addEventListener(t, e, !!h && {
                      passive: !0
                  }), r.push([t, e])
              }), r
          }
  
          function H(t) {
              var e, r, n, i, o, a, s = 100 * (t - (e = l, r = f.ort, n = e.getBoundingClientRect(), i = e.ownerDocument, o = i.documentElement, a = lt(i), /webkit.*Chrome.*Mobile/i.test(navigator.userAgent) && (a.x = 0), r ? n.top + a.y - o.clientTop : n.left + a.x - o.clientLeft)) / j();
              return s = it(s), f.dir ? 100 - s : s
          }
  
          function D(t, e) {
              "mouseout" === t.type && "HTML" === t.target.nodeName && null === t.relatedTarget && R(t, e)
          }
  
          function T(t, e) {
              if (-1 === navigator.appVersion.indexOf("MSIE 9") && 0 === t.buttons && 0 !== e.buttonsProperty) return R(t, e);
              var r = (f.dir ? -1 : 1) * (t.calcPoint - e.startCalcPoint);
              $(0 < r, 100 * r / e.baseSize, e.locations, e.handleNumbers)
          }
  
          function R(t, e) {
              e.handle && (st(e.handle, f.cssClasses.active), v -= 1), e.listeners.forEach(function (t) {
                  x.removeEventListener(t[0], t[1])
              }), 0 === v && (st(y, f.cssClasses.drag), J(), t.cursor && (C.style.cursor = "", C.removeEventListener("selectstart", rt))), e.handleNumbers.forEach(function (t) {
                  Y("change", t), Y("set", t), Y("end", t)
              })
          }
  
          function q(t, e) {
              var r;
              if (1 === e.handleNumbers.length) {
                  var n = u[e.handleNumbers[0]];
                  if (n.hasAttribute("disabled")) return !1;
                  r = n.children[0], v += 1, at(r, f.cssClasses.active)
              }
              t.stopPropagation();
              var i = [],
                  o = F(d.move, x, T, {
                      target: t.target,
                      handle: r,
                      listeners: i,
                      startCalcPoint: t.calcPoint,
                      baseSize: j(),
                      pageOffset: t.pageOffset,
                      handleNumbers: e.handleNumbers,
                      buttonsProperty: t.buttons,
                      locations: m.slice()
                  }),
                  a = F(d.end, x, R, {
                      target: t.target,
                      handle: r,
                      listeners: i,
                      doNotReject: !0,
                      handleNumbers: e.handleNumbers
                  }),
                  s = F("mouseout", x, D, {
                      target: t.target,
                      handle: r,
                      listeners: i,
                      doNotReject: !0,
                      handleNumbers: e.handleNumbers
                  });
              i.push.apply(i, o.concat(a, s)), t.cursor && (C.style.cursor = getComputedStyle(t.target).cursor, 1 < u.length && at(y, f.cssClasses.drag), C.addEventListener("selectstart", rt, !1)), e.handleNumbers.forEach(function (t) {
                  Y("start", t)
              })
          }
  
          function n(t) {
              t.stopPropagation();
              var n, i, o, e = H(t.calcPoint),
                  r = (n = e, o = !(i = 100), u.forEach(function (t, e) {
                      if (!t.hasAttribute("disabled")) {
                          var r = Math.abs(m[e] - n);
                          (r < i || 100 === r && 100 === i) && (o = e, i = r)
                      }
                  }), o);
              if (!1 === r) return !1;
              f.events.snap || nt(y, f.cssClasses.tap, f.animationDuration), K(r, e, !0, !0), J(), Y("slide", r, !0), Y("update", r, !0), Y("change", r, !0), Y("set", r, !0), f.events.snap && q(t, {
                  handleNumbers: [r]
              })
          }
  
          function B(t) {
              var e = H(t.calcPoint),
                  r = E.getStep(e),
                  n = E.fromStepping(r);
              Object.keys(S).forEach(function (t) {
                  "hover" === t.split(".")[0] && S[t].forEach(function (t) {
                      t.call(a, n)
                  })
              })
          }
  
          function X(t, e) {
              S[t] = S[t] || [], S[t].push(e), "update" === t.split(".")[0] && u.forEach(function (t, e) {
                  Y("update", e)
              })
          }
  
          function Y(r, n, i) {
              Object.keys(S).forEach(function (t) {
                  var e = t.split(".")[0];
                  r === e && S[t].forEach(function (t) {
                      t.call(a, b.map(f.format.to), n, b.slice(), i || !1, m.slice())
                  })
              })
          }
  
          function _(t) {
              return t + "%"
          }
  
          function I(t, e, r, n, i, o) {
              return 1 < u.length && !f.events.unconstrained && (n && 0 < e && (r = Math.max(r, t[e - 1] + f.margin)), i && e < u.length - 1 && (r = Math.min(r, t[e + 1] - f.margin))), 1 < u.length && f.limit && (n && 0 < e && (r = Math.min(r, t[e - 1] + f.limit)), i && e < u.length - 1 && (r = Math.max(r, t[e + 1] - f.limit))), f.padding && (0 === e && (r = Math.max(r, f.padding[0])), e === u.length - 1 && (r = Math.min(r, 100 - f.padding[1]))), !((r = it(r = E.getStep(r))) === t[e] && !o) && r
          }
  
          function W(t, e) {
              var r = f.ort;
              return (r ? e : t) + ", " + (r ? t : e)
          }
  
          function $(t, n, r, e) {
              var i = r.slice(),
                  o = [!t, t],
                  a = [t, !t];
              e = e.slice(), t && e.reverse(), 1 < e.length ? e.forEach(function (t, e) {
                  var r = I(i, t, i[t] + n, o[e], a[e], !1);
                  !1 === r ? n = 0 : (n = r - i[t], i[t] = r)
              }) : o = a = [!0];
              var s = !1;
              e.forEach(function (t, e) {
                  s = K(t, r[t] + n, o[e], a[e]) || s
              }), s && e.forEach(function (t) {
                  Y("update", t), Y("slide", t)
              })
          }
  
          function G(t, e) {
              return f.dir ? 100 - t - e : t
          }
  
          function J() {
              g.forEach(function (t) {
                  var e = 50 < m[t] ? -1 : 1,
                      r = 3 + (u.length + e * t);
                  u[t].style.zIndex = r
              })
          }
  
          function K(t, e, r, n) {
              return !1 !== (e = I(m, t, e, r, n, !1)) && (function (t, e) {
                  m[t] = e, b[t] = E.fromStepping(e);
                  var r = "translate(" + W(_(G(e, 0) - A), "0") + ")";
                  u[t].style[f.transformRule] = r, Q(t), Q(t + 1)
              }(t, e), !0)
          }
  
          function Q(t) {
              if (s[t]) {
                  var e = 0,
                      r = 100;
                  0 !== t && (e = m[t - 1]), t !== s.length - 1 && (r = m[t]);
                  var n = r - e,
                      i = "translate(" + W(_(G(e, n)), "0") + ")",
                      o = "scale(" + W(n / 100, "1") + ")";
                  s[t].style[f.transformRule] = i + " " + o
              }
          }
  
          function Z(t, e) {
              var n = ot(t),
                  r = void 0 === m[0];
              e = void 0 === e || !!e, f.animate && !r && nt(y, f.cssClasses.tap, f.animationDuration), g.forEach(function (t) {
                  var e, r;
                  K(t, (e = n[t], r = t, null === e || !1 === e || void 0 === e ? m[r] : ("number" == typeof e && (e = String(e)), e = f.format.from(e), !1 === (e = E.toStepping(e)) || isNaN(e) ? m[r] : e)), !0, !1)
              }), g.forEach(function (t) {
                  K(t, m[t], !0, !0)
              }), J(), g.forEach(function (t) {
                  Y("update", t), null !== n[t] && e && Y("set", t)
              })
          }
  
          function tt() {
              var t = b.map(f.format.to);
              return 1 === t.length ? t[0] : t
          }
          return at(e = y, f.cssClasses.target), 0 === f.dir ? at(e, f.cssClasses.ltr) : at(e, f.cssClasses.rtl), 0 === f.ort ? at(e, f.cssClasses.horizontal) : at(e, f.cssClasses.vertical), l = M(e, f.cssClasses.base),
              function (t, e) {
                  var r, n, i, o = M(e, f.cssClasses.connects);
                  u = [], (s = []).push(V(o, t[0]));
                  for (var a = 0; a < f.handles; a++) u.push((r = a, i = void 0, n = M(e, f.cssClasses.origin), (i = M(n, f.cssClasses.handle)).setAttribute("data-handle", r), f.keyboardSupport && i.setAttribute("tabindex", "0"), i.setAttribute("role", "slider"), i.setAttribute("aria-orientation", f.ort ? "vertical" : "horizontal"), 0 === r ? at(i, f.cssClasses.handleLower) : r === f.handles - 1 && at(i, f.cssClasses.handleUpper), n)), g[a] = a, s.push(V(o, t[a + 1]))
              }(f.connect, l), (p = f.events).fixed || u.forEach(function (t, e) {
                  F(d.start, t.children[0], q, {
                      handleNumbers: [e]
                  })
              }), p.tap && F(d.start, l, n, {}), p.hover && F(d.move, l, B, {
                  hover: !0
              }), p.drag && s.forEach(function (t, e) {
                  if (!1 !== t && 0 !== e && e !== s.length - 1) {
                      var r = u[e - 1],
                          n = u[e],
                          i = [t];
                      at(t, f.cssClasses.draggable), p.fixed && (i.push(r.children[0]), i.push(n.children[0])), i.forEach(function (t) {
                          F(d.start, t, q, {
                              handles: [r, n],
                              handleNumbers: [e - 1, e]
                          })
                      })
                  }
              }), Z(f.start), a = {
                  destroy: function () {
                      for (var t in f.cssClasses) f.cssClasses.hasOwnProperty(t) && st(y, f.cssClasses[t]);
                      for (; y.firstChild;) y.removeChild(y.firstChild);
                      delete y.noUiSlider
                  },
                  steps: function () {
                      return m.map(function (t, e) {
                          var r = E.getNearbySteps(t),
                              n = b[e],
                              i = r.thisStep.step,
                              o = null;
                          !1 !== i && n + i > r.stepAfter.startValue && (i = r.stepAfter.startValue - n), o = n > r.thisStep.startValue ? r.thisStep.step : !1 !== r.stepBefore.step && n - r.stepBefore.highestStep, 100 === t ? i = null : 0 === t && (o = null);
                          var a = E.countStepDecimals();
                          return null !== i && !1 !== i && (i = Number(i.toFixed(a))), null !== o && !1 !== o && (o = Number(o.toFixed(a))), [o, i]
                      })
                  },
                  on: X,
                  off: function (t) {
                      var n = t && t.split(".")[0],
                          i = n && t.substring(n.length);
                      Object.keys(S).forEach(function (t) {
                          var e = t.split(".")[0],
                              r = t.substring(e.length);
                          n && n !== e || i && i !== r || delete S[t]
                      })
                  },
                  get: tt,
                  set: Z,
                  setHandle: function (t, e, r) {
                      var n = [];
                      if (!(0 <= (t = Number(t)) && t < g.length)) throw new Error("noUiSlider (" + et + "): invalid handle number, got: " + t);
                      for (var i = 0; i < g.length; i++) n[i] = null;
                      n[t] = e, Z(n, r)
                  },
                  reset: function (t) {
                      Z(f.start, t)
                  },
                  __moveHandles: function (t, e, r) {
                      $(t, e, m, r)
                  },
                  options: o,
                  updateOptions: function (e, t) {
                      var r = tt(),
                          n = ["margin", "limit", "padding", "range", "animate", "snap", "step", "format"];
                      n.forEach(function (t) {
                          void 0 !== e[t] && (o[t] = e[t])
                      });
                      var i = ut(o);
                      n.forEach(function (t) {
                          void 0 !== e[t] && (f[t] = i[t])
                      }), E = i.spectrum, f.margin = i.margin, f.limit = i.limit, f.padding = i.padding, f.pips && z(f.pips), m = [], Z(e.start || r, t)
                  },
                  target: y,
                  removePips: L,
                  pips: z
              }, f.pips && z(f.pips), f.tooltips && (i = u.map(r), X("update", function (t, e, r) {
                  if (i[e]) {
                      var n = t[e];
                      !0 !== f.tooltips[e] && (n = f.tooltips[e].to(r[e])), i[e].innerHTML = n
                  }
              })), X("update", function (t, e, a, r, s) {
                  g.forEach(function (t) {
                      var e = u[t],
                          r = I(m, t, 0, !0, !0, !0),
                          n = I(m, t, 100, !0, !0, !0),
                          i = s[t],
                          o = f.ariaFormat.to(a[t]);
                      r = E.fromStepping(r).toFixed(1), n = E.fromStepping(n).toFixed(1), i = E.fromStepping(i).toFixed(1), e.children[0].setAttribute("aria-valuemin", r), e.children[0].setAttribute("aria-valuemax", n), e.children[0].setAttribute("aria-valuenow", i), e.children[0].setAttribute("aria-valuetext", o)
                  })
              }), a
      }
      return {
          __spectrum: l,
          version: et,
          create: function (t, e) {
              if (!t || !t.nodeName) throw new Error("noUiSlider (" + et + "): create requires a single element, got: " + t);
              if (t.noUiSlider) throw new Error("noUiSlider (" + et + "): Slider was already initialized.");
              var r = z(t, ut(e), e);
              return t.noUiSlider = r
          }
      }
  });
  /*!
   * VERSION: 2.1.3
   * DATE: 2019-05-17
   * UPDATES AND DOCS AT: http://greensock.com
   * 
   * Includes all of the following: TweenLite, TweenMax, TimelineLite, TimelineMax, EasePack, CSSPlugin, RoundPropsPlugin, BezierPlugin, AttrPlugin, DirectionalRotationPlugin
   *
   * @license Copyright (c) 2008-2019, GreenSock. All rights reserved.
   * This work is subject to the terms at http://greensock.com/standard-license or for
   * Club GreenSock members, the software agreement that was issued with your membership.
   * 
   * @author: Jack Doyle, jack@greensock.com
   **/
  var _gsScope = "undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window;
  (_gsScope._gsQueue || (_gsScope._gsQueue = [])).push(function () {
          "use strict";
          _gsScope._gsDefine("TweenMax", ["core.Animation", "core.SimpleTimeline", "TweenLite"], function (a, b, c) {
                  var d = function (a) {
                          var b, c = [],
                              d = a.length;
                          for (b = 0; b !== d; c.push(a[b++]));
                          return c
                      },
                      e = function (a, b, c) {
                          var d, e, f = a.cycle;
                          for (d in f) e = f[d], a[d] = "function" == typeof e ? e(c, b[c], b) : e[c % e.length];
                          delete a.cycle
                      },
                      f = function (a) {
                          if ("function" == typeof a) return a;
                          var b = "object" == typeof a ? a : {
                                  each: a
                              },
                              c = b.ease,
                              d = b.from || 0,
                              e = b.base || 0,
                              f = {},
                              g = isNaN(d),
                              h = b.axis,
                              i = {
                                  center: .5,
                                  end: 1
                              } [d] || 0;
                          return function (a, j, k) {
                              var l, m, n, o, p, q, r, s, t, u = (k || b).length,
                                  v = f[u];
                              if (!v) {
                                  if (t = "auto" === b.grid ? 0 : (b.grid || [1 / 0])[0], !t) {
                                      for (r = -(1 / 0); r < (r = k[t++].getBoundingClientRect().left) && u > t;);
                                      t--
                                  }
                                  for (v = f[u] = [], l = g ? Math.min(t, u) * i - .5 : d % t, m = g ? u * i / t - .5 : d / t | 0, r = 0, s = 1 / 0, q = 0; u > q; q++) n = q % t - l, o = m - (q / t | 0), v[q] = p = h ? Math.abs("y" === h ? o : n) : Math.sqrt(n * n + o * o), p > r && (r = p), s > p && (s = p);
                                  v.max = r - s, v.min = s, v.v = u = b.amount || b.each * (t > u ? u - 1 : h ? "y" === h ? u / t : t : Math.max(t, u / t)) || 0, v.b = 0 > u ? e - u : e
                              }
                              return u = (v[a] - v.min) / v.max, v.b + (c ? c.getRatio(u) : u) * v.v
                          }
                      },
                      g = function (a, b, d) {
                          c.call(this, a, b, d), this._cycle = 0, this._yoyo = this.vars.yoyo === !0 || !!this.vars.yoyoEase, this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._repeat && this._uncache(!0), this.render = g.prototype.render
                      },
                      h = 1e-8,
                      i = c._internals,
                      j = i.isSelector,
                      k = i.isArray,
                      l = g.prototype = c.to({}, .1, {}),
                      m = [];
                  g.version = "2.1.3", l.constructor = g, l.kill()._gc = !1, g.killTweensOf = g.killDelayedCallsTo = c.killTweensOf, g.getTweensOf = c.getTweensOf, g.lagSmoothing = c.lagSmoothing, g.ticker = c.ticker, g.render = c.render, g.distribute = f, l.invalidate = function () {
                      return this._yoyo = this.vars.yoyo === !0 || !!this.vars.yoyoEase, this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._yoyoEase = null, this._uncache(!0), c.prototype.invalidate.call(this)
                  }, l.updateTo = function (a, b) {
                      var d, e = this,
                          f = e.ratio,
                          g = e.vars.immediateRender || a.immediateRender;
                      b && e._startTime < e._timeline._time && (e._startTime = e._timeline._time, e._uncache(!1), e._gc ? e._enabled(!0, !1) : e._timeline.insert(e, e._startTime - e._delay));
                      for (d in a) e.vars[d] = a[d];
                      if (e._initted || g)
                          if (b) e._initted = !1, g && e.render(0, !0, !0);
                          else if (e._gc && e._enabled(!0, !1), e._notifyPluginsOfEnabled && e._firstPT && c._onPluginEvent("_onDisable", e), e._time / e._duration > .998) {
                          var h = e._totalTime;
                          e.render(0, !0, !1), e._initted = !1, e.render(h, !0, !1)
                      } else if (e._initted = !1, e._init(), e._time > 0 || g)
                          for (var i, j = 1 / (1 - f), k = e._firstPT; k;) i = k.s + k.c, k.c *= j, k.s = i - k.c, k = k._next;
                      return e
                  }, l.render = function (a, b, d) {
                      this._initted || 0 === this._duration && this.vars.repeat && this.invalidate();
                      var e, f, g, j, k, l, m, n, o, p = this,
                          q = p._dirty ? p.totalDuration() : p._totalDuration,
                          r = p._time,
                          s = p._totalTime,
                          t = p._cycle,
                          u = p._duration,
                          v = p._rawPrevTime;
                      if (a >= q - h && a >= 0 ? (p._totalTime = q, p._cycle = p._repeat, p._yoyo && 0 !== (1 & p._cycle) ? (p._time = 0, p.ratio = p._ease._calcEnd ? p._ease.getRatio(0) : 0) : (p._time = u, p.ratio = p._ease._calcEnd ? p._ease.getRatio(1) : 1), p._reversed || (e = !0, f = "onComplete", d = d || p._timeline.autoRemoveChildren), 0 === u && (p._initted || !p.vars.lazy || d) && (p._startTime === p._timeline._duration && (a = 0), (0 > v || 0 >= a && a >= -h || v === h && "isPause" !== p.data) && v !== a && (d = !0, v > h && (f = "onReverseComplete")), p._rawPrevTime = n = !b || a || v === a ? a : h)) : h > a ? (p._totalTime = p._time = p._cycle = 0, p.ratio = p._ease._calcEnd ? p._ease.getRatio(0) : 0, (0 !== s || 0 === u && v > 0) && (f = "onReverseComplete", e = p._reversed), a > -h ? a = 0 : 0 > a && (p._active = !1, 0 === u && (p._initted || !p.vars.lazy || d) && (v >= 0 && (d = !0), p._rawPrevTime = n = !b || a || v === a ? a : h)), p._initted || (d = !0)) : (p._totalTime = p._time = a, 0 !== p._repeat && (j = u + p._repeatDelay, p._cycle = p._totalTime / j >> 0, 0 !== p._cycle && p._cycle === p._totalTime / j && a >= s && p._cycle--, p._time = p._totalTime - p._cycle * j, p._yoyo && 0 !== (1 & p._cycle) && (p._time = u - p._time, o = p._yoyoEase || p.vars.yoyoEase, o && (p._yoyoEase || (o !== !0 || p._initted ? p._yoyoEase = o = o === !0 ? p._ease : o instanceof Ease ? o : Ease.map[o] : (o = p.vars.ease, p._yoyoEase = o = o ? o instanceof Ease ? o : "function" == typeof o ? new Ease(o, p.vars.easeParams) : Ease.map[o] || c.defaultEase : c.defaultEase)), p.ratio = o ? 1 - o.getRatio((u - p._time) / u) : 0)), p._time > u ? p._time = u : p._time < 0 && (p._time = 0)), p._easeType && !o ? (k = p._time / u, l = p._easeType, m = p._easePower, (1 === l || 3 === l && k >= .5) && (k = 1 - k), 3 === l && (k *= 2), 1 === m ? k *= k : 2 === m ? k *= k * k : 3 === m ? k *= k * k * k : 4 === m && (k *= k * k * k * k), p.ratio = 1 === l ? 1 - k : 2 === l ? k : p._time / u < .5 ? k / 2 : 1 - k / 2) : o || (p.ratio = p._ease.getRatio(p._time / u))), r === p._time && !d && t === p._cycle) return void(s !== p._totalTime && p._onUpdate && (b || p._callback("onUpdate")));
                      if (!p._initted) {
                          if (p._init(), !p._initted || p._gc) return;
                          if (!d && p._firstPT && (p.vars.lazy !== !1 && p._duration || p.vars.lazy && !p._duration)) return p._time = r, p._totalTime = s, p._rawPrevTime = v, p._cycle = t, i.lazyTweens.push(p), void(p._lazy = [a, b]);
                          !p._time || e || o ? e && this._ease._calcEnd && !o && (p.ratio = p._ease.getRatio(0 === p._time ? 0 : 1)) : p.ratio = p._ease.getRatio(p._time / u)
                      }
                      for (p._lazy !== !1 && (p._lazy = !1), p._active || !p._paused && p._time !== r && a >= 0 && (p._active = !0), 0 === s && (2 === p._initted && a > 0 && p._init(), p._startAt && (a >= 0 ? p._startAt.render(a, !0, d) : f || (f = "_dummyGS")), p.vars.onStart && (0 !== p._totalTime || 0 === u) && (b || p._callback("onStart"))), g = p._firstPT; g;) g.f ? g.t[g.p](g.c * p.ratio + g.s) : g.t[g.p] = g.c * p.ratio + g.s, g = g._next;
                      p._onUpdate && (0 > a && p._startAt && p._startTime && p._startAt.render(a, !0, d), b || (p._totalTime !== s || f) && p._callback("onUpdate")), p._cycle !== t && (b || p._gc || p.vars.onRepeat && p._callback("onRepeat")), f && (!p._gc || d) && (0 > a && p._startAt && !p._onUpdate && p._startTime && p._startAt.render(a, !0, d), e && (p._timeline.autoRemoveChildren && p._enabled(!1, !1), p._active = !1), !b && p.vars[f] && p._callback(f), 0 === u && p._rawPrevTime === h && n !== h && (p._rawPrevTime = 0))
                  }, g.to = function (a, b, c) {
                      return new g(a, b, c)
                  }, g.from = function (a, b, c) {
                      return c.runBackwards = !0, c.immediateRender = 0 != c.immediateRender, new g(a, b, c)
                  }, g.fromTo = function (a, b, c, d) {
                      return d.startAt = c, d.immediateRender = 0 != d.immediateRender && 0 != c.immediateRender, new g(a, b, d)
                  }, g.staggerTo = g.allTo = function (a, b, h, i, l, n, o) {
                      var p, q, r, s, t = [],
                          u = f(h.stagger || i),
                          v = h.cycle,
                          w = (h.startAt || m).cycle;
                      for (k(a) || ("string" == typeof a && (a = c.selector(a) || a), j(a) && (a = d(a))), a = a || [], p = a.length - 1, r = 0; p >= r; r++) {
                          q = {};
                          for (s in h) q[s] = h[s];
                          if (v && (e(q, a, r), null != q.duration && (b = q.duration, delete q.duration)), w) {
                              w = q.startAt = {};
                              for (s in h.startAt) w[s] = h.startAt[s];
                              e(q.startAt, a, r)
                          }
                          q.delay = u(r, a[r], a) + (q.delay || 0), r === p && l && (q.onComplete = function () {
                              h.onComplete && h.onComplete.apply(h.onCompleteScope || this, arguments), l.apply(o || h.callbackScope || this, n || m)
                          }), t[r] = new g(a[r], b, q)
                      }
                      return t
                  }, g.staggerFrom = g.allFrom = function (a, b, c, d, e, f, h) {
                      return c.runBackwards = !0, c.immediateRender = 0 != c.immediateRender, g.staggerTo(a, b, c, d, e, f, h)
                  }, g.staggerFromTo = g.allFromTo = function (a, b, c, d, e, f, h, i) {
                      return d.startAt = c, d.immediateRender = 0 != d.immediateRender && 0 != c.immediateRender, g.staggerTo(a, b, d, e, f, h, i)
                  }, g.delayedCall = function (a, b, c, d, e) {
                      return new g(b, 0, {
                          delay: a,
                          onComplete: b,
                          onCompleteParams: c,
                          callbackScope: d,
                          onReverseComplete: b,
                          onReverseCompleteParams: c,
                          immediateRender: !1,
                          useFrames: e,
                          overwrite: 0
                      })
                  }, g.set = function (a, b) {
                      return new g(a, 0, b)
                  }, g.isTweening = function (a) {
                      return c.getTweensOf(a, !0).length > 0
                  };
                  var n = function (a, b) {
                          for (var d = [], e = 0, f = a._first; f;) f instanceof c ? d[e++] = f : (b && (d[e++] = f), d = d.concat(n(f, b)), e = d.length), f = f._next;
                          return d
                      },
                      o = g.getAllTweens = function (b) {
                          return n(a._rootTimeline, b).concat(n(a._rootFramesTimeline, b))
                      };
                  g.killAll = function (a, c, d, e) {
                      null == c && (c = !0), null == d && (d = !0);
                      var f, g, h, i = o(0 != e),
                          j = i.length,
                          k = c && d && e;
                      for (h = 0; j > h; h++) g = i[h], (k || g instanceof b || (f = g.target === g.vars.onComplete) && d || c && !f) && (a ? g.totalTime(g._reversed ? 0 : g.totalDuration()) : g._enabled(!1, !1))
                  }, g.killChildTweensOf = function (a, b) {
                      if (null != a) {
                          var e, f, h, l, m, n = i.tweenLookup;
                          if ("string" == typeof a && (a = c.selector(a) || a), j(a) && (a = d(a)), k(a))
                              for (l = a.length; --l > -1;) g.killChildTweensOf(a[l], b);
                          else {
                              e = [];
                              for (h in n)
                                  for (f = n[h].target.parentNode; f;) f === a && (e = e.concat(n[h].tweens)), f = f.parentNode;
                              for (m = e.length, l = 0; m > l; l++) b && e[l].totalTime(e[l].totalDuration()), e[l]._enabled(!1, !1)
                          }
                      }
                  };
                  var p = function (a, c, d, e) {
                      c = c !== !1, d = d !== !1, e = e !== !1;
                      for (var f, g, h = o(e), i = c && d && e, j = h.length; --j > -1;) g = h[j], (i || g instanceof b || (f = g.target === g.vars.onComplete) && d || c && !f) && g.paused(a)
                  };
                  return g.pauseAll = function (a, b, c) {
                      p(!0, a, b, c)
                  }, g.resumeAll = function (a, b, c) {
                      p(!1, a, b, c)
                  }, g.globalTimeScale = function (b) {
                      var d = a._rootTimeline,
                          e = c.ticker.time;
                      return arguments.length ? (b = b || h, d._startTime = e - (e - d._startTime) * d._timeScale / b, d = a._rootFramesTimeline, e = c.ticker.frame, d._startTime = e - (e - d._startTime) * d._timeScale / b, d._timeScale = a._rootTimeline._timeScale = b, b) : d._timeScale
                  }, l.progress = function (a, b) {
                      return arguments.length ? this.totalTime(this.duration() * (this._yoyo && 0 !== (1 & this._cycle) ? 1 - a : a) + this._cycle * (this._duration + this._repeatDelay), b) : this.duration() ? this._time / this._duration : this.ratio
                  }, l.totalProgress = function (a, b) {
                      return arguments.length ? this.totalTime(this.totalDuration() * a, b) : this._totalTime / this.totalDuration()
                  }, l.time = function (a, b) {
                      if (!arguments.length) return this._time;
                      this._dirty && this.totalDuration();
                      var c = this._duration,
                          d = this._cycle,
                          e = d * (c + this._repeatDelay);
                      return a > c && (a = c), this.totalTime(this._yoyo && 1 & d ? c - a + e : this._repeat ? a + e : a, b)
                  }, l.duration = function (b) {
                      return arguments.length ? a.prototype.duration.call(this, b) : this._duration
                  }, l.totalDuration = function (a) {
                      return arguments.length ? -1 === this._repeat ? this : this.duration((a - this._repeat * this._repeatDelay) / (this._repeat + 1)) : (this._dirty && (this._totalDuration = -1 === this._repeat ? 999999999999 : this._duration * (this._repeat + 1) + this._repeatDelay * this._repeat, this._dirty = !1), this._totalDuration)
                  }, l.repeat = function (a) {
                      return arguments.length ? (this._repeat = a, this._uncache(!0)) : this._repeat
                  }, l.repeatDelay = function (a) {
                      return arguments.length ? (this._repeatDelay = a, this._uncache(!0)) : this._repeatDelay
                  }, l.yoyo = function (a) {
                      return arguments.length ? (this._yoyo = a, this) : this._yoyo
                  }, g
              }, !0), _gsScope._gsDefine("TimelineLite", ["core.Animation", "core.SimpleTimeline", "TweenLite"], function (a, b, c) {
                  var d = function (a) {
                          b.call(this, a);
                          var c, d, e = this,
                              f = e.vars;
                          e._labels = {}, e.autoRemoveChildren = !!f.autoRemoveChildren, e.smoothChildTiming = !!f.smoothChildTiming, e._sortChildren = !0, e._onUpdate = f.onUpdate;
                          for (d in f) c = f[d], i(c) && -1 !== c.join("").indexOf("{self}") && (f[d] = e._swapSelfInParams(c));
                          i(f.tweens) && e.add(f.tweens, 0, f.align, f.stagger)
                      },
                      e = 1e-8,
                      f = c._internals,
                      g = d._internals = {},
                      h = f.isSelector,
                      i = f.isArray,
                      j = f.lazyTweens,
                      k = f.lazyRender,
                      l = _gsScope._gsDefine.globals,
                      m = function (a) {
                          var b, c = {};
                          for (b in a) c[b] = a[b];
                          return c
                      },
                      n = function (a, b, c) {
                          var d, e, f = a.cycle;
                          for (d in f) e = f[d], a[d] = "function" == typeof e ? e(c, b[c], b) : e[c % e.length];
                          delete a.cycle
                      },
                      o = g.pauseCallback = function () {},
                      p = function (a) {
                          var b, c = [],
                              d = a.length;
                          for (b = 0; b !== d; c.push(a[b++]));
                          return c
                      },
                      q = function (a, b, c, d) {
                          var e = "immediateRender";
                          return e in b || (b[e] = !(c && c[e] === !1 || d)), b
                      },
                      r = function (a) {
                          if ("function" == typeof a) return a;
                          var b = "object" == typeof a ? a : {
                                  each: a
                              },
                              c = b.ease,
                              d = b.from || 0,
                              e = b.base || 0,
                              f = {},
                              g = isNaN(d),
                              h = b.axis,
                              i = {
                                  center: .5,
                                  end: 1
                              } [d] || 0;
                          return function (a, j, k) {
                              var l, m, n, o, p, q, r, s, t, u = (k || b).length,
                                  v = f[u];
                              if (!v) {
                                  if (t = "auto" === b.grid ? 0 : (b.grid || [1 / 0])[0], !t) {
                                      for (r = -(1 / 0); r < (r = k[t++].getBoundingClientRect().left) && u > t;);
                                      t--
                                  }
                                  for (v = f[u] = [], l = g ? Math.min(t, u) * i - .5 : d % t, m = g ? u * i / t - .5 : d / t | 0, r = 0, s = 1 / 0, q = 0; u > q; q++) n = q % t - l, o = m - (q / t | 0), v[q] = p = h ? Math.abs("y" === h ? o : n) : Math.sqrt(n * n + o * o), p > r && (r = p), s > p && (s = p);
                                  v.max = r - s, v.min = s, v.v = u = b.amount || b.each * (t > u ? u - 1 : h ? "y" === h ? u / t : t : Math.max(t, u / t)) || 0, v.b = 0 > u ? e - u : e
                              }
                              return u = (v[a] - v.min) / v.max, v.b + (c ? c.getRatio(u) : u) * v.v
                          }
                      },
                      s = d.prototype = new b;
                  return d.version = "2.1.3", d.distribute = r, s.constructor = d, s.kill()._gc = s._forcingPlayhead = s._hasPause = !1, s.to = function (a, b, d, e) {
                      var f = d.repeat && l.TweenMax || c;
                      return b ? this.add(new f(a, b, d), e) : this.set(a, d, e)
                  }, s.from = function (a, b, d, e) {
                      return this.add((d.repeat && l.TweenMax || c).from(a, b, q(this, d)), e)
                  }, s.fromTo = function (a, b, d, e, f) {
                      var g = e.repeat && l.TweenMax || c;
                      return e = q(this, e, d), b ? this.add(g.fromTo(a, b, d, e), f) : this.set(a, e, f)
                  }, s.staggerTo = function (a, b, e, f, g, i, j, k) {
                      var l, o, q = new d({
                              onComplete: i,
                              onCompleteParams: j,
                              callbackScope: k,
                              smoothChildTiming: this.smoothChildTiming
                          }),
                          s = r(e.stagger || f),
                          t = e.startAt,
                          u = e.cycle;
                      for ("string" == typeof a && (a = c.selector(a) || a), a = a || [], h(a) && (a = p(a)), o = 0; o < a.length; o++) l = m(e), t && (l.startAt = m(t), t.cycle && n(l.startAt, a, o)), u && (n(l, a, o), null != l.duration && (b = l.duration, delete l.duration)), q.to(a[o], b, l, s(o, a[o], a));
                      return this.add(q, g)
                  }, s.staggerFrom = function (a, b, c, d, e, f, g, h) {
                      return c.runBackwards = !0, this.staggerTo(a, b, q(this, c), d, e, f, g, h)
                  }, s.staggerFromTo = function (a, b, c, d, e, f, g, h, i) {
                      return d.startAt = c, this.staggerTo(a, b, q(this, d, c), e, f, g, h, i)
                  }, s.call = function (a, b, d, e) {
                      return this.add(c.delayedCall(0, a, b, d), e)
                  }, s.set = function (a, b, d) {
                      return this.add(new c(a, 0, q(this, b, null, !0)), d)
                  }, d.exportRoot = function (a, b) {
                      a = a || {}, null == a.smoothChildTiming && (a.smoothChildTiming = !0);
                      var e, f, g, h, i = new d(a),
                          j = i._timeline;
                      for (null == b && (b = !0), j._remove(i, !0), i._startTime = 0, i._rawPrevTime = i._time = i._totalTime = j._time, g = j._first; g;) h = g._next, b && g instanceof c && g.target === g.vars.onComplete || (f = g._startTime - g._delay, 0 > f && (e = 1), i.add(g, f)), g = h;
                      return j.add(i, 0), e && i.totalDuration(), i
                  }, s.add = function (e, f, g, h) {
                      var j, k, l, m, n, o, p = this;
                      if ("number" != typeof f && (f = p._parseTimeOrLabel(f, 0, !0, e)), !(e instanceof a)) {
                          if (e instanceof Array || e && e.push && i(e)) {
                              for (g = g || "normal", h = h || 0, j = f, k = e.length, l = 0; k > l; l++) i(m = e[l]) && (m = new d({
                                  tweens: m
                              })), p.add(m, j), "string" != typeof m && "function" != typeof m && ("sequence" === g ? j = m._startTime + m.totalDuration() / m._timeScale : "start" === g && (m._startTime -= m.delay())), j += h;
                              return p._uncache(!0)
                          }
                          if ("string" == typeof e) return p.addLabel(e, f);
                          if ("function" != typeof e) throw "Cannot add " + e + " into the timeline; it is not a tween, timeline, function, or string.";
                          e = c.delayedCall(0, e)
                      }
                      if (b.prototype.add.call(p, e, f), (e._time || !e._duration && e._initted) && (j = (p.rawTime() - e._startTime) * e._timeScale, (!e._duration || Math.abs(Math.max(0, Math.min(e.totalDuration(), j))) - e._totalTime > 1e-5) && e.render(j, !1, !1)), (p._gc || p._time === p._duration) && !p._paused && p._duration < p.duration())
                          for (n = p, o = n.rawTime() > e._startTime; n._timeline;) o && n._timeline.smoothChildTiming ? n.totalTime(n._totalTime, !0) : n._gc && n._enabled(!0, !1), n = n._timeline;
                      return p
                  }, s.remove = function (b) {
                      if (b instanceof a) {
                          this._remove(b, !1);
                          var c = b._timeline = b.vars.useFrames ? a._rootFramesTimeline : a._rootTimeline;
                          return b._startTime = (b._paused ? b._pauseTime : c._time) - (b._reversed ? b.totalDuration() - b._totalTime : b._totalTime) / b._timeScale, this
                      }
                      if (b instanceof Array || b && b.push && i(b)) {
                          for (var d = b.length; --d > -1;) this.remove(b[d]);
                          return this
                      }
                      return "string" == typeof b ? this.removeLabel(b) : this.kill(null, b)
                  }, s._remove = function (a, c) {
                      b.prototype._remove.call(this, a, c);
                      var d = this._last;
                      return d ? this._time > this.duration() && (this._time = this._duration, this._totalTime = this._totalDuration) : this._time = this._totalTime = this._duration = this._totalDuration = 0, this
                  }, s.append = function (a, b) {
                      return this.add(a, this._parseTimeOrLabel(null, b, !0, a))
                  }, s.insert = s.insertMultiple = function (a, b, c, d) {
                      return this.add(a, b || 0, c, d)
                  }, s.appendMultiple = function (a, b, c, d) {
                      return this.add(a, this._parseTimeOrLabel(null, b, !0, a), c, d)
                  }, s.addLabel = function (a, b) {
                      return this._labels[a] = this._parseTimeOrLabel(b), this
                  }, s.addPause = function (a, b, d, e) {
                      var f = c.delayedCall(0, o, d, e || this);
                      return f.vars.onComplete = f.vars.onReverseComplete = b, f.data = "isPause", this._hasPause = !0, this.add(f, a)
                  }, s.removeLabel = function (a) {
                      return delete this._labels[a], this
                  }, s.getLabelTime = function (a) {
                      return null != this._labels[a] ? this._labels[a] : -1
                  }, s._parseTimeOrLabel = function (b, c, d, e) {
                      var f, g;
                      if (e instanceof a && e.timeline === this) this.remove(e);
                      else if (e && (e instanceof Array || e.push && i(e)))
                          for (g = e.length; --g > -1;) e[g] instanceof a && e[g].timeline === this && this.remove(e[g]);
                      if (f = "number" != typeof b || c ? this.duration() > 99999999999 ? this.recent().endTime(!1) : this._duration : 0, "string" == typeof c) return this._parseTimeOrLabel(c, d && "number" == typeof b && null == this._labels[c] ? b - f : 0, d);
                      if (c = c || 0, "string" != typeof b || !isNaN(b) && null == this._labels[b]) null == b && (b = f);
                      else {
                          if (g = b.indexOf("="), -1 === g) return null == this._labels[b] ? d ? this._labels[b] = f + c : c : this._labels[b] + c;
                          c = parseInt(b.charAt(g - 1) + "1", 10) * Number(b.substr(g + 1)), b = g > 1 ? this._parseTimeOrLabel(b.substr(0, g - 1), 0, d) : f
                      }
                      return Number(b) + c
                  }, s.seek = function (a, b) {
                      return this.totalTime("number" == typeof a ? a : this._parseTimeOrLabel(a), b !== !1)
                  }, s.stop = function () {
                      return this.paused(!0)
                  }, s.gotoAndPlay = function (a, b) {
                      return this.play(a, b)
                  }, s.gotoAndStop = function (a, b) {
                      return this.pause(a, b)
                  }, s.render = function (a, b, c) {
                      this._gc && this._enabled(!0, !1);
                      var d, f, g, h, i, l, m, n, o = this,
                          p = o._time,
                          q = o._dirty ? o.totalDuration() : o._totalDuration,
                          r = o._startTime,
                          s = o._timeScale,
                          t = o._paused;
                      if (p !== o._time && (a += o._time - p), o._hasPause && !o._forcingPlayhead && !b) {
                          if (a > p)
                              for (d = o._first; d && d._startTime <= a && !l;) d._duration || "isPause" !== d.data || d.ratio || 0 === d._startTime && 0 === o._rawPrevTime || (l = d), d = d._next;
                          else
                              for (d = o._last; d && d._startTime >= a && !l;) d._duration || "isPause" === d.data && d._rawPrevTime > 0 && (l = d), d = d._prev;
                          l && (o._time = o._totalTime = a = l._startTime, n = o._startTime + (o._reversed ? o._duration - a : a) / o._timeScale)
                      }
                      if (a >= q - e && a >= 0) o._totalTime = o._time = q, o._reversed || o._hasPausedChild() || (f = !0, h = "onComplete", i = !!o._timeline.autoRemoveChildren, 0 === o._duration && (0 >= a && a >= -e || o._rawPrevTime < 0 || o._rawPrevTime === e) && o._rawPrevTime !== a && o._first && (i = !0, o._rawPrevTime > e && (h = "onReverseComplete"))), o._rawPrevTime = o._duration || !b || a || o._rawPrevTime === a ? a : e, a = q + 1e-4;
                      else if (e > a)
                          if (o._totalTime = o._time = 0, a > -e && (a = 0), (0 !== p || 0 === o._duration && o._rawPrevTime !== e && (o._rawPrevTime > 0 || 0 > a && o._rawPrevTime >= 0)) && (h = "onReverseComplete", f = o._reversed), 0 > a) o._active = !1, o._timeline.autoRemoveChildren && o._reversed ? (i = f = !0, h = "onReverseComplete") : o._rawPrevTime >= 0 && o._first && (i = !0), o._rawPrevTime = a;
                          else {
                              if (o._rawPrevTime = o._duration || !b || a || o._rawPrevTime === a ? a : e, 0 === a && f)
                                  for (d = o._first; d && 0 === d._startTime;) d._duration || (f = !1), d = d._next;
                              a = 0, o._initted || (i = !0)
                          }
                      else o._totalTime = o._time = o._rawPrevTime = a;
                      if (o._time !== p && o._first || c || i || l) {
                          if (o._initted || (o._initted = !0), o._active || !o._paused && o._time !== p && a > 0 && (o._active = !0), 0 === p && o.vars.onStart && (0 === o._time && o._duration || b || o._callback("onStart")), m = o._time, m >= p)
                              for (d = o._first; d && (g = d._next, m === o._time && (!o._paused || t));)(d._active || d._startTime <= m && !d._paused && !d._gc) && (l === d && (o.pause(), o._pauseTime = n), d._reversed ? d.render((d._dirty ? d.totalDuration() : d._totalDuration) - (a - d._startTime) * d._timeScale, b, c) : d.render((a - d._startTime) * d._timeScale, b, c)), d = g;
                          else
                              for (d = o._last; d && (g = d._prev, m === o._time && (!o._paused || t));) {
                                  if (d._active || d._startTime <= p && !d._paused && !d._gc) {
                                      if (l === d) {
                                          for (l = d._prev; l && l.endTime() > o._time;) l.render(l._reversed ? l.totalDuration() - (a - l._startTime) * l._timeScale : (a - l._startTime) * l._timeScale, b, c), l = l._prev;
                                          l = null, o.pause(), o._pauseTime = n
                                      }
                                      d._reversed ? d.render((d._dirty ? d.totalDuration() : d._totalDuration) - (a - d._startTime) * d._timeScale, b, c) : d.render((a - d._startTime) * d._timeScale, b, c)
                                  }
                                  d = g
                              }
                          o._onUpdate && (b || (j.length && k(), o._callback("onUpdate"))), h && (o._gc || (r === o._startTime || s !== o._timeScale) && (0 === o._time || q >= o.totalDuration()) && (f && (j.length && k(), o._timeline.autoRemoveChildren && o._enabled(!1, !1), o._active = !1), !b && o.vars[h] && o._callback(h)))
                      }
                  }, s._hasPausedChild = function () {
                      for (var a = this._first; a;) {
                          if (a._paused || a instanceof d && a._hasPausedChild()) return !0;
                          a = a._next
                      }
                      return !1
                  }, s.getChildren = function (a, b, d, e) {
                      e = e || -9999999999;
                      for (var f = [], g = this._first, h = 0; g;) g._startTime < e || (g instanceof c ? b !== !1 && (f[h++] = g) : (d !== !1 && (f[h++] = g), a !== !1 && (f = f.concat(g.getChildren(!0, b, d)), h = f.length))), g = g._next;
                      return f
                  }, s.getTweensOf = function (a, b) {
                      var d, e, f = this._gc,
                          g = [],
                          h = 0;
                      for (f && this._enabled(!0, !0), d = c.getTweensOf(a), e = d.length; --e > -1;)(d[e].timeline === this || b && this._contains(d[e])) && (g[h++] = d[e]);
                      return f && this._enabled(!1, !0), g
                  }, s.recent = function () {
                      return this._recent
                  }, s._contains = function (a) {
                      for (var b = a.timeline; b;) {
                          if (b === this) return !0;
                          b = b.timeline
                      }
                      return !1
                  }, s.shiftChildren = function (a, b, c) {
                      c = c || 0;
                      for (var d, e = this._first, f = this._labels; e;) e._startTime >= c && (e._startTime += a), e = e._next;
                      if (b)
                          for (d in f) f[d] >= c && (f[d] += a);
                      return this._uncache(!0)
                  }, s._kill = function (a, b) {
                      if (!a && !b) return this._enabled(!1, !1);
                      for (var c = b ? this.getTweensOf(b) : this.getChildren(!0, !0, !1), d = c.length, e = !1; --d > -1;) c[d]._kill(a, b) && (e = !0);
                      return e
                  }, s.clear = function (a) {
                      var b = this.getChildren(!1, !0, !0),
                          c = b.length;
                      for (this._time = this._totalTime = 0; --c > -1;) b[c]._enabled(!1, !1);
                      return a !== !1 && (this._labels = {}), this._uncache(!0)
                  }, s.invalidate = function () {
                      for (var b = this._first; b;) b.invalidate(), b = b._next;
                      return a.prototype.invalidate.call(this)
                  }, s._enabled = function (a, c) {
                      if (a === this._gc)
                          for (var d = this._first; d;) d._enabled(a, !0), d = d._next;
                      return b.prototype._enabled.call(this, a, c)
                  }, s.totalTime = function (b, c, d) {
                      this._forcingPlayhead = !0;
                      var e = a.prototype.totalTime.apply(this, arguments);
                      return this._forcingPlayhead = !1, e
                  }, s.duration = function (a) {
                      return arguments.length ? (0 !== this.duration() && 0 !== a && this.timeScale(this._duration / a), this) : (this._dirty && this.totalDuration(), this._duration)
                  }, s.totalDuration = function (a) {
                      if (!arguments.length) {
                          if (this._dirty) {
                              for (var b, c, d = 0, e = this, f = e._last, g = 999999999999; f;) b = f._prev, f._dirty && f.totalDuration(), f._startTime > g && e._sortChildren && !f._paused && !e._calculatingDuration ? (e._calculatingDuration = 1, e.add(f, f._startTime - f._delay), e._calculatingDuration = 0) : g = f._startTime, f._startTime < 0 && !f._paused && (d -= f._startTime, e._timeline.smoothChildTiming && (e._startTime += f._startTime / e._timeScale, e._time -= f._startTime, e._totalTime -= f._startTime, e._rawPrevTime -= f._startTime), e.shiftChildren(-f._startTime, !1, -9999999999), g = 0), c = f._startTime + f._totalDuration / f._timeScale, c > d && (d = c), f = b;
                              e._duration = e._totalDuration = d, e._dirty = !1
                          }
                          return this._totalDuration
                      }
                      return a && this.totalDuration() ? this.timeScale(this._totalDuration / a) : this
                  }, s.paused = function (b) {
                      if (b === !1 && this._paused)
                          for (var c = this._first; c;) c._startTime === this._time && "isPause" === c.data && (c._rawPrevTime = 0), c = c._next;
                      return a.prototype.paused.apply(this, arguments)
                  }, s.usesFrames = function () {
                      for (var b = this._timeline; b._timeline;) b = b._timeline;
                      return b === a._rootFramesTimeline
                  }, s.rawTime = function (a) {
                      return a && (this._paused || this._repeat && this.time() > 0 && this.totalProgress() < 1) ? this._totalTime % (this._duration + this._repeatDelay) : this._paused ? this._totalTime : (this._timeline.rawTime(a) - this._startTime) * this._timeScale
                  }, d
              }, !0), _gsScope._gsDefine("TimelineMax", ["TimelineLite", "TweenLite", "easing.Ease"], function (a, b, c) {
                  var d = function (b) {
                          a.call(this, b), this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._cycle = 0, this._yoyo = !!this.vars.yoyo, this._dirty = !0
                      },
                      e = 1e-8,
                      f = b._internals,
                      g = f.lazyTweens,
                      h = f.lazyRender,
                      i = _gsScope._gsDefine.globals,
                      j = new c(null, null, 1, 0),
                      k = d.prototype = new a;
                  return k.constructor = d, k.kill()._gc = !1, d.version = "2.1.3", k.invalidate = function () {
                      return this._yoyo = !!this.vars.yoyo, this._repeat = this.vars.repeat || 0, this._repeatDelay = this.vars.repeatDelay || 0, this._uncache(!0), a.prototype.invalidate.call(this)
                  }, k.addCallback = function (a, c, d, e) {
                      return this.add(b.delayedCall(0, a, d, e), c)
                  }, k.removeCallback = function (a, b) {
                      if (a)
                          if (null == b) this._kill(null, a);
                          else
                              for (var c = this.getTweensOf(a, !1), d = c.length, e = this._parseTimeOrLabel(b); --d > -1;) c[d]._startTime === e && c[d]._enabled(!1, !1);
                      return this
                  }, k.removePause = function (b) {
                      return this.removeCallback(a._internals.pauseCallback, b)
                  }, k.tweenTo = function (a, c) {
                      c = c || {};
                      var d, e, f, g = {
                              ease: j,
                              useFrames: this.usesFrames(),
                              immediateRender: !1,
                              lazy: !1
                          },
                          h = c.repeat && i.TweenMax || b;
                      for (e in c) g[e] = c[e];
                      return g.time = this._parseTimeOrLabel(a), d = Math.abs(Number(g.time) - this._time) / this._timeScale || .001, f = new h(this, d, g), g.onStart = function () {
                          f.target.paused(!0), f.vars.time === f.target.time() || d !== f.duration() || f.isFromTo || f.duration(Math.abs(f.vars.time - f.target.time()) / f.target._timeScale).render(f.time(), !0, !0), c.onStart && c.onStart.apply(c.onStartScope || c.callbackScope || f, c.onStartParams || [])
                      }, f
                  }, k.tweenFromTo = function (a, b, c) {
                      c = c || {}, a = this._parseTimeOrLabel(a), c.startAt = {
                          onComplete: this.seek,
                          onCompleteParams: [a],
                          callbackScope: this
                      }, c.immediateRender = c.immediateRender !== !1;
                      var d = this.tweenTo(b, c);
                      return d.isFromTo = 1, d.duration(Math.abs(d.vars.time - a) / this._timeScale || .001)
                  }, k.render = function (a, b, c) {
                      this._gc && this._enabled(!0, !1);
                      var d, f, i, j, k, l, m, n, o, p = this,
                          q = p._time,
                          r = p._dirty ? p.totalDuration() : p._totalDuration,
                          s = p._duration,
                          t = p._totalTime,
                          u = p._startTime,
                          v = p._timeScale,
                          w = p._rawPrevTime,
                          x = p._paused,
                          y = p._cycle;
                      if (q !== p._time && (a += p._time - q), a >= r - e && a >= 0) p._locked || (p._totalTime = r, p._cycle = p._repeat), p._reversed || p._hasPausedChild() || (f = !0, j = "onComplete", k = !!p._timeline.autoRemoveChildren, 0 === p._duration && (0 >= a && a >= -e || 0 > w || w === e) && w !== a && p._first && (k = !0, w > e && (j = "onReverseComplete"))), p._rawPrevTime = p._duration || !b || a || p._rawPrevTime === a ? a : e, p._yoyo && 1 & p._cycle ? p._time = a = 0 : (p._time = s, a = s + 1e-4);
                      else if (e > a)
                          if (p._locked || (p._totalTime = p._cycle = 0), p._time = 0, a > -e && (a = 0), (0 !== q || 0 === s && w !== e && (w > 0 || 0 > a && w >= 0) && !p._locked) && (j = "onReverseComplete", f = p._reversed), 0 > a) p._active = !1, p._timeline.autoRemoveChildren && p._reversed ? (k = f = !0, j = "onReverseComplete") : w >= 0 && p._first && (k = !0), p._rawPrevTime = a;
                          else {
                              if (p._rawPrevTime = s || !b || a || p._rawPrevTime === a ? a : e, 0 === a && f)
                                  for (d = p._first; d && 0 === d._startTime;) d._duration || (f = !1), d = d._next;
                              a = 0, p._initted || (k = !0)
                          }
                      else 0 === s && 0 > w && (k = !0), p._time = p._rawPrevTime = a, p._locked || (p._totalTime = a, 0 !== p._repeat && (l = s + p._repeatDelay, p._cycle = p._totalTime / l >> 0, p._cycle && p._cycle === p._totalTime / l && a >= t && p._cycle--, p._time = p._totalTime - p._cycle * l, p._yoyo && 1 & p._cycle && (p._time = s - p._time), p._time > s ? (p._time = s, a = s + 1e-4) : p._time < 0 ? p._time = a = 0 : a = p._time));
                      if (p._hasPause && !p._forcingPlayhead && !b) {
                          if (a = p._time, a > q || p._repeat && y !== p._cycle)
                              for (d = p._first; d && d._startTime <= a && !m;) d._duration || "isPause" !== d.data || d.ratio || 0 === d._startTime && 0 === p._rawPrevTime || (m = d), d = d._next;
                          else
                              for (d = p._last; d && d._startTime >= a && !m;) d._duration || "isPause" === d.data && d._rawPrevTime > 0 && (m = d), d = d._prev;
                          m && (o = p._startTime + (p._reversed ? p._duration - m._startTime : m._startTime) / p._timeScale, m._startTime < s && (p._time = p._rawPrevTime = a = m._startTime, p._totalTime = a + p._cycle * (p._totalDuration + p._repeatDelay)))
                      }
                      if (p._cycle !== y && !p._locked) {
                          var z = p._yoyo && 0 !== (1 & y),
                              A = z === (p._yoyo && 0 !== (1 & p._cycle)),
                              B = p._totalTime,
                              C = p._cycle,
                              D = p._rawPrevTime,
                              E = p._time;
                          if (p._totalTime = y * s, p._cycle < y ? z = !z : p._totalTime += s, p._time = q, p._rawPrevTime = 0 === s ? w - 1e-4 : w, p._cycle = y, p._locked = !0, q = z ? 0 : s, p.render(q, b, 0 === s), b || p._gc || p.vars.onRepeat && (p._cycle = C, p._locked = !1, p._callback("onRepeat")), q !== p._time) return;
                          if (A && (p._cycle = y, p._locked = !0, q = z ? s + 1e-4 : -1e-4, p.render(q, !0, !1)), p._locked = !1, p._paused && !x) return;
                          p._time = E, p._totalTime = B, p._cycle = C, p._rawPrevTime = D
                      }
                      if (!(p._time !== q && p._first || c || k || m)) return void(t !== p._totalTime && p._onUpdate && (b || p._callback("onUpdate")));
                      if (p._initted || (p._initted = !0), p._active || !p._paused && p._totalTime !== t && a > 0 && (p._active = !0), 0 === t && p.vars.onStart && (0 === p._totalTime && p._totalDuration || b || p._callback("onStart")), n = p._time, n >= q)
                          for (d = p._first; d && (i = d._next, n === p._time && (!p._paused || x));)(d._active || d._startTime <= p._time && !d._paused && !d._gc) && (m === d && (p.pause(), p._pauseTime = o), d._reversed ? d.render((d._dirty ? d.totalDuration() : d._totalDuration) - (a - d._startTime) * d._timeScale, b, c) : d.render((a - d._startTime) * d._timeScale, b, c)), d = i;
                      else
                          for (d = p._last; d && (i = d._prev, n === p._time && (!p._paused || x));) {
                              if (d._active || d._startTime <= q && !d._paused && !d._gc) {
                                  if (m === d) {
                                      for (m = d._prev; m && m.endTime() > p._time;) m.render(m._reversed ? m.totalDuration() - (a - m._startTime) * m._timeScale : (a - m._startTime) * m._timeScale, b, c), m = m._prev;
                                      m = null, p.pause(), p._pauseTime = o
                                  }
                                  d._reversed ? d.render((d._dirty ? d.totalDuration() : d._totalDuration) - (a - d._startTime) * d._timeScale, b, c) : d.render((a - d._startTime) * d._timeScale, b, c)
                              }
                              d = i
                          }
                      p._onUpdate && (b || (g.length && h(), p._callback("onUpdate"))), j && (p._locked || p._gc || (u === p._startTime || v !== p._timeScale) && (0 === p._time || r >= p.totalDuration()) && (f && (g.length && h(), p._timeline.autoRemoveChildren && p._enabled(!1, !1), p._active = !1), !b && p.vars[j] && p._callback(j)))
                  }, k.getActive = function (a, b, c) {
                      var d, e, f = [],
                          g = this.getChildren(a || null == a, b || null == a, !!c),
                          h = 0,
                          i = g.length;
                      for (d = 0; i > d; d++) e = g[d], e.isActive() && (f[h++] = e);
                      return f
                  }, k.getLabelAfter = function (a) {
                      a || 0 !== a && (a = this._time);
                      var b, c = this.getLabelsArray(),
                          d = c.length;
                      for (b = 0; d > b; b++)
                          if (c[b].time > a) return c[b].name;
                      return null
                  }, k.getLabelBefore = function (a) {
                      null == a && (a = this._time);
                      for (var b = this.getLabelsArray(), c = b.length; --c > -1;)
                          if (b[c].time < a) return b[c].name;
                      return null
                  }, k.getLabelsArray = function () {
                      var a, b = [],
                          c = 0;
                      for (a in this._labels) b[c++] = {
                          time: this._labels[a],
                          name: a
                      };
                      return b.sort(function (a, b) {
                          return a.time - b.time
                      }), b
                  }, k.invalidate = function () {
                      return this._locked = !1, a.prototype.invalidate.call(this)
                  }, k.progress = function (a, b) {
                      return arguments.length ? this.totalTime(this.duration() * (this._yoyo && 0 !== (1 & this._cycle) ? 1 - a : a) + this._cycle * (this._duration + this._repeatDelay), b) : this._time / this.duration() || 0
                  }, k.totalProgress = function (a, b) {
                      return arguments.length ? this.totalTime(this.totalDuration() * a, b) : this._totalTime / this.totalDuration() || 0
                  }, k.totalDuration = function (b) {
                      return arguments.length ? -1 !== this._repeat && b ? this.timeScale(this.totalDuration() / b) : this : (this._dirty && (a.prototype.totalDuration.call(this), this._totalDuration = -1 === this._repeat ? 999999999999 : this._duration * (this._repeat + 1) + this._repeatDelay * this._repeat), this._totalDuration)
                  }, k.time = function (a, b) {
                      if (!arguments.length) return this._time;
                      this._dirty && this.totalDuration();
                      var c = this._duration,
                          d = this._cycle,
                          e = d * (c + this._repeatDelay);
                      return a > c && (a = c), this.totalTime(this._yoyo && 1 & d ? c - a + e : this._repeat ? a + e : a, b)
                  }, k.repeat = function (a) {
                      return arguments.length ? (this._repeat = a, this._uncache(!0)) : this._repeat
                  }, k.repeatDelay = function (a) {
                      return arguments.length ? (this._repeatDelay = a, this._uncache(!0)) : this._repeatDelay
                  }, k.yoyo = function (a) {
                      return arguments.length ? (this._yoyo = a, this) : this._yoyo
                  }, k.currentLabel = function (a) {
                      return arguments.length ? this.seek(a, !0) : this.getLabelBefore(this._time + e)
                  }, d
              }, !0),
              function () {
                  var a = 180 / Math.PI,
                      b = [],
                      c = [],
                      d = [],
                      e = {},
                      f = _gsScope._gsDefine.globals,
                      g = function (a, b, c, d) {
                          c === d && (c = d - (d - b) / 1e6), a === b && (b = a + (c - a) / 1e6), this.a = a, this.b = b, this.c = c, this.d = d, this.da = d - a, this.ca = c - a, this.ba = b - a
                      },
                      h = ",x,y,z,left,top,right,bottom,marginTop,marginLeft,marginRight,marginBottom,paddingLeft,paddingTop,paddingRight,paddingBottom,backgroundPosition,backgroundPosition_y,",
                      i = function (a, b, c, d) {
                          var e = {
                                  a: a
                              },
                              f = {},
                              g = {},
                              h = {
                                  c: d
                              },
                              i = (a + b) / 2,
                              j = (b + c) / 2,
                              k = (c + d) / 2,
                              l = (i + j) / 2,
                              m = (j + k) / 2,
                              n = (m - l) / 8;
                          return e.b = i + (a - i) / 4, f.b = l + n, e.c = f.a = (e.b + f.b) / 2, f.c = g.a = (l + m) / 2, g.b = m - n, h.b = k + (d - k) / 4, g.c = h.a = (g.b + h.b) / 2, [e, f, g, h]
                      },
                      j = function (a, e, f, g, h) {
                          var j, k, l, m, n, o, p, q, r, s, t, u, v, w = a.length - 1,
                              x = 0,
                              y = a[0].a;
                          for (j = 0; w > j; j++) n = a[x], k = n.a, l = n.d, m = a[x + 1].d, h ? (t = b[j], u = c[j], v = (u + t) * e * .25 / (g ? .5 : d[j] || .5), o = l - (l - k) * (g ? .5 * e : 0 !== t ? v / t : 0), p = l + (m - l) * (g ? .5 * e : 0 !== u ? v / u : 0), q = l - (o + ((p - o) * (3 * t / (t + u) + .5) / 4 || 0))) : (o = l - (l - k) * e * .5, p = l + (m - l) * e * .5, q = l - (o + p) / 2), o += q, p += q, n.c = r = o, 0 !== j ? n.b = y : n.b = y = n.a + .6 * (n.c - n.a), n.da = l - k, n.ca = r - k, n.ba = y - k, f ? (s = i(k, y, r, l), a.splice(x, 1, s[0], s[1], s[2], s[3]), x += 4) : x++, y = p;
                          n = a[x], n.b = y, n.c = y + .4 * (n.d - y), n.da = n.d - n.a, n.ca = n.c - n.a, n.ba = y - n.a, f && (s = i(n.a, y, n.c, n.d), a.splice(x, 1, s[0], s[1], s[2], s[3]))
                      },
                      k = function (a, d, e, f) {
                          var h, i, j, k, l, m, n = [];
                          if (f)
                              for (a = [f].concat(a), i = a.length; --i > -1;) "string" == typeof (m = a[i][d]) && "=" === m.charAt(1) && (a[i][d] = f[d] + Number(m.charAt(0) + m.substr(2)));
                          if (h = a.length - 2, 0 > h) return n[0] = new g(a[0][d], 0, 0, a[0][d]), n;
                          for (i = 0; h > i; i++) j = a[i][d], k = a[i + 1][d], n[i] = new g(j, 0, 0, k), e && (l = a[i + 2][d], b[i] = (b[i] || 0) + (k - j) * (k - j), c[i] = (c[i] || 0) + (l - k) * (l - k));
                          return n[i] = new g(a[i][d], 0, 0, a[i + 1][d]), n
                      },
                      l = function (a, f, g, i, l, m) {
                          var n, o, p, q, r, s, t, u, v = {},
                              w = [],
                              x = m || a[0];
                          l = "string" == typeof l ? "," + l + "," : h, null == f && (f = 1);
                          for (o in a[0]) w.push(o);
                          if (a.length > 1) {
                              for (u = a[a.length - 1], t = !0, n = w.length; --n > -1;)
                                  if (o = w[n], Math.abs(x[o] - u[o]) > .05) {
                                      t = !1;
                                      break
                                  } t && (a = a.concat(), m && a.unshift(m), a.push(a[1]), m = a[a.length - 3])
                          }
                          for (b.length = c.length = d.length = 0, n = w.length; --n > -1;) o = w[n], e[o] = -1 !== l.indexOf("," + o + ","), v[o] = k(a, o, e[o], m);
                          for (n = b.length; --n > -1;) b[n] = Math.sqrt(b[n]), c[n] = Math.sqrt(c[n]);
                          if (!i) {
                              for (n = w.length; --n > -1;)
                                  if (e[o])
                                      for (p = v[w[n]],
                                          s = p.length - 1, q = 0; s > q; q++) r = p[q + 1].da / c[q] + p[q].da / b[q] || 0, d[q] = (d[q] || 0) + r * r;
                              for (n = d.length; --n > -1;) d[n] = Math.sqrt(d[n])
                          }
                          for (n = w.length, q = g ? 4 : 1; --n > -1;) o = w[n], p = v[o], j(p, f, g, i, e[o]), t && (p.splice(0, q), p.splice(p.length - q, q));
                          return v
                      },
                      m = function (a, b, c) {
                          b = b || "soft";
                          var d, e, f, h, i, j, k, l, m, n, o, p = {},
                              q = "cubic" === b ? 3 : 2,
                              r = "soft" === b,
                              s = [];
                          if (r && c && (a = [c].concat(a)), null == a || a.length < q + 1) throw "invalid Bezier data";
                          for (m in a[0]) s.push(m);
                          for (j = s.length; --j > -1;) {
                              for (m = s[j], p[m] = i = [], n = 0, l = a.length, k = 0; l > k; k++) d = null == c ? a[k][m] : "string" == typeof (o = a[k][m]) && "=" === o.charAt(1) ? c[m] + Number(o.charAt(0) + o.substr(2)) : Number(o), r && k > 1 && l - 1 > k && (i[n++] = (d + i[n - 2]) / 2), i[n++] = d;
                              for (l = n - q + 1, n = 0, k = 0; l > k; k += q) d = i[k], e = i[k + 1], f = i[k + 2], h = 2 === q ? 0 : i[k + 3], i[n++] = o = 3 === q ? new g(d, e, f, h) : new g(d, (2 * e + d) / 3, (2 * e + f) / 3, f);
                              i.length = n
                          }
                          return p
                      },
                      n = function (a, b, c) {
                          for (var d, e, f, g, h, i, j, k, l, m, n, o = 1 / c, p = a.length; --p > -1;)
                              for (m = a[p], f = m.a, g = m.d - f, h = m.c - f, i = m.b - f, d = e = 0, k = 1; c >= k; k++) j = o * k, l = 1 - j, d = e - (e = (j * j * g + 3 * l * (j * h + l * i)) * j), n = p * c + k - 1, b[n] = (b[n] || 0) + d * d
                      },
                      o = function (a, b) {
                          b = b >> 0 || 6;
                          var c, d, e, f, g = [],
                              h = [],
                              i = 0,
                              j = 0,
                              k = b - 1,
                              l = [],
                              m = [];
                          for (c in a) n(a[c], g, b);
                          for (e = g.length, d = 0; e > d; d++) i += Math.sqrt(g[d]), f = d % b, m[f] = i, f === k && (j += i, f = d / b >> 0, l[f] = m, h[f] = j, i = 0, m = []);
                          return {
                              length: j,
                              lengths: h,
                              segments: l
                          }
                      },
                      p = _gsScope._gsDefine.plugin({
                          propName: "bezier",
                          priority: -1,
                          version: "1.3.9",
                          API: 2,
                          global: !0,
                          init: function (a, b, c) {
                              this._target = a, b instanceof Array && (b = {
                                  values: b
                              }), this._func = {}, this._mod = {}, this._props = [], this._timeRes = null == b.timeResolution ? 6 : parseInt(b.timeResolution, 10);
                              var d, e, f, g, h, i = b.values || [],
                                  j = {},
                                  k = i[0],
                                  n = b.autoRotate || c.vars.orientToBezier;
                              this._autoRotate = n ? n instanceof Array ? n : [["x", "y", "rotation", n === !0 ? 0 : Number(n) || 0]] : null;
                              for (d in k) this._props.push(d);
                              for (f = this._props.length; --f > -1;) d = this._props[f], this._overwriteProps.push(d), e = this._func[d] = "function" == typeof a[d], j[d] = e ? a[d.indexOf("set") || "function" != typeof a["get" + d.substr(3)] ? d : "get" + d.substr(3)]() : parseFloat(a[d]), h || j[d] !== i[0][d] && (h = j);
                              if (this._beziers = "cubic" !== b.type && "quadratic" !== b.type && "soft" !== b.type ? l(i, isNaN(b.curviness) ? 1 : b.curviness, !1, "thruBasic" === b.type, b.correlate, h) : m(i, b.type, j), this._segCount = this._beziers[d].length, this._timeRes) {
                                  var p = o(this._beziers, this._timeRes);
                                  this._length = p.length, this._lengths = p.lengths, this._segments = p.segments, this._l1 = this._li = this._s1 = this._si = 0, this._l2 = this._lengths[0], this._curSeg = this._segments[0], this._s2 = this._curSeg[0], this._prec = 1 / this._curSeg.length
                              }
                              if (n = this._autoRotate)
                                  for (this._initialRotations = [], n[0] instanceof Array || (this._autoRotate = n = [n]), f = n.length; --f > -1;) {
                                      for (g = 0; 3 > g; g++) d = n[f][g], this._func[d] = "function" == typeof a[d] ? a[d.indexOf("set") || "function" != typeof a["get" + d.substr(3)] ? d : "get" + d.substr(3)] : !1;
                                      d = n[f][2], this._initialRotations[f] = (this._func[d] ? this._func[d].call(this._target) : this._target[d]) || 0, this._overwriteProps.push(d)
                                  }
                              return this._startRatio = c.vars.runBackwards ? 1 : 0, !0
                          },
                          set: function (b) {
                              var c, d, e, f, g, h, i, j, k, l, m, n = this._segCount,
                                  o = this._func,
                                  p = this._target,
                                  q = b !== this._startRatio;
                              if (this._timeRes) {
                                  if (k = this._lengths, l = this._curSeg, m = b * this._length, e = this._li, m > this._l2 && n - 1 > e) {
                                      for (j = n - 1; j > e && (this._l2 = k[++e]) <= m;);
                                      this._l1 = k[e - 1], this._li = e, this._curSeg = l = this._segments[e], this._s2 = l[this._s1 = this._si = 0]
                                  } else if (m < this._l1 && e > 0) {
                                      for (; e > 0 && (this._l1 = k[--e]) >= m;);
                                      0 === e && m < this._l1 ? this._l1 = 0 : e++, this._l2 = k[e], this._li = e, this._curSeg = l = this._segments[e], this._s1 = l[(this._si = l.length - 1) - 1] || 0, this._s2 = l[this._si]
                                  }
                                  if (c = e, m -= this._l1, e = this._si, m > this._s2 && e < l.length - 1) {
                                      for (j = l.length - 1; j > e && (this._s2 = l[++e]) <= m;);
                                      this._s1 = l[e - 1], this._si = e
                                  } else if (m < this._s1 && e > 0) {
                                      for (; e > 0 && (this._s1 = l[--e]) >= m;);
                                      0 === e && m < this._s1 ? this._s1 = 0 : e++, this._s2 = l[e], this._si = e
                                  }
                                  h = 1 === b ? 1 : (e + (m - this._s1) / (this._s2 - this._s1)) * this._prec || 0
                              } else c = 0 > b ? 0 : b >= 1 ? n - 1 : n * b >> 0, h = (b - c * (1 / n)) * n;
                              for (d = 1 - h, e = this._props.length; --e > -1;) f = this._props[e], g = this._beziers[f][c], i = (h * h * g.da + 3 * d * (h * g.ca + d * g.ba)) * h + g.a, this._mod[f] && (i = this._mod[f](i, p)), o[f] ? p[f](i) : p[f] = i;
                              if (this._autoRotate) {
                                  var r, s, t, u, v, w, x, y = this._autoRotate;
                                  for (e = y.length; --e > -1;) f = y[e][2], w = y[e][3] || 0, x = y[e][4] === !0 ? 1 : a, g = this._beziers[y[e][0]], r = this._beziers[y[e][1]], g && r && (g = g[c], r = r[c], s = g.a + (g.b - g.a) * h, u = g.b + (g.c - g.b) * h, s += (u - s) * h, u += (g.c + (g.d - g.c) * h - u) * h, t = r.a + (r.b - r.a) * h, v = r.b + (r.c - r.b) * h, t += (v - t) * h, v += (r.c + (r.d - r.c) * h - v) * h, i = q ? Math.atan2(v - t, u - s) * x + w : this._initialRotations[e], this._mod[f] && (i = this._mod[f](i, p)), o[f] ? p[f](i) : p[f] = i)
                              }
                          }
                      }),
                      q = p.prototype;
                  p.bezierThrough = l, p.cubicToQuadratic = i, p._autoCSS = !0, p.quadraticToCubic = function (a, b, c) {
                      return new g(a, (2 * b + a) / 3, (2 * b + c) / 3, c)
                  }, p._cssRegister = function () {
                      var a = f.CSSPlugin;
                      if (a) {
                          var b = a._internals,
                              c = b._parseToProxy,
                              d = b._setPluginRatio,
                              e = b.CSSPropTween;
                          b._registerComplexSpecialProp("bezier", {
                              parser: function (a, b, f, g, h, i) {
                                  b instanceof Array && (b = {
                                      values: b
                                  }), i = new p;
                                  var j, k, l, m = b.values,
                                      n = m.length - 1,
                                      o = [],
                                      q = {};
                                  if (0 > n) return h;
                                  for (j = 0; n >= j; j++) l = c(a, m[j], g, h, i, n !== j), o[j] = l.end;
                                  for (k in b) q[k] = b[k];
                                  return q.values = o, h = new e(a, "bezier", 0, 0, l.pt, 2), h.data = l, h.plugin = i, h.setRatio = d, 0 === q.autoRotate && (q.autoRotate = !0), !q.autoRotate || q.autoRotate instanceof Array || (j = q.autoRotate === !0 ? 0 : Number(q.autoRotate), q.autoRotate = null != l.end.left ? [["left", "top", "rotation", j, !1]] : null != l.end.x ? [["x", "y", "rotation", j, !1]] : !1), q.autoRotate && (g._transform || g._enableTransforms(!1), l.autoRotate = g._target._gsTransform, l.proxy.rotation = l.autoRotate.rotation || 0, g._overwriteProps.push("rotation")), i._onInitTween(l.proxy, q, g._tween), h
                              }
                          })
                      }
                  }, q._mod = function (a) {
                      for (var b, c = this._overwriteProps, d = c.length; --d > -1;) b = a[c[d]], b && "function" == typeof b && (this._mod[c[d]] = b)
                  }, q._kill = function (a) {
                      var b, c, d = this._props;
                      for (b in this._beziers)
                          if (b in a)
                              for (delete this._beziers[b], delete this._func[b], c = d.length; --c > -1;) d[c] === b && d.splice(c, 1);
                      if (d = this._autoRotate)
                          for (c = d.length; --c > -1;) a[d[c][2]] && d.splice(c, 1);
                      return this._super._kill.call(this, a)
                  }
              }(), _gsScope._gsDefine("plugins.CSSPlugin", ["plugins.TweenPlugin", "TweenLite"], function (a, b) {
                  var c, d, e, f, g = function () {
                          a.call(this, "css"), this._overwriteProps.length = 0, this.setRatio = g.prototype.setRatio
                      },
                      h = _gsScope._gsDefine.globals,
                      i = {},
                      j = g.prototype = new a("css");
                  j.constructor = g, g.version = "2.1.3", g.API = 2, g.defaultTransformPerspective = 0, g.defaultSkewType = "compensated", g.defaultSmoothOrigin = !0, j = "px", g.suffixMap = {
                      top: j,
                      right: j,
                      bottom: j,
                      left: j,
                      width: j,
                      height: j,
                      fontSize: j,
                      padding: j,
                      margin: j,
                      perspective: j,
                      lineHeight: ""
                  };
                  var k, l, m, n, o, p, q, r, s = /(?:\-|\.|\b)(\d|\.|e\-)+/g,
                      t = /(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,
                      u = /(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi,
                      v = /(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b),?/gi,
                      w = /(?![+-]?\d*\.?\d+|[+-]|e[+-]\d+)[^0-9]/g,
                      x = /(?:\d|\-|\+|=|#|\.)*/g,
                      y = /opacity *= *([^)]*)/i,
                      z = /opacity:([^;]*)/i,
                      A = /alpha\(opacity *=.+?\)/i,
                      B = /^(rgb|hsl)/,
                      C = /([A-Z])/g,
                      D = /-([a-z])/gi,
                      E = /(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi,
                      F = function (a, b) {
                          return b.toUpperCase()
                      },
                      G = /(?:Left|Right|Width)/i,
                      H = /(M11|M12|M21|M22)=[\d\-\.e]+/gi,
                      I = /progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,
                      J = /,(?=[^\)]*(?:\(|$))/gi,
                      K = /[\s,\(]/i,
                      L = Math.PI / 180,
                      M = 180 / Math.PI,
                      N = {},
                      O = {
                          style: {}
                      },
                      P = _gsScope.document || {
                          createElement: function () {
                              return O
                          }
                      },
                      Q = function (a, b) {
                          var c = P.createElementNS ? P.createElementNS(b || "http://www.w3.org/1999/xhtml", a) : P.createElement(a);
                          return c.style ? c : P.createElement(a)
                      },
                      R = Q("div"),
                      S = Q("img"),
                      T = g._internals = {
                          _specialProps: i
                      },
                      U = (_gsScope.navigator || {}).userAgent || "",
                      V = function () {
                          var a = U.indexOf("Android"),
                              b = Q("a");
                          return m = -1 !== U.indexOf("Safari") && -1 === U.indexOf("Chrome") && (-1 === a || parseFloat(U.substr(a + 8, 2)) > 3), o = m && parseFloat(U.substr(U.indexOf("Version/") + 8, 2)) < 6, n = -1 !== U.indexOf("Firefox"), (/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(U) || /Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(U)) && (p = parseFloat(RegExp.$1)), b ? (b.style.cssText = "top:1px;opacity:.55;", /^0.55/.test(b.style.opacity)) : !1
                      }(),
                      W = function (a) {
                          return y.test("string" == typeof a ? a : (a.currentStyle ? a.currentStyle.filter : a.style.filter) || "") ? parseFloat(RegExp.$1) / 100 : 1
                      },
                      X = function (a) {
                          _gsScope.console && console.log(a)
                      },
                      Y = "",
                      Z = "",
                      $ = function (a, b) {
                          b = b || R;
                          var c, d, e = b.style;
                          if (void 0 !== e[a]) return a;
                          for (a = a.charAt(0).toUpperCase() + a.substr(1), c = ["O", "Moz", "ms", "Ms", "Webkit"], d = 5; --d > -1 && void 0 === e[c[d] + a];);
                          return d >= 0 ? (Z = 3 === d ? "ms" : c[d], Y = "-" + Z.toLowerCase() + "-", Z + a) : null
                      },
                      _ = "undefined" != typeof window ? window : P.defaultView || {
                          getComputedStyle: function () {}
                      },
                      aa = function (a) {
                          return _.getComputedStyle(a)
                      },
                      ba = g.getStyle = function (a, b, c, d, e) {
                          var f;
                          return V || "opacity" !== b ? (!d && a.style[b] ? f = a.style[b] : (c = c || aa(a)) ? f = c[b] || c.getPropertyValue(b) || c.getPropertyValue(b.replace(C, "-$1").toLowerCase()) : a.currentStyle && (f = a.currentStyle[b]), null == e || f && "none" !== f && "auto" !== f && "auto auto" !== f ? f : e) : W(a)
                      },
                      ca = T.convertToPixels = function (a, c, d, e, f) {
                          if ("px" === e || !e && "lineHeight" !== c) return d;
                          if ("auto" === e || !d) return 0;
                          var h, i, j, k = G.test(c),
                              l = a,
                              m = R.style,
                              n = 0 > d,
                              o = 1 === d;
                          if (n && (d = -d), o && (d *= 100), "lineHeight" !== c || e)
                              if ("%" === e && -1 !== c.indexOf("border")) h = d / 100 * (k ? a.clientWidth : a.clientHeight);
                              else {
                                  if (m.cssText = "border:0 solid red;position:" + ba(a, "position") + ";line-height:0;", "%" !== e && l.appendChild && "v" !== e.charAt(0) && "rem" !== e) m[k ? "borderLeftWidth" : "borderTopWidth"] = d + e;
                                  else {
                                      if (l = a.parentNode || P.body, -1 !== ba(l, "display").indexOf("flex") && (m.position = "absolute"), i = l._gsCache, j = b.ticker.frame, i && k && i.time === j) return i.width * d / 100;
                                      m[k ? "width" : "height"] = d + e
                                  }
                                  l.appendChild(R), h = parseFloat(R[k ? "offsetWidth" : "offsetHeight"]), l.removeChild(R), k && "%" === e && g.cacheWidths !== !1 && (i = l._gsCache = l._gsCache || {}, i.time = j, i.width = h / d * 100), 0 !== h || f || (h = ca(a, c, d, e, !0))
                              }
                          else i = aa(a).lineHeight, a.style.lineHeight = d, h = parseFloat(aa(a).lineHeight), a.style.lineHeight = i;
                          return o && (h /= 100), n ? -h : h
                      },
                      da = T.calculateOffset = function (a, b, c) {
                          if ("absolute" !== ba(a, "position", c)) return 0;
                          var d = "left" === b ? "Left" : "Top",
                              e = ba(a, "margin" + d, c);
                          return a["offset" + d] - (ca(a, b, parseFloat(e), e.replace(x, "")) || 0)
                      },
                      ea = function (a, b) {
                          var c, d, e, f = {};
                          if (b = b || aa(a, null))
                              if (c = b.length)
                                  for (; --c > -1;) e = b[c], (-1 === e.indexOf("-transform") || Fa === e) && (f[e.replace(D, F)] = b.getPropertyValue(e));
                              else
                                  for (c in b)(-1 === c.indexOf("Transform") || Ea === c) && (f[c] = b[c]);
                          else if (b = a.currentStyle || a.style)
                              for (c in b) "string" == typeof c && void 0 === f[c] && (f[c.replace(D, F)] = b[c]);
                          return V || (f.opacity = W(a)), d = Ta(a, b, !1), f.rotation = d.rotation, f.skewX = d.skewX, f.scaleX = d.scaleX, f.scaleY = d.scaleY, f.x = d.x, f.y = d.y, Ha && (f.z = d.z, f.rotationX = d.rotationX, f.rotationY = d.rotationY, f.scaleZ = d.scaleZ), f.filters && delete f.filters, f
                      },
                      fa = function (a, b, c, d, e) {
                          var f, g, h, i = {},
                              j = a.style;
                          for (g in c) "cssText" !== g && "length" !== g && isNaN(g) && (b[g] !== (f = c[g]) || e && e[g]) && -1 === g.indexOf("Origin") && ("number" == typeof f || "string" == typeof f) && (i[g] = "auto" !== f || "left" !== g && "top" !== g ? "" !== f && "auto" !== f && "none" !== f || "string" != typeof b[g] || "" === b[g].replace(w, "") ? f : 0 : da(a, g), void 0 !== j[g] && (h = new ua(j, g, j[g], h)));
                          if (d)
                              for (g in d) "className" !== g && (i[g] = d[g]);
                          return {
                              difs: i,
                              firstMPT: h
                          }
                      },
                      ga = {
                          width: ["Left", "Right"],
                          height: ["Top", "Bottom"]
                      },
                      ha = ["marginLeft", "marginRight", "marginTop", "marginBottom"],
                      ia = function (a, b, c) {
                          if ("svg" === (a.nodeName + "").toLowerCase()) return (c || aa(a))[b] || 0;
                          if (a.getCTM && Qa(a)) return a.getBBox()[b] || 0;
                          var d = parseFloat("width" === b ? a.offsetWidth : a.offsetHeight),
                              e = ga[b],
                              f = e.length;
                          for (c = c || aa(a, null); --f > -1;) d -= parseFloat(ba(a, "padding" + e[f], c, !0)) || 0, d -= parseFloat(ba(a, "border" + e[f] + "Width", c, !0)) || 0;
                          return d
                      },
                      ja = function (a, b) {
                          if ("contain" === a || "auto" === a || "auto auto" === a) return a + " ";
                          (null == a || "" === a) && (a = "0 0");
                          var c, d = a.split(" "),
                              e = -1 !== a.indexOf("left") ? "0%" : -1 !== a.indexOf("right") ? "100%" : d[0],
                              f = -1 !== a.indexOf("top") ? "0%" : -1 !== a.indexOf("bottom") ? "100%" : d[1];
                          if (d.length > 3 && !b) {
                              for (d = a.split(", ").join(",").split(","), a = [], c = 0; c < d.length; c++) a.push(ja(d[c]));
                              return a.join(",")
                          }
                          return null == f ? f = "center" === e ? "50%" : "0" : "center" === f && (f = "50%"), ("center" === e || isNaN(parseFloat(e)) && -1 === (e + "").indexOf("=")) && (e = "50%"), a = e + " " + f + (d.length > 2 ? " " + d[2] : ""), b && (b.oxp = -1 !== e.indexOf("%"), b.oyp = -1 !== f.indexOf("%"), b.oxr = "=" === e.charAt(1), b.oyr = "=" === f.charAt(1), b.ox = parseFloat(e.replace(w, "")), b.oy = parseFloat(f.replace(w, "")), b.v = a), b || a
                      },
                      ka = function (a, b) {
                          return "function" == typeof a && (a = a(r, q)), "string" == typeof a && "=" === a.charAt(1) ? parseInt(a.charAt(0) + "1", 10) * parseFloat(a.substr(2)) : parseFloat(a) - parseFloat(b) || 0
                      },
                      la = function (a, b) {
                          "function" == typeof a && (a = a(r, q));
                          var c = "string" == typeof a && "=" === a.charAt(1);
                          return "string" == typeof a && "v" === a.charAt(a.length - 2) && (a = (c ? a.substr(0, 2) : 0) + window["inner" + ("vh" === a.substr(-2) ? "Height" : "Width")] * (parseFloat(c ? a.substr(2) : a) / 100)), null == a ? b : c ? parseInt(a.charAt(0) + "1", 10) * parseFloat(a.substr(2)) + b : parseFloat(a) || 0
                      },
                      ma = function (a, b, c, d) {
                          var e, f, g, h, i, j = 1e-6;
                          return "function" == typeof a && (a = a(r, q)), null == a ? h = b : "number" == typeof a ? h = a : (e = 360, f = a.split("_"), i = "=" === a.charAt(1), g = (i ? parseInt(a.charAt(0) + "1", 10) * parseFloat(f[0].substr(2)) : parseFloat(f[0])) * (-1 === a.indexOf("rad") ? 1 : M) - (i ? 0 : b), f.length && (d && (d[c] = b + g), -1 !== a.indexOf("short") && (g %= e, g !== g % (e / 2) && (g = 0 > g ? g + e : g - e)), -1 !== a.indexOf("_cw") && 0 > g ? g = (g + 9999999999 * e) % e - (g / e | 0) * e : -1 !== a.indexOf("ccw") && g > 0 && (g = (g - 9999999999 * e) % e - (g / e | 0) * e)), h = b + g), j > h && h > -j && (h = 0), h
                      },
                      na = {
                          aqua: [0, 255, 255],
                          lime: [0, 255, 0],
                          silver: [192, 192, 192],
                          black: [0, 0, 0],
                          maroon: [128, 0, 0],
                          teal: [0, 128, 128],
                          blue: [0, 0, 255],
                          navy: [0, 0, 128],
                          white: [255, 255, 255],
                          fuchsia: [255, 0, 255],
                          olive: [128, 128, 0],
                          yellow: [255, 255, 0],
                          orange: [255, 165, 0],
                          gray: [128, 128, 128],
                          purple: [128, 0, 128],
                          green: [0, 128, 0],
                          red: [255, 0, 0],
                          pink: [255, 192, 203],
                          cyan: [0, 255, 255],
                          transparent: [255, 255, 255, 0]
                      },
                      oa = function (a, b, c) {
                          return a = 0 > a ? a + 1 : a > 1 ? a - 1 : a, 255 * (1 > 6 * a ? b + (c - b) * a * 6 : .5 > a ? c : 2 > 3 * a ? b + (c - b) * (2 / 3 - a) * 6 : b) + .5 | 0
                      },
                      pa = g.parseColor = function (a, b) {
                          var c, d, e, f, g, h, i, j, k, l, m;
                          if (a)
                              if ("number" == typeof a) c = [a >> 16, a >> 8 & 255, 255 & a];
                              else {
                                  if ("," === a.charAt(a.length - 1) && (a = a.substr(0, a.length - 1)), na[a]) c = na[a];
                                  else if ("#" === a.charAt(0)) 4 === a.length && (d = a.charAt(1), e = a.charAt(2), f = a.charAt(3), a = "#" + d + d + e + e + f + f), a = parseInt(a.substr(1), 16), c = [a >> 16, a >> 8 & 255, 255 & a];
                                  else if ("hsl" === a.substr(0, 3))
                                      if (c = m = a.match(s), b) {
                                          if (-1 !== a.indexOf("=")) return a.match(t)
                                      } else g = Number(c[0]) % 360 / 360, h = Number(c[1]) / 100, i = Number(c[2]) / 100, e = .5 >= i ? i * (h + 1) : i + h - i * h, d = 2 * i - e, c.length > 3 && (c[3] = Number(c[3])), c[0] = oa(g + 1 / 3, d, e), c[1] = oa(g, d, e), c[2] = oa(g - 1 / 3, d, e);
                                  else c = a.match(s) || na.transparent;
                                  c[0] = Number(c[0]), c[1] = Number(c[1]), c[2] = Number(c[2]), c.length > 3 && (c[3] = Number(c[3]))
                              }
                          else c = na.black;
                          return b && !m && (d = c[0] / 255, e = c[1] / 255, f = c[2] / 255, j = Math.max(d, e, f), k = Math.min(d, e, f), i = (j + k) / 2, j === k ? g = h = 0 : (l = j - k, h = i > .5 ? l / (2 - j - k) : l / (j + k), g = j === d ? (e - f) / l + (f > e ? 6 : 0) : j === e ? (f - d) / l + 2 : (d - e) / l + 4, g *= 60), c[0] = g + .5 | 0, c[1] = 100 * h + .5 | 0, c[2] = 100 * i + .5 | 0), c
                      },
                      qa = function (a, b) {
                          var c, d, e, f = a.match(ra) || [],
                              g = 0,
                              h = "";
                          if (!f.length) return a;
                          for (c = 0; c < f.length; c++) d = f[c], e = a.substr(g, a.indexOf(d, g) - g), g += e.length + d.length, d = pa(d, b), 3 === d.length && d.push(1), h += e + (b ? "hsla(" + d[0] + "," + d[1] + "%," + d[2] + "%," + d[3] : "rgba(" + d.join(",")) + ")";
                          return h + a.substr(g)
                      },
                      ra = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#(?:[0-9a-f]{3}){1,2}\\b";
                  for (j in na) ra += "|" + j + "\\b";
                  ra = new RegExp(ra + ")", "gi"), g.colorStringFilter = function (a) {
                      var b, c = a[0] + " " + a[1];
                      ra.test(c) && (b = -1 !== c.indexOf("hsl(") || -1 !== c.indexOf("hsla("), a[0] = qa(a[0], b), a[1] = qa(a[1], b)), ra.lastIndex = 0
                  }, b.defaultStringFilter || (b.defaultStringFilter = g.colorStringFilter);
                  var sa = function (a, b, c, d) {
                          if (null == a) return function (a) {
                              return a
                          };
                          var e, f = b ? (a.match(ra) || [""])[0] : "",
                              g = a.split(f).join("").match(u) || [],
                              h = a.substr(0, a.indexOf(g[0])),
                              i = ")" === a.charAt(a.length - 1) ? ")" : "",
                              j = -1 !== a.indexOf(" ") ? " " : ",",
                              k = g.length,
                              l = k > 0 ? g[0].replace(s, "") : "";
                          return k ? e = b ? function (a) {
                              var b, m, n, o;
                              if ("number" == typeof a) a += l;
                              else if (d && J.test(a)) {
                                  for (o = a.replace(J, "|").split("|"), n = 0; n < o.length; n++) o[n] = e(o[n]);
                                  return o.join(",")
                              }
                              if (b = (a.match(ra) || [f])[0], m = a.split(b).join("").match(u) || [], n = m.length, k > n--)
                                  for (; ++n < k;) m[n] = c ? m[(n - 1) / 2 | 0] : g[n];
                              return h + m.join(j) + j + b + i + (-1 !== a.indexOf("inset") ? " inset" : "")
                          } : function (a) {
                              var b, f, m;
                              if ("number" == typeof a) a += l;
                              else if (d && J.test(a)) {
                                  for (f = a.replace(J, "|").split("|"), m = 0; m < f.length; m++) f[m] = e(f[m]);
                                  return f.join(",")
                              }
                              if (b = a.match("," === j ? u : v) || [], m = b.length, k > m--)
                                  for (; ++m < k;) b[m] = c ? b[(m - 1) / 2 | 0] : g[m];
                              return (h && "none" !== a ? a.substr(0, a.indexOf(b[0])) || h : h) + b.join(j) + i
                          } : function (a) {
                              return a
                          }
                      },
                      ta = function (a) {
                          return a = a.split(","),
                              function (b, c, d, e, f, g, h) {
                                  var i, j = (c + "").split(" ");
                                  for (h = {}, i = 0; 4 > i; i++) h[a[i]] = j[i] = j[i] || j[(i - 1) / 2 >> 0];
                                  return e.parse(b, h, f, g)
                              }
                      },
                      ua = (T._setPluginRatio = function (a) {
                          this.plugin.setRatio(a);
                          for (var b, c, d, e, f, g = this.data, h = g.proxy, i = g.firstMPT, j = 1e-6; i;) b = h[i.v], i.r ? b = i.r(b) : j > b && b > -j && (b = 0), i.t[i.p] = b, i = i._next;
                          if (g.autoRotate && (g.autoRotate.rotation = g.mod ? g.mod.call(this._tween, h.rotation, this.t, this._tween) : h.rotation), 1 === a || 0 === a)
                              for (i = g.firstMPT, f = 1 === a ? "e" : "b"; i;) {
                                  if (c = i.t, c.type) {
                                      if (1 === c.type) {
                                          for (e = c.xs0 + c.s + c.xs1, d = 1; d < c.l; d++) e += c["xn" + d] + c["xs" + (d + 1)];
                                          c[f] = e
                                      }
                                  } else c[f] = c.s + c.xs0;
                                  i = i._next
                              }
                      }, function (a, b, c, d, e) {
                          this.t = a, this.p = b, this.v = c, this.r = e, d && (d._prev = this, this._next = d)
                      }),
                      va = (T._parseToProxy = function (a, b, c, d, e, f) {
                          var g, h, i, j, k, l = d,
                              m = {},
                              n = {},
                              o = c._transform,
                              p = N;
                          for (c._transform = null, N = b, d = k = c.parse(a, b, d, e), N = p, f && (c._transform = o, l && (l._prev = null, l._prev && (l._prev._next = null))); d && d !== l;) {
                              if (d.type <= 1 && (h = d.p, n[h] = d.s + d.c, m[h] = d.s, f || (j = new ua(d, "s", h, j, d.r), d.c = 0), 1 === d.type))
                                  for (g = d.l; --g > 0;) i = "xn" + g, h = d.p + "_" + i, n[h] = d.data[i], m[h] = d[i], f || (j = new ua(d, i, h, j, d.rxp[i]));
                              d = d._next
                          }
                          return {
                              proxy: m,
                              end: n,
                              firstMPT: j,
                              pt: k
                          }
                      }, T.CSSPropTween = function (a, b, d, e, g, h, i, j, k, l, m) {
                          this.t = a, this.p = b, this.s = d, this.c = e, this.n = i || b, a instanceof va || f.push(this.n), this.r = j ? "function" == typeof j ? j : Math.round : j, this.type = h || 0, k && (this.pr = k, c = !0), this.b = void 0 === l ? d : l, this.e = void 0 === m ? d + e : m, g && (this._next = g, g._prev = this)
                      }),
                      wa = function (a, b, c, d, e, f) {
                          var g = new va(a, b, c, d - c, e, -1, f);
                          return g.b = c, g.e = g.xs0 = d, g
                      },
                      xa = g.parseComplex = function (a, b, c, d, e, f, h, i, j, l) {
                          c = c || f || "", "function" == typeof d && (d = d(r, q)), h = new va(a, b, 0, 0, h, l ? 2 : 1, null, !1, i, c, d), d += "", e && ra.test(d + c) && (d = [c, d], g.colorStringFilter(d), c = d[0], d = d[1]);
                          var m, n, o, p, u, v, w, x, y, z, A, B, C, D = c.split(", ").join(",").split(" "),
                              E = d.split(", ").join(",").split(" "),
                              F = D.length,
                              G = k !== !1;
                          for ((-1 !== d.indexOf(",") || -1 !== c.indexOf(",")) && (-1 !== (d + c).indexOf("rgb") || -1 !== (d + c).indexOf("hsl") ? (D = D.join(" ").replace(J, ", ").split(" "), E = E.join(" ").replace(J, ", ").split(" ")) : (D = D.join(" ").split(",").join(", ").split(" "), E = E.join(" ").split(",").join(", ").split(" ")), F = D.length), F !== E.length && (D = (f || "").split(" "), F = D.length), h.plugin = j, h.setRatio = l, ra.lastIndex = 0, m = 0; F > m; m++)
                              if (p = D[m], u = E[m] + "", x = parseFloat(p), x || 0 === x) h.appendXtra("", x, ka(u, x), u.replace(t, ""), G && -1 !== u.indexOf("px") ? Math.round : !1, !0);
                              else if (e && ra.test(p)) B = u.indexOf(")") + 1, B = ")" + (B ? u.substr(B) : ""), C = -1 !== u.indexOf("hsl") && V, z = u, p = pa(p, C), u = pa(u, C), y = p.length + u.length > 6, y && !V && 0 === u[3] ? (h["xs" + h.l] += h.l ? " transparent" : "transparent", h.e = h.e.split(E[m]).join("transparent")) : (V || (y = !1), C ? h.appendXtra(z.substr(0, z.indexOf("hsl")) + (y ? "hsla(" : "hsl("), p[0], ka(u[0], p[0]), ",", !1, !0).appendXtra("", p[1], ka(u[1], p[1]), "%,", !1).appendXtra("", p[2], ka(u[2], p[2]), y ? "%," : "%" + B, !1) : h.appendXtra(z.substr(0, z.indexOf("rgb")) + (y ? "rgba(" : "rgb("), p[0], u[0] - p[0], ",", Math.round, !0).appendXtra("", p[1], u[1] - p[1], ",", Math.round).appendXtra("", p[2], u[2] - p[2], y ? "," : B, Math.round), y && (p = p.length < 4 ? 1 : p[3], h.appendXtra("", p, (u.length < 4 ? 1 : u[3]) - p, B, !1))), ra.lastIndex = 0;
                          else if (v = p.match(s)) {
                              if (w = u.match(t), !w || w.length !== v.length) return h;
                              for (o = 0, n = 0; n < v.length; n++) A = v[n], z = p.indexOf(A, o), h.appendXtra(p.substr(o, z - o), Number(A), ka(w[n], A), "", G && "px" === p.substr(z + A.length, 2) ? Math.round : !1, 0 === n), o = z + A.length;
                              h["xs" + h.l] += p.substr(o)
                          } else h["xs" + h.l] += h.l || h["xs" + h.l] ? " " + u : u;
                          if (-1 !== d.indexOf("=") && h.data) {
                              for (B = h.xs0 + h.data.s, m = 1; m < h.l; m++) B += h["xs" + m] + h.data["xn" + m];
                              h.e = B + h["xs" + m]
                          }
                          return h.l || (h.type = -1, h.xs0 = h.e), h.xfirst || h
                      },
                      ya = 9;
                  for (j = va.prototype, j.l = j.pr = 0; --ya > 0;) j["xn" + ya] = 0, j["xs" + ya] = "";
                  j.xs0 = "", j._next = j._prev = j.xfirst = j.data = j.plugin = j.setRatio = j.rxp = null, j.appendXtra = function (a, b, c, d, e, f) {
                      var g = this,
                          h = g.l;
                      return g["xs" + h] += f && (h || g["xs" + h]) ? " " + a : a || "", c || 0 === h || g.plugin ? (g.l++, g.type = g.setRatio ? 2 : 1, g["xs" + g.l] = d || "", h > 0 ? (g.data["xn" + h] = b + c, g.rxp["xn" + h] = e, g["xn" + h] = b, g.plugin || (g.xfirst = new va(g, "xn" + h, b, c, g.xfirst || g, 0, g.n, e, g.pr), g.xfirst.xs0 = 0), g) : (g.data = {
                          s: b + c
                      }, g.rxp = {}, g.s = b, g.c = c, g.r = e, g)) : (g["xs" + h] += b + (d || ""), g)
                  };
                  var za = function (a, b) {
                          b = b || {}, this.p = b.prefix ? $(a) || a : a, i[a] = i[this.p] = this, this.format = b.formatter || sa(b.defaultValue, b.color, b.collapsible, b.multi), b.parser && (this.parse = b.parser), this.clrs = b.color, this.multi = b.multi, this.keyword = b.keyword, this.dflt = b.defaultValue, this.allowFunc = b.allowFunc, this.pr = b.priority || 0
                      },
                      Aa = T._registerComplexSpecialProp = function (a, b, c) {
                          "object" != typeof b && (b = {
                              parser: c
                          });
                          var d, e, f = a.split(","),
                              g = b.defaultValue;
                          for (c = c || [g], d = 0; d < f.length; d++) b.prefix = 0 === d && b.prefix, b.defaultValue = c[d] || g, e = new za(f[d], b)
                      },
                      Ba = T._registerPluginProp = function (a) {
                          if (!i[a]) {
                              var b = a.charAt(0).toUpperCase() + a.substr(1) + "Plugin";
                              Aa(a, {
                                  parser: function (a, c, d, e, f, g, j) {
                                      var k = h.com.greensock.plugins[b];
                                      return k ? (k._cssRegister(), i[d].parse(a, c, d, e, f, g, j)) : (X("Error: " + b + " js file not loaded."), f)
                                  }
                              })
                          }
                      };
                  j = za.prototype, j.parseComplex = function (a, b, c, d, e, f) {
                      var g, h, i, j, k, l, m = this.keyword;
                      if (this.multi && (J.test(c) || J.test(b) ? (h = b.replace(J, "|").split("|"), i = c.replace(J, "|").split("|")) : m && (h = [b], i = [c])), i) {
                          for (j = i.length > h.length ? i.length : h.length, g = 0; j > g; g++) b = h[g] = h[g] || this.dflt, c = i[g] = i[g] || this.dflt, m && (k = b.indexOf(m), l = c.indexOf(m), k !== l && (-1 === l ? h[g] = h[g].split(m).join("") : -1 === k && (h[g] += " " + m)));
                          b = h.join(", "), c = i.join(", ")
                      }
                      return xa(a, this.p, b, c, this.clrs, this.dflt, d, this.pr, e, f)
                  }, j.parse = function (a, b, c, d, f, g, h) {
                      return this.parseComplex(a.style, this.format(ba(a, this.p, e, !1, this.dflt)), this.format(b), f, g)
                  }, g.registerSpecialProp = function (a, b, c) {
                      Aa(a, {
                          parser: function (a, d, e, f, g, h, i) {
                              var j = new va(a, e, 0, 0, g, 2, e, !1, c);
                              return j.plugin = h, j.setRatio = b(a, d, f._tween, e), j
                          },
                          priority: c
                      })
                  }, g.useSVGTransformAttr = !0;
                  var Ca, Da = "scaleX,scaleY,scaleZ,x,y,z,skewX,skewY,rotation,rotationX,rotationY,perspective,xPercent,yPercent".split(","),
                      Ea = $("transform"),
                      Fa = Y + "transform",
                      Ga = $("transformOrigin"),
                      Ha = null !== $("perspective"),
                      Ia = T.Transform = function () {
                          this.perspective = parseFloat(g.defaultTransformPerspective) || 0, this.force3D = g.defaultForce3D !== !1 && Ha ? g.defaultForce3D || "auto" : !1
                      },
                      Ja = _gsScope.SVGElement,
                      Ka = function (a, b, c) {
                          var d, e = P.createElementNS("http://www.w3.org/2000/svg", a),
                              f = /([a-z])([A-Z])/g;
                          for (d in c) e.setAttributeNS(null, d.replace(f, "$1-$2").toLowerCase(), c[d]);
                          return b.appendChild(e), e
                      },
                      La = P.documentElement || {},
                      Ma = function () {
                          var a, b, c, d = p || /Android/i.test(U) && !_gsScope.chrome;
                          return P.createElementNS && La.appendChild && !d && (a = Ka("svg", La), b = Ka("rect", a, {
                              width: 100,
                              height: 50,
                              x: 100
                          }), c = b.getBoundingClientRect().width, b.style[Ga] = "50% 50%", b.style[Ea] = "scaleX(0.5)", d = c === b.getBoundingClientRect().width && !(n && Ha), La.removeChild(a)), d
                      }(),
                      Na = function (a, b, c, d, e, f) {
                          var h, i, j, k, l, m, n, o, p, q, r, s, t, u, v = a._gsTransform,
                              w = Sa(a, !0);
                          v && (t = v.xOrigin, u = v.yOrigin), (!d || (h = d.split(" ")).length < 2) && (n = a.getBBox(), 0 === n.x && 0 === n.y && n.width + n.height === 0 && (n = {
                              x: parseFloat(a.hasAttribute("x") ? a.getAttribute("x") : a.hasAttribute("cx") ? a.getAttribute("cx") : 0) || 0,
                              y: parseFloat(a.hasAttribute("y") ? a.getAttribute("y") : a.hasAttribute("cy") ? a.getAttribute("cy") : 0) || 0,
                              width: 0,
                              height: 0
                          }), b = ja(b).split(" "), h = [(-1 !== b[0].indexOf("%") ? parseFloat(b[0]) / 100 * n.width : parseFloat(b[0])) + n.x, (-1 !== b[1].indexOf("%") ? parseFloat(b[1]) / 100 * n.height : parseFloat(b[1])) + n.y]), c.xOrigin = k = parseFloat(h[0]), c.yOrigin = l = parseFloat(h[1]), d && w !== Ra && (m = w[0], n = w[1], o = w[2], p = w[3], q = w[4], r = w[5], s = m * p - n * o, s && (i = k * (p / s) + l * (-o / s) + (o * r - p * q) / s, j = k * (-n / s) + l * (m / s) - (m * r - n * q) / s, k = c.xOrigin = h[0] = i, l = c.yOrigin = h[1] = j)), v && (f && (c.xOffset = v.xOffset, c.yOffset = v.yOffset, v = c), e || e !== !1 && g.defaultSmoothOrigin !== !1 ? (i = k - t, j = l - u, v.xOffset += i * w[0] + j * w[2] - i, v.yOffset += i * w[1] + j * w[3] - j) : v.xOffset = v.yOffset = 0), f || a.setAttribute("data-svg-origin", h.join(" "))
                      },
                      Oa = function (a) {
                          var b, c = Q("svg", this.ownerSVGElement && this.ownerSVGElement.getAttribute("xmlns") || "http://www.w3.org/2000/svg"),
                              d = this.parentNode,
                              e = this.nextSibling,
                              f = this.style.cssText;
                          if (La.appendChild(c), c.appendChild(this), this.style.display = "block", a) try {
                              b = this.getBBox(), this._originalGetBBox = this.getBBox, this.getBBox = Oa
                          } catch (g) {} else this._originalGetBBox && (b = this._originalGetBBox());
                          return e ? d.insertBefore(this, e) : d.appendChild(this), La.removeChild(c), this.style.cssText = f, b
                      },
                      Pa = function (a) {
                          try {
                              return a.getBBox()
                          } catch (b) {
                              return Oa.call(a, !0)
                          }
                      },
                      Qa = function (a) {
                          return !(!Ja || !a.getCTM || a.parentNode && !a.ownerSVGElement || !Pa(a))
                      },
                      Ra = [1, 0, 0, 1, 0, 0],
                      Sa = function (a, b) {
                          var c, d, e, f, g, h, i, j = a._gsTransform || new Ia,
                              k = 1e5,
                              l = a.style;
                          if (Ea ? d = ba(a, Fa, null, !0) : a.currentStyle && (d = a.currentStyle.filter.match(H), d = d && 4 === d.length ? [d[0].substr(4), Number(d[2].substr(4)), Number(d[1].substr(4)), d[3].substr(4), j.x || 0, j.y || 0].join(",") : ""), c = !d || "none" === d || "matrix(1, 0, 0, 1, 0, 0)" === d, Ea && c && !a.offsetParent && a !== La && (f = l.display, l.display = "block", i = a.parentNode, i && a.offsetParent || (g = 1, h = a.nextSibling, La.appendChild(a)), d = ba(a, Fa, null, !0), c = !d || "none" === d || "matrix(1, 0, 0, 1, 0, 0)" === d, f ? l.display = f : Xa(l, "display"), g && (h ? i.insertBefore(a, h) : i ? i.appendChild(a) : La.removeChild(a))), (j.svg || a.getCTM && Qa(a)) && (c && -1 !== (l[Ea] + "").indexOf("matrix") && (d = l[Ea], c = 0), e = a.getAttribute("transform"), c && e && (e = a.transform.baseVal.consolidate().matrix, d = "matrix(" + e.a + "," + e.b + "," + e.c + "," + e.d + "," + e.e + "," + e.f + ")", c = 0)), c) return Ra;
                          for (e = (d || "").match(s) || [], ya = e.length; --ya > -1;) f = Number(e[ya]), e[ya] = (g = f - (f |= 0)) ? (g * k + (0 > g ? -.5 : .5) | 0) / k + f : f;
                          return b && e.length > 6 ? [e[0], e[1], e[4], e[5], e[12], e[13]] : e
                      },
                      Ta = T.getTransform = function (a, c, d, e) {
                          if (a._gsTransform && d && !e) return a._gsTransform;
                          var f, h, i, j, k, l, m = d ? a._gsTransform || new Ia : new Ia,
                              n = m.scaleX < 0,
                              o = 2e-5,
                              p = 1e5,
                              q = Ha ? parseFloat(ba(a, Ga, c, !1, "0 0 0").split(" ")[2]) || m.zOrigin || 0 : 0,
                              r = parseFloat(g.defaultTransformPerspective) || 0;
                          if (m.svg = !(!a.getCTM || !Qa(a)), m.svg && (Na(a, ba(a, Ga, c, !1, "50% 50%") + "", m, a.getAttribute("data-svg-origin")), Ca = g.useSVGTransformAttr || Ma), f = Sa(a), f !== Ra) {
                              if (16 === f.length) {
                                  var s, t, u, v, w, x = f[0],
                                      y = f[1],
                                      z = f[2],
                                      A = f[3],
                                      B = f[4],
                                      C = f[5],
                                      D = f[6],
                                      E = f[7],
                                      F = f[8],
                                      G = f[9],
                                      H = f[10],
                                      I = f[12],
                                      J = f[13],
                                      K = f[14],
                                      L = f[11],
                                      N = Math.atan2(D, H);
                                  m.zOrigin && (K = -m.zOrigin, I = F * K - f[12], J = G * K - f[13], K = H * K + m.zOrigin - f[14]), m.rotationX = N * M, N && (v = Math.cos(-N), w = Math.sin(-N), s = B * v + F * w, t = C * v + G * w, u = D * v + H * w, F = B * -w + F * v, G = C * -w + G * v, H = D * -w + H * v, L = E * -w + L * v, B = s, C = t, D = u), N = Math.atan2(-z, H), m.rotationY = N * M, N && (v = Math.cos(-N), w = Math.sin(-N), s = x * v - F * w, t = y * v - G * w, u = z * v - H * w, G = y * w + G * v, H = z * w + H * v, L = A * w + L * v, x = s, y = t, z = u), N = Math.atan2(y, x), m.rotation = N * M, N && (v = Math.cos(N), w = Math.sin(N), s = x * v + y * w, t = B * v + C * w, u = F * v + G * w, y = y * v - x * w, C = C * v - B * w, G = G * v - F * w, x = s, B = t, F = u), m.rotationX && Math.abs(m.rotationX) + Math.abs(m.rotation) > 359.9 && (m.rotationX = m.rotation = 0, m.rotationY = 180 - m.rotationY), N = Math.atan2(B, C), m.scaleX = (Math.sqrt(x * x + y * y + z * z) * p + .5 | 0) / p, m.scaleY = (Math.sqrt(C * C + D * D) * p + .5 | 0) / p, m.scaleZ = (Math.sqrt(F * F + G * G + H * H) * p + .5 | 0) / p, x /= m.scaleX, B /= m.scaleY, y /= m.scaleX, C /= m.scaleY, Math.abs(N) > o ? (m.skewX = N * M, B = 0, "simple" !== m.skewType && (m.scaleY *= 1 / Math.cos(N))) : m.skewX = 0, m.perspective = L ? 1 / (0 > L ? -L : L) : 0, m.x = I, m.y = J, m.z = K, m.svg && (m.x -= m.xOrigin - (m.xOrigin * x - m.yOrigin * B), m.y -= m.yOrigin - (m.yOrigin * y - m.xOrigin * C))
                              } else if (!Ha || e || !f.length || m.x !== f[4] || m.y !== f[5] || !m.rotationX && !m.rotationY) {
                                  var O = f.length >= 6,
                                      P = O ? f[0] : 1,
                                      Q = f[1] || 0,
                                      R = f[2] || 0,
                                      S = O ? f[3] : 1;
                                  m.x = f[4] || 0, m.y = f[5] || 0, i = Math.sqrt(P * P + Q * Q), j = Math.sqrt(S * S + R * R), k = P || Q ? Math.atan2(Q, P) * M : m.rotation || 0, l = R || S ? Math.atan2(R, S) * M + k : m.skewX || 0, m.scaleX = i, m.scaleY = j, m.rotation = k, m.skewX = l, Ha && (m.rotationX = m.rotationY = m.z = 0, m.perspective = r, m.scaleZ = 1), m.svg && (m.x -= m.xOrigin - (m.xOrigin * P + m.yOrigin * R), m.y -= m.yOrigin - (m.xOrigin * Q + m.yOrigin * S))
                              }
                              Math.abs(m.skewX) > 90 && Math.abs(m.skewX) < 270 && (n ? (m.scaleX *= -1, m.skewX += m.rotation <= 0 ? 180 : -180, m.rotation += m.rotation <= 0 ? 180 : -180) : (m.scaleY *= -1, m.skewX += m.skewX <= 0 ? 180 : -180)), m.zOrigin = q;
                              for (h in m) m[h] < o && m[h] > -o && (m[h] = 0)
                          }
                          return d && (a._gsTransform = m, m.svg && (Ca && a.style[Ea] ? b.delayedCall(.001, function () {
                              Xa(a.style, Ea)
                          }) : !Ca && a.getAttribute("transform") && b.delayedCall(.001, function () {
                              a.removeAttribute("transform")
                          }))), m
                      },
                      Ua = function (a) {
                          var b, c, d = this.data,
                              e = -d.rotation * L,
                              f = e + d.skewX * L,
                              g = 1e5,
                              h = (Math.cos(e) * d.scaleX * g | 0) / g,
                              i = (Math.sin(e) * d.scaleX * g | 0) / g,
                              j = (Math.sin(f) * -d.scaleY * g | 0) / g,
                              k = (Math.cos(f) * d.scaleY * g | 0) / g,
                              l = this.t.style,
                              m = this.t.currentStyle;
                          if (m) {
                              c = i, i = -j, j = -c, b = m.filter, l.filter = "";
                              var n, o, q = this.t.offsetWidth,
                                  r = this.t.offsetHeight,
                                  s = "absolute" !== m.position,
                                  t = "progid:DXImageTransform.Microsoft.Matrix(M11=" + h + ", M12=" + i + ", M21=" + j + ", M22=" + k,
                                  u = d.x + q * d.xPercent / 100,
                                  v = d.y + r * d.yPercent / 100;
                              if (null != d.ox && (n = (d.oxp ? q * d.ox * .01 : d.ox) - q / 2, o = (d.oyp ? r * d.oy * .01 : d.oy) - r / 2, u += n - (n * h + o * i), v += o - (n * j + o * k)), s ? (n = q / 2, o = r / 2, t += ", Dx=" + (n - (n * h + o * i) + u) + ", Dy=" + (o - (n * j + o * k) + v) + ")") : t += ", sizingMethod='auto expand')", -1 !== b.indexOf("DXImageTransform.Microsoft.Matrix(") ? l.filter = b.replace(I, t) : l.filter = t + " " + b, (0 === a || 1 === a) && 1 === h && 0 === i && 0 === j && 1 === k && (s && -1 === t.indexOf("Dx=0, Dy=0") || y.test(b) && 100 !== parseFloat(RegExp.$1) || -1 === b.indexOf(b.indexOf("Alpha")) && l.removeAttribute("filter")), !s) {
                                  var w, z, A, B = 8 > p ? 1 : -1;
                                  for (n = d.ieOffsetX || 0, o = d.ieOffsetY || 0, d.ieOffsetX = Math.round((q - ((0 > h ? -h : h) * q + (0 > i ? -i : i) * r)) / 2 + u), d.ieOffsetY = Math.round((r - ((0 > k ? -k : k) * r + (0 > j ? -j : j) * q)) / 2 + v), ya = 0; 4 > ya; ya++) z = ha[ya], w = m[z], c = -1 !== w.indexOf("px") ? parseFloat(w) : ca(this.t, z, parseFloat(w), w.replace(x, "")) || 0, A = c !== d[z] ? 2 > ya ? -d.ieOffsetX : -d.ieOffsetY : 2 > ya ? n - d.ieOffsetX : o - d.ieOffsetY, l[z] = (d[z] = Math.round(c - A * (0 === ya || 2 === ya ? 1 : B))) + "px"
                              }
                          }
                      },
                      Va = T.set3DTransformRatio = T.setTransformRatio = function (a) {
                          var b, c, d, e, f, g, h, i, j, k, l, m, o, p, q, r, s, t, u, v, w, x, y, z = this.data,
                              A = this.t.style,
                              B = z.rotation,
                              C = z.rotationX,
                              D = z.rotationY,
                              E = z.scaleX,
                              F = z.scaleY,
                              G = z.scaleZ,
                              H = z.x,
                              I = z.y,
                              J = z.z,
                              K = z.svg,
                              M = z.perspective,
                              N = z.force3D,
                              O = z.skewY,
                              P = z.skewX;
                          if (O && (P += O, B += O), ((1 === a || 0 === a) && "auto" === N && (this.tween._totalTime === this.tween._totalDuration || !this.tween._totalTime) || !N) && !J && !M && !D && !C && 1 === G || Ca && K || !Ha) return void(B || P || K ? (B *= L, x = P * L, y = 1e5, c = Math.cos(B) * E, f = Math.sin(B) * E, d = Math.sin(B - x) * -F, g = Math.cos(B - x) * F, x && "simple" === z.skewType && (b = Math.tan(x - O * L), b = Math.sqrt(1 + b * b), d *= b, g *= b, O && (b = Math.tan(O * L), b = Math.sqrt(1 + b * b), c *= b, f *= b)), K && (H += z.xOrigin - (z.xOrigin * c + z.yOrigin * d) + z.xOffset, I += z.yOrigin - (z.xOrigin * f + z.yOrigin * g) + z.yOffset, Ca && (z.xPercent || z.yPercent) && (q = this.t.getBBox(), H += .01 * z.xPercent * q.width, I += .01 * z.yPercent * q.height), q = 1e-6, q > H && H > -q && (H = 0), q > I && I > -q && (I = 0)), u = (c * y | 0) / y + "," + (f * y | 0) / y + "," + (d * y | 0) / y + "," + (g * y | 0) / y + "," + H + "," + I + ")", K && Ca ? this.t.setAttribute("transform", "matrix(" + u) : A[Ea] = (z.xPercent || z.yPercent ? "translate(" + z.xPercent + "%," + z.yPercent + "%) matrix(" : "matrix(") + u) : A[Ea] = (z.xPercent || z.yPercent ? "translate(" + z.xPercent + "%," + z.yPercent + "%) matrix(" : "matrix(") + E + ",0,0," + F + "," + H + "," + I + ")");
                          if (n && (q = 1e-4, q > E && E > -q && (E = G = 2e-5), q > F && F > -q && (F = G = 2e-5), !M || z.z || z.rotationX || z.rotationY || (M = 0)), B || P) B *= L, r = c = Math.cos(B), s = f = Math.sin(B), P && (B -= P * L, r = Math.cos(B), s = Math.sin(B), "simple" === z.skewType && (b = Math.tan((P - O) * L), b = Math.sqrt(1 + b * b), r *= b, s *= b, z.skewY && (b = Math.tan(O * L), b = Math.sqrt(1 + b * b), c *= b, f *= b))), d = -s, g = r;
                          else {
                              if (!(D || C || 1 !== G || M || K)) return void(A[Ea] = (z.xPercent || z.yPercent ? "translate(" + z.xPercent + "%," + z.yPercent + "%) translate3d(" : "translate3d(") + H + "px," + I + "px," + J + "px)" + (1 !== E || 1 !== F ? " scale(" + E + "," + F + ")" : ""));
                              c = g = 1, d = f = 0
                          }
                          k = 1, e = h = i = j = l = m = 0, o = M ? -1 / M : 0, p = z.zOrigin, q = 1e-6, v = ",", w = "0", B = D * L, B && (r = Math.cos(B), s = Math.sin(B), i = -s, l = o * -s, e = c * s, h = f * s, k = r, o *= r, c *= r, f *= r), B = C * L, B && (r = Math.cos(B), s = Math.sin(B), b = d * r + e * s, t = g * r + h * s, j = k * s, m = o * s, e = d * -s + e * r, h = g * -s + h * r, k *= r, o *= r, d = b, g = t), 1 !== G && (e *= G, h *= G, k *= G, o *= G), 1 !== F && (d *= F, g *= F, j *= F, m *= F), 1 !== E && (c *= E, f *= E, i *= E, l *= E), (p || K) && (p && (H += e * -p, I += h * -p, J += k * -p + p), K && (H += z.xOrigin - (z.xOrigin * c + z.yOrigin * d) + z.xOffset, I += z.yOrigin - (z.xOrigin * f + z.yOrigin * g) + z.yOffset), q > H && H > -q && (H = w), q > I && I > -q && (I = w), q > J && J > -q && (J = 0)), u = z.xPercent || z.yPercent ? "translate(" + z.xPercent + "%," + z.yPercent + "%) matrix3d(" : "matrix3d(", u += (q > c && c > -q ? w : c) + v + (q > f && f > -q ? w : f) + v + (q > i && i > -q ? w : i), u += v + (q > l && l > -q ? w : l) + v + (q > d && d > -q ? w : d) + v + (q > g && g > -q ? w : g),
                              C || D || 1 !== G ? (u += v + (q > j && j > -q ? w : j) + v + (q > m && m > -q ? w : m) + v + (q > e && e > -q ? w : e), u += v + (q > h && h > -q ? w : h) + v + (q > k && k > -q ? w : k) + v + (q > o && o > -q ? w : o) + v) : u += ",0,0,0,0,1,0,", u += H + v + I + v + J + v + (M ? 1 + -J / M : 1) + ")", A[Ea] = u
                      };
                  j = Ia.prototype, j.x = j.y = j.z = j.skewX = j.skewY = j.rotation = j.rotationX = j.rotationY = j.zOrigin = j.xPercent = j.yPercent = j.xOffset = j.yOffset = 0, j.scaleX = j.scaleY = j.scaleZ = 1, Aa("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,svgOrigin,transformPerspective,directionalRotation,parseTransform,force3D,skewType,xPercent,yPercent,smoothOrigin", {
                      parser: function (a, b, c, d, f, h, i) {
                          if (d._lastParsedTransform === i) return f;
                          d._lastParsedTransform = i;
                          var j = i.scale && "function" == typeof i.scale ? i.scale : 0;
                          j && (i.scale = j(r, a));
                          var k, l, m, n, o, p, s, t, u, v = a._gsTransform,
                              w = a.style,
                              x = 1e-6,
                              y = Da.length,
                              z = i,
                              A = {},
                              B = "transformOrigin",
                              C = Ta(a, e, !0, z.parseTransform),
                              D = z.transform && ("function" == typeof z.transform ? z.transform(r, q) : z.transform);
                          if (C.skewType = z.skewType || C.skewType || g.defaultSkewType, d._transform = C, "rotationZ" in z && (z.rotation = z.rotationZ), D && "string" == typeof D && Ea) l = R.style, l[Ea] = D, l.display = "block", l.position = "absolute", -1 !== D.indexOf("%") && (l.width = ba(a, "width"), l.height = ba(a, "height")), P.body.appendChild(R), k = Ta(R, null, !1), "simple" === C.skewType && (k.scaleY *= Math.cos(k.skewX * L)), C.svg && (p = C.xOrigin, s = C.yOrigin, k.x -= C.xOffset, k.y -= C.yOffset, (z.transformOrigin || z.svgOrigin) && (D = {}, Na(a, ja(z.transformOrigin), D, z.svgOrigin, z.smoothOrigin, !0), p = D.xOrigin, s = D.yOrigin, k.x -= D.xOffset - C.xOffset, k.y -= D.yOffset - C.yOffset), (p || s) && (t = Sa(R, !0), k.x -= p - (p * t[0] + s * t[2]), k.y -= s - (p * t[1] + s * t[3]))), P.body.removeChild(R), k.perspective || (k.perspective = C.perspective), null != z.xPercent && (k.xPercent = la(z.xPercent, C.xPercent)), null != z.yPercent && (k.yPercent = la(z.yPercent, C.yPercent));
                          else if ("object" == typeof z) {
                              if (k = {
                                      scaleX: la(null != z.scaleX ? z.scaleX : z.scale, C.scaleX),
                                      scaleY: la(null != z.scaleY ? z.scaleY : z.scale, C.scaleY),
                                      scaleZ: la(z.scaleZ, C.scaleZ),
                                      x: la(z.x, C.x),
                                      y: la(z.y, C.y),
                                      z: la(z.z, C.z),
                                      xPercent: la(z.xPercent, C.xPercent),
                                      yPercent: la(z.yPercent, C.yPercent),
                                      perspective: la(z.transformPerspective, C.perspective)
                                  }, o = z.directionalRotation, null != o)
                                  if ("object" == typeof o)
                                      for (l in o) z[l] = o[l];
                                  else z.rotation = o;
                              "string" == typeof z.x && -1 !== z.x.indexOf("%") && (k.x = 0, k.xPercent = la(z.x, C.xPercent)), "string" == typeof z.y && -1 !== z.y.indexOf("%") && (k.y = 0, k.yPercent = la(z.y, C.yPercent)), k.rotation = ma("rotation" in z ? z.rotation : "shortRotation" in z ? z.shortRotation + "_short" : C.rotation, C.rotation, "rotation", A), Ha && (k.rotationX = ma("rotationX" in z ? z.rotationX : "shortRotationX" in z ? z.shortRotationX + "_short" : C.rotationX || 0, C.rotationX, "rotationX", A), k.rotationY = ma("rotationY" in z ? z.rotationY : "shortRotationY" in z ? z.shortRotationY + "_short" : C.rotationY || 0, C.rotationY, "rotationY", A)), k.skewX = ma(z.skewX, C.skewX), k.skewY = ma(z.skewY, C.skewY)
                          }
                          for (Ha && null != z.force3D && (C.force3D = z.force3D, n = !0), m = C.force3D || C.z || C.rotationX || C.rotationY || k.z || k.rotationX || k.rotationY || k.perspective, m || null == z.scale || (k.scaleZ = 1); --y > -1;) u = Da[y], D = k[u] - C[u], (D > x || -x > D || null != z[u] || null != N[u]) && (n = !0, f = new va(C, u, C[u], D, f), u in A && (f.e = A[u]), f.xs0 = 0, f.plugin = h, d._overwriteProps.push(f.n));
                          return D = "function" == typeof z.transformOrigin ? z.transformOrigin(r, q) : z.transformOrigin, C.svg && (D || z.svgOrigin) && (p = C.xOffset, s = C.yOffset, Na(a, ja(D), k, z.svgOrigin, z.smoothOrigin), f = wa(C, "xOrigin", (v ? C : k).xOrigin, k.xOrigin, f, B), f = wa(C, "yOrigin", (v ? C : k).yOrigin, k.yOrigin, f, B), (p !== C.xOffset || s !== C.yOffset) && (f = wa(C, "xOffset", v ? p : C.xOffset, C.xOffset, f, B), f = wa(C, "yOffset", v ? s : C.yOffset, C.yOffset, f, B)), D = "0px 0px"), (D || Ha && m && C.zOrigin) && (Ea ? (n = !0, u = Ga, D || (D = (ba(a, u, e, !1, "50% 50%") + "").split(" "), D = D[0] + " " + D[1] + " " + C.zOrigin + "px"), D += "", f = new va(w, u, 0, 0, f, -1, B), f.b = w[u], f.plugin = h, Ha ? (l = C.zOrigin, D = D.split(" "), C.zOrigin = (D.length > 2 ? parseFloat(D[2]) : l) || 0, f.xs0 = f.e = D[0] + " " + (D[1] || "50%") + " 0px", f = new va(C, "zOrigin", 0, 0, f, -1, f.n), f.b = l, f.xs0 = f.e = C.zOrigin) : f.xs0 = f.e = D) : ja(D + "", C)), n && (d._transformType = C.svg && Ca || !m && 3 !== this._transformType ? 2 : 3), j && (i.scale = j), f
                      },
                      allowFunc: !0,
                      prefix: !0
                  }), Aa("boxShadow", {
                      defaultValue: "0px 0px 0px 0px #999",
                      prefix: !0,
                      color: !0,
                      multi: !0,
                      keyword: "inset"
                  }), Aa("clipPath", {
                      defaultValue: "inset(0%)",
                      prefix: !0,
                      multi: !0,
                      formatter: sa("inset(0% 0% 0% 0%)", !1, !0)
                  }), Aa("borderRadius", {
                      defaultValue: "0px",
                      parser: function (a, b, c, f, g, h) {
                          b = this.format(b);
                          var i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y = ["borderTopLeftRadius", "borderTopRightRadius", "borderBottomRightRadius", "borderBottomLeftRadius"],
                              z = a.style;
                          for (q = parseFloat(a.offsetWidth), r = parseFloat(a.offsetHeight), i = b.split(" "), j = 0; j < y.length; j++) this.p.indexOf("border") && (y[j] = $(y[j])), m = l = ba(a, y[j], e, !1, "0px"), -1 !== m.indexOf(" ") && (l = m.split(" "), m = l[0], l = l[1]), n = k = i[j], o = parseFloat(m), t = m.substr((o + "").length), u = "=" === n.charAt(1), u ? (p = parseInt(n.charAt(0) + "1", 10), n = n.substr(2), p *= parseFloat(n), s = n.substr((p + "").length - (0 > p ? 1 : 0)) || "") : (p = parseFloat(n), s = n.substr((p + "").length)), "" === s && (s = d[c] || t), s !== t && (v = ca(a, "borderLeft", o, t), w = ca(a, "borderTop", o, t), "%" === s ? (m = v / q * 100 + "%", l = w / r * 100 + "%") : "em" === s ? (x = ca(a, "borderLeft", 1, "em"), m = v / x + "em", l = w / x + "em") : (m = v + "px", l = w + "px"), u && (n = parseFloat(m) + p + s, k = parseFloat(l) + p + s)), g = xa(z, y[j], m + " " + l, n + " " + k, !1, "0px", g);
                          return g
                      },
                      prefix: !0,
                      formatter: sa("0px 0px 0px 0px", !1, !0)
                  }), Aa("borderBottomLeftRadius,borderBottomRightRadius,borderTopLeftRadius,borderTopRightRadius", {
                      defaultValue: "0px",
                      parser: function (a, b, c, d, f, g) {
                          return xa(a.style, c, this.format(ba(a, c, e, !1, "0px 0px")), this.format(b), !1, "0px", f)
                      },
                      prefix: !0,
                      formatter: sa("0px 0px", !1, !0)
                  }), Aa("backgroundPosition", {
                      defaultValue: "0 0",
                      parser: function (a, b, c, d, f, g) {
                          var h, i, j, k, l, m, n = "background-position",
                              o = e || aa(a, null),
                              q = this.format((o ? p ? o.getPropertyValue(n + "-x") + " " + o.getPropertyValue(n + "-y") : o.getPropertyValue(n) : a.currentStyle.backgroundPositionX + " " + a.currentStyle.backgroundPositionY) || "0 0"),
                              r = this.format(b);
                          if (-1 !== q.indexOf("%") != (-1 !== r.indexOf("%")) && r.split(",").length < 2 && (m = ba(a, "backgroundImage").replace(E, ""), m && "none" !== m)) {
                              for (h = q.split(" "), i = r.split(" "), S.setAttribute("src", m), j = 2; --j > -1;) q = h[j], k = -1 !== q.indexOf("%"), k !== (-1 !== i[j].indexOf("%")) && (l = 0 === j ? a.offsetWidth - S.width : a.offsetHeight - S.height, h[j] = k ? parseFloat(q) / 100 * l + "px" : parseFloat(q) / l * 100 + "%");
                              q = h.join(" ")
                          }
                          return this.parseComplex(a.style, q, r, f, g)
                      },
                      formatter: ja
                  }), Aa("backgroundSize", {
                      defaultValue: "0 0",
                      formatter: function (a) {
                          return a += "", "co" === a.substr(0, 2) ? a : ja(-1 === a.indexOf(" ") ? a + " " + a : a)
                      }
                  }), Aa("perspective", {
                      defaultValue: "0px",
                      prefix: !0
                  }), Aa("perspectiveOrigin", {
                      defaultValue: "50% 50%",
                      prefix: !0
                  }), Aa("transformStyle", {
                      prefix: !0
                  }), Aa("backfaceVisibility", {
                      prefix: !0
                  }), Aa("userSelect", {
                      prefix: !0
                  }), Aa("margin", {
                      parser: ta("marginTop,marginRight,marginBottom,marginLeft")
                  }), Aa("padding", {
                      parser: ta("paddingTop,paddingRight,paddingBottom,paddingLeft")
                  }), Aa("clip", {
                      defaultValue: "rect(0px,0px,0px,0px)",
                      parser: function (a, b, c, d, f, g) {
                          var h, i, j;
                          return 9 > p ? (i = a.currentStyle, j = 8 > p ? " " : ",", h = "rect(" + i.clipTop + j + i.clipRight + j + i.clipBottom + j + i.clipLeft + ")", b = this.format(b).split(",").join(j)) : (h = this.format(ba(a, this.p, e, !1, this.dflt)), b = this.format(b)), this.parseComplex(a.style, h, b, f, g)
                      }
                  }), Aa("textShadow", {
                      defaultValue: "0px 0px 0px #999",
                      color: !0,
                      multi: !0
                  }), Aa("autoRound,strictUnits", {
                      parser: function (a, b, c, d, e) {
                          return e
                      }
                  }), Aa("border", {
                      defaultValue: "0px solid #000",
                      parser: function (a, b, c, d, f, g) {
                          var h = ba(a, "borderTopWidth", e, !1, "0px"),
                              i = this.format(b).split(" "),
                              j = i[0].replace(x, "");
                          return "px" !== j && (h = parseFloat(h) / ca(a, "borderTopWidth", 1, j) + j), this.parseComplex(a.style, this.format(h + " " + ba(a, "borderTopStyle", e, !1, "solid") + " " + ba(a, "borderTopColor", e, !1, "#000")), i.join(" "), f, g)
                      },
                      color: !0,
                      formatter: function (a) {
                          var b = a.split(" ");
                          return b[0] + " " + (b[1] || "solid") + " " + (a.match(ra) || ["#000"])[0]
                      }
                  }), Aa("borderWidth", {
                      parser: ta("borderTopWidth,borderRightWidth,borderBottomWidth,borderLeftWidth")
                  }), Aa("float,cssFloat,styleFloat", {
                      parser: function (a, b, c, d, e, f) {
                          var g = a.style,
                              h = "cssFloat" in g ? "cssFloat" : "styleFloat";
                          return new va(g, h, 0, 0, e, -1, c, !1, 0, g[h], b)
                      }
                  });
                  var Wa = function (a) {
                      var b, c = this.t,
                          d = c.filter || ba(this.data, "filter") || "",
                          e = this.s + this.c * a | 0;
                      100 === e && (-1 === d.indexOf("atrix(") && -1 === d.indexOf("radient(") && -1 === d.indexOf("oader(") ? (c.removeAttribute("filter"), b = !ba(this.data, "filter")) : (c.filter = d.replace(A, ""), b = !0)), b || (this.xn1 && (c.filter = d = d || "alpha(opacity=" + e + ")"), -1 === d.indexOf("pacity") ? 0 === e && this.xn1 || (c.filter = d + " alpha(opacity=" + e + ")") : c.filter = d.replace(y, "opacity=" + e))
                  };
                  Aa("opacity,alpha,autoAlpha", {
                      defaultValue: "1",
                      parser: function (a, b, c, d, f, g) {
                          var h = parseFloat(ba(a, "opacity", e, !1, "1")),
                              i = a.style,
                              j = "autoAlpha" === c;
                          return "string" == typeof b && "=" === b.charAt(1) && (b = ("-" === b.charAt(0) ? -1 : 1) * parseFloat(b.substr(2)) + h), j && 1 === h && "hidden" === ba(a, "visibility", e) && 0 !== b && (h = 0), V ? f = new va(i, "opacity", h, b - h, f) : (f = new va(i, "opacity", 100 * h, 100 * (b - h), f), f.xn1 = j ? 1 : 0, i.zoom = 1, f.type = 2, f.b = "alpha(opacity=" + f.s + ")", f.e = "alpha(opacity=" + (f.s + f.c) + ")", f.data = a, f.plugin = g, f.setRatio = Wa), j && (f = new va(i, "visibility", 0, 0, f, -1, null, !1, 0, 0 !== h ? "inherit" : "hidden", 0 === b ? "hidden" : "inherit"), f.xs0 = "inherit", d._overwriteProps.push(f.n), d._overwriteProps.push(c)), f
                      }
                  });
                  var Xa = function (a, b) {
                          b && (a.removeProperty ? (("ms" === b.substr(0, 2) || "webkit" === b.substr(0, 6)) && (b = "-" + b), a.removeProperty(b.replace(C, "-$1").toLowerCase())) : a.removeAttribute(b))
                      },
                      Ya = function (a) {
                          if (this.t._gsClassPT = this, 1 === a || 0 === a) {
                              this.t.setAttribute("class", 0 === a ? this.b : this.e);
                              for (var b = this.data, c = this.t.style; b;) b.v ? c[b.p] = b.v : Xa(c, b.p), b = b._next;
                              1 === a && this.t._gsClassPT === this && (this.t._gsClassPT = null)
                          } else this.t.getAttribute("class") !== this.e && this.t.setAttribute("class", this.e)
                      };
                  Aa("className", {
                      parser: function (a, b, d, f, g, h, i) {
                          var j, k, l, m, n, o = a.getAttribute("class") || "",
                              p = a.style.cssText;
                          if (g = f._classNamePT = new va(a, d, 0, 0, g, 2), g.setRatio = Ya, g.pr = -11, c = !0, g.b = o, k = ea(a, e), l = a._gsClassPT) {
                              for (m = {}, n = l.data; n;) m[n.p] = 1, n = n._next;
                              l.setRatio(1)
                          }
                          return a._gsClassPT = g, g.e = "=" !== b.charAt(1) ? b : o.replace(new RegExp("(?:\\s|^)" + b.substr(2) + "(?![\\w-])"), "") + ("+" === b.charAt(0) ? " " + b.substr(2) : ""), a.setAttribute("class", g.e), j = fa(a, k, ea(a), i, m), a.setAttribute("class", o), g.data = j.firstMPT, a.style.cssText !== p && (a.style.cssText = p), g = g.xfirst = f.parse(a, j.difs, g, h)
                      }
                  });
                  var Za = function (a) {
                      if ((1 === a || 0 === a) && this.data._totalTime === this.data._totalDuration && "isFromStart" !== this.data.data) {
                          var b, c, d, e, f, g = this.t.style,
                              h = i.transform.parse;
                          if ("all" === this.e) g.cssText = "", e = !0;
                          else
                              for (b = this.e.split(" ").join("").split(","), d = b.length; --d > -1;) c = b[d], i[c] && (i[c].parse === h ? e = !0 : c = "transformOrigin" === c ? Ga : i[c].p), Xa(g, c);
                          e && (Xa(g, Ea), f = this.t._gsTransform, f && (f.svg && (this.t.removeAttribute("data-svg-origin"), this.t.removeAttribute("transform")), delete this.t._gsTransform))
                      }
                  };
                  for (Aa("clearProps", {
                          parser: function (a, b, d, e, f) {
                              return f = new va(a, d, 0, 0, f, 2), f.setRatio = Za, f.e = b, f.pr = -10, f.data = e._tween, c = !0, f
                          }
                      }), j = "bezier,throwProps,physicsProps,physics2D".split(","), ya = j.length; ya--;) Ba(j[ya]);
                  j = g.prototype, j._firstPT = j._lastParsedTransform = j._transform = null, j._onInitTween = function (a, b, h, j) {
                      if (!a.nodeType) return !1;
                      this._target = q = a, this._tween = h, this._vars = b, r = j, k = b.autoRound, c = !1, d = b.suffixMap || g.suffixMap, e = aa(a, ""), f = this._overwriteProps;
                      var n, p, s, t, u, v, w, x, y, A = a.style;
                      if (l && "" === A.zIndex && (n = ba(a, "zIndex", e), ("auto" === n || "" === n) && this._addLazySet(A, "zIndex", 0)), "string" == typeof b && (t = A.cssText, n = ea(a, e), A.cssText = t + ";" + b, n = fa(a, n, ea(a)).difs, !V && z.test(b) && (n.opacity = parseFloat(RegExp.$1)), b = n, A.cssText = t), b.className ? this._firstPT = p = i.className.parse(a, b.className, "className", this, null, null, b) : this._firstPT = p = this.parse(a, b, null), this._transformType) {
                          for (y = 3 === this._transformType, Ea ? m && (l = !0, "" === A.zIndex && (w = ba(a, "zIndex", e), ("auto" === w || "" === w) && this._addLazySet(A, "zIndex", 0)), o && this._addLazySet(A, "WebkitBackfaceVisibility", this._vars.WebkitBackfaceVisibility || (y ? "visible" : "hidden"))) : A.zoom = 1, s = p; s && s._next;) s = s._next;
                          x = new va(a, "transform", 0, 0, null, 2), this._linkCSSP(x, null, s), x.setRatio = Ea ? Va : Ua, x.data = this._transform || Ta(a, e, !0), x.tween = h, x.pr = -1, f.pop()
                      }
                      if (c) {
                          for (; p;) {
                              for (v = p._next, s = t; s && s.pr > p.pr;) s = s._next;
                              (p._prev = s ? s._prev : u) ? p._prev._next = p: t = p, (p._next = s) ? s._prev = p : u = p, p = v
                          }
                          this._firstPT = t
                      }
                      return !0
                  }, j.parse = function (a, b, c, f) {
                      var g, h, j, l, m, n, o, p, s, t, u = a.style;
                      for (g in b) {
                          if (n = b[g], h = i[g], "function" != typeof n || h && h.allowFunc || (n = n(r, q)), h) c = h.parse(a, n, g, this, c, f, b);
                          else {
                              if ("--" === g.substr(0, 2)) {
                                  this._tween._propLookup[g] = this._addTween.call(this._tween, a.style, "setProperty", aa(a).getPropertyValue(g) + "", n + "", g, !1, g);
                                  continue
                              }
                              m = ba(a, g, e) + "", s = "string" == typeof n, "color" === g || "fill" === g || "stroke" === g || -1 !== g.indexOf("Color") || s && B.test(n) ? (s || (n = pa(n), n = (n.length > 3 ? "rgba(" : "rgb(") + n.join(",") + ")"), c = xa(u, g, m, n, !0, "transparent", c, 0, f)) : s && K.test(n) ? c = xa(u, g, m, n, !0, null, c, 0, f) : (j = parseFloat(m), o = j || 0 === j ? m.substr((j + "").length) : "", ("" === m || "auto" === m) && ("width" === g || "height" === g ? (j = ia(a, g, e), o = "px") : "left" === g || "top" === g ? (j = da(a, g, e), o = "px") : (j = "opacity" !== g ? 0 : 1, o = "")), t = s && "=" === n.charAt(1), t ? (l = parseInt(n.charAt(0) + "1", 10), n = n.substr(2), l *= parseFloat(n), p = n.replace(x, "")) : (l = parseFloat(n), p = s ? n.replace(x, "") : ""), "" === p && (p = g in d ? d[g] : o), n = l || 0 === l ? (t ? l + j : l) + p : b[g], o !== p && ("" !== p || "lineHeight" === g) && (l || 0 === l) && j && (j = ca(a, g, j, o), "%" === p ? (j /= ca(a, g, 100, "%") / 100, b.strictUnits !== !0 && (m = j + "%")) : "em" === p || "rem" === p || "vw" === p || "vh" === p ? j /= ca(a, g, 1, p) : "px" !== p && (l = ca(a, g, l, p), p = "px"), t && (l || 0 === l) && (n = l + j + p)), t && (l += j), !j && 0 !== j || !l && 0 !== l ? void 0 !== u[g] && (n || n + "" != "NaN" && null != n) ? (c = new va(u, g, l || j || 0, 0, c, -1, g, !1, 0, m, n), c.xs0 = "none" !== n || "display" !== g && -1 === g.indexOf("Style") ? n : m) : X("invalid " + g + " tween value: " + b[g]) : (c = new va(u, g, j, l - j, c, 0, g, k !== !1 && ("px" === p || "zIndex" === g), 0, m, n), c.xs0 = p))
                          }
                          f && c && !c.plugin && (c.plugin = f)
                      }
                      return c
                  }, j.setRatio = function (a) {
                      var b, c, d, e = this._firstPT,
                          f = 1e-6;
                      if (1 !== a || this._tween._time !== this._tween._duration && 0 !== this._tween._time)
                          if (a || this._tween._time !== this._tween._duration && 0 !== this._tween._time || this._tween._rawPrevTime === -1e-6)
                              for (; e;) {
                                  if (b = e.c * a + e.s, e.r ? b = e.r(b) : f > b && b > -f && (b = 0), e.type)
                                      if (1 === e.type)
                                          if (d = e.l, 2 === d) e.t[e.p] = e.xs0 + b + e.xs1 + e.xn1 + e.xs2;
                                          else if (3 === d) e.t[e.p] = e.xs0 + b + e.xs1 + e.xn1 + e.xs2 + e.xn2 + e.xs3;
                                  else if (4 === d) e.t[e.p] = e.xs0 + b + e.xs1 + e.xn1 + e.xs2 + e.xn2 + e.xs3 + e.xn3 + e.xs4;
                                  else if (5 === d) e.t[e.p] = e.xs0 + b + e.xs1 + e.xn1 + e.xs2 + e.xn2 + e.xs3 + e.xn3 + e.xs4 + e.xn4 + e.xs5;
                                  else {
                                      for (c = e.xs0 + b + e.xs1, d = 1; d < e.l; d++) c += e["xn" + d] + e["xs" + (d + 1)];
                                      e.t[e.p] = c
                                  } else -1 === e.type ? e.t[e.p] = e.xs0 : e.setRatio && e.setRatio(a);
                                  else e.t[e.p] = b + e.xs0;
                                  e = e._next
                              } else
                                  for (; e;) 2 !== e.type ? e.t[e.p] = e.b : e.setRatio(a), e = e._next;
                          else
                              for (; e;) {
                                  if (2 !== e.type)
                                      if (e.r && -1 !== e.type)
                                          if (b = e.r(e.s + e.c), e.type) {
                                              if (1 === e.type) {
                                                  for (d = e.l, c = e.xs0 + b + e.xs1, d = 1; d < e.l; d++) c += e["xn" + d] + e["xs" + (d + 1)];
                                                  e.t[e.p] = c
                                              }
                                          } else e.t[e.p] = b + e.xs0;
                                  else e.t[e.p] = e.e;
                                  else e.setRatio(a);
                                  e = e._next
                              }
                  }, j._enableTransforms = function (a) {
                      this._transform = this._transform || Ta(this._target, e, !0), this._transformType = this._transform.svg && Ca || !a && 3 !== this._transformType ? 2 : 3
                  };
                  var $a = function (a) {
                      this.t[this.p] = this.e, this.data._linkCSSP(this, this._next, null, !0)
                  };
                  j._addLazySet = function (a, b, c) {
                      var d = this._firstPT = new va(a, b, 0, 0, this._firstPT, 2);
                      d.e = c, d.setRatio = $a, d.data = this
                  }, j._linkCSSP = function (a, b, c, d) {
                      return a && (b && (b._prev = a), a._next && (a._next._prev = a._prev), a._prev ? a._prev._next = a._next : this._firstPT === a && (this._firstPT = a._next, d = !0), c ? c._next = a : d || null !== this._firstPT || (this._firstPT = a), a._next = b, a._prev = c), a
                  }, j._mod = function (a) {
                      for (var b = this._firstPT; b;) "function" == typeof a[b.p] && (b.r = a[b.p]), b = b._next
                  }, j._kill = function (b) {
                      var c, d, e, f = b;
                      if (b.autoAlpha || b.alpha) {
                          f = {};
                          for (d in b) f[d] = b[d];
                          f.opacity = 1, f.autoAlpha && (f.visibility = 1)
                      }
                      for (b.className && (c = this._classNamePT) && (e = c.xfirst, e && e._prev ? this._linkCSSP(e._prev, c._next, e._prev._prev) : e === this._firstPT && (this._firstPT = c._next), c._next && this._linkCSSP(c._next, c._next._next, e._prev), this._classNamePT = null), c = this._firstPT; c;) c.plugin && c.plugin !== d && c.plugin._kill && (c.plugin._kill(b), d = c.plugin), c = c._next;
                      return a.prototype._kill.call(this, f)
                  };
                  var _a = function (a, b, c) {
                      var d, e, f, g;
                      if (a.slice)
                          for (e = a.length; --e > -1;) _a(a[e], b, c);
                      else
                          for (d = a.childNodes, e = d.length; --e > -1;) f = d[e], g = f.type, f.style && (b.push(ea(f)), c && c.push(f)), 1 !== g && 9 !== g && 11 !== g || !f.childNodes.length || _a(f, b, c)
                  };
                  return g.cascadeTo = function (a, c, d) {
                      var e, f, g, h, i = b.to(a, c, d),
                          j = [i],
                          k = [],
                          l = [],
                          m = [],
                          n = b._internals.reservedProps;
                      for (a = i._targets || i.target, _a(a, k, m), i.render(c, !0, !0), _a(a, l), i.render(0, !0, !0), i._enabled(!0), e = m.length; --e > -1;)
                          if (f = fa(m[e], k[e], l[e]), f.firstMPT) {
                              f = f.difs;
                              for (g in d) n[g] && (f[g] = d[g]);
                              h = {};
                              for (g in f) h[g] = k[e][g];
                              j.push(b.fromTo(m[e], c, h, f))
                          } return j
                  }, a.activate([g]), g
              }, !0),
              function () {
                  var a = _gsScope._gsDefine.plugin({
                          propName: "roundProps",
                          version: "1.7.0",
                          priority: -1,
                          API: 2,
                          init: function (a, b, c) {
                              return this._tween = c, !0
                          }
                      }),
                      b = function (a) {
                          var b = 1 > a ? Math.pow(10, (a + "").length - 2) : 1;
                          return function (c) {
                              return (Math.round(c / a) * a * b | 0) / b
                          }
                      },
                      c = function (a, b) {
                          for (; a;) a.f || a.blob || (a.m = b || Math.round), a = a._next
                      },
                      d = a.prototype;
                  d._onInitAllProps = function () {
                      var a, d, e, f, g = this._tween,
                          h = g.vars.roundProps,
                          i = {},
                          j = g._propLookup.roundProps;
                      if ("object" != typeof h || h.push)
                          for ("string" == typeof h && (h = h.split(",")), e = h.length; --e > -1;) i[h[e]] = Math.round;
                      else
                          for (f in h) i[f] = b(h[f]);
                      for (f in i)
                          for (a = g._firstPT; a;) d = a._next, a.pg ? a.t._mod(i) : a.n === f && (2 === a.f && a.t ? c(a.t._firstPT, i[f]) : (this._add(a.t, f, a.s, a.c, i[f]), d && (d._prev = a._prev), a._prev ? a._prev._next = d : g._firstPT === a && (g._firstPT = d), a._next = a._prev = null, g._propLookup[f] = j)), a = d;
                      return !1
                  }, d._add = function (a, b, c, d, e) {
                      this._addTween(a, b, c, c + d, b, e || Math.round), this._overwriteProps.push(b)
                  }
              }(),
              function () {
                  _gsScope._gsDefine.plugin({
                      propName: "attr",
                      API: 2,
                      version: "0.6.1",
                      init: function (a, b, c, d) {
                          var e, f;
                          if ("function" != typeof a.setAttribute) return !1;
                          for (e in b) f = b[e], "function" == typeof f && (f = f(d, a)), this._addTween(a, "setAttribute", a.getAttribute(e) + "", f + "", e, !1, e), this._overwriteProps.push(e);
                          return !0
                      }
                  })
              }(), _gsScope._gsDefine.plugin({
                  propName: "directionalRotation",
                  version: "0.3.1",
                  API: 2,
                  init: function (a, b, c, d) {
                      "object" != typeof b && (b = {
                          rotation: b
                      }), this.finals = {};
                      var e, f, g, h, i, j, k = b.useRadians === !0 ? 2 * Math.PI : 360,
                          l = 1e-6;
                      for (e in b) "useRadians" !== e && (h = b[e], "function" == typeof h && (h = h(d, a)), j = (h + "").split("_"), f = j[0], g = parseFloat("function" != typeof a[e] ? a[e] : a[e.indexOf("set") || "function" != typeof a["get" + e.substr(3)] ? e : "get" + e.substr(3)]()), h = this.finals[e] = "string" == typeof f && "=" === f.charAt(1) ? g + parseInt(f.charAt(0) + "1", 10) * Number(f.substr(2)) : Number(f) || 0, i = h - g, j.length && (f = j.join("_"), -1 !== f.indexOf("short") && (i %= k, i !== i % (k / 2) && (i = 0 > i ? i + k : i - k)), -1 !== f.indexOf("_cw") && 0 > i ? i = (i + 9999999999 * k) % k - (i / k | 0) * k : -1 !== f.indexOf("ccw") && i > 0 && (i = (i - 9999999999 * k) % k - (i / k | 0) * k)), (i > l || -l > i) && (this._addTween(a, e, g, g + i, e), this._overwriteProps.push(e)));
                      return !0
                  },
                  set: function (a) {
                      var b;
                      if (1 !== a) this._super.setRatio.call(this, a);
                      else
                          for (b = this._firstPT; b;) b.f ? b.t[b.p](this.finals[b.p]) : b.t[b.p] = this.finals[b.p], b = b._next
                  }
              })._autoCSS = !0, _gsScope._gsDefine("easing.Back", ["easing.Ease"], function (a) {
                  var b, c, d, e, f = _gsScope.GreenSockGlobals || _gsScope,
                      g = f.com.greensock,
                      h = 2 * Math.PI,
                      i = Math.PI / 2,
                      j = g._class,
                      k = function (b, c) {
                          var d = j("easing." + b, function () {}, !0),
                              e = d.prototype = new a;
                          return e.constructor = d, e.getRatio = c, d
                      },
                      l = a.register || function () {},
                      m = function (a, b, c, d, e) {
                          var f = j("easing." + a, {
                              easeOut: new b,
                              easeIn: new c,
                              easeInOut: new d
                          }, !0);
                          return l(f, a), f
                      },
                      n = function (a, b, c) {
                          this.t = a, this.v = b, c && (this.next = c, c.prev = this, this.c = c.v - b, this.gap = c.t - a)
                      },
                      o = function (b, c) {
                          var d = j("easing." + b, function (a) {
                                  this._p1 = a || 0 === a ? a : 1.70158, this._p2 = 1.525 * this._p1
                              }, !0),
                              e = d.prototype = new a;
                          return e.constructor = d, e.getRatio = c, e.config = function (a) {
                              return new d(a)
                          }, d
                      },
                      p = m("Back", o("BackOut", function (a) {
                          return (a -= 1) * a * ((this._p1 + 1) * a + this._p1) + 1
                      }), o("BackIn", function (a) {
                          return a * a * ((this._p1 + 1) * a - this._p1)
                      }), o("BackInOut", function (a) {
                          return (a *= 2) < 1 ? .5 * a * a * ((this._p2 + 1) * a - this._p2) : .5 * ((a -= 2) * a * ((this._p2 + 1) * a + this._p2) + 2)
                      })),
                      q = j("easing.SlowMo", function (a, b, c) {
                          b = b || 0 === b ? b : .7, null == a ? a = .7 : a > 1 && (a = 1), this._p = 1 !== a ? b : 0, this._p1 = (1 - a) / 2, this._p2 = a, this._p3 = this._p1 + this._p2, this._calcEnd = c === !0
                      }, !0),
                      r = q.prototype = new a;
                  return r.constructor = q, r.getRatio = function (a) {
                      var b = a + (.5 - a) * this._p;
                      return a < this._p1 ? this._calcEnd ? 1 - (a = 1 - a / this._p1) * a : b - (a = 1 - a / this._p1) * a * a * a * b : a > this._p3 ? this._calcEnd ? 1 === a ? 0 : 1 - (a = (a - this._p3) / this._p1) * a : b + (a - b) * (a = (a - this._p3) / this._p1) * a * a * a : this._calcEnd ? 1 : b
                  }, q.ease = new q(.7, .7), r.config = q.config = function (a, b, c) {
                      return new q(a, b, c)
                  }, b = j("easing.SteppedEase", function (a, b) {
                      a = a || 1, this._p1 = 1 / a, this._p2 = a + (b ? 0 : 1), this._p3 = b ? 1 : 0
                  }, !0), r = b.prototype = new a, r.constructor = b, r.getRatio = function (a) {
                      return 0 > a ? a = 0 : a >= 1 && (a = .999999999), ((this._p2 * a | 0) + this._p3) * this._p1
                  }, r.config = b.config = function (a, c) {
                      return new b(a, c)
                  }, c = j("easing.ExpoScaleEase", function (a, b, c) {
                      this._p1 = Math.log(b / a), this._p2 = b - a, this._p3 = a, this._ease = c
                  }, !0), r = c.prototype = new a, r.constructor = c, r.getRatio = function (a) {
                      return this._ease && (a = this._ease.getRatio(a)), (this._p3 * Math.exp(this._p1 * a) - this._p3) / this._p2
                  }, r.config = c.config = function (a, b, d) {
                      return new c(a, b, d)
                  }, d = j("easing.RoughEase", function (b) {
                      b = b || {};
                      for (var c, d, e, f, g, h, i = b.taper || "none", j = [], k = 0, l = 0 | (b.points || 20), m = l, o = b.randomize !== !1, p = b.clamp === !0, q = b.template instanceof a ? b.template : null, r = "number" == typeof b.strength ? .4 * b.strength : .4; --m > -1;) c = o ? Math.random() : 1 / l * m, d = q ? q.getRatio(c) : c, "none" === i ? e = r : "out" === i ? (f = 1 - c, e = f * f * r) : "in" === i ? e = c * c * r : .5 > c ? (f = 2 * c, e = f * f * .5 * r) : (f = 2 * (1 - c), e = f * f * .5 * r), o ? d += Math.random() * e - .5 * e : m % 2 ? d += .5 * e : d -= .5 * e, p && (d > 1 ? d = 1 : 0 > d && (d = 0)), j[k++] = {
                          x: c,
                          y: d
                      };
                      for (j.sort(function (a, b) {
                              return a.x - b.x
                          }), h = new n(1, 1, null), m = l; --m > -1;) g = j[m], h = new n(g.x, g.y, h);
                      this._prev = new n(0, 0, 0 !== h.t ? h : h.next)
                  }, !0), r = d.prototype = new a, r.constructor = d, r.getRatio = function (a) {
                      var b = this._prev;
                      if (a > b.t) {
                          for (; b.next && a >= b.t;) b = b.next;
                          b = b.prev
                      } else
                          for (; b.prev && a <= b.t;) b = b.prev;
                      return this._prev = b, b.v + (a - b.t) / b.gap * b.c
                  }, r.config = function (a) {
                      return new d(a)
                  }, d.ease = new d, m("Bounce", k("BounceOut", function (a) {
                      return 1 / 2.75 > a ? 7.5625 * a * a : 2 / 2.75 > a ? 7.5625 * (a -= 1.5 / 2.75) * a + .75 : 2.5 / 2.75 > a ? 7.5625 * (a -= 2.25 / 2.75) * a + .9375 : 7.5625 * (a -= 2.625 / 2.75) * a + .984375
                  }), k("BounceIn", function (a) {
                      return (a = 1 - a) < 1 / 2.75 ? 1 - 7.5625 * a * a : 2 / 2.75 > a ? 1 - (7.5625 * (a -= 1.5 / 2.75) * a + .75) : 2.5 / 2.75 > a ? 1 - (7.5625 * (a -= 2.25 / 2.75) * a + .9375) : 1 - (7.5625 * (a -= 2.625 / 2.75) * a + .984375)
                  }), k("BounceInOut", function (a) {
                      var b = .5 > a;
                      return a = b ? 1 - 2 * a : 2 * a - 1, a = 1 / 2.75 > a ? 7.5625 * a * a : 2 / 2.75 > a ? 7.5625 * (a -= 1.5 / 2.75) * a + .75 : 2.5 / 2.75 > a ? 7.5625 * (a -= 2.25 / 2.75) * a + .9375 : 7.5625 * (a -= 2.625 / 2.75) * a + .984375, b ? .5 * (1 - a) : .5 * a + .5
                  })), m("Circ", k("CircOut", function (a) {
                      return Math.sqrt(1 - (a -= 1) * a)
                  }), k("CircIn", function (a) {
                      return -(Math.sqrt(1 - a * a) - 1)
                  }), k("CircInOut", function (a) {
                      return (a *= 2) < 1 ? -.5 * (Math.sqrt(1 - a * a) - 1) : .5 * (Math.sqrt(1 - (a -= 2) * a) + 1)
                  })), e = function (b, c, d) {
                      var e = j("easing." + b, function (a, b) {
                              this._p1 = a >= 1 ? a : 1, this._p2 = (b || d) / (1 > a ? a : 1), this._p3 = this._p2 / h * (Math.asin(1 / this._p1) || 0), this._p2 = h / this._p2
                          }, !0),
                          f = e.prototype = new a;
                      return f.constructor = e, f.getRatio = c, f.config = function (a, b) {
                          return new e(a, b)
                      }, e
                  }, m("Elastic", e("ElasticOut", function (a) {
                      return this._p1 * Math.pow(2, -10 * a) * Math.sin((a - this._p3) * this._p2) + 1
                  }, .3), e("ElasticIn", function (a) {
                      return -(this._p1 * Math.pow(2, 10 * (a -= 1)) * Math.sin((a - this._p3) * this._p2))
                  }, .3), e("ElasticInOut", function (a) {
                      return (a *= 2) < 1 ? -.5 * (this._p1 * Math.pow(2, 10 * (a -= 1)) * Math.sin((a - this._p3) * this._p2)) : this._p1 * Math.pow(2, -10 * (a -= 1)) * Math.sin((a - this._p3) * this._p2) * .5 + 1
                  }, .45)), m("Expo", k("ExpoOut", function (a) {
                      return 1 - Math.pow(2, -10 * a)
                  }), k("ExpoIn", function (a) {
                      return Math.pow(2, 10 * (a - 1)) - .001
                  }), k("ExpoInOut", function (a) {
                      return (a *= 2) < 1 ? .5 * Math.pow(2, 10 * (a - 1)) : .5 * (2 - Math.pow(2, -10 * (a - 1)))
                  })), m("Sine", k("SineOut", function (a) {
                      return Math.sin(a * i)
                  }), k("SineIn", function (a) {
                      return -Math.cos(a * i) + 1
                  }), k("SineInOut", function (a) {
                      return -.5 * (Math.cos(Math.PI * a) - 1)
                  })), j("easing.EaseLookup", {
                      find: function (b) {
                          return a.map[b]
                      }
                  }, !0), l(f.SlowMo, "SlowMo", "ease,"), l(d, "RoughEase", "ease,"), l(b, "SteppedEase", "ease,"), p
              }, !0)
      }), _gsScope._gsDefine && _gsScope._gsQueue.pop()(),
      function (a, b) {
          "use strict";
          var c = {},
              d = a.document,
              e = a.GreenSockGlobals = a.GreenSockGlobals || a,
              f = e[b];
          if (f) return "undefined" != typeof module && module.exports && (module.exports = f), f;
          var g, h, i, j, k, l = function (a) {
                  var b, c = a.split("."),
                      d = e;
                  for (b = 0; b < c.length; b++) d[c[b]] = d = d[c[b]] || {};
                  return d
              },
              m = l("com.greensock"),
              n = 1e-8,
              o = function (a) {
                  var b, c = [],
                      d = a.length;
                  for (b = 0; b !== d; c.push(a[b++]));
                  return c
              },
              p = function () {},
              q = function () {
                  var a = Object.prototype.toString,
                      b = a.call([]);
                  return function (c) {
                      return null != c && (c instanceof Array || "object" == typeof c && !!c.push && a.call(c) === b)
                  }
              }(),
              r = {},
              s = function (d, f, g, h) {
                  this.sc = r[d] ? r[d].sc : [], r[d] = this, this.gsClass = null, this.func = g;
                  var i = [];
                  this.check = function (j) {
                      for (var k, m, n, o, p = f.length, q = p; --p > -1;)(k = r[f[p]] || new s(f[p], [])).gsClass ? (i[p] = k.gsClass, q--) : j && k.sc.push(this);
                      if (0 === q && g) {
                          if (m = ("com.greensock." + d).split("."), n = m.pop(), o = l(m.join("."))[n] = this.gsClass = g.apply(g, i), h)
                              if (e[n] = c[n] = o, "undefined" != typeof module && module.exports)
                                  if (d === b) {
                                      module.exports = c[b] = o;
                                      for (p in c) o[p] = c[p]
                                  } else c[b] && (c[b][n] = o);
                          else "function" == typeof define && define.amd && define((a.GreenSockAMDPath ? a.GreenSockAMDPath + "/" : "") + d.split(".").pop(), [], function () {
                              return o
                          });
                          for (p = 0; p < this.sc.length; p++) this.sc[p].check()
                      }
                  }, this.check(!0)
              },
              t = a._gsDefine = function (a, b, c, d) {
                  return new s(a, b, c, d)
              },
              u = m._class = function (a, b, c) {
                  return b = b || function () {}, t(a, [], function () {
                      return b
                  }, c), b
              };
          t.globals = e;
          var v = [0, 0, 1, 1],
              w = u("easing.Ease", function (a, b, c, d) {
                  this._func = a, this._type = c || 0, this._power = d || 0, this._params = b ? v.concat(b) : v
              }, !0),
              x = w.map = {},
              y = w.register = function (a, b, c, d) {
                  for (var e, f, g, h, i = b.split(","), j = i.length, k = (c || "easeIn,easeOut,easeInOut").split(","); --j > -1;)
                      for (f = i[j], e = d ? u("easing." + f, null, !0) : m.easing[f] || {}, g = k.length; --g > -1;) h = k[g], x[f + "." + h] = x[h + f] = e[h] = a.getRatio ? a : a[h] || new a
              };
          for (i = w.prototype, i._calcEnd = !1, i.getRatio = function (a) {
                  if (this._func) return this._params[0] = a, this._func.apply(null, this._params);
                  var b = this._type,
                      c = this._power,
                      d = 1 === b ? 1 - a : 2 === b ? a : .5 > a ? 2 * a : 2 * (1 - a);
                  return 1 === c ? d *= d : 2 === c ? d *= d * d : 3 === c ? d *= d * d * d : 4 === c && (d *= d * d * d * d), 1 === b ? 1 - d : 2 === b ? d : .5 > a ? d / 2 : 1 - d / 2
              }, g = ["Linear", "Quad", "Cubic", "Quart", "Quint,Strong"], h = g.length; --h > -1;) i = g[h] + ",Power" + h, y(new w(null, null, 1, h), i, "easeOut", !0), y(new w(null, null, 2, h), i, "easeIn" + (0 === h ? ",easeNone" : "")), y(new w(null, null, 3, h), i, "easeInOut");
          x.linear = m.easing.Linear.easeIn, x.swing = m.easing.Quad.easeInOut;
          var z = u("events.EventDispatcher", function (a) {
              this._listeners = {}, this._eventTarget = a || this
          });
          i = z.prototype, i.addEventListener = function (a, b, c, d, e) {
              e = e || 0;
              var f, g, h = this._listeners[a],
                  i = 0;
              for (this !== j || k || j.wake(), null == h && (this._listeners[a] = h = []), g = h.length; --g > -1;) f = h[g], f.c === b && f.s === c ? h.splice(g, 1) : 0 === i && f.pr < e && (i = g + 1);
              h.splice(i, 0, {
                  c: b,
                  s: c,
                  up: d,
                  pr: e
              })
          }, i.removeEventListener = function (a, b) {
              var c, d = this._listeners[a];
              if (d)
                  for (c = d.length; --c > -1;)
                      if (d[c].c === b) return void d.splice(c, 1)
          }, i.dispatchEvent = function (a) {
              var b, c, d, e = this._listeners[a];
              if (e)
                  for (b = e.length, b > 1 && (e = e.slice(0)), c = this._eventTarget; --b > -1;) d = e[b], d && (d.up ? d.c.call(d.s || c, {
                      type: a,
                      target: c
                  }) : d.c.call(d.s || c))
          };
          var A = a.requestAnimationFrame,
              B = a.cancelAnimationFrame,
              C = Date.now || function () {
                  return (new Date).getTime()
              },
              D = C();
          for (g = ["ms", "moz", "webkit", "o"], h = g.length; --h > -1 && !A;) A = a[g[h] + "RequestAnimationFrame"], B = a[g[h] + "CancelAnimationFrame"] || a[g[h] + "CancelRequestAnimationFrame"];
          u("Ticker", function (a, b) {
              var c, e, f, g, h, i = this,
                  l = C(),
                  m = b !== !1 && A ? "auto" : !1,
                  o = 500,
                  q = 33,
                  r = "tick",
                  s = function (a) {
                      var b, d, j = C() - D;
                      j > o && (l += j - q), D += j, i.time = (D - l) / 1e3, b = i.time - h, (!c || b > 0 || a === !0) && (i.frame++, h += b + (b >= g ? .004 : g - b), d = !0), a !== !0 && (f = e(s)), d && i.dispatchEvent(r)
                  };
              z.call(i), i.time = i.frame = 0, i.tick = function () {
                  s(!0)
              }, i.lagSmoothing = function (a, b) {
                  return arguments.length ? (o = a || 1 / n, void(q = Math.min(b, o, 0))) : 1 / n > o
              }, i.sleep = function () {
                  null != f && (m && B ? B(f) : clearTimeout(f), e = p, f = null, i === j && (k = !1))
              }, i.wake = function (a) {
                  null !== f ? i.sleep() : a ? l += -D + (D = C()) : i.frame > 10 && (D = C() - o + 5), e = 0 === c ? p : m && A ? A : function (a) {
                      return setTimeout(a, 1e3 * (h - i.time) + 1 | 0)
                  }, i === j && (k = !0), s(2)
              }, i.fps = function (a) {
                  return arguments.length ? (c = a, g = 1 / (c || 60), h = this.time + g, void i.wake()) : c
              }, i.useRAF = function (a) {
                  return arguments.length ? (i.sleep(), m = a, void i.fps(c)) : m
              }, i.fps(a), setTimeout(function () {
                  "auto" === m && i.frame < 5 && "hidden" !== (d || {}).visibilityState && i.useRAF(!1)
              }, 1500)
          }), i = m.Ticker.prototype = new m.events.EventDispatcher, i.constructor = m.Ticker;
          var E = u("core.Animation", function (a, b) {
              if (this.vars = b = b || {}, this._duration = this._totalDuration = a || 0, this._delay = Number(b.delay) || 0, this._timeScale = 1, this._active = !!b.immediateRender, this.data = b.data, this._reversed = !!b.reversed, Z) {
                  k || j.wake();
                  var c = this.vars.useFrames ? Y : Z;
                  c.add(this, c._time), this.vars.paused && this.paused(!0)
              }
          });
          j = E.ticker = new m.Ticker, i = E.prototype, i._dirty = i._gc = i._initted = i._paused = !1, i._totalTime = i._time = 0, i._rawPrevTime = -1, i._next = i._last = i._onUpdate = i._timeline = i.timeline = null, i._paused = !1;
          var F = function () {
              k && C() - D > 2e3 && ("hidden" !== (d || {}).visibilityState || !j.lagSmoothing()) && j.wake();
              var a = setTimeout(F, 2e3);
              a.unref && a.unref()
          };
          F(), i.play = function (a, b) {
              return null != a && this.seek(a, b), this.reversed(!1).paused(!1)
          }, i.pause = function (a, b) {
              return null != a && this.seek(a, b), this.paused(!0)
          }, i.resume = function (a, b) {
              return null != a && this.seek(a, b), this.paused(!1)
          }, i.seek = function (a, b) {
              return this.totalTime(Number(a), b !== !1)
          }, i.restart = function (a, b) {
              return this.reversed(!1).paused(!1).totalTime(a ? -this._delay : 0, b !== !1, !0)
          }, i.reverse = function (a, b) {
              return null != a && this.seek(a || this.totalDuration(), b), this.reversed(!0).paused(!1)
          }, i.render = function (a, b, c) {}, i.invalidate = function () {
              return this._time = this._totalTime = 0, this._initted = this._gc = !1, this._rawPrevTime = -1, (this._gc || !this.timeline) && this._enabled(!0), this
          }, i.isActive = function () {
              var a, b = this._timeline,
                  c = this._startTime;
              return !b || !this._gc && !this._paused && b.isActive() && (a = b.rawTime(!0)) >= c && a < c + this.totalDuration() / this._timeScale - n
          }, i._enabled = function (a, b) {
              return k || j.wake(), this._gc = !a, this._active = this.isActive(), b !== !0 && (a && !this.timeline ? this._timeline.add(this, this._startTime - this._delay) : !a && this.timeline && this._timeline._remove(this, !0)), !1
          }, i._kill = function (a, b) {
              return this._enabled(!1, !1)
          }, i.kill = function (a, b) {
              return this._kill(a, b), this
          }, i._uncache = function (a) {
              for (var b = a ? this : this.timeline; b;) b._dirty = !0, b = b.timeline;
              return this
          }, i._swapSelfInParams = function (a) {
              for (var b = a.length, c = a.concat(); --b > -1;) "{self}" === a[b] && (c[b] = this);
              return c
          }, i._callback = function (a) {
              var b = this.vars,
                  c = b[a],
                  d = b[a + "Params"],
                  e = b[a + "Scope"] || b.callbackScope || this,
                  f = d ? d.length : 0;
              switch (f) {
                  case 0:
                      c.call(e);
                      break;
                  case 1:
                      c.call(e, d[0]);
                      break;
                  case 2:
                      c.call(e, d[0], d[1]);
                      break;
                  default:
                      c.apply(e, d)
              }
          }, i.eventCallback = function (a, b, c, d) {
              if ("on" === (a || "").substr(0, 2)) {
                  var e = this.vars;
                  if (1 === arguments.length) return e[a];
                  null == b ? delete e[a] : (e[a] = b, e[a + "Params"] = q(c) && -1 !== c.join("").indexOf("{self}") ? this._swapSelfInParams(c) : c, e[a + "Scope"] = d), "onUpdate" === a && (this._onUpdate = b)
              }
              return this
          }, i.delay = function (a) {
              return arguments.length ? (this._timeline.smoothChildTiming && this.startTime(this._startTime + a - this._delay), this._delay = a, this) : this._delay
          }, i.duration = function (a) {
              return arguments.length ? (this._duration = this._totalDuration = a, this._uncache(!0), this._timeline.smoothChildTiming && this._time > 0 && this._time < this._duration && 0 !== a && this.totalTime(this._totalTime * (a / this._duration), !0), this) : (this._dirty = !1, this._duration)
          }, i.totalDuration = function (a) {
              return this._dirty = !1, arguments.length ? this.duration(a) : this._totalDuration
          }, i.time = function (a, b) {
              return arguments.length ? (this._dirty && this.totalDuration(), this.totalTime(a > this._duration ? this._duration : a, b)) : this._time
          }, i.totalTime = function (a, b, c) {
              if (k || j.wake(), !arguments.length) return this._totalTime;
              if (this._timeline) {
                  if (0 > a && !c && (a += this.totalDuration()), this._timeline.smoothChildTiming) {
                      this._dirty && this.totalDuration();
                      var d = this._totalDuration,
                          e = this._timeline;
                      if (a > d && !c && (a = d), this._startTime = (this._paused ? this._pauseTime : e._time) - (this._reversed ? d - a : a) / this._timeScale, e._dirty || this._uncache(!1), e._timeline)
                          for (; e._timeline;) e._timeline._time !== (e._startTime + e._totalTime) / e._timeScale && e.totalTime(e._totalTime, !0),
                              e = e._timeline
                  }
                  this._gc && this._enabled(!0, !1), (this._totalTime !== a || 0 === this._duration) && (K.length && _(), this.render(a, b, !1), K.length && _())
              }
              return this
          }, i.progress = i.totalProgress = function (a, b) {
              var c = this.duration();
              return arguments.length ? this.totalTime(c * a, b) : c ? this._time / c : this.ratio
          }, i.startTime = function (a) {
              return arguments.length ? (a !== this._startTime && (this._startTime = a, this.timeline && this.timeline._sortChildren && this.timeline.add(this, a - this._delay)), this) : this._startTime
          }, i.endTime = function (a) {
              return this._startTime + (0 != a ? this.totalDuration() : this.duration()) / this._timeScale
          }, i.timeScale = function (a) {
              if (!arguments.length) return this._timeScale;
              var b, c;
              for (a = a || n, this._timeline && this._timeline.smoothChildTiming && (b = this._pauseTime, c = b || 0 === b ? b : this._timeline.totalTime(), this._startTime = c - (c - this._startTime) * this._timeScale / a), this._timeScale = a, c = this.timeline; c && c.timeline;) c._dirty = !0, c.totalDuration(), c = c.timeline;
              return this
          }, i.reversed = function (a) {
              return arguments.length ? (a != this._reversed && (this._reversed = a, this.totalTime(this._timeline && !this._timeline.smoothChildTiming ? this.totalDuration() - this._totalTime : this._totalTime, !0)), this) : this._reversed
          }, i.paused = function (a) {
              if (!arguments.length) return this._paused;
              var b, c, d = this._timeline;
              return a != this._paused && d && (k || a || j.wake(), b = d.rawTime(), c = b - this._pauseTime, !a && d.smoothChildTiming && (this._startTime += c, this._uncache(!1)), this._pauseTime = a ? b : null, this._paused = a, this._active = this.isActive(), !a && 0 !== c && this._initted && this.duration() && (b = d.smoothChildTiming ? this._totalTime : (b - this._startTime) / this._timeScale, this.render(b, b === this._totalTime, !0))), this._gc && !a && this._enabled(!0, !1), this
          };
          var G = u("core.SimpleTimeline", function (a) {
              E.call(this, 0, a), this.autoRemoveChildren = this.smoothChildTiming = !0
          });
          i = G.prototype = new E, i.constructor = G, i.kill()._gc = !1, i._first = i._last = i._recent = null, i._sortChildren = !1, i.add = i.insert = function (a, b, c, d) {
              var e, f;
              if (a._startTime = Number(b || 0) + a._delay, a._paused && this !== a._timeline && (a._pauseTime = this.rawTime() - (a._timeline.rawTime() - a._pauseTime)), a.timeline && a.timeline._remove(a, !0), a.timeline = a._timeline = this, a._gc && a._enabled(!0, !0), e = this._last, this._sortChildren)
                  for (f = a._startTime; e && e._startTime > f;) e = e._prev;
              return e ? (a._next = e._next, e._next = a) : (a._next = this._first, this._first = a), a._next ? a._next._prev = a : this._last = a, a._prev = e, this._recent = a, this._timeline && this._uncache(!0), this
          }, i._remove = function (a, b) {
              return a.timeline === this && (b || a._enabled(!1, !0), a._prev ? a._prev._next = a._next : this._first === a && (this._first = a._next), a._next ? a._next._prev = a._prev : this._last === a && (this._last = a._prev), a._next = a._prev = a.timeline = null, a === this._recent && (this._recent = this._last), this._timeline && this._uncache(!0)), this
          }, i.render = function (a, b, c) {
              var d, e = this._first;
              for (this._totalTime = this._time = this._rawPrevTime = a; e;) d = e._next, (e._active || a >= e._startTime && !e._paused && !e._gc) && (e._reversed ? e.render((e._dirty ? e.totalDuration() : e._totalDuration) - (a - e._startTime) * e._timeScale, b, c) : e.render((a - e._startTime) * e._timeScale, b, c)), e = d
          }, i.rawTime = function () {
              return k || j.wake(), this._totalTime
          };
          var H = u("TweenLite", function (b, c, d) {
                  if (E.call(this, c, d), this.render = H.prototype.render, null == b) throw "Cannot tween a null target.";
                  this.target = b = "string" != typeof b ? b : H.selector(b) || b;
                  var e, f, g, h = b.jquery || b.length && b !== a && b[0] && (b[0] === a || b[0].nodeType && b[0].style && !b.nodeType),
                      i = this.vars.overwrite;
                  if (this._overwrite = i = null == i ? X[H.defaultOverwrite] : "number" == typeof i ? i >> 0 : X[i], (h || b instanceof Array || b.push && q(b)) && "number" != typeof b[0])
                      for (this._targets = g = o(b), this._propLookup = [], this._siblings = [], e = 0; e < g.length; e++) f = g[e], f ? "string" != typeof f ? f.length && f !== a && f[0] && (f[0] === a || f[0].nodeType && f[0].style && !f.nodeType) ? (g.splice(e--, 1), this._targets = g = g.concat(o(f))) : (this._siblings[e] = aa(f, this, !1), 1 === i && this._siblings[e].length > 1 && ca(f, this, null, 1, this._siblings[e])) : (f = g[e--] = H.selector(f), "string" == typeof f && g.splice(e + 1, 1)) : g.splice(e--, 1);
                  else this._propLookup = {}, this._siblings = aa(b, this, !1), 1 === i && this._siblings.length > 1 && ca(b, this, null, 1, this._siblings);
                  (this.vars.immediateRender || 0 === c && 0 === this._delay && this.vars.immediateRender !== !1) && (this._time = -n, this.render(Math.min(0, -this._delay)))
              }, !0),
              I = function (b) {
                  return b && b.length && b !== a && b[0] && (b[0] === a || b[0].nodeType && b[0].style && !b.nodeType)
              },
              J = function (a, b) {
                  var c, d = {};
                  for (c in a) W[c] || c in b && "transform" !== c && "x" !== c && "y" !== c && "width" !== c && "height" !== c && "className" !== c && "border" !== c || !(!T[c] || T[c] && T[c]._autoCSS) || (d[c] = a[c], delete a[c]);
                  a.css = d
              };
          i = H.prototype = new E, i.constructor = H, i.kill()._gc = !1, i.ratio = 0, i._firstPT = i._targets = i._overwrittenProps = i._startAt = null, i._notifyPluginsOfEnabled = i._lazy = !1, H.version = "2.1.3", H.defaultEase = i._ease = new w(null, null, 1, 1), H.defaultOverwrite = "auto", H.ticker = j, H.autoSleep = 120, H.lagSmoothing = function (a, b) {
              j.lagSmoothing(a, b)
          }, H.selector = a.$ || a.jQuery || function (b) {
              var c = a.$ || a.jQuery;
              return c ? (H.selector = c, c(b)) : (d || (d = a.document), d ? d.querySelectorAll ? d.querySelectorAll(b) : d.getElementById("#" === b.charAt(0) ? b.substr(1) : b) : b)
          };
          var K = [],
              L = {},
              M = /(?:(-|-=|\+=)?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/gi,
              N = /[\+-]=-?[\.\d]/,
              O = function (a) {
                  for (var b, c = this._firstPT, d = 1e-6; c;) b = c.blob ? 1 === a && null != this.end ? this.end : a ? this.join("") : this.start : c.c * a + c.s, c.m ? b = c.m.call(this._tween, b, this._target || c.t, this._tween) : d > b && b > -d && !c.blob && (b = 0), c.f ? c.fp ? c.t[c.p](c.fp, b) : c.t[c.p](b) : c.t[c.p] = b, c = c._next
              },
              P = function (a) {
                  return (1e3 * a | 0) / 1e3 + ""
              },
              Q = function (a, b, c, d) {
                  var e, f, g, h, i, j, k, l = [],
                      m = 0,
                      n = "",
                      o = 0;
                  for (l.start = a, l.end = b, a = l[0] = a + "", b = l[1] = b + "", c && (c(l), a = l[0], b = l[1]), l.length = 0, e = a.match(M) || [], f = b.match(M) || [], d && (d._next = null, d.blob = 1, l._firstPT = l._applyPT = d), i = f.length, h = 0; i > h; h++) k = f[h], j = b.substr(m, b.indexOf(k, m) - m), n += j || !h ? j : ",", m += j.length, o ? o = (o + 1) % 5 : "rgba(" === j.substr(-5) && (o = 1), k === e[h] || e.length <= h ? n += k : (n && (l.push(n), n = ""), g = parseFloat(e[h]), l.push(g), l._firstPT = {
                      _next: l._firstPT,
                      t: l,
                      p: l.length - 1,
                      s: g,
                      c: ("=" === k.charAt(1) ? parseInt(k.charAt(0) + "1", 10) * parseFloat(k.substr(2)) : parseFloat(k) - g) || 0,
                      f: 0,
                      m: o && 4 > o ? Math.round : P
                  }), m += k.length;
                  return n += b.substr(m), n && l.push(n), l.setRatio = O, N.test(b) && (l.end = null), l
              },
              R = function (a, b, c, d, e, f, g, h, i) {
                  "function" == typeof d && (d = d(i || 0, a));
                  var j, k = typeof a[b],
                      l = "function" !== k ? "" : b.indexOf("set") || "function" != typeof a["get" + b.substr(3)] ? b : "get" + b.substr(3),
                      m = "get" !== c ? c : l ? g ? a[l](g) : a[l]() : a[b],
                      n = "string" == typeof d && "=" === d.charAt(1),
                      o = {
                          t: a,
                          p: b,
                          s: m,
                          f: "function" === k,
                          pg: 0,
                          n: e || b,
                          m: f ? "function" == typeof f ? f : Math.round : 0,
                          pr: 0,
                          c: n ? parseInt(d.charAt(0) + "1", 10) * parseFloat(d.substr(2)) : parseFloat(d) - m || 0
                      };
                  return ("number" != typeof m || "number" != typeof d && !n) && (g || isNaN(m) || !n && isNaN(d) || "boolean" == typeof m || "boolean" == typeof d ? (o.fp = g, j = Q(m, n ? parseFloat(o.s) + o.c + (o.s + "").replace(/[0-9\-\.]/g, "") : d, h || H.defaultStringFilter, o), o = {
                      t: j,
                      p: "setRatio",
                      s: 0,
                      c: 1,
                      f: 2,
                      pg: 0,
                      n: e || b,
                      pr: 0,
                      m: 0
                  }) : (o.s = parseFloat(m), n || (o.c = parseFloat(d) - o.s || 0))), o.c ? ((o._next = this._firstPT) && (o._next._prev = o), this._firstPT = o, o) : void 0
              },
              S = H._internals = {
                  isArray: q,
                  isSelector: I,
                  lazyTweens: K,
                  blobDif: Q
              },
              T = H._plugins = {},
              U = S.tweenLookup = {},
              V = 0,
              W = S.reservedProps = {
                  ease: 1,
                  delay: 1,
                  overwrite: 1,
                  onComplete: 1,
                  onCompleteParams: 1,
                  onCompleteScope: 1,
                  useFrames: 1,
                  runBackwards: 1,
                  startAt: 1,
                  onUpdate: 1,
                  onUpdateParams: 1,
                  onUpdateScope: 1,
                  onStart: 1,
                  onStartParams: 1,
                  onStartScope: 1,
                  onReverseComplete: 1,
                  onReverseCompleteParams: 1,
                  onReverseCompleteScope: 1,
                  onRepeat: 1,
                  onRepeatParams: 1,
                  onRepeatScope: 1,
                  easeParams: 1,
                  yoyo: 1,
                  immediateRender: 1,
                  repeat: 1,
                  repeatDelay: 1,
                  data: 1,
                  paused: 1,
                  reversed: 1,
                  autoCSS: 1,
                  lazy: 1,
                  onOverwrite: 1,
                  callbackScope: 1,
                  stringFilter: 1,
                  id: 1,
                  yoyoEase: 1,
                  stagger: 1
              },
              X = {
                  none: 0,
                  all: 1,
                  auto: 2,
                  concurrent: 3,
                  allOnStart: 4,
                  preexisting: 5,
                  "true": 1,
                  "false": 0
              },
              Y = E._rootFramesTimeline = new G,
              Z = E._rootTimeline = new G,
              $ = 30,
              _ = S.lazyRender = function () {
                  var a, b, c = K.length;
                  for (L = {}, a = 0; c > a; a++) b = K[a], b && b._lazy !== !1 && (b.render(b._lazy[0], b._lazy[1], !0), b._lazy = !1);
                  K.length = 0
              };
          Z._startTime = j.time, Y._startTime = j.frame, Z._active = Y._active = !0, setTimeout(_, 1), E._updateRoot = H.render = function () {
              var a, b, c;
              if (K.length && _(), Z.render((j.time - Z._startTime) * Z._timeScale, !1, !1), Y.render((j.frame - Y._startTime) * Y._timeScale, !1, !1), K.length && _(), j.frame >= $) {
                  $ = j.frame + (parseInt(H.autoSleep, 10) || 120);
                  for (c in U) {
                      for (b = U[c].tweens, a = b.length; --a > -1;) b[a]._gc && b.splice(a, 1);
                      0 === b.length && delete U[c]
                  }
                  if (c = Z._first, (!c || c._paused) && H.autoSleep && !Y._first && 1 === j._listeners.tick.length) {
                      for (; c && c._paused;) c = c._next;
                      c || j.sleep()
                  }
              }
          }, j.addEventListener("tick", E._updateRoot);
          var aa = function (a, b, c) {
                  var d, e, f = a._gsTweenID;
                  if (U[f || (a._gsTweenID = f = "t" + V++)] || (U[f] = {
                          target: a,
                          tweens: []
                      }), b && (d = U[f].tweens, d[e = d.length] = b, c))
                      for (; --e > -1;) d[e] === b && d.splice(e, 1);
                  return U[f].tweens
              },
              ba = function (a, b, c, d) {
                  var e, f, g = a.vars.onOverwrite;
                  return g && (e = g(a, b, c, d)), g = H.onOverwrite, g && (f = g(a, b, c, d)), e !== !1 && f !== !1
              },
              ca = function (a, b, c, d, e) {
                  var f, g, h, i;
                  if (1 === d || d >= 4) {
                      for (i = e.length, f = 0; i > f; f++)
                          if ((h = e[f]) !== b) h._gc || h._kill(null, a, b) && (g = !0);
                          else if (5 === d) break;
                      return g
                  }
                  var j, k = b._startTime + n,
                      l = [],
                      m = 0,
                      o = 0 === b._duration;
                  for (f = e.length; --f > -1;)(h = e[f]) === b || h._gc || h._paused || (h._timeline !== b._timeline ? (j = j || da(b, 0, o), 0 === da(h, j, o) && (l[m++] = h)) : h._startTime <= k && h._startTime + h.totalDuration() / h._timeScale > k && ((o || !h._initted) && k - h._startTime <= 2 * n || (l[m++] = h)));
                  for (f = m; --f > -1;)
                      if (h = l[f], i = h._firstPT, 2 === d && h._kill(c, a, b) && (g = !0), 2 !== d || !h._firstPT && h._initted && i) {
                          if (2 !== d && !ba(h, b)) continue;
                          h._enabled(!1, !1) && (g = !0)
                      } return g
              },
              da = function (a, b, c) {
                  for (var d = a._timeline, e = d._timeScale, f = a._startTime; d._timeline;) {
                      if (f += d._startTime, e *= d._timeScale, d._paused) return -100;
                      d = d._timeline
                  }
                  return f /= e, f > b ? f - b : c && f === b || !a._initted && 2 * n > f - b ? n : (f += a.totalDuration() / a._timeScale / e) > b + n ? 0 : f - b - n
              };
          i._init = function () {
              var a, b, c, d, e, f, g = this.vars,
                  h = this._overwrittenProps,
                  i = this._duration,
                  j = !!g.immediateRender,
                  k = g.ease,
                  l = this._startAt;
              if (g.startAt) {
                  l && (l.render(-1, !0), l.kill()), e = {};
                  for (d in g.startAt) e[d] = g.startAt[d];
                  if (e.data = "isStart", e.overwrite = !1, e.immediateRender = !0, e.lazy = j && g.lazy !== !1, e.startAt = e.delay = null, e.onUpdate = g.onUpdate, e.onUpdateParams = g.onUpdateParams, e.onUpdateScope = g.onUpdateScope || g.callbackScope || this, this._startAt = H.to(this.target || {}, 0, e), j)
                      if (this._time > 0) this._startAt = null;
                      else if (0 !== i) return
              } else if (g.runBackwards && 0 !== i)
                  if (l) l.render(-1, !0), l.kill(), this._startAt = null;
                  else {
                      0 !== this._time && (j = !1), c = {};
                      for (d in g) W[d] && "autoCSS" !== d || (c[d] = g[d]);
                      if (c.overwrite = 0, c.data = "isFromStart", c.lazy = j && g.lazy !== !1, c.immediateRender = j, this._startAt = H.to(this.target, 0, c), j) {
                          if (0 === this._time) return
                      } else this._startAt._init(), this._startAt._enabled(!1), this.vars.immediateRender && (this._startAt = null)
                  } if (this._ease = k = k ? k instanceof w ? k : "function" == typeof k ? new w(k, g.easeParams) : x[k] || H.defaultEase : H.defaultEase, g.easeParams instanceof Array && k.config && (this._ease = k.config.apply(k, g.easeParams)), this._easeType = this._ease._type, this._easePower = this._ease._power, this._firstPT = null, this._targets)
                  for (f = this._targets.length, a = 0; f > a; a++) this._initProps(this._targets[a], this._propLookup[a] = {}, this._siblings[a], h ? h[a] : null, a) && (b = !0);
              else b = this._initProps(this.target, this._propLookup, this._siblings, h, 0);
              if (b && H._onPluginEvent("_onInitAllProps", this), h && (this._firstPT || "function" != typeof this.target && this._enabled(!1, !1)), g.runBackwards)
                  for (c = this._firstPT; c;) c.s += c.c, c.c = -c.c, c = c._next;
              this._onUpdate = g.onUpdate, this._initted = !0
          }, i._initProps = function (b, c, d, e, f) {
              var g, h, i, j, k, l;
              if (null == b) return !1;
              L[b._gsTweenID] && _(), this.vars.css || b.style && b !== a && b.nodeType && T.css && this.vars.autoCSS !== !1 && J(this.vars, b);
              for (g in this.vars)
                  if (l = this.vars[g], W[g]) l && (l instanceof Array || l.push && q(l)) && -1 !== l.join("").indexOf("{self}") && (this.vars[g] = l = this._swapSelfInParams(l, this));
                  else if (T[g] && (j = new T[g])._onInitTween(b, this.vars[g], this, f)) {
                  for (this._firstPT = k = {
                          _next: this._firstPT,
                          t: j,
                          p: "setRatio",
                          s: 0,
                          c: 1,
                          f: 1,
                          n: g,
                          pg: 1,
                          pr: j._priority,
                          m: 0
                      }, h = j._overwriteProps.length; --h > -1;) c[j._overwriteProps[h]] = this._firstPT;
                  (j._priority || j._onInitAllProps) && (i = !0), (j._onDisable || j._onEnable) && (this._notifyPluginsOfEnabled = !0), k._next && (k._next._prev = k)
              } else c[g] = R.call(this, b, g, "get", l, g, 0, null, this.vars.stringFilter, f);
              return e && this._kill(e, b) ? this._initProps(b, c, d, e, f) : this._overwrite > 1 && this._firstPT && d.length > 1 && ca(b, this, c, this._overwrite, d) ? (this._kill(c, b), this._initProps(b, c, d, e, f)) : (this._firstPT && (this.vars.lazy !== !1 && this._duration || this.vars.lazy && !this._duration) && (L[b._gsTweenID] = !0), i)
          }, i.render = function (a, b, c) {
              var d, e, f, g, h = this,
                  i = h._time,
                  j = h._duration,
                  k = h._rawPrevTime;
              if (a >= j - n && a >= 0) h._totalTime = h._time = j, h.ratio = h._ease._calcEnd ? h._ease.getRatio(1) : 1, h._reversed || (d = !0, e = "onComplete", c = c || h._timeline.autoRemoveChildren), 0 === j && (h._initted || !h.vars.lazy || c) && (h._startTime === h._timeline._duration && (a = 0), (0 > k || 0 >= a && a >= -n || k === n && "isPause" !== h.data) && k !== a && (c = !0, k > n && (e = "onReverseComplete")), h._rawPrevTime = g = !b || a || k === a ? a : n);
              else if (n > a) h._totalTime = h._time = 0, h.ratio = h._ease._calcEnd ? h._ease.getRatio(0) : 0, (0 !== i || 0 === j && k > 0) && (e = "onReverseComplete", d = h._reversed), a > -n ? a = 0 : 0 > a && (h._active = !1, 0 === j && (h._initted || !h.vars.lazy || c) && (k >= 0 && (k !== n || "isPause" !== h.data) && (c = !0), h._rawPrevTime = g = !b || a || k === a ? a : n)), (!h._initted || h._startAt && h._startAt.progress()) && (c = !0);
              else if (h._totalTime = h._time = a, h._easeType) {
                  var l = a / j,
                      m = h._easeType,
                      o = h._easePower;
                  (1 === m || 3 === m && l >= .5) && (l = 1 - l), 3 === m && (l *= 2), 1 === o ? l *= l : 2 === o ? l *= l * l : 3 === o ? l *= l * l * l : 4 === o && (l *= l * l * l * l), h.ratio = 1 === m ? 1 - l : 2 === m ? l : .5 > a / j ? l / 2 : 1 - l / 2
              } else h.ratio = h._ease.getRatio(a / j);
              if (h._time !== i || c) {
                  if (!h._initted) {
                      if (h._init(), !h._initted || h._gc) return;
                      if (!c && h._firstPT && (h.vars.lazy !== !1 && h._duration || h.vars.lazy && !h._duration)) return h._time = h._totalTime = i, h._rawPrevTime = k, K.push(h), void(h._lazy = [a, b]);
                      h._time && !d ? h.ratio = h._ease.getRatio(h._time / j) : d && h._ease._calcEnd && (h.ratio = h._ease.getRatio(0 === h._time ? 0 : 1))
                  }
                  for (h._lazy !== !1 && (h._lazy = !1), h._active || !h._paused && h._time !== i && a >= 0 && (h._active = !0), 0 === i && (h._startAt && (a >= 0 ? h._startAt.render(a, !0, c) : e || (e = "_dummyGS")), h.vars.onStart && (0 !== h._time || 0 === j) && (b || h._callback("onStart"))), f = h._firstPT; f;) f.f ? f.t[f.p](f.c * h.ratio + f.s) : f.t[f.p] = f.c * h.ratio + f.s, f = f._next;
                  h._onUpdate && (0 > a && h._startAt && a !== -1e-4 && h._startAt.render(a, !0, c), b || (h._time !== i || d || c) && h._callback("onUpdate")), e && (!h._gc || c) && (0 > a && h._startAt && !h._onUpdate && a !== -1e-4 && h._startAt.render(a, !0, c), d && (h._timeline.autoRemoveChildren && h._enabled(!1, !1), h._active = !1), !b && h.vars[e] && h._callback(e), 0 === j && h._rawPrevTime === n && g !== n && (h._rawPrevTime = 0))
              }
          }, i._kill = function (a, b, c) {
              if ("all" === a && (a = null), null == a && (null == b || b === this.target)) return this._lazy = !1, this._enabled(!1, !1);
              b = "string" != typeof b ? b || this._targets || this.target : H.selector(b) || b;
              var d, e, f, g, h, i, j, k, l, m = c && this._time && c._startTime === this._startTime && this._timeline === c._timeline,
                  n = this._firstPT;
              if ((q(b) || I(b)) && "number" != typeof b[0])
                  for (d = b.length; --d > -1;) this._kill(a, b[d], c) && (i = !0);
              else {
                  if (this._targets) {
                      for (d = this._targets.length; --d > -1;)
                          if (b === this._targets[d]) {
                              h = this._propLookup[d] || {}, this._overwrittenProps = this._overwrittenProps || [], e = this._overwrittenProps[d] = a ? this._overwrittenProps[d] || {} : "all";
                              break
                          }
                  } else {
                      if (b !== this.target) return !1;
                      h = this._propLookup, e = this._overwrittenProps = a ? this._overwrittenProps || {} : "all"
                  }
                  if (h) {
                      if (j = a || h, k = a !== e && "all" !== e && a !== h && ("object" != typeof a || !a._tempKill), c && (H.onOverwrite || this.vars.onOverwrite)) {
                          for (f in j) h[f] && (l || (l = []), l.push(f));
                          if ((l || !a) && !ba(this, c, b, l)) return !1
                      }
                      for (f in j)(g = h[f]) && (m && (g.f ? g.t[g.p](g.s) : g.t[g.p] = g.s, i = !0), g.pg && g.t._kill(j) && (i = !0), g.pg && 0 !== g.t._overwriteProps.length || (g._prev ? g._prev._next = g._next : g === this._firstPT && (this._firstPT = g._next), g._next && (g._next._prev = g._prev), g._next = g._prev = null), delete h[f]), k && (e[f] = 1);
                      !this._firstPT && this._initted && n && this._enabled(!1, !1)
                  }
              }
              return i
          }, i.invalidate = function () {
              this._notifyPluginsOfEnabled && H._onPluginEvent("_onDisable", this);
              var a = this._time;
              return this._firstPT = this._overwrittenProps = this._startAt = this._onUpdate = null, this._notifyPluginsOfEnabled = this._active = this._lazy = !1, this._propLookup = this._targets ? {} : [], E.prototype.invalidate.call(this), this.vars.immediateRender && (this._time = -n, this.render(a, !1, this.vars.lazy !== !1)), this
          }, i._enabled = function (a, b) {
              if (k || j.wake(), a && this._gc) {
                  var c, d = this._targets;
                  if (d)
                      for (c = d.length; --c > -1;) this._siblings[c] = aa(d[c], this, !0);
                  else this._siblings = aa(this.target, this, !0)
              }
              return E.prototype._enabled.call(this, a, b), this._notifyPluginsOfEnabled && this._firstPT ? H._onPluginEvent(a ? "_onEnable" : "_onDisable", this) : !1
          }, H.to = function (a, b, c) {
              return new H(a, b, c)
          }, H.from = function (a, b, c) {
              return c.runBackwards = !0, c.immediateRender = 0 != c.immediateRender, new H(a, b, c)
          }, H.fromTo = function (a, b, c, d) {
              return d.startAt = c, d.immediateRender = 0 != d.immediateRender && 0 != c.immediateRender, new H(a, b, d)
          }, H.delayedCall = function (a, b, c, d, e) {
              return new H(b, 0, {
                  delay: a,
                  onComplete: b,
                  onCompleteParams: c,
                  callbackScope: d,
                  onReverseComplete: b,
                  onReverseCompleteParams: c,
                  immediateRender: !1,
                  lazy: !1,
                  useFrames: e,
                  overwrite: 0
              })
          }, H.set = function (a, b) {
              return new H(a, 0, b)
          }, H.getTweensOf = function (a, b) {
              if (null == a) return [];
              a = "string" != typeof a ? a : H.selector(a) || a;
              var c, d, e, f;
              if ((q(a) || I(a)) && "number" != typeof a[0]) {
                  for (c = a.length, d = []; --c > -1;) d = d.concat(H.getTweensOf(a[c], b));
                  for (c = d.length; --c > -1;)
                      for (f = d[c], e = c; --e > -1;) f === d[e] && d.splice(c, 1)
              } else if (a._gsTweenID)
                  for (d = aa(a).concat(), c = d.length; --c > -1;)(d[c]._gc || b && !d[c].isActive()) && d.splice(c, 1);
              return d || []
          }, H.killTweensOf = H.killDelayedCallsTo = function (a, b, c) {
              "object" == typeof b && (c = b, b = !1);
              for (var d = H.getTweensOf(a, b), e = d.length; --e > -1;) d[e]._kill(c, a)
          };
          var ea = u("plugins.TweenPlugin", function (a, b) {
              this._overwriteProps = (a || "").split(","), this._propName = this._overwriteProps[0], this._priority = b || 0, this._super = ea.prototype
          }, !0);
          if (i = ea.prototype, ea.version = "1.19.0", ea.API = 2, i._firstPT = null, i._addTween = R, i.setRatio = O, i._kill = function (a) {
                  var b, c = this._overwriteProps,
                      d = this._firstPT;
                  if (null != a[this._propName]) this._overwriteProps = [];
                  else
                      for (b = c.length; --b > -1;) null != a[c[b]] && c.splice(b, 1);
                  for (; d;) null != a[d.n] && (d._next && (d._next._prev = d._prev), d._prev ? (d._prev._next = d._next, d._prev = null) : this._firstPT === d && (this._firstPT = d._next)), d = d._next;
                  return !1
              }, i._mod = i._roundProps = function (a) {
                  for (var b, c = this._firstPT; c;) b = a[this._propName] || null != c.n && a[c.n.split(this._propName + "_").join("")], b && "function" == typeof b && (2 === c.f ? c.t._applyPT.m = b : c.m = b), c = c._next
              }, H._onPluginEvent = function (a, b) {
                  var c, d, e, f, g, h = b._firstPT;
                  if ("_onInitAllProps" === a) {
                      for (; h;) {
                          for (g = h._next, d = e; d && d.pr > h.pr;) d = d._next;
                          (h._prev = d ? d._prev : f) ? h._prev._next = h: e = h, (h._next = d) ? d._prev = h : f = h, h = g
                      }
                      h = b._firstPT = e
                  }
                  for (; h;) h.pg && "function" == typeof h.t[a] && h.t[a]() && (c = !0), h = h._next;
                  return c
              }, ea.activate = function (a) {
                  for (var b = a.length; --b > -1;) a[b].API === ea.API && (T[(new a[b])._propName] = a[b]);
                  return !0
              }, t.plugin = function (a) {
                  if (!(a && a.propName && a.init && a.API)) throw "illegal plugin definition.";
                  var b, c = a.propName,
                      d = a.priority || 0,
                      e = a.overwriteProps,
                      f = {
                          init: "_onInitTween",
                          set: "setRatio",
                          kill: "_kill",
                          round: "_mod",
                          mod: "_mod",
                          initAll: "_onInitAllProps"
                      },
                      g = u("plugins." + c.charAt(0).toUpperCase() + c.substr(1) + "Plugin", function () {
                          ea.call(this, c, d), this._overwriteProps = e || []
                      }, a.global === !0),
                      h = g.prototype = new ea(c);
                  h.constructor = g, g.API = a.API;
                  for (b in f) "function" == typeof a[b] && (h[f[b]] = a[b]);
                  return g.version = a.version, ea.activate([g]), g
              }, g = a._gsQueue) {
              for (h = 0; h < g.length; h++) g[h]();
              for (i in r) r[i].func || a.console.log("GSAP encountered missing dependency: " + i)
          }
          k = !1
      }("undefined" != typeof module && module.exports && "undefined" != typeof global ? global : this || window, "TweenMax");
  /*!
   * simpleParallax.min - simpleParallax is a simple JavaScript library that gives your website parallax animations on any images, 
   * @date: 13-06-2019 16:24:29, 
   * @version: 5.1.0,
   * @link: https://simpleparallax.com/
   */
  ! function (t, e) {
      "object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define("simpleParallax", [], e) : "object" == typeof exports ? exports.simpleParallax = e() : t.simpleParallax = e()
  }(window, function () {
      return (n = {}, s.m = i = [function (t, e, i) {
          "use strict";
  
          function n(t, e) {
              for (var i = 0; i < e.length; i++) {
                  var n = e[i];
                  n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(t, n.key, n)
              }
          }
          i.r(e);
          var s = function () {
                  function t() {
                      ! function (t, e) {
                          if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                      }(this, t), this.positions = {
                          top: 0,
                          bottom: 0,
                          height: 0
                      }
                  }
                  return function (t, e, i) {
                      e && n(t.prototype, e), i && n(t, i)
                  }(t, [{
                      key: "setViewportTop",
                      value: function () {
                          return this.positions.top = window.pageYOffset, this.positions
                      }
                  }, {
                      key: "setViewportBottom",
                      value: function () {
                          return this.positions.bottom = this.positions.top + this.positions.height, this.positions
                      }
                  }, {
                      key: "setViewportHeight",
                      value: function () {
                          return this.positions.height = document.documentElement.clientHeight, this.positions
                      }
                  }, {
                      key: "setViewportAll",
                      value: function () {
                          return this.positions.top = window.pageYOffset, this.positions.bottom = this.positions.top + this.positions.height, this.positions.height = document.documentElement.clientHeight, this.positions
                      }
                  }]), t
              }(),
              o = function (t) {
                  return NodeList.prototype.isPrototypeOf(t) || HTMLCollection.prototype.isPrototypeOf(t) ? Array.from(t) : "string" == typeof t || t instanceof String ? document.querySelectorAll(t) : [t]
              },
              r = function () {
                  for (var t, e = "transform webkitTransform mozTransform oTransform msTransform".split(" "), i = 0; void 0 === t;) t = void 0 !== document.createElement("div").style[e[i]] ? e[i] : void 0, i += 1;
                  return t
              }(),
              a = function (t) {
                  return !!t && (!!t.complete && (void 0 === t.naturalWidth || 0 !== t.naturalWidth))
              };
  
          function l(t) {
              return function (t) {
                  if (Array.isArray(t)) {
                      for (var e = 0, i = new Array(t.length); e < t.length; e++) i[e] = t[e];
                      return i
                  }
              }(t) || function (t) {
                  if (Symbol.iterator in Object(t) || "[object Arguments]" === Object.prototype.toString.call(t)) return Array.from(t)
              }(t) || function () {
                  throw new TypeError("Invalid attempt to spread non-iterable instance")
              }()
          }
  
          function u(t, e) {
              for (var i = 0; i < e.length; i++) {
                  var n = e[i];
                  n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(t, n.key, n)
              }
          }
          var h = function () {
              function i(t, e) {
                  ! function (t, e) {
                      if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                  }(this, i), this.element = t, this.elementContainer = t, this.settings = e, this.isVisible = !0, this.isInit = !1, this.oldTranslateValue = -1, this.init = this.init.bind(this), a(t) ? this.init() : this.element.addEventListener("load", this.init)
              }
              return function (t, e, i) {
                  e && u(t.prototype, e), i && u(t, i)
              }(i, [{
                  key: "init",
                  value: function () {
                      this.isInit || this.element.closest(".simpleParallax") || (!1 === this.settings.overflow && this.wrapElement(this.element), this.setStyle(), this.getElementOffset(), this.intersectionObserver(), this.getTranslateValue(), this.animate(), this.isInit = !0)
                  }
              }, {
                  key: "wrapElement",
                  value: function () {
                      var t = this.element.closest("picture") || this.element,
                          e = document.createElement("div");
                      e.classList.add("simpleParallax"), e.style.overflow = "hidden", t.parentNode.insertBefore(e, t), e.appendChild(t), this.elementContainer = e
                  }
              }, {
                  key: "unWrapElement",
                  value: function () {
                      var t = this.elementContainer;
                      t.replaceWith.apply(t, l(t.childNodes))
                  }
              }, {
                  key: "setStyle",
                  value: function () {
                      !1 === this.settings.overflow && (this.element.style[r] = "scale(".concat(this.settings.scale, ")")), 0 < this.settings.delay && (this.element.style.transition = "transform ".concat(this.settings.delay, "s ").concat(this.settings.transition)), this.element.style.willChange = "transform"
                  }
              }, {
                  key: "unSetStyle",
                  value: function () {
                      this.element.style.willChange = "", this.element.style[r] = "", this.element.style.transition = ""
                  }
              }, {
                  key: "getElementOffset",
                  value: function () {
                      var t = this.elementContainer.getBoundingClientRect();
                      this.elementHeight = t.height, this.elementTop = t.top + d.positions.top, this.elementBottom = this.elementHeight + this.elementTop
                  }
              }, {
                  key: "buildThresholdList",
                  value: function () {
                      for (var t = [], e = 1; e <= this.elementHeight; e++) {
                          var i = e / this.elementHeight;
                          t.push(i)
                      }
                      return t
                  }
              }, {
                  key: "intersectionObserver",
                  value: function () {
                      var t = {
                          root: null,
                          threshold: this.buildThresholdList()
                      };
                      this.observer = new IntersectionObserver(this.intersectionObserverCallback.bind(this), t), this.observer.observe(this.element)
                  }
              }, {
                  key: "intersectionObserverCallback",
                  value: function (t) {
                      for (var e = t.length - 1; 0 <= e; e--) t[e].isIntersecting ? this.isVisible = !0 : this.isVisible = !1
                  }
              }, {
                  key: "checkIfVisible",
                  value: function () {
                      return this.elementBottom > d.positions.top && this.elementTop < d.positions.bottom
                  }
              }, {
                  key: "getRangeMax",
                  value: function () {
                      var t = this.element.clientHeight;
                      this.rangeMax = t * this.settings.scale - t
                  }
              }, {
                  key: "getTranslateValue",
                  value: function () {
                      var t = ((d.positions.bottom - this.elementTop) / ((d.positions.height + this.elementHeight) / 100)).toFixed(1);
                      return t = Math.min(100, Math.max(0, t)), this.oldPercentage !== t && (this.rangeMax || this.getRangeMax(), this.translateValue = (t / 100 * this.rangeMax - this.rangeMax / 2).toFixed(0), this.oldTranslateValue !== this.translateValue && (this.oldPercentage = t, this.oldTranslateValue = this.translateValue, !0))
                  }
              }, {
                  key: "animate",
                  value: function () {
                      var t, e = 0,
                          i = 0;
                      (this.settings.orientation.includes("left") || this.settings.orientation.includes("right")) && (i = "".concat(this.settings.orientation.includes("left") ? -1 * this.translateValue : this.translateValue, "px")), (this.settings.orientation.includes("up") || this.settings.orientation.includes("down")) && (e = "".concat(this.settings.orientation.includes("up") ? -1 * this.translateValue : this.translateValue, "px")), t = !1 === this.settings.overflow ? "translate3d(".concat(i, ", ").concat(e, ", 0) scale(").concat(this.settings.scale, ")") : "translate3d(".concat(i, ", ").concat(e, ", 0)"), this.element.style[r] = t
                  }
              }]), i
          }();
  
          function c(t, e) {
              for (var i = 0; i < e.length; i++) {
                  var n = e[i];
                  n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(t, n.key, n)
              }
          }
          i.d(e, "viewport", function () {
              return d
          }), i.d(e, "default", function () {
              return b
          });
          var f, p, m, d = new s,
              g = !0,
              v = !1,
              y = [],
              b = function () {
                  function i(t, e) {
                      ! function (t, e) {
                          if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
                      }(this, i), t && (this.elements = o(t), this.defaults = {
                          delay: .4,
                          orientation: "up",
                          scale: 1.3,
                          overflow: !1,
                          transition: "cubic-bezier(0,0,0,1)",
                          breakpoint: !1
                      }, this.settings = Object.assign(this.defaults, e), this.settings.breakpoint && document.documentElement.clientWidth <= this.settings.breakpoint || ("IntersectionObserver" in window || (g = !1), this.lastPosition = -1, this.resizeIsDone = this.resizeIsDone.bind(this), this.handleResize = this.handleResize.bind(this), this.proceedRequestAnimationFrame = this.proceedRequestAnimationFrame.bind(this), this.init()))
                  }
                  return function (t, e, i) {
                      e && c(t.prototype, e), i && c(t, i)
                  }(i, [{
                      key: "init",
                      value: function () {
                          d.setViewportAll();
                          for (var t = this.elements.length - 1; 0 <= t; t--) {
                              var e = new h(this.elements[t], this.settings);
                              y.push(e)
                          }
                          f = y.length, v || (this.proceedRequestAnimationFrame(), window.addEventListener("resize", this.resizeIsDone), v = !0)
                      }
                  }, {
                      key: "resizeIsDone",
                      value: function () {
                          clearTimeout(m), m = setTimeout(this.handleResize, 500)
                      }
                  }, {
                      key: "handleResize",
                      value: function () {
                          d.setViewportAll(), this.settings.breakpoint && document.documentElement.clientWidth <= this.settings.breakpoint && this.destroy();
                          for (var t = f - 1; 0 <= t; t--) y[t].getElementOffset(), y[t].getRangeMax();
                          this.lastPosition = -1
                      }
                  }, {
                      key: "proceedRequestAnimationFrame",
                      value: function () {
                          if (d.setViewportTop(), this.lastPosition !== d.positions.top) {
                              d.setViewportBottom();
                              for (var t = f - 1; 0 <= t; t--) this.proceedElement(y[t]);
                              p = window.requestAnimationFrame(this.proceedRequestAnimationFrame), this.lastPosition = d.positions.top
                          } else p = window.requestAnimationFrame(this.proceedRequestAnimationFrame)
                      }
                  }, {
                      key: "proceedElement",
                      value: function (t) {
                          (g ? t.isVisible : t.checkIfVisible()) && t.getTranslateValue() && t.animate()
                      }
                  }, {
                      key: "destroy",
                      value: function () {
                          var e = this,
                              i = [];
                          y = y.filter(function (t) {
                              if (!e.elements.includes(t.element)) return t;
                              i.push(t)
                          });
                          for (var t = i.length - 1; 0 <= t; t--) i[t].unSetStyle(), !1 === this.settings.overflow && i[t].unWrapElement();
                          (f = y.length) || (window.cancelAnimationFrame(p), window.removeEventListener("resize", this.handleResize))
                      }
                  }]), i
              }()
      }], s.c = n, s.d = function (t, e, i) {
          s.o(t, e) || Object.defineProperty(t, e, {
              enumerable: !0,
              get: i
          })
      }, s.r = function (t) {
          "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
              value: "Module"
          }), Object.defineProperty(t, "__esModule", {
              value: !0
          })
      }, s.t = function (e, t) {
          if (1 & t && (e = s(e)), 8 & t) return e;
          if (4 & t && "object" == typeof e && e && e.__esModule) return e;
          var i = Object.create(null);
          if (s.r(i), Object.defineProperty(i, "default", {
                  enumerable: !0,
                  value: e
              }), 2 & t && "string" != typeof e)
              for (var n in e) s.d(i, n, function (t) {
                  return e[t]
              }.bind(null, n));
          return i
      }, s.n = function (t) {
          var e = t && t.__esModule ? function () {
              return t.default
          } : function () {
              return t
          };
          return s.d(e, "a", e), e
      }, s.o = function (t, e) {
          return Object.prototype.hasOwnProperty.call(t, e)
      }, s.p = "", s(s.s = 0)).default;
  
      function s(t) {
          if (n[t]) return n[t].exports;
          var e = n[t] = {
              i: t,
              l: !1,
              exports: {}
          };
          return i[t].call(e.exports, e, e.exports, s), e.l = !0, e.exports
      }
      var i, n
  });
  /**
   * Owl Carousel v2.3.4
   * Copyright 2013-2018 David Deutsch
   * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
   */
  ! function (a, b, c, d) {
      function e(b, c) {
          this.settings = null, this.options = a.extend({}, e.Defaults, c), this.$element = a(b), this._handlers = {}, this._plugins = {}, this._supress = {}, this._current = null, this._speed = null, this._coordinates = [], this._breakpoint = null, this._width = null, this._items = [], this._clones = [], this._mergers = [], this._widths = [], this._invalidated = {}, this._pipe = [], this._drag = {
              time: null,
              target: null,
              pointer: null,
              stage: {
                  start: null,
                  current: null
              },
              direction: null
          }, this._states = {
              current: {},
              tags: {
                  initializing: ["busy"],
                  animating: ["busy"],
                  dragging: ["interacting"]
              }
          }, a.each(["onResize", "onThrottledResize"], a.proxy(function (b, c) {
              this._handlers[c] = a.proxy(this[c], this)
          }, this)), a.each(e.Plugins, a.proxy(function (a, b) {
              this._plugins[a.charAt(0).toLowerCase() + a.slice(1)] = new b(this)
          }, this)), a.each(e.Workers, a.proxy(function (b, c) {
              this._pipe.push({
                  filter: c.filter,
                  run: a.proxy(c.run, this)
              })
          }, this)), this.setup(), this.initialize()
      }
      e.Defaults = {
          items: 3,
          loop: !1,
          center: !1,
          rewind: !1,
          checkVisibility: !0,
          mouseDrag: !0,
          touchDrag: !0,
          pullDrag: !0,
          freeDrag: !1,
          margin: 0,
          stagePadding: 0,
          merge: !1,
          mergeFit: !0,
          autoWidth: !1,
          startPosition: 0,
          rtl: !1,
          smartSpeed: 250,
          fluidSpeed: !1,
          dragEndSpeed: !1,
          responsive: {},
          responsiveRefreshRate: 200,
          responsiveBaseElement: b,
          fallbackEasing: "swing",
          slideTransition: "",
          info: !1,
          nestedItemSelector: !1,
          itemElement: "div",
          stageElement: "div",
          refreshClass: "owl-refresh",
          loadedClass: "owl-loaded",
          loadingClass: "owl-loading",
          rtlClass: "owl-rtl",
          responsiveClass: "owl-responsive",
          dragClass: "owl-drag",
          itemClass: "owl-item",
          stageClass: "owl-stage",
          stageOuterClass: "owl-stage-outer",
          grabClass: "owl-grab"
      }, e.Width = {
          Default: "default",
          Inner: "inner",
          Outer: "outer"
      }, e.Type = {
          Event: "event",
          State: "state"
      }, e.Plugins = {}, e.Workers = [{
          filter: ["width", "settings"],
          run: function () {
              this._width = this.$element.width()
          }
      }, {
          filter: ["width", "items", "settings"],
          run: function (a) {
              a.current = this._items && this._items[this.relative(this._current)]
          }
      }, {
          filter: ["items", "settings"],
          run: function () {
              this.$stage.children(".cloned").remove()
          }
      }, {
          filter: ["width", "items", "settings"],
          run: function (a) {
              var b = this.settings.margin || "",
                  c = !this.settings.autoWidth,
                  d = this.settings.rtl,
                  e = {
                      width: "auto",
                      "margin-left": d ? b : "",
                      "margin-right": d ? "" : b
                  };
              !c && this.$stage.children().css(e), a.css = e
          }
      }, {
          filter: ["width", "items", "settings"],
          run: function (a) {
              var b = (this.width() / this.settings.items).toFixed(3) - this.settings.margin,
                  c = null,
                  d = this._items.length,
                  e = !this.settings.autoWidth,
                  f = [];
              for (a.items = {
                      merge: !1,
                      width: b
                  }; d--;) c = this._mergers[d], c = this.settings.mergeFit && Math.min(c, this.settings.items) || c, a.items.merge = c > 1 || a.items.merge, f[d] = e ? b * c : this._items[d].width();
              this._widths = f
          }
      }, {
          filter: ["items", "settings"],
          run: function () {
              var b = [],
                  c = this._items,
                  d = this.settings,
                  e = Math.max(2 * d.items, 4),
                  f = 2 * Math.ceil(c.length / 2),
                  g = d.loop && c.length ? d.rewind ? e : Math.max(e, f) : 0,
                  h = "",
                  i = "";
              for (g /= 2; g > 0;) b.push(this.normalize(b.length / 2, !0)), h += c[b[b.length - 1]][0].outerHTML, b.push(this.normalize(c.length - 1 - (b.length - 1) / 2, !0)), i = c[b[b.length - 1]][0].outerHTML + i, g -= 1;
              this._clones = b, a(h).addClass("cloned").appendTo(this.$stage), a(i).addClass("cloned").prependTo(this.$stage)
          }
      }, {
          filter: ["width", "items", "settings"],
          run: function () {
              for (var a = this.settings.rtl ? 1 : -1, b = this._clones.length + this._items.length, c = -1, d = 0, e = 0, f = []; ++c < b;) d = f[c - 1] || 0, e = this._widths[this.relative(c)] + this.settings.margin, f.push(d + e * a);
              this._coordinates = f
          }
      }, {
          filter: ["width", "items", "settings"],
          run: function () {
              var a = this.settings.stagePadding,
                  b = this._coordinates,
                  c = {
                      width: Math.ceil(Math.abs(b[b.length - 1])) + 2 * a,
                      "padding-left": a || "",
                      "padding-right": a || ""
                  };
              this.$stage.css(c)
          }
      }, {
          filter: ["width", "items", "settings"],
          run: function (a) {
              var b = this._coordinates.length,
                  c = !this.settings.autoWidth,
                  d = this.$stage.children();
              if (c && a.items.merge)
                  for (; b--;) a.css.width = this._widths[this.relative(b)], d.eq(b).css(a.css);
              else c && (a.css.width = a.items.width, d.css(a.css))
          }
      }, {
          filter: ["items"],
          run: function () {
              this._coordinates.length < 1 && this.$stage.removeAttr("style")
          }
      }, {
          filter: ["width", "items", "settings"],
          run: function (a) {
              a.current = a.current ? this.$stage.children().index(a.current) : 0, a.current = Math.max(this.minimum(), Math.min(this.maximum(), a.current)), this.reset(a.current)
          }
      }, {
          filter: ["position"],
          run: function () {
              this.animate(this.coordinates(this._current))
          }
      }, {
          filter: ["width", "position", "items", "settings"],
          run: function () {
              var a, b, c, d, e = this.settings.rtl ? 1 : -1,
                  f = 2 * this.settings.stagePadding,
                  g = this.coordinates(this.current()) + f,
                  h = g + this.width() * e,
                  i = [];
              for (c = 0, d = this._coordinates.length; c < d; c++) a = this._coordinates[c - 1] || 0, b = Math.abs(this._coordinates[c]) + f * e, (this.op(a, "<=", g) && this.op(a, ">", h) || this.op(b, "<", g) && this.op(b, ">", h)) && i.push(c);
              this.$stage.children(".active").removeClass("active"), this.$stage.children(":eq(" + i.join("), :eq(") + ")").addClass("active"), this.$stage.children(".center").removeClass("center"), this.settings.center && this.$stage.children().eq(this.current()).addClass("center")
          }
      }], e.prototype.initializeStage = function () {
          this.$stage = this.$element.find("." + this.settings.stageClass), this.$stage.length || (this.$element.addClass(this.options.loadingClass), this.$stage = a("<" + this.settings.stageElement + ">", {
              class: this.settings.stageClass
          }).wrap(a("<div/>", {
              class: this.settings.stageOuterClass
          })), this.$element.append(this.$stage.parent()))
      }, e.prototype.initializeItems = function () {
          var b = this.$element.find(".owl-item");
          if (b.length) return this._items = b.get().map(function (b) {
              return a(b)
          }), this._mergers = this._items.map(function () {
              return 1
          }), void this.refresh();
          this.replace(this.$element.children().not(this.$stage.parent())), this.isVisible() ? this.refresh() : this.invalidate("width"), this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass)
      }, e.prototype.initialize = function () {
          if (this.enter("initializing"), this.trigger("initialize"), this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl), this.settings.autoWidth && !this.is("pre-loading")) {
              var a, b, c;
              a = this.$element.find("img"), b = this.settings.nestedItemSelector ? "." + this.settings.nestedItemSelector : d, c = this.$element.children(b).width(), a.length && c <= 0 && this.preloadAutoWidthImages(a)
          }
          this.initializeStage(), this.initializeItems(), this.registerEventHandlers(), this.leave("initializing"), this.trigger("initialized")
      }, e.prototype.isVisible = function () {
          return !this.settings.checkVisibility || this.$element.is(":visible")
      }, e.prototype.setup = function () {
          var b = this.viewport(),
              c = this.options.responsive,
              d = -1,
              e = null;
          c ? (a.each(c, function (a) {
              a <= b && a > d && (d = Number(a))
          }), e = a.extend({}, this.options, c[d]), "function" == typeof e.stagePadding && (e.stagePadding = e.stagePadding()), delete e.responsive, e.responsiveClass && this.$element.attr("class", this.$element.attr("class").replace(new RegExp("(" + this.options.responsiveClass + "-)\\S+\\s", "g"), "$1" + d))) : e = a.extend({}, this.options), this.trigger("change", {
              property: {
                  name: "settings",
                  value: e
              }
          }), this._breakpoint = d, this.settings = e, this.invalidate("settings"), this.trigger("changed", {
              property: {
                  name: "settings",
                  value: this.settings
              }
          })
      }, e.prototype.optionsLogic = function () {
          this.settings.autoWidth && (this.settings.stagePadding = !1, this.settings.merge = !1)
      }, e.prototype.prepare = function (b) {
          var c = this.trigger("prepare", {
              content: b
          });
          return c.data || (c.data = a("<" + this.settings.itemElement + "/>").addClass(this.options.itemClass).append(b)), this.trigger("prepared", {
              content: c.data
          }), c.data
      }, e.prototype.update = function () {
          for (var b = 0, c = this._pipe.length, d = a.proxy(function (a) {
                  return this[a]
              }, this._invalidated), e = {}; b < c;)(this._invalidated.all || a.grep(this._pipe[b].filter, d).length > 0) && this._pipe[b].run(e), b++;
          this._invalidated = {}, !this.is("valid") && this.enter("valid")
      }, e.prototype.width = function (a) {
          switch (a = a || e.Width.Default) {
              case e.Width.Inner:
              case e.Width.Outer:
                  return this._width;
              default:
                  return this._width - 2 * this.settings.stagePadding + this.settings.margin
          }
      }, e.prototype.refresh = function () {
          this.enter("refreshing"), this.trigger("refresh"), this.setup(), this.optionsLogic(), this.$element.addClass(this.options.refreshClass), this.update(), this.$element.removeClass(this.options.refreshClass), this.leave("refreshing"), this.trigger("refreshed")
      }, e.prototype.onThrottledResize = function () {
          b.clearTimeout(this.resizeTimer), this.resizeTimer = b.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate)
      }, e.prototype.onResize = function () {
          return !!this._items.length && (this._width !== this.$element.width() && (!!this.isVisible() && (this.enter("resizing"), this.trigger("resize").isDefaultPrevented() ? (this.leave("resizing"), !1) : (this.invalidate("width"), this.refresh(), this.leave("resizing"), void this.trigger("resized")))))
      }, e.prototype.registerEventHandlers = function () {
          a.support.transition && this.$stage.on(a.support.transition.end + ".owl.core", a.proxy(this.onTransitionEnd, this)), !1 !== this.settings.responsive && this.on(b, "resize", this._handlers.onThrottledResize), this.settings.mouseDrag && (this.$element.addClass(this.options.dragClass), this.$stage.on("mousedown.owl.core", a.proxy(this.onDragStart, this)), this.$stage.on("dragstart.owl.core selectstart.owl.core", function () {
              return !1
          })), this.settings.touchDrag && (this.$stage.on("touchstart.owl.core", a.proxy(this.onDragStart, this)), this.$stage.on("touchcancel.owl.core", a.proxy(this.onDragEnd, this)))
      }, e.prototype.onDragStart = function (b) {
          var d = null;
          3 !== b.which && (a.support.transform ? (d = this.$stage.css("transform").replace(/.*\(|\)| /g, "").split(","), d = {
              x: d[16 === d.length ? 12 : 4],
              y: d[16 === d.length ? 13 : 5]
          }) : (d = this.$stage.position(), d = {
              x: this.settings.rtl ? d.left + this.$stage.width() - this.width() + this.settings.margin : d.left,
              y: d.top
          }), this.is("animating") && (a.support.transform ? this.animate(d.x) : this.$stage.stop(), this.invalidate("position")), this.$element.toggleClass(this.options.grabClass, "mousedown" === b.type), this.speed(0), this._drag.time = (new Date).getTime(), this._drag.target = a(b.target), this._drag.stage.start = d, this._drag.stage.current = d, this._drag.pointer = this.pointer(b), a(c).on("mouseup.owl.core touchend.owl.core", a.proxy(this.onDragEnd, this)), a(c).one("mousemove.owl.core touchmove.owl.core", a.proxy(function (b) {
              var d = this.difference(this._drag.pointer, this.pointer(b));
              a(c).on("mousemove.owl.core touchmove.owl.core", a.proxy(this.onDragMove, this)), Math.abs(d.x) < Math.abs(d.y) && this.is("valid") || (b.preventDefault(), this.enter("dragging"), this.trigger("drag"))
          }, this)))
      }, e.prototype.onDragMove = function (a) {
          var b = null,
              c = null,
              d = null,
              e = this.difference(this._drag.pointer, this.pointer(a)),
              f = this.difference(this._drag.stage.start, e);
          this.is("dragging") && (a.preventDefault(), this.settings.loop ? (b = this.coordinates(this.minimum()), c = this.coordinates(this.maximum() + 1) - b, f.x = ((f.x - b) % c + c) % c + b) : (b = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum()), c = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum()), d = this.settings.pullDrag ? -1 * e.x / 5 : 0, f.x = Math.max(Math.min(f.x, b + d), c + d)), this._drag.stage.current = f, this.animate(f.x))
      }, e.prototype.onDragEnd = function (b) {
          var d = this.difference(this._drag.pointer, this.pointer(b)),
              e = this._drag.stage.current,
              f = d.x > 0 ^ this.settings.rtl ? "left" : "right";
          a(c).off(".owl.core"), this.$element.removeClass(this.options.grabClass), (0 !== d.x && this.is("dragging") || !this.is("valid")) && (this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed), this.current(this.closest(e.x, 0 !== d.x ? f : this._drag.direction)), this.invalidate("position"), this.update(), this._drag.direction = f, (Math.abs(d.x) > 3 || (new Date).getTime() - this._drag.time > 300) && this._drag.target.one("click.owl.core", function () {
              return !1
          })), this.is("dragging") && (this.leave("dragging"), this.trigger("dragged"))
      }, e.prototype.closest = function (b, c) {
          var e = -1,
              f = 30,
              g = this.width(),
              h = this.coordinates();
          return this.settings.freeDrag || a.each(h, a.proxy(function (a, i) {
              return "left" === c && b > i - f && b < i + f ? e = a : "right" === c && b > i - g - f && b < i - g + f ? e = a + 1 : this.op(b, "<", i) && this.op(b, ">", h[a + 1] !== d ? h[a + 1] : i - g) && (e = "left" === c ? a + 1 : a), -1 === e
          }, this)), this.settings.loop || (this.op(b, ">", h[this.minimum()]) ? e = b = this.minimum() : this.op(b, "<", h[this.maximum()]) && (e = b = this.maximum())), e
      }, e.prototype.animate = function (b) {
          var c = this.speed() > 0;
          this.is("animating") && this.onTransitionEnd(), c && (this.enter("animating"), this.trigger("translate")), a.support.transform3d && a.support.transition ? this.$stage.css({
              transform: "translate3d(" + b + "px,0px,0px)",
              transition: this.speed() / 1e3 + "s" + (this.settings.slideTransition ? " " + this.settings.slideTransition : "")
          }) : c ? this.$stage.animate({
              left: b + "px"
          }, this.speed(), this.settings.fallbackEasing, a.proxy(this.onTransitionEnd, this)) : this.$stage.css({
              left: b + "px"
          })
      }, e.prototype.is = function (a) {
          return this._states.current[a] && this._states.current[a] > 0
      }, e.prototype.current = function (a) {
          if (a === d) return this._current;
          if (0 === this._items.length) return d;
          if (a = this.normalize(a), this._current !== a) {
              var b = this.trigger("change", {
                  property: {
                      name: "position",
                      value: a
                  }
              });
              b.data !== d && (a = this.normalize(b.data)), this._current = a, this.invalidate("position"), this.trigger("changed", {
                  property: {
                      name: "position",
                      value: this._current
                  }
              })
          }
          return this._current
      }, e.prototype.invalidate = function (b) {
          return "string" === a.type(b) && (this._invalidated[b] = !0, this.is("valid") && this.leave("valid")), a.map(this._invalidated, function (a, b) {
              return b
          })
      }, e.prototype.reset = function (a) {
          (a = this.normalize(a)) !== d && (this._speed = 0, this._current = a, this.suppress(["translate", "translated"]), this.animate(this.coordinates(a)), this.release(["translate", "translated"]))
      }, e.prototype.normalize = function (a, b) {
          var c = this._items.length,
              e = b ? 0 : this._clones.length;
          return !this.isNumeric(a) || c < 1 ? a = d : (a < 0 || a >= c + e) && (a = ((a - e / 2) % c + c) % c + e / 2), a
      }, e.prototype.relative = function (a) {
          return a -= this._clones.length / 2, this.normalize(a, !0)
      }, e.prototype.maximum = function (a) {
          var b, c, d, e = this.settings,
              f = this._coordinates.length;
          if (e.loop) f = this._clones.length / 2 + this._items.length - 1;
          else if (e.autoWidth || e.merge) {
              if (b = this._items.length)
                  for (c = this._items[--b].width(), d = this.$element.width(); b-- && !((c += this._items[b].width() + this.settings.margin) > d););
              f = b + 1
          } else f = e.center ? this._items.length - 1 : this._items.length - e.items;
          return a && (f -= this._clones.length / 2), Math.max(f, 0)
      }, e.prototype.minimum = function (a) {
          return a ? 0 : this._clones.length / 2
      }, e.prototype.items = function (a) {
          return a === d ? this._items.slice() : (a = this.normalize(a, !0), this._items[a])
      }, e.prototype.mergers = function (a) {
          return a === d ? this._mergers.slice() : (a = this.normalize(a, !0), this._mergers[a])
      }, e.prototype.clones = function (b) {
          var c = this._clones.length / 2,
              e = c + this._items.length,
              f = function (a) {
                  return a % 2 == 0 ? e + a / 2 : c - (a + 1) / 2
              };
          return b === d ? a.map(this._clones, function (a, b) {
              return f(b)
          }) : a.map(this._clones, function (a, c) {
              return a === b ? f(c) : null
          })
      }, e.prototype.speed = function (a) {
          return a !== d && (this._speed = a), this._speed
      }, e.prototype.coordinates = function (b) {
          var c, e = 1,
              f = b - 1;
          return b === d ? a.map(this._coordinates, a.proxy(function (a, b) {
              return this.coordinates(b)
          }, this)) : (this.settings.center ? (this.settings.rtl && (e = -1, f = b + 1), c = this._coordinates[b], c += (this.width() - c + (this._coordinates[f] || 0)) / 2 * e) : c = this._coordinates[f] || 0, c = Math.ceil(c))
      }, e.prototype.duration = function (a, b, c) {
          return 0 === c ? 0 : Math.min(Math.max(Math.abs(b - a), 1), 6) * Math.abs(c || this.settings.smartSpeed)
      }, e.prototype.to = function (a, b) {
          var c = this.current(),
              d = null,
              e = a - this.relative(c),
              f = (e > 0) - (e < 0),
              g = this._items.length,
              h = this.minimum(),
              i = this.maximum();
          this.settings.loop ? (!this.settings.rewind && Math.abs(e) > g / 2 && (e += -1 * f * g), a = c + e, (d = ((a - h) % g + g) % g + h) !== a && d - e <= i && d - e > 0 && (c = d - e, a = d, this.reset(c))) : this.settings.rewind ? (i += 1, a = (a % i + i) % i) : a = Math.max(h, Math.min(i, a)), this.speed(this.duration(c, a, b)), this.current(a), this.isVisible() && this.update()
      }, e.prototype.next = function (a) {
          a = a || !1, this.to(this.relative(this.current()) + 1, a)
      }, e.prototype.prev = function (a) {
          a = a || !1, this.to(this.relative(this.current()) - 1, a)
      }, e.prototype.onTransitionEnd = function (a) {
          if (a !== d && (a.stopPropagation(), (a.target || a.srcElement || a.originalTarget) !== this.$stage.get(0))) return !1;
          this.leave("animating"), this.trigger("translated")
      }, e.prototype.viewport = function () {
          var d;
          return this.options.responsiveBaseElement !== b ? d = a(this.options.responsiveBaseElement).width() : b.innerWidth ? d = b.innerWidth : c.documentElement && c.documentElement.clientWidth ? d = c.documentElement.clientWidth : console.warn("Can not detect viewport width."), d
      }, e.prototype.replace = function (b) {
          this.$stage.empty(), this._items = [], b && (b = b instanceof jQuery ? b : a(b)), this.settings.nestedItemSelector && (b = b.find("." + this.settings.nestedItemSelector)), b.filter(function () {
              return 1 === this.nodeType
          }).each(a.proxy(function (a, b) {
              b = this.prepare(b), this.$stage.append(b), this._items.push(b), this._mergers.push(1 * b.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1)
          }, this)), this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0), this.invalidate("items")
      }, e.prototype.add = function (b, c) {
          var e = this.relative(this._current);
          c = c === d ? this._items.length : this.normalize(c, !0), b = b instanceof jQuery ? b : a(b), this.trigger("add", {
              content: b,
              position: c
          }), b = this.prepare(b), 0 === this._items.length || c === this._items.length ? (0 === this._items.length && this.$stage.append(b), 0 !== this._items.length && this._items[c - 1].after(b), this._items.push(b), this._mergers.push(1 * b.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1)) : (this._items[c].before(b), this._items.splice(c, 0, b), this._mergers.splice(c, 0, 1 * b.find("[data-merge]").addBack("[data-merge]").attr("data-merge") || 1)), this._items[e] && this.reset(this._items[e].index()), this.invalidate("items"), this.trigger("added", {
              content: b,
              position: c
          })
      }, e.prototype.remove = function (a) {
          (a = this.normalize(a, !0)) !== d && (this.trigger("remove", {
              content: this._items[a],
              position: a
          }), this._items[a].remove(), this._items.splice(a, 1), this._mergers.splice(a, 1), this.invalidate("items"), this.trigger("removed", {
              content: null,
              position: a
          }))
      }, e.prototype.preloadAutoWidthImages = function (b) {
          b.each(a.proxy(function (b, c) {
              this.enter("pre-loading"), c = a(c), a(new Image).one("load", a.proxy(function (a) {
                  c.attr("src", a.target.src), c.css("opacity", 1), this.leave("pre-loading"), !this.is("pre-loading") && !this.is("initializing") && this.refresh()
              }, this)).attr("src", c.attr("src") || c.attr("data-src") || c.attr("data-src-retina"))
          }, this))
      }, e.prototype.destroy = function () {
          this.$element.off(".owl.core"), this.$stage.off(".owl.core"), a(c).off(".owl.core"), !1 !== this.settings.responsive && (b.clearTimeout(this.resizeTimer), this.off(b, "resize", this._handlers.onThrottledResize));
          for (var d in this._plugins) this._plugins[d].destroy();
          this.$stage.children(".cloned").remove(), this.$stage.unwrap(), this.$stage.children().contents().unwrap(), this.$stage.children().unwrap(), this.$stage.remove(), this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class", this.$element.attr("class").replace(new RegExp(this.options.responsiveClass + "-\\S+\\s", "g"), "")).removeData("owl.carousel")
      }, e.prototype.op = function (a, b, c) {
          var d = this.settings.rtl;
          switch (b) {
              case "<":
                  return d ? a > c : a < c;
              case ">":
                  return d ? a < c : a > c;
              case ">=":
                  return d ? a <= c : a >= c;
              case "<=":
                  return d ? a >= c : a <= c
          }
      }, e.prototype.on = function (a, b, c, d) {
          a.addEventListener ? a.addEventListener(b, c, d) : a.attachEvent && a.attachEvent("on" + b, c)
      }, e.prototype.off = function (a, b, c, d) {
          a.removeEventListener ? a.removeEventListener(b, c, d) : a.detachEvent && a.detachEvent("on" + b, c)
      }, e.prototype.trigger = function (b, c, d, f, g) {
          var h = {
                  item: {
                      count: this._items.length,
                      index: this.current()
                  }
              },
              i = a.camelCase(a.grep(["on", b, d], function (a) {
                  return a
              }).join("-").toLowerCase()),
              j = a.Event([b, "owl", d || "carousel"].join(".").toLowerCase(), a.extend({
                  relatedTarget: this
              }, h, c));
          return this._supress[b] || (a.each(this._plugins, function (a, b) {
              b.onTrigger && b.onTrigger(j)
          }), this.register({
              type: e.Type.Event,
              name: b
          }), this.$element.trigger(j), this.settings && "function" == typeof this.settings[i] && this.settings[i].call(this, j)), j
      }, e.prototype.enter = function (b) {
          a.each([b].concat(this._states.tags[b] || []), a.proxy(function (a, b) {
              this._states.current[b] === d && (this._states.current[b] = 0), this._states.current[b]++
          }, this))
      }, e.prototype.leave = function (b) {
          a.each([b].concat(this._states.tags[b] || []), a.proxy(function (a, b) {
              this._states.current[b]--
          }, this))
      }, e.prototype.register = function (b) {
          if (b.type === e.Type.Event) {
              if (a.event.special[b.name] || (a.event.special[b.name] = {}), !a.event.special[b.name].owl) {
                  var c = a.event.special[b.name]._default;
                  a.event.special[b.name]._default = function (a) {
                      return !c || !c.apply || a.namespace && -1 !== a.namespace.indexOf("owl") ? a.namespace && a.namespace.indexOf("owl") > -1 : c.apply(this, arguments)
                  }, a.event.special[b.name].owl = !0
              }
          } else b.type === e.Type.State && (this._states.tags[b.name] ? this._states.tags[b.name] = this._states.tags[b.name].concat(b.tags) : this._states.tags[b.name] = b.tags, this._states.tags[b.name] = a.grep(this._states.tags[b.name], a.proxy(function (c, d) {
              return a.inArray(c, this._states.tags[b.name]) === d
          }, this)))
      }, e.prototype.suppress = function (b) {
          a.each(b, a.proxy(function (a, b) {
              this._supress[b] = !0
          }, this))
      }, e.prototype.release = function (b) {
          a.each(b, a.proxy(function (a, b) {
              delete this._supress[b]
          }, this))
      }, e.prototype.pointer = function (a) {
          var c = {
              x: null,
              y: null
          };
          return a = a.originalEvent || a || b.event, a = a.touches && a.touches.length ? a.touches[0] : a.changedTouches && a.changedTouches.length ? a.changedTouches[0] : a, a.pageX ? (c.x = a.pageX, c.y = a.pageY) : (c.x = a.clientX, c.y = a.clientY), c
      }, e.prototype.isNumeric = function (a) {
          return !isNaN(parseFloat(a))
      }, e.prototype.difference = function (a, b) {
          return {
              x: a.x - b.x,
              y: a.y - b.y
          }
      }, a.fn.owlCarousel = function (b) {
          var c = Array.prototype.slice.call(arguments, 1);
          return this.each(function () {
              var d = a(this),
                  f = d.data("owl.carousel");
              f || (f = new e(this, "object" == typeof b && b), d.data("owl.carousel", f), a.each(["next", "prev", "to", "destroy", "refresh", "replace", "add", "remove"], function (b, c) {
                  f.register({
                      type: e.Type.Event,
                      name: c
                  }), f.$element.on(c + ".owl.carousel.core", a.proxy(function (a) {
                      a.namespace && a.relatedTarget !== this && (this.suppress([c]), f[c].apply(this, [].slice.call(arguments, 1)), this.release([c]))
                  }, f))
              })), "string" == typeof b && "_" !== b.charAt(0) && f[b].apply(f, c)
          })
      }, a.fn.owlCarousel.Constructor = e
  }(window.Zepto || window.jQuery, window, document),
  function (a, b, c, d) {
      var e = function (b) {
          this._core = b, this._interval = null, this._visible = null, this._handlers = {
              "initialized.owl.carousel": a.proxy(function (a) {
                  a.namespace && this._core.settings.autoRefresh && this.watch()
              }, this)
          }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers)
      };
      e.Defaults = {
          autoRefresh: !0,
          autoRefreshInterval: 500
      }, e.prototype.watch = function () {
          this._interval || (this._visible = this._core.isVisible(), this._interval = b.setInterval(a.proxy(this.refresh, this), this._core.settings.autoRefreshInterval))
      }, e.prototype.refresh = function () {
          this._core.isVisible() !== this._visible && (this._visible = !this._visible, this._core.$element.toggleClass("owl-hidden", !this._visible), this._visible && this._core.invalidate("width") && this._core.refresh())
      }, e.prototype.destroy = function () {
          var a, c;
          b.clearInterval(this._interval);
          for (a in this._handlers) this._core.$element.off(a, this._handlers[a]);
          for (c in Object.getOwnPropertyNames(this)) "function" != typeof this[c] && (this[c] = null)
      }, a.fn.owlCarousel.Constructor.Plugins.AutoRefresh = e
  }(window.Zepto || window.jQuery, window, document),
  function (a, b, c, d) {
      var e = function (b) {
          this._core = b, this._loaded = [], this._handlers = {
              "initialized.owl.carousel change.owl.carousel resized.owl.carousel": a.proxy(function (b) {
                  if (b.namespace && this._core.settings && this._core.settings.lazyLoad && (b.property && "position" == b.property.name || "initialized" == b.type)) {
                      var c = this._core.settings,
                          e = c.center && Math.ceil(c.items / 2) || c.items,
                          f = c.center && -1 * e || 0,
                          g = (b.property && b.property.value !== d ? b.property.value : this._core.current()) + f,
                          h = this._core.clones().length,
                          i = a.proxy(function (a, b) {
                              this.load(b)
                          }, this);
                      for (c.lazyLoadEager > 0 && (e += c.lazyLoadEager, c.loop && (g -= c.lazyLoadEager, e++)); f++ < e;) this.load(h / 2 + this._core.relative(g)), h && a.each(this._core.clones(this._core.relative(g)), i), g++
                  }
              }, this)
          }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers)
      };
      e.Defaults = {
          lazyLoad: !1,
          lazyLoadEager: 0
      }, e.prototype.load = function (c) {
          var d = this._core.$stage.children().eq(c),
              e = d && d.find(".owl-lazy");
          !e || a.inArray(d.get(0), this._loaded) > -1 || (e.each(a.proxy(function (c, d) {
              var e, f = a(d),
                  g = b.devicePixelRatio > 1 && f.attr("data-src-retina") || f.attr("data-src") || f.attr("data-srcset");
              this._core.trigger("load", {
                  element: f,
                  url: g
              }, "lazy"), f.is("img") ? f.one("load.owl.lazy", a.proxy(function () {
                  f.css("opacity", 1), this._core.trigger("loaded", {
                      element: f,
                      url: g
                  }, "lazy")
              }, this)).attr("src", g) : f.is("source") ? f.one("load.owl.lazy", a.proxy(function () {
                  this._core.trigger("loaded", {
                      element: f,
                      url: g
                  }, "lazy")
              }, this)).attr("srcset", g) : (e = new Image, e.onload = a.proxy(function () {
                  f.css({
                      "background-image": 'url("' + g + '")',
                      opacity: "1"
                  }), this._core.trigger("loaded", {
                      element: f,
                      url: g
                  }, "lazy")
              }, this), e.src = g)
          }, this)), this._loaded.push(d.get(0)))
      }, e.prototype.destroy = function () {
          var a, b;
          for (a in this.handlers) this._core.$element.off(a, this.handlers[a]);
          for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null)
      }, a.fn.owlCarousel.Constructor.Plugins.Lazy = e
  }(window.Zepto || window.jQuery, window, document),
  function (a, b, c, d) {
      var e = function (c) {
          this._core = c, this._previousHeight = null, this._handlers = {
              "initialized.owl.carousel refreshed.owl.carousel": a.proxy(function (a) {
                  a.namespace && this._core.settings.autoHeight && this.update()
              }, this),
              "changed.owl.carousel": a.proxy(function (a) {
                  a.namespace && this._core.settings.autoHeight && "position" === a.property.name && this.update()
              }, this),
              "loaded.owl.lazy": a.proxy(function (a) {
                  a.namespace && this._core.settings.autoHeight && a.element.closest("." + this._core.settings.itemClass).index() === this._core.current() && this.update()
              }, this)
          }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers), this._intervalId = null;
          var d = this;
          a(b).on("load", function () {
              d._core.settings.autoHeight && d.update()
          }), a(b).resize(function () {
              d._core.settings.autoHeight && (null != d._intervalId && clearTimeout(d._intervalId), d._intervalId = setTimeout(function () {
                  d.update()
              }, 250))
          })
      };
      e.Defaults = {
          autoHeight: !1,
          autoHeightClass: "owl-height"
      }, e.prototype.update = function () {
          var b = this._core._current,
              c = b + this._core.settings.items,
              d = this._core.settings.lazyLoad,
              e = this._core.$stage.children().toArray().slice(b, c),
              f = [],
              g = 0;
          a.each(e, function (b, c) {
              f.push(a(c).height())
          }), g = Math.max.apply(null, f), g <= 1 && d && this._previousHeight && (g = this._previousHeight), this._previousHeight = g, this._core.$stage.parent().height(g).addClass(this._core.settings.autoHeightClass)
      }, e.prototype.destroy = function () {
          var a, b;
          for (a in this._handlers) this._core.$element.off(a, this._handlers[a]);
          for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null)
      }, a.fn.owlCarousel.Constructor.Plugins.AutoHeight = e
  }(window.Zepto || window.jQuery, window, document),
  function (a, b, c, d) {
      var e = function (b) {
          this._core = b, this._videos = {}, this._playing = null, this._handlers = {
              "initialized.owl.carousel": a.proxy(function (a) {
                  a.namespace && this._core.register({
                      type: "state",
                      name: "playing",
                      tags: ["interacting"]
                  })
              }, this),
              "resize.owl.carousel": a.proxy(function (a) {
                  a.namespace && this._core.settings.video && this.isInFullScreen() && a.preventDefault()
              }, this),
              "refreshed.owl.carousel": a.proxy(function (a) {
                  a.namespace && this._core.is("resizing") && this._core.$stage.find(".cloned .owl-video-frame").remove()
              }, this),
              "changed.owl.carousel": a.proxy(function (a) {
                  a.namespace && "position" === a.property.name && this._playing && this.stop()
              }, this),
              "prepared.owl.carousel": a.proxy(function (b) {
                  if (b.namespace) {
                      var c = a(b.content).find(".owl-video");
                      c.length && (c.css("display", "none"), this.fetch(c, a(b.content)))
                  }
              }, this)
          }, this._core.options = a.extend({}, e.Defaults, this._core.options), this._core.$element.on(this._handlers), this._core.$element.on("click.owl.video", ".owl-video-play-icon", a.proxy(function (a) {
              this.play(a)
          }, this))
      };
      e.Defaults = {
          video: !1,
          videoHeight: !1,
          videoWidth: !1
      }, e.prototype.fetch = function (a, b) {
          var c = function () {
                  return a.attr("data-vimeo-id") ? "vimeo" : a.attr("data-vzaar-id") ? "vzaar" : "youtube"
              }(),
              d = a.attr("data-vimeo-id") || a.attr("data-youtube-id") || a.attr("data-vzaar-id"),
              e = a.attr("data-width") || this._core.settings.videoWidth,
              f = a.attr("data-height") || this._core.settings.videoHeight,
              g = a.attr("href");
          if (!g) throw new Error("Missing video URL.");
          if (d = g.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com|be\-nocookie\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/), d[3].indexOf("youtu") > -1) c = "youtube";
          else if (d[3].indexOf("vimeo") > -1) c = "vimeo";
          else {
              if (!(d[3].indexOf("vzaar") > -1)) throw new Error("Video URL not supported.");
              c = "vzaar"
          }
          d = d[6], this._videos[g] = {
              type: c,
              id: d,
              width: e,
              height: f
          }, b.attr("data-video", g), this.thumbnail(a, this._videos[g])
      }, e.prototype.thumbnail = function (b, c) {
          var d, e, f, g = c.width && c.height ? "width:" + c.width + "px;height:" + c.height + "px;" : "",
              h = b.find("img"),
              i = "src",
              j = "",
              k = this._core.settings,
              l = function (c) {
                  e = '<div class="owl-video-play-icon"></div>', d = k.lazyLoad ? a("<div/>", {
                      class: "owl-video-tn " + j,
                      srcType: c
                  }) : a("<div/>", {
                      class: "owl-video-tn",
                      style: "opacity:1;background-image:url(" + c + ")"
                  }), b.after(d), b.after(e)
              };
          if (b.wrap(a("<div/>", {
                  class: "owl-video-wrapper",
                  style: g
              })), this._core.settings.lazyLoad && (i = "data-src", j = "owl-lazy"), h.length) return l(h.attr(i)), h.remove(), !1;
          "youtube" === c.type ? (f = "//img.youtube.com/vi/" + c.id + "/hqdefault.jpg", l(f)) : "vimeo" === c.type ? a.ajax({
              type: "GET",
              url: "//vimeo.com/api/v2/video/" + c.id + ".json",
              jsonp: "callback",
              dataType: "jsonp",
              success: function (a) {
                  f = a[0].thumbnail_large, l(f)
              }
          }) : "vzaar" === c.type && a.ajax({
              type: "GET",
              url: "//vzaar.com/api/videos/" + c.id + ".json",
              jsonp: "callback",
              dataType: "jsonp",
              success: function (a) {
                  f = a.framegrab_url, l(f)
              }
          })
      }, e.prototype.stop = function () {
          this._core.trigger("stop", null, "video"), this._playing.find(".owl-video-frame").remove(), this._playing.removeClass("owl-video-playing"), this._playing = null, this._core.leave("playing"), this._core.trigger("stopped", null, "video")
      }, e.prototype.play = function (b) {
          var c, d = a(b.target),
              e = d.closest("." + this._core.settings.itemClass),
              f = this._videos[e.attr("data-video")],
              g = f.width || "100%",
              h = f.height || this._core.$stage.height();
          this._playing || (this._core.enter("playing"), this._core.trigger("play", null, "video"), e = this._core.items(this._core.relative(e.index())), this._core.reset(e.index()), c = a('<iframe frameborder="0" allowfullscreen mozallowfullscreen webkitAllowFullScreen ></iframe>'), c.attr("height", h), c.attr("width", g), "youtube" === f.type ? c.attr("src", "//www.youtube.com/embed/" + f.id + "?autoplay=1&rel=0&v=" + f.id) : "vimeo" === f.type ? c.attr("src", "//player.vimeo.com/video/" + f.id + "?autoplay=1") : "vzaar" === f.type && c.attr("src", "//view.vzaar.com/" + f.id + "/player?autoplay=true"), a(c).wrap('<div class="owl-video-frame" />').insertAfter(e.find(".owl-video")), this._playing = e.addClass("owl-video-playing"))
      }, e.prototype.isInFullScreen = function () {
          var b = c.fullscreenElement || c.mozFullScreenElement || c.webkitFullscreenElement;
          return b && a(b).parent().hasClass("owl-video-frame")
      }, e.prototype.destroy = function () {
          var a, b;
          this._core.$element.off("click.owl.video");
          for (a in this._handlers) this._core.$element.off(a, this._handlers[a]);
          for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null)
      }, a.fn.owlCarousel.Constructor.Plugins.Video = e
  }(window.Zepto || window.jQuery, window, document),
  function (a, b, c, d) {
      var e = function (b) {
          this.core = b, this.core.options = a.extend({}, e.Defaults, this.core.options), this.swapping = !0, this.previous = d, this.next = d, this.handlers = {
              "change.owl.carousel": a.proxy(function (a) {
                  a.namespace && "position" == a.property.name && (this.previous = this.core.current(), this.next = a.property.value)
              }, this),
              "drag.owl.carousel dragged.owl.carousel translated.owl.carousel": a.proxy(function (a) {
                  a.namespace && (this.swapping = "translated" == a.type)
              }, this),
              "translate.owl.carousel": a.proxy(function (a) {
                  a.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn) && this.swap()
              }, this)
          }, this.core.$element.on(this.handlers)
      };
      e.Defaults = {
          animateOut: !1,
          animateIn: !1
      }, e.prototype.swap = function () {
          if (1 === this.core.settings.items && a.support.animation && a.support.transition) {
              this.core.speed(0);
              var b, c = a.proxy(this.clear, this),
                  d = this.core.$stage.children().eq(this.previous),
                  e = this.core.$stage.children().eq(this.next),
                  f = this.core.settings.animateIn,
                  g = this.core.settings.animateOut;
              this.core.current() !== this.previous && (g && (b = this.core.coordinates(this.previous) - this.core.coordinates(this.next), d.one(a.support.animation.end, c).css({
                  left: b + "px"
              }).addClass("animated owl-animated-out").addClass(g)), f && e.one(a.support.animation.end, c).addClass("animated owl-animated-in").addClass(f))
          }
      }, e.prototype.clear = function (b) {
          a(b.target).css({
              left: ""
          }).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut), this.core.onTransitionEnd()
      }, e.prototype.destroy = function () {
          var a, b;
          for (a in this.handlers) this.core.$element.off(a, this.handlers[a]);
          for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null)
      }, a.fn.owlCarousel.Constructor.Plugins.Animate = e
  }(window.Zepto || window.jQuery, window, document),
  function (a, b, c, d) {
      var e = function (b) {
          this._core = b, this._call = null, this._time = 0, this._timeout = 0, this._paused = !0, this._handlers = {
              "changed.owl.carousel": a.proxy(function (a) {
                  a.namespace && "settings" === a.property.name ? this._core.settings.autoplay ? this.play() : this.stop() : a.namespace && "position" === a.property.name && this._paused && (this._time = 0)
              }, this),
              "initialized.owl.carousel": a.proxy(function (a) {
                  a.namespace && this._core.settings.autoplay && this.play()
              }, this),
              "play.owl.autoplay": a.proxy(function (a, b, c) {
                  a.namespace && this.play(b, c)
              }, this),
              "stop.owl.autoplay": a.proxy(function (a) {
                  a.namespace && this.stop()
              }, this),
              "mouseover.owl.autoplay": a.proxy(function () {
                  this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.pause()
              }, this),
              "mouseleave.owl.autoplay": a.proxy(function () {
                  this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.play()
              }, this),
              "touchstart.owl.core": a.proxy(function () {
                  this._core.settings.autoplayHoverPause && this._core.is("rotating") && this.pause()
              }, this),
              "touchend.owl.core": a.proxy(function () {
                  this._core.settings.autoplayHoverPause && this.play()
              }, this)
          }, this._core.$element.on(this._handlers), this._core.options = a.extend({}, e.Defaults, this._core.options)
      };
      e.Defaults = {
          autoplay: !1,
          autoplayTimeout: 5e3,
          autoplayHoverPause: !1,
          autoplaySpeed: !1
      }, e.prototype._next = function (d) {
          this._call = b.setTimeout(a.proxy(this._next, this, d), this._timeout * (Math.round(this.read() / this._timeout) + 1) - this.read()), this._core.is("interacting") || c.hidden || this._core.next(d || this._core.settings.autoplaySpeed)
      }, e.prototype.read = function () {
          return (new Date).getTime() - this._time
      }, e.prototype.play = function (c, d) {
          var e;
          this._core.is("rotating") || this._core.enter("rotating"), c = c || this._core.settings.autoplayTimeout, e = Math.min(this._time % (this._timeout || c), c), this._paused ? (this._time = this.read(), this._paused = !1) : b.clearTimeout(this._call), this._time += this.read() % c - e, this._timeout = c, this._call = b.setTimeout(a.proxy(this._next, this, d), c - e)
      }, e.prototype.stop = function () {
          this._core.is("rotating") && (this._time = 0, this._paused = !0, b.clearTimeout(this._call), this._core.leave("rotating"))
      }, e.prototype.pause = function () {
          this._core.is("rotating") && !this._paused && (this._time = this.read(), this._paused = !0, b.clearTimeout(this._call))
      }, e.prototype.destroy = function () {
          var a, b;
          this.stop();
          for (a in this._handlers) this._core.$element.off(a, this._handlers[a]);
          for (b in Object.getOwnPropertyNames(this)) "function" != typeof this[b] && (this[b] = null)
      }, a.fn.owlCarousel.Constructor.Plugins.autoplay = e
  }(window.Zepto || window.jQuery, window, document),
  function (a, b, c, d) {
      "use strict";
      var e = function (b) {
          this._core = b, this._initialized = !1, this._pages = [], this._controls = {}, this._templates = [], this.$element = this._core.$element, this._overrides = {
              next: this._core.next,
              prev: this._core.prev,
              to: this._core.to
          }, this._handlers = {
              "prepared.owl.carousel": a.proxy(function (b) {
                  b.namespace && this._core.settings.dotsData && this._templates.push('<div class="' + this._core.settings.dotClass + '">' + a(b.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot") + "</div>")
              }, this),
              "added.owl.carousel": a.proxy(function (a) {
                  a.namespace && this._core.settings.dotsData && this._templates.splice(a.position, 0, this._templates.pop())
              }, this),
              "remove.owl.carousel": a.proxy(function (a) {
                  a.namespace && this._core.settings.dotsData && this._templates.splice(a.position, 1)
              }, this),
              "changed.owl.carousel": a.proxy(function (a) {
                  a.namespace && "position" == a.property.name && this.draw()
              }, this),
              "initialized.owl.carousel": a.proxy(function (a) {
                  a.namespace && !this._initialized && (this._core.trigger("initialize", null, "navigation"), this.initialize(), this.update(), this.draw(), this._initialized = !0, this._core.trigger("initialized", null, "navigation"))
              }, this),
              "refreshed.owl.carousel": a.proxy(function (a) {
                  a.namespace && this._initialized && (this._core.trigger("refresh", null, "navigation"), this.update(), this.draw(), this._core.trigger("refreshed", null, "navigation"))
              }, this)
          }, this._core.options = a.extend({}, e.Defaults, this._core.options), this.$element.on(this._handlers)
      };
      e.Defaults = {
          nav: !1,
          navText: ['<span aria-label="Previous">&#x2039;</span>', '<span aria-label="Next">&#x203a;</span>'],
          navSpeed: !1,
          navElement: 'button type="button" role="presentation"',
          navContainer: !1,
          navContainerClass: "owl-nav",
          navClass: ["owl-prev", "owl-next"],
          slideBy: 1,
          dotClass: "owl-dot",
          dotsClass: "owl-dots",
          dots: !0,
          dotsEach: !1,
          dotsData: !1,
          dotsSpeed: !1,
          dotsContainer: !1
      }, e.prototype.initialize = function () {
          var b, c = this._core.settings;
          this._controls.$relative = (c.navContainer ? a(c.navContainer) : a("<div>").addClass(c.navContainerClass).appendTo(this.$element)).addClass("disabled"), this._controls.$previous = a("<" + c.navElement + ">").addClass(c.navClass[0]).html(c.navText[0]).prependTo(this._controls.$relative).on("click", a.proxy(function (a) {
              this.prev(c.navSpeed)
          }, this)), this._controls.$next = a("<" + c.navElement + ">").addClass(c.navClass[1]).html(c.navText[1]).appendTo(this._controls.$relative).on("click", a.proxy(function (a) {
              this.next(c.navSpeed)
          }, this)), c.dotsData || (this._templates = [a('<button role="button">').addClass(c.dotClass).append(a("<span>")).prop("outerHTML")]), this._controls.$absolute = (c.dotsContainer ? a(c.dotsContainer) : a("<div>").addClass(c.dotsClass).appendTo(this.$element)).addClass("disabled"), this._controls.$absolute.on("click", "button", a.proxy(function (b) {
              var d = a(b.target).parent().is(this._controls.$absolute) ? a(b.target).index() : a(b.target).parent().index();
              b.preventDefault(), this.to(d, c.dotsSpeed)
          }, this));
          for (b in this._overrides) this._core[b] = a.proxy(this[b], this)
      }, e.prototype.destroy = function () {
          var a, b, c, d, e;
          e = this._core.settings;
          for (a in this._handlers) this.$element.off(a, this._handlers[a]);
          for (b in this._controls) "$relative" === b && e.navContainer ? this._controls[b].html("") : this._controls[b].remove();
          for (d in this.overides) this._core[d] = this._overrides[d];
          for (c in Object.getOwnPropertyNames(this)) "function" != typeof this[c] && (this[c] = null)
      }, e.prototype.update = function () {
          var a, b, c, d = this._core.clones().length / 2,
              e = d + this._core.items().length,
              f = this._core.maximum(!0),
              g = this._core.settings,
              h = g.center || g.autoWidth || g.dotsData ? 1 : g.dotsEach || g.items;
          if ("page" !== g.slideBy && (g.slideBy = Math.min(g.slideBy, g.items)), g.dots || "page" == g.slideBy)
              for (this._pages = [], a = d, b = 0, c = 0; a < e; a++) {
                  if (b >= h || 0 === b) {
                      if (this._pages.push({
                              start: Math.min(f, a - d),
                              end: a - d + h - 1
                          }), Math.min(f, a - d) === f) break;
                      b = 0, ++c
                  }
                  b += this._core.mergers(this._core.relative(a))
              }
      }, e.prototype.draw = function () {
          var b, c = this._core.settings,
              d = this._core.items().length <= c.items,
              e = this._core.relative(this._core.current()),
              f = c.loop || c.rewind;
          this._controls.$relative.toggleClass("disabled", !c.nav || d), c.nav && (this._controls.$previous.toggleClass("disabled", !f && e <= this._core.minimum(!0)), this._controls.$next.toggleClass("disabled", !f && e >= this._core.maximum(!0))), this._controls.$absolute.toggleClass("disabled", !c.dots || d), c.dots && (b = this._pages.length - this._controls.$absolute.children().length, c.dotsData && 0 !== b ? this._controls.$absolute.html(this._templates.join("")) : b > 0 ? this._controls.$absolute.append(new Array(b + 1).join(this._templates[0])) : b < 0 && this._controls.$absolute.children().slice(b).remove(), this._controls.$absolute.find(".active").removeClass("active"), this._controls.$absolute.children().eq(a.inArray(this.current(), this._pages)).addClass("active"))
      }, e.prototype.onTrigger = function (b) {
          var c = this._core.settings;
          b.page = {
              index: a.inArray(this.current(), this._pages),
              count: this._pages.length,
              size: c && (c.center || c.autoWidth || c.dotsData ? 1 : c.dotsEach || c.items)
          }
      }, e.prototype.current = function () {
          var b = this._core.relative(this._core.current());
          return a.grep(this._pages, a.proxy(function (a, c) {
              return a.start <= b && a.end >= b
          }, this)).pop()
      }, e.prototype.getPosition = function (b) {
          var c, d, e = this._core.settings;
          return "page" == e.slideBy ? (c = a.inArray(this.current(), this._pages), d = this._pages.length, b ? ++c : --c, c = this._pages[(c % d + d) % d].start) : (c = this._core.relative(this._core.current()), d = this._core.items().length, b ? c += e.slideBy : c -= e.slideBy), c
      }, e.prototype.next = function (b) {
          a.proxy(this._overrides.to, this._core)(this.getPosition(!0), b)
      }, e.prototype.prev = function (b) {
          a.proxy(this._overrides.to, this._core)(this.getPosition(!1), b)
      }, e.prototype.to = function (b, c, d) {
          var e;
          !d && this._pages.length ? (e = this._pages.length, a.proxy(this._overrides.to, this._core)(this._pages[(b % e + e) % e].start, c)) : a.proxy(this._overrides.to, this._core)(b, c)
      }, a.fn.owlCarousel.Constructor.Plugins.Navigation = e
  }(window.Zepto || window.jQuery, window, document),
  function (a, b, c, d) {
      "use strict";
      var e = function (c) {
          this._core = c, this._hashes = {}, this.$element = this._core.$element, this._handlers = {
              "initialized.owl.carousel": a.proxy(function (c) {
                  c.namespace && "URLHash" === this._core.settings.startPosition && a(b).trigger("hashchange.owl.navigation")
              }, this),
              "prepared.owl.carousel": a.proxy(function (b) {
                  if (b.namespace) {
                      var c = a(b.content).find("[data-hash]").addBack("[data-hash]").attr("data-hash");
                      if (!c) return;
                      this._hashes[c] = b.content
                  }
              }, this),
              "changed.owl.carousel": a.proxy(function (c) {
                  if (c.namespace && "position" === c.property.name) {
                      var d = this._core.items(this._core.relative(this._core.current())),
                          e = a.map(this._hashes, function (a, b) {
                              return a === d ? b : null
                          }).join();
                      if (!e || b.location.hash.slice(1) === e) return;
                      b.location.hash = e
                  }
              }, this)
          }, this._core.options = a.extend({}, e.Defaults, this._core.options), this.$element.on(this._handlers), a(b).on("hashchange.owl.navigation", a.proxy(function (a) {
              var c = b.location.hash.substring(1),
                  e = this._core.$stage.children(),
                  f = this._hashes[c] && e.index(this._hashes[c]);
              f !== d && f !== this._core.current() && this._core.to(this._core.relative(f), !1, !0)
          }, this))
      };
      e.Defaults = {
          URLhashListener: !1
      }, e.prototype.destroy = function () {
          var c, d;
          a(b).off("hashchange.owl.navigation");
          for (c in this._handlers) this._core.$element.off(c, this._handlers[c]);
          for (d in Object.getOwnPropertyNames(this)) "function" != typeof this[d] && (this[d] = null)
      }, a.fn.owlCarousel.Constructor.Plugins.Hash = e
  }(window.Zepto || window.jQuery, window, document),
  function (a, b, c, d) {
      function e(b, c) {
          var e = !1,
              f = b.charAt(0).toUpperCase() + b.slice(1);
          return a.each((b + " " + h.join(f + " ") + f).split(" "), function (a, b) {
              if (g[b] !== d) return e = !c || b, !1
          }), e
      }
  
      function f(a) {
          return e(a, !0)
      }
      var g = a("<support>").get(0).style,
          h = "Webkit Moz O ms".split(" "),
          i = {
              transition: {
                  end: {
                      WebkitTransition: "webkitTransitionEnd",
                      MozTransition: "transitionend",
                      OTransition: "oTransitionEnd",
                      transition: "transitionend"
                  }
              },
              animation: {
                  end: {
                      WebkitAnimation: "webkitAnimationEnd",
                      MozAnimation: "animationend",
                      OAnimation: "oAnimationEnd",
                      animation: "animationend"
                  }
              }
          },
          j = {
              csstransforms: function () {
                  return !!e("transform")
              },
              csstransforms3d: function () {
                  return !!e("perspective")
              },
              csstransitions: function () {
                  return !!e("transition")
              },
              cssanimations: function () {
                  return !!e("animation")
              }
          };
      j.csstransitions() && (a.support.transition = new String(f("transition")), a.support.transition.end = i.transition.end[a.support.transition]), j.cssanimations() && (a.support.animation = new String(f("animation")), a.support.animation.end = i.animation.end[a.support.animation]), j.csstransforms() && (a.support.transform = new String(f("transform")), a.support.transform3d = j.csstransforms3d())
  }(window.Zepto || window.jQuery, window, document);
  /**!
   * easy-pie-chart
   * Lightweight plugin to render simple, animated and retina optimized pie charts
   *
   * @license 
   * @author Robert Fleischmann <rendro87@gmail.com> (http://robert-fleischmann.de)
   * @version 2.1.7
   **/
  ! function (a, b) {
      "function" == typeof define && define.amd ? define(["jquery"], function (a) {
          return b(a)
      }) : "object" == typeof exports ? module.exports = b(require("jquery")) : b(jQuery)
  }(this, function (a) {
      var b = function (a, b) {
              var c, d = document.createElement("canvas");
              a.appendChild(d), "object" == typeof G_vmlCanvasManager && G_vmlCanvasManager.initElement(d);
              var e = d.getContext("2d");
              d.width = d.height = b.size;
              var f = 1;
              window.devicePixelRatio > 1 && (f = window.devicePixelRatio, d.style.width = d.style.height = [b.size, "px"].join(""), d.width = d.height = b.size * f, e.scale(f, f)), e.translate(b.size / 2, b.size / 2), e.rotate((-0.5 + b.rotate / 180) * Math.PI);
              var g = (b.size - b.lineWidth) / 2;
              b.scaleColor && b.scaleLength && (g -= b.scaleLength + 2), Date.now = Date.now || function () {
                  return +new Date
              };
              var h = function (a, b, c) {
                      c = Math.min(Math.max(-1, c || 0), 1);
                      var d = 0 >= c ? !0 : !1;
                      e.beginPath(), e.arc(0, 0, g, 0, 2 * Math.PI * c, d), e.strokeStyle = a, e.lineWidth = b, e.stroke()
                  },
                  i = function () {
                      var a, c;
                      e.lineWidth = 1, e.fillStyle = b.scaleColor, e.save();
                      for (var d = 24; d > 0; --d) d % 6 === 0 ? (c = b.scaleLength, a = 0) : (c = .6 * b.scaleLength, a = b.scaleLength - c), e.fillRect(-b.size / 2 + a, 0, c, 1), e.rotate(Math.PI / 12);
                      e.restore()
                  },
                  j = function () {
                      return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function (a) {
                          window.setTimeout(a, 1e3 / 60)
                      }
                  }(),
                  k = function () {
                      b.scaleColor && i(), b.trackColor && h(b.trackColor, b.trackWidth || b.lineWidth, 1)
                  };
              this.getCanvas = function () {
                  return d
              }, this.getCtx = function () {
                  return e
              }, this.clear = function () {
                  e.clearRect(b.size / -2, b.size / -2, b.size, b.size)
              }, this.draw = function (a) {
                  b.scaleColor || b.trackColor ? e.getImageData && e.putImageData ? c ? e.putImageData(c, 0, 0) : (k(), c = e.getImageData(0, 0, b.size * f, b.size * f)) : (this.clear(), k()) : this.clear(), e.lineCap = b.lineCap;
                  var d;
                  d = "function" == typeof b.barColor ? b.barColor(a) : b.barColor, h(d, b.lineWidth, a / 100)
              }.bind(this), this.animate = function (a, c) {
                  var d = Date.now();
                  b.onStart(a, c);
                  var e = function () {
                      var f = Math.min(Date.now() - d, b.animate.duration),
                          g = b.easing(this, f, a, c - a, b.animate.duration);
                      this.draw(g), b.onStep(a, c, g), f >= b.animate.duration ? b.onStop(a, c) : j(e)
                  }.bind(this);
                  j(e)
              }.bind(this)
          },
          c = function (a, c) {
              var d = {
                  barColor: "#ef1e25",
                  trackColor: "#f9f9f9",
                  scaleColor: "#dfe0e0",
                  scaleLength: 5,
                  lineCap: "round",
                  lineWidth: 3,
                  trackWidth: void 0,
                  size: 110,
                  rotate: 0,
                  animate: {
                      duration: 1e3,
                      enabled: !0
                  },
                  easing: function (a, b, c, d, e) {
                      return b /= e / 2, 1 > b ? d / 2 * b * b + c : -d / 2 * (--b * (b - 2) - 1) + c
                  },
                  onStart: function (a, b) {},
                  onStep: function (a, b, c) {},
                  onStop: function (a, b) {}
              };
              if ("undefined" != typeof b) d.renderer = b;
              else {
                  if ("undefined" == typeof SVGRenderer) throw new Error("Please load either the SVG- or the CanvasRenderer");
                  d.renderer = SVGRenderer
              }
              var e = {},
                  f = 0,
                  g = function () {
                      this.el = a, this.options = e;
                      for (var b in d) d.hasOwnProperty(b) && (e[b] = c && "undefined" != typeof c[b] ? c[b] : d[b], "function" == typeof e[b] && (e[b] = e[b].bind(this)));
                      "string" == typeof e.easing && "undefined" != typeof jQuery && jQuery.isFunction(jQuery.easing[e.easing]) ? e.easing = jQuery.easing[e.easing] : e.easing = d.easing, "number" == typeof e.animate && (e.animate = {
                          duration: e.animate,
                          enabled: !0
                      }), "boolean" != typeof e.animate || e.animate || (e.animate = {
                          duration: 1e3,
                          enabled: e.animate
                      }), this.renderer = new e.renderer(a, e), this.renderer.draw(f), a.dataset && a.dataset.percent ? this.update(parseFloat(a.dataset.percent)) : a.getAttribute && a.getAttribute("data-percent") && this.update(parseFloat(a.getAttribute("data-percent")))
                  }.bind(this);
              this.update = function (a) {
                  return a = parseFloat(a), e.animate.enabled ? this.renderer.animate(f, a) : this.renderer.draw(a), f = a, this
              }.bind(this), this.disableAnimation = function () {
                  return e.animate.enabled = !1, this
              }, this.enableAnimation = function () {
                  return e.animate.enabled = !0, this
              }, g()
          };
      a.fn.easyPieChart = function (b) {
          return this.each(function () {
              var d;
              a.data(this, "easyPieChart") || (d = a.extend({}, b, a(this).data()), a.data(this, "easyPieChart", new c(this, d)))
          })
      }
  });
  /*!
  Waypoints - 4.0.1
  Copyright © 2011-2016 Caleb Troughton
  Licensed under the MIT license.
  https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
  */
  ! function () {
      "use strict";
  
      function t(o) {
          if (!o) throw new Error("No options passed to Waypoint constructor");
          if (!o.element) throw new Error("No element option passed to Waypoint constructor");
          if (!o.handler) throw new Error("No handler option passed to Waypoint constructor");
          this.key = "waypoint-" + e, this.options = t.Adapter.extend({}, t.defaults, o), this.element = this.options.element, this.adapter = new t.Adapter(this.element), this.callback = o.handler, this.axis = this.options.horizontal ? "horizontal" : "vertical", this.enabled = this.options.enabled, this.triggerPoint = null, this.group = t.Group.findOrCreate({
              name: this.options.group,
              axis: this.axis
          }), this.context = t.Context.findOrCreateByElement(this.options.context), t.offsetAliases[this.options.offset] && (this.options.offset = t.offsetAliases[this.options.offset]), this.group.add(this), this.context.add(this), i[this.key] = this, e += 1
      }
      var e = 0,
          i = {};
      t.prototype.queueTrigger = function (t) {
          this.group.queueTrigger(this, t)
      }, t.prototype.trigger = function (t) {
          this.enabled && this.callback && this.callback.apply(this, t)
      }, t.prototype.destroy = function () {
          this.context.remove(this), this.group.remove(this), delete i[this.key]
      }, t.prototype.disable = function () {
          return this.enabled = !1, this
      }, t.prototype.enable = function () {
          return this.context.refresh(), this.enabled = !0, this
      }, t.prototype.next = function () {
          return this.group.next(this)
      }, t.prototype.previous = function () {
          return this.group.previous(this)
      }, t.invokeAll = function (t) {
          var e = [];
          for (var o in i) e.push(i[o]);
          for (var n = 0, r = e.length; r > n; n++) e[n][t]()
      }, t.destroyAll = function () {
          t.invokeAll("destroy")
      }, t.disableAll = function () {
          t.invokeAll("disable")
      }, t.enableAll = function () {
          t.Context.refreshAll();
          for (var e in i) i[e].enabled = !0;
          return this
      }, t.refreshAll = function () {
          t.Context.refreshAll()
      }, t.viewportHeight = function () {
          return window.innerHeight || document.documentElement.clientHeight
      }, t.viewportWidth = function () {
          return document.documentElement.clientWidth
      }, t.adapters = [], t.defaults = {
          context: window,
          continuous: !0,
          enabled: !0,
          group: "default",
          horizontal: !1,
          offset: 0
      }, t.offsetAliases = {
          "bottom-in-view": function () {
              return this.context.innerHeight() - this.adapter.outerHeight()
          },
          "right-in-view": function () {
              return this.context.innerWidth() - this.adapter.outerWidth()
          }
      }, window.Waypoint = t
  }(),
  function () {
      "use strict";
  
      function t(t) {
          window.setTimeout(t, 1e3 / 60)
      }
  
      function e(t) {
          this.element = t, this.Adapter = n.Adapter, this.adapter = new this.Adapter(t), this.key = "waypoint-context-" + i, this.didScroll = !1, this.didResize = !1, this.oldScroll = {
              x: this.adapter.scrollLeft(),
              y: this.adapter.scrollTop()
          }, this.waypoints = {
              vertical: {},
              horizontal: {}
          }, t.waypointContextKey = this.key, o[t.waypointContextKey] = this, i += 1, n.windowContext || (n.windowContext = !0, n.windowContext = new e(window)), this.createThrottledScrollHandler(), this.createThrottledResizeHandler()
      }
      var i = 0,
          o = {},
          n = window.Waypoint,
          r = window.onload;
      e.prototype.add = function (t) {
          var e = t.options.horizontal ? "horizontal" : "vertical";
          this.waypoints[e][t.key] = t, this.refresh()
      }, e.prototype.checkEmpty = function () {
          var t = this.Adapter.isEmptyObject(this.waypoints.horizontal),
              e = this.Adapter.isEmptyObject(this.waypoints.vertical),
              i = this.element == this.element.window;
          t && e && !i && (this.adapter.off(".waypoints"), delete o[this.key])
      }, e.prototype.createThrottledResizeHandler = function () {
          function t() {
              e.handleResize(), e.didResize = !1
          }
          var e = this;
          this.adapter.on("resize.waypoints", function () {
              e.didResize || (e.didResize = !0, n.requestAnimationFrame(t))
          })
      }, e.prototype.createThrottledScrollHandler = function () {
          function t() {
              e.handleScroll(), e.didScroll = !1
          }
          var e = this;
          this.adapter.on("scroll.waypoints", function () {
              (!e.didScroll || n.isTouch) && (e.didScroll = !0, n.requestAnimationFrame(t))
          })
      }, e.prototype.handleResize = function () {
          n.Context.refreshAll()
      }, e.prototype.handleScroll = function () {
          var t = {},
              e = {
                  horizontal: {
                      newScroll: this.adapter.scrollLeft(),
                      oldScroll: this.oldScroll.x,
                      forward: "right",
                      backward: "left"
                  },
                  vertical: {
                      newScroll: this.adapter.scrollTop(),
                      oldScroll: this.oldScroll.y,
                      forward: "down",
                      backward: "up"
                  }
              };
          for (var i in e) {
              var o = e[i],
                  n = o.newScroll > o.oldScroll,
                  r = n ? o.forward : o.backward;
              for (var s in this.waypoints[i]) {
                  var a = this.waypoints[i][s];
                  if (null !== a.triggerPoint) {
                      var l = o.oldScroll < a.triggerPoint,
                          h = o.newScroll >= a.triggerPoint,
                          p = l && h,
                          u = !l && !h;
                      (p || u) && (a.queueTrigger(r), t[a.group.id] = a.group)
                  }
              }
          }
          for (var c in t) t[c].flushTriggers();
          this.oldScroll = {
              x: e.horizontal.newScroll,
              y: e.vertical.newScroll
          }
      }, e.prototype.innerHeight = function () {
          return this.element == this.element.window ? n.viewportHeight() : this.adapter.innerHeight()
      }, e.prototype.remove = function (t) {
          delete this.waypoints[t.axis][t.key], this.checkEmpty()
      }, e.prototype.innerWidth = function () {
          return this.element == this.element.window ? n.viewportWidth() : this.adapter.innerWidth()
      }, e.prototype.destroy = function () {
          var t = [];
          for (var e in this.waypoints)
              for (var i in this.waypoints[e]) t.push(this.waypoints[e][i]);
          for (var o = 0, n = t.length; n > o; o++) t[o].destroy()
      }, e.prototype.refresh = function () {
          var t, e = this.element == this.element.window,
              i = e ? void 0 : this.adapter.offset(),
              o = {};
          this.handleScroll(), t = {
              horizontal: {
                  contextOffset: e ? 0 : i.left,
                  contextScroll: e ? 0 : this.oldScroll.x,
                  contextDimension: this.innerWidth(),
                  oldScroll: this.oldScroll.x,
                  forward: "right",
                  backward: "left",
                  offsetProp: "left"
              },
              vertical: {
                  contextOffset: e ? 0 : i.top,
                  contextScroll: e ? 0 : this.oldScroll.y,
                  contextDimension: this.innerHeight(),
                  oldScroll: this.oldScroll.y,
                  forward: "down",
                  backward: "up",
                  offsetProp: "top"
              }
          };
          for (var r in t) {
              var s = t[r];
              for (var a in this.waypoints[r]) {
                  var l, h, p, u, c, d = this.waypoints[r][a],
                      f = d.options.offset,
                      w = d.triggerPoint,
                      y = 0,
                      g = null == w;
                  d.element !== d.element.window && (y = d.adapter.offset()[s.offsetProp]), "function" == typeof f ? f = f.apply(d) : "string" == typeof f && (f = parseFloat(f), d.options.offset.indexOf("%") > -1 && (f = Math.ceil(s.contextDimension * f / 100))), l = s.contextScroll - s.contextOffset, d.triggerPoint = Math.floor(y + l - f), h = w < s.oldScroll, p = d.triggerPoint >= s.oldScroll, u = h && p, c = !h && !p, !g && u ? (d.queueTrigger(s.backward), o[d.group.id] = d.group) : !g && c ? (d.queueTrigger(s.forward), o[d.group.id] = d.group) : g && s.oldScroll >= d.triggerPoint && (d.queueTrigger(s.forward), o[d.group.id] = d.group)
              }
          }
          return n.requestAnimationFrame(function () {
              for (var t in o) o[t].flushTriggers()
          }), this
      }, e.findOrCreateByElement = function (t) {
          return e.findByElement(t) || new e(t)
      }, e.refreshAll = function () {
          for (var t in o) o[t].refresh()
      }, e.findByElement = function (t) {
          return o[t.waypointContextKey]
      }, window.onload = function () {
          r && r(), e.refreshAll()
      }, n.requestAnimationFrame = function (e) {
          var i = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || t;
          i.call(window, e)
      }, n.Context = e
  }(),
  function () {
      "use strict";
  
      function t(t, e) {
          return t.triggerPoint - e.triggerPoint
      }
  
      function e(t, e) {
          return e.triggerPoint - t.triggerPoint
      }
  
      function i(t) {
          this.name = t.name, this.axis = t.axis, this.id = this.name + "-" + this.axis, this.waypoints = [], this.clearTriggerQueues(), o[this.axis][this.name] = this
      }
      var o = {
              vertical: {},
              horizontal: {}
          },
          n = window.Waypoint;
      i.prototype.add = function (t) {
          this.waypoints.push(t)
      }, i.prototype.clearTriggerQueues = function () {
          this.triggerQueues = {
              up: [],
              down: [],
              left: [],
              right: []
          }
      }, i.prototype.flushTriggers = function () {
          for (var i in this.triggerQueues) {
              var o = this.triggerQueues[i],
                  n = "up" === i || "left" === i;
              o.sort(n ? e : t);
              for (var r = 0, s = o.length; s > r; r += 1) {
                  var a = o[r];
                  (a.options.continuous || r === o.length - 1) && a.trigger([i])
              }
          }
          this.clearTriggerQueues()
      }, i.prototype.next = function (e) {
          this.waypoints.sort(t);
          var i = n.Adapter.inArray(e, this.waypoints),
              o = i === this.waypoints.length - 1;
          return o ? null : this.waypoints[i + 1]
      }, i.prototype.previous = function (e) {
          this.waypoints.sort(t);
          var i = n.Adapter.inArray(e, this.waypoints);
          return i ? this.waypoints[i - 1] : null
      }, i.prototype.queueTrigger = function (t, e) {
          this.triggerQueues[e].push(t)
      }, i.prototype.remove = function (t) {
          var e = n.Adapter.inArray(t, this.waypoints);
          e > -1 && this.waypoints.splice(e, 1)
      }, i.prototype.first = function () {
          return this.waypoints[0]
      }, i.prototype.last = function () {
          return this.waypoints[this.waypoints.length - 1]
      }, i.findOrCreate = function (t) {
          return o[t.axis][t.name] || new i(t)
      }, n.Group = i
  }(),
  function () {
      "use strict";
  
      function t(t) {
          this.$element = e(t)
      }
      var e = window.jQuery,
          i = window.Waypoint;
      e.each(["innerHeight", "innerWidth", "off", "offset", "on", "outerHeight", "outerWidth", "scrollLeft", "scrollTop"], function (e, i) {
          t.prototype[i] = function () {
              var t = Array.prototype.slice.call(arguments);
              return this.$element[i].apply(this.$element, t)
          }
      }), e.each(["extend", "inArray", "isEmptyObject"], function (i, o) {
          t[o] = e[o]
      }), i.adapters.push({
          name: "jquery",
          Adapter: t
      }), i.Adapter = t
  }(),
  function () {
      "use strict";
  
      function t(t) {
          return function () {
              var i = [],
                  o = arguments[0];
              return t.isFunction(arguments[0]) && (o = t.extend({}, arguments[1]), o.handler = arguments[0]), this.each(function () {
                  var n = t.extend({}, o, {
                      element: this
                  });
                  "string" == typeof n.context && (n.context = t(this).closest(n.context)[0]), i.push(new e(n))
              }), i
          }
      }
      var e = window.Waypoint;
      window.jQuery && (window.jQuery.fn.waypoint = t(window.jQuery)), window.Zepto && (window.Zepto.fn.waypoint = t(window.Zepto))
  }();
  ! function (i) {
      "use strict";
      "function" == typeof define && define.amd ? define(["jquery"], i) : "undefined" != typeof exports ? module.exports = i(require("jquery")) : i(jQuery)
  }(function (i) {
      "use strict";
      var e = window.Slick || {};
      (e = function () {
          var e = 0;
          return function (t, o) {
              var s, n = this;
              n.defaults = {
                  accessibility: !0,
                  adaptiveHeight: !1,
                  appendArrows: i(t),
                  appendDots: i(t),
                  arrows: !0,
                  asNavFor: null,
                  prevArrow: '<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',
                  nextArrow: '<button class="slick-next" aria-label="Next" type="button">Next</button>',
                  autoplay: !1,
                  autoplaySpeed: 3e3,
                  centerMode: !1,
                  centerPadding: "50px",
                  cssEase: "ease",
                  customPaging: function (e, t) {
                      return i('<button type="button" />').text(t + 1)
                  },
                  dots: !1,
                  dotsClass: "slick-dots",
                  draggable: !0,
                  easing: "linear",
                  edgeFriction: .35,
                  fade: !1,
                  focusOnSelect: !1,
                  focusOnChange: !1,
                  infinite: !0,
                  initialSlide: 0,
                  lazyLoad: "ondemand",
                  mobileFirst: !1,
                  pauseOnHover: !0,
                  pauseOnFocus: !0,
                  pauseOnDotsHover: !1,
                  respondTo: "window",
                  responsive: null,
                  rows: 1,
                  rtl: !1,
                  slide: "",
                  slidesPerRow: 1,
                  slidesToShow: 1,
                  slidesToScroll: 1,
                  speed: 500,
                  swipe: !0,
                  swipeToSlide: !1,
                  touchMove: !0,
                  touchThreshold: 5,
                  useCSS: !0,
                  useTransform: !0,
                  variableWidth: !1,
                  vertical: !1,
                  verticalSwiping: !1,
                  waitForAnimate: !0,
                  zIndex: 1e3
              }, n.initials = {
                  animating: !1,
                  dragging: !1,
                  autoPlayTimer: null,
                  currentDirection: 0,
                  currentLeft: null,
                  currentSlide: 0,
                  direction: 1,
                  $dots: null,
                  listWidth: null,
                  listHeight: null,
                  loadIndex: 0,
                  $nextArrow: null,
                  $prevArrow: null,
                  scrolling: !1,
                  slideCount: null,
                  slideWidth: null,
                  $slideTrack: null,
                  $slides: null,
                  sliding: !1,
                  slideOffset: 0,
                  swipeLeft: null,
                  swiping: !1,
                  $list: null,
                  touchObject: {},
                  transformsEnabled: !1,
                  unslicked: !1
              }, i.extend(n, n.initials), n.activeBreakpoint = null, n.animType = null, n.animProp = null, n.breakpoints = [], n.breakpointSettings = [], n.cssTransitions = !1, n.focussed = !1, n.interrupted = !1, n.hidden = "hidden", n.paused = !0, n.positionProp = null, n.respondTo = null, n.rowCount = 1, n.shouldClick = !0, n.$slider = i(t), n.$slidesCache = null, n.transformType = null, n.transitionType = null, n.visibilityChange = "visibilitychange", n.windowWidth = 0, n.windowTimer = null, s = i(t).data("slick") || {}, n.options = i.extend({}, n.defaults, o, s), n.currentSlide = n.options.initialSlide, n.originalSettings = n.options, void 0 !== document.mozHidden ? (n.hidden = "mozHidden", n.visibilityChange = "mozvisibilitychange") : void 0 !== document.webkitHidden && (n.hidden = "webkitHidden", n.visibilityChange = "webkitvisibilitychange"), n.autoPlay = i.proxy(n.autoPlay, n), n.autoPlayClear = i.proxy(n.autoPlayClear, n), n.autoPlayIterator = i.proxy(n.autoPlayIterator, n), n.changeSlide = i.proxy(n.changeSlide, n), n.clickHandler = i.proxy(n.clickHandler, n), n.selectHandler = i.proxy(n.selectHandler, n), n.setPosition = i.proxy(n.setPosition, n), n.swipeHandler = i.proxy(n.swipeHandler, n), n.dragHandler = i.proxy(n.dragHandler, n), n.keyHandler = i.proxy(n.keyHandler, n), n.instanceUid = e++, n.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/, n.registerBreakpoints(), n.init(!0)
          }
      }()).prototype.activateADA = function () {
          this.$slideTrack.find(".slick-active").attr({
              "aria-hidden": "false"
          }).find("a, input, button, select").attr({
              tabindex: "0"
          })
      }, e.prototype.addSlide = e.prototype.slickAdd = function (e, t, o) {
          var s = this;
          if ("boolean" == typeof t) o = t, t = null;
          else if (t < 0 || t >= s.slideCount) return !1;
          s.unload(), "number" == typeof t ? 0 === t && 0 === s.$slides.length ? i(e).appendTo(s.$slideTrack) : o ? i(e).insertBefore(s.$slides.eq(t)) : i(e).insertAfter(s.$slides.eq(t)) : !0 === o ? i(e).prependTo(s.$slideTrack) : i(e).appendTo(s.$slideTrack), s.$slides = s.$slideTrack.children(this.options.slide), s.$slideTrack.children(this.options.slide).detach(), s.$slideTrack.append(s.$slides), s.$slides.each(function (e, t) {
              i(t).attr("data-slick-index", e)
          }), s.$slidesCache = s.$slides, s.reinit()
      }, e.prototype.animateHeight = function () {
          var i = this;
          if (1 === i.options.slidesToShow && !0 === i.options.adaptiveHeight && !1 === i.options.vertical) {
              var e = i.$slides.eq(i.currentSlide).outerHeight(!0);
              i.$list.animate({
                  height: e
              }, i.options.speed)
          }
      }, e.prototype.animateSlide = function (e, t) {
          var o = {},
              s = this;
          s.animateHeight(), !0 === s.options.rtl && !1 === s.options.vertical && (e = -e), !1 === s.transformsEnabled ? !1 === s.options.vertical ? s.$slideTrack.animate({
              left: e
          }, s.options.speed, s.options.easing, t) : s.$slideTrack.animate({
              top: e
          }, s.options.speed, s.options.easing, t) : !1 === s.cssTransitions ? (!0 === s.options.rtl && (s.currentLeft = -s.currentLeft), i({
              animStart: s.currentLeft
          }).animate({
              animStart: e
          }, {
              duration: s.options.speed,
              easing: s.options.easing,
              step: function (i) {
                  i = Math.ceil(i), !1 === s.options.vertical ? (o[s.animType] = "translate(" + i + "px, 0px)", s.$slideTrack.css(o)) : (o[s.animType] = "translate(0px," + i + "px)", s.$slideTrack.css(o))
              },
              complete: function () {
                  t && t.call()
              }
          })) : (s.applyTransition(), e = Math.ceil(e), !1 === s.options.vertical ? o[s.animType] = "translate3d(" + e + "px, 0px, 0px)" : o[s.animType] = "translate3d(0px," + e + "px, 0px)", s.$slideTrack.css(o), t && setTimeout(function () {
              s.disableTransition(), t.call()
          }, s.options.speed))
      }, e.prototype.getNavTarget = function () {
          var e = this,
              t = e.options.asNavFor;
          return t && null !== t && (t = i(t).not(e.$slider)), t
      }, e.prototype.asNavFor = function (e) {
          var t = this.getNavTarget();
          null !== t && "object" == typeof t && t.each(function () {
              var t = i(this).slick("getSlick");
              t.unslicked || t.slideHandler(e, !0)
          })
      }, e.prototype.applyTransition = function (i) {
          var e = this,
              t = {};
          !1 === e.options.fade ? t[e.transitionType] = e.transformType + " " + e.options.speed + "ms " + e.options.cssEase : t[e.transitionType] = "opacity " + e.options.speed + "ms " + e.options.cssEase, !1 === e.options.fade ? e.$slideTrack.css(t) : e.$slides.eq(i).css(t)
      }, e.prototype.autoPlay = function () {
          var i = this;
          i.autoPlayClear(), i.slideCount > i.options.slidesToShow && (i.autoPlayTimer = setInterval(i.autoPlayIterator, i.options.autoplaySpeed))
      }, e.prototype.autoPlayClear = function () {
          var i = this;
          i.autoPlayTimer && clearInterval(i.autoPlayTimer)
      }, e.prototype.autoPlayIterator = function () {
          var i = this,
              e = i.currentSlide + i.options.slidesToScroll;
          i.paused || i.interrupted || i.focussed || (!1 === i.options.infinite && (1 === i.direction && i.currentSlide + 1 === i.slideCount - 1 ? i.direction = 0 : 0 === i.direction && (e = i.currentSlide - i.options.slidesToScroll, i.currentSlide - 1 == 0 && (i.direction = 1))), i.slideHandler(e))
      }, e.prototype.buildArrows = function () {
          var e = this;
          !0 === e.options.arrows && (e.$prevArrow = i(e.options.prevArrow).addClass("slick-arrow"), e.$nextArrow = i(e.options.nextArrow).addClass("slick-arrow"), e.slideCount > e.options.slidesToShow ? (e.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"), e.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"), e.htmlExpr.test(e.options.prevArrow) && e.$prevArrow.prependTo(e.options.appendArrows), e.htmlExpr.test(e.options.nextArrow) && e.$nextArrow.appendTo(e.options.appendArrows), !0 !== e.options.infinite && e.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true")) : e.$prevArrow.add(e.$nextArrow).addClass("slick-hidden").attr({
              "aria-disabled": "true",
              tabindex: "-1"
          }))
      }, e.prototype.buildDots = function () {
          var e, t, o = this;
          if (!0 === o.options.dots) {
              for (o.$slider.addClass("slick-dotted"), t = i("<ul />").addClass(o.options.dotsClass), e = 0; e <= o.getDotCount(); e += 1) t.append(i("<li />").append(o.options.customPaging.call(this, o, e)));
              o.$dots = t.appendTo(o.options.appendDots), o.$dots.find("li").first().addClass("slick-active")
          }
      }, e.prototype.buildOut = function () {
          var e = this;
          e.$slides = e.$slider.children(e.options.slide + ":not(.slick-cloned)").addClass("slick-slide"), e.slideCount = e.$slides.length, e.$slides.each(function (e, t) {
              i(t).attr("data-slick-index", e).data("originalStyling", i(t).attr("style") || "")
          }), e.$slider.addClass("slick-slider"), e.$slideTrack = 0 === e.slideCount ? i('<div class="slick-track"/>').appendTo(e.$slider) : e.$slides.wrapAll('<div class="slick-track"/>').parent(), e.$list = e.$slideTrack.wrap('<div class="slick-list"/>').parent(), e.$slideTrack.css("opacity", 0), !0 !== e.options.centerMode && !0 !== e.options.swipeToSlide || (e.options.slidesToScroll = 1), i("img[data-lazy]", e.$slider).not("[src]").addClass("slick-loading"), e.setupInfinite(), e.buildArrows(), e.buildDots(), e.updateDots(), e.setSlideClasses("number" == typeof e.currentSlide ? e.currentSlide : 0), !0 === e.options.draggable && e.$list.addClass("draggable")
      }, e.prototype.buildRows = function () {
          var i, e, t, o, s, n, r, l = this;
          if (o = document.createDocumentFragment(), n = l.$slider.children(), l.options.rows > 1) {
              for (r = l.options.slidesPerRow * l.options.rows, s = Math.ceil(n.length / r), i = 0; i < s; i++) {
                  var d = document.createElement("div");
                  for (e = 0; e < l.options.rows; e++) {
                      var a = document.createElement("div");
                      for (t = 0; t < l.options.slidesPerRow; t++) {
                          var c = i * r + (e * l.options.slidesPerRow + t);
                          n.get(c) && a.appendChild(n.get(c))
                      }
                      d.appendChild(a)
                  }
                  o.appendChild(d)
              }
              l.$slider.empty().append(o), l.$slider.children().children().children().css({
                  width: 100 / l.options.slidesPerRow + "%",
                  display: "inline-block"
              })
          }
      }, e.prototype.checkResponsive = function (e, t) {
          var o, s, n, r = this,
              l = !1,
              d = r.$slider.width(),
              a = window.innerWidth || i(window).width();
          if ("window" === r.respondTo ? n = a : "slider" === r.respondTo ? n = d : "min" === r.respondTo && (n = Math.min(a, d)), r.options.responsive && r.options.responsive.length && null !== r.options.responsive) {
              s = null;
              for (o in r.breakpoints) r.breakpoints.hasOwnProperty(o) && (!1 === r.originalSettings.mobileFirst ? n < r.breakpoints[o] && (s = r.breakpoints[o]) : n > r.breakpoints[o] && (s = r.breakpoints[o]));
              null !== s ? null !== r.activeBreakpoint ? (s !== r.activeBreakpoint || t) && (r.activeBreakpoint = s, "unslick" === r.breakpointSettings[s] ? r.unslick(s) : (r.options = i.extend({}, r.originalSettings, r.breakpointSettings[s]), !0 === e && (r.currentSlide = r.options.initialSlide), r.refresh(e)), l = s) : (r.activeBreakpoint = s, "unslick" === r.breakpointSettings[s] ? r.unslick(s) : (r.options = i.extend({}, r.originalSettings, r.breakpointSettings[s]), !0 === e && (r.currentSlide = r.options.initialSlide), r.refresh(e)), l = s) : null !== r.activeBreakpoint && (r.activeBreakpoint = null, r.options = r.originalSettings, !0 === e && (r.currentSlide = r.options.initialSlide), r.refresh(e), l = s), e || !1 === l || r.$slider.trigger("breakpoint", [r, l])
          }
      }, e.prototype.changeSlide = function (e, t) {
          var o, s, n, r = this,
              l = i(e.currentTarget);
          switch (l.is("a") && e.preventDefault(), l.is("li") || (l = l.closest("li")), n = r.slideCount % r.options.slidesToScroll != 0, o = n ? 0 : (r.slideCount - r.currentSlide) % r.options.slidesToScroll, e.data.message) {
              case "previous":
                  s = 0 === o ? r.options.slidesToScroll : r.options.slidesToShow - o, r.slideCount > r.options.slidesToShow && r.slideHandler(r.currentSlide - s, !1, t);
                  break;
              case "next":
                  s = 0 === o ? r.options.slidesToScroll : o, r.slideCount > r.options.slidesToShow && r.slideHandler(r.currentSlide + s, !1, t);
                  break;
              case "index":
                  var d = 0 === e.data.index ? 0 : e.data.index || l.index() * r.options.slidesToScroll;
                  r.slideHandler(r.checkNavigable(d), !1, t), l.children().trigger("focus");
                  break;
              default:
                  return
          }
      }, e.prototype.checkNavigable = function (i) {
          var e, t;
          if (e = this.getNavigableIndexes(), t = 0, i > e[e.length - 1]) i = e[e.length - 1];
          else
              for (var o in e) {
                  if (i < e[o]) {
                      i = t;
                      break
                  }
                  t = e[o]
              }
          return i
      }, e.prototype.cleanUpEvents = function () {
          var e = this;
          e.options.dots && null !== e.$dots && (i("li", e.$dots).off("click.slick", e.changeSlide).off("mouseenter.slick", i.proxy(e.interrupt, e, !0)).off("mouseleave.slick", i.proxy(e.interrupt, e, !1)), !0 === e.options.accessibility && e.$dots.off("keydown.slick", e.keyHandler)), e.$slider.off("focus.slick blur.slick"), !0 === e.options.arrows && e.slideCount > e.options.slidesToShow && (e.$prevArrow && e.$prevArrow.off("click.slick", e.changeSlide), e.$nextArrow && e.$nextArrow.off("click.slick", e.changeSlide), !0 === e.options.accessibility && (e.$prevArrow && e.$prevArrow.off("keydown.slick", e.keyHandler), e.$nextArrow && e.$nextArrow.off("keydown.slick", e.keyHandler))), e.$list.off("touchstart.slick mousedown.slick", e.swipeHandler), e.$list.off("touchmove.slick mousemove.slick", e.swipeHandler), e.$list.off("touchend.slick mouseup.slick", e.swipeHandler), e.$list.off("touchcancel.slick mouseleave.slick", e.swipeHandler), e.$list.off("click.slick", e.clickHandler), i(document).off(e.visibilityChange, e.visibility), e.cleanUpSlideEvents(), !0 === e.options.accessibility && e.$list.off("keydown.slick", e.keyHandler), !0 === e.options.focusOnSelect && i(e.$slideTrack).children().off("click.slick", e.selectHandler), i(window).off("orientationchange.slick.slick-" + e.instanceUid, e.orientationChange), i(window).off("resize.slick.slick-" + e.instanceUid, e.resize), i("[draggable!=true]", e.$slideTrack).off("dragstart", e.preventDefault), i(window).off("load.slick.slick-" + e.instanceUid, e.setPosition)
      }, e.prototype.cleanUpSlideEvents = function () {
          var e = this;
          e.$list.off("mouseenter.slick", i.proxy(e.interrupt, e, !0)), e.$list.off("mouseleave.slick", i.proxy(e.interrupt, e, !1))
      }, e.prototype.cleanUpRows = function () {
          var i, e = this;
          e.options.rows > 1 && ((i = e.$slides.children().children()).removeAttr("style"), e.$slider.empty().append(i))
      }, e.prototype.clickHandler = function (i) {
          !1 === this.shouldClick && (i.stopImmediatePropagation(), i.stopPropagation(), i.preventDefault())
      }, e.prototype.destroy = function (e) {
          var t = this;
          t.autoPlayClear(), t.touchObject = {}, t.cleanUpEvents(), i(".slick-cloned", t.$slider).detach(), t.$dots && t.$dots.remove(), t.$prevArrow && t.$prevArrow.length && (t.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), t.htmlExpr.test(t.options.prevArrow) && t.$prevArrow.remove()), t.$nextArrow && t.$nextArrow.length && (t.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""), t.htmlExpr.test(t.options.nextArrow) && t.$nextArrow.remove()), t.$slides && (t.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function () {
              i(this).attr("style", i(this).data("originalStyling"))
          }), t.$slideTrack.children(this.options.slide).detach(), t.$slideTrack.detach(), t.$list.detach(), t.$slider.append(t.$slides)), t.cleanUpRows(), t.$slider.removeClass("slick-slider"), t.$slider.removeClass("slick-initialized"), t.$slider.removeClass("slick-dotted"), t.unslicked = !0, e || t.$slider.trigger("destroy", [t])
      }, e.prototype.disableTransition = function (i) {
          var e = this,
              t = {};
          t[e.transitionType] = "", !1 === e.options.fade ? e.$slideTrack.css(t) : e.$slides.eq(i).css(t)
      }, e.prototype.fadeSlide = function (i, e) {
          var t = this;
          !1 === t.cssTransitions ? (t.$slides.eq(i).css({
              zIndex: t.options.zIndex
          }), t.$slides.eq(i).animate({
              opacity: 1
          }, t.options.speed, t.options.easing, e)) : (t.applyTransition(i), t.$slides.eq(i).css({
              opacity: 1,
              zIndex: t.options.zIndex
          }), e && setTimeout(function () {
              t.disableTransition(i), e.call()
          }, t.options.speed))
      }, e.prototype.fadeSlideOut = function (i) {
          var e = this;
          !1 === e.cssTransitions ? e.$slides.eq(i).animate({
              opacity: 0,
              zIndex: e.options.zIndex - 2
          }, e.options.speed, e.options.easing) : (e.applyTransition(i), e.$slides.eq(i).css({
              opacity: 0,
              zIndex: e.options.zIndex - 2
          }))
      }, e.prototype.filterSlides = e.prototype.slickFilter = function (i) {
          var e = this;
          null !== i && (e.$slidesCache = e.$slides, e.unload(), e.$slideTrack.children(this.options.slide).detach(), e.$slidesCache.filter(i).appendTo(e.$slideTrack), e.reinit())
      }, e.prototype.focusHandler = function () {
          var e = this;
          e.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick", "*", function (t) {
              t.stopImmediatePropagation();
              var o = i(this);
              setTimeout(function () {
                  e.options.pauseOnFocus && (e.focussed = o.is(":focus"), e.autoPlay())
              }, 0)
          })
      }, e.prototype.getCurrent = e.prototype.slickCurrentSlide = function () {
          return this.currentSlide
      }, e.prototype.getDotCount = function () {
          var i = this,
              e = 0,
              t = 0,
              o = 0;
          if (!0 === i.options.infinite)
              if (i.slideCount <= i.options.slidesToShow) ++o;
              else
                  for (; e < i.slideCount;) ++o, e = t + i.options.slidesToScroll, t += i.options.slidesToScroll <= i.options.slidesToShow ? i.options.slidesToScroll : i.options.slidesToShow;
          else if (!0 === i.options.centerMode) o = i.slideCount;
          else if (i.options.asNavFor)
              for (; e < i.slideCount;) ++o, e = t + i.options.slidesToScroll, t += i.options.slidesToScroll <= i.options.slidesToShow ? i.options.slidesToScroll : i.options.slidesToShow;
          else o = 1 + Math.ceil((i.slideCount - i.options.slidesToShow) / i.options.slidesToScroll);
          return o - 1
      }, e.prototype.getLeft = function (i) {
          var e, t, o, s, n = this,
              r = 0;
          return n.slideOffset = 0, t = n.$slides.first().outerHeight(!0), !0 === n.options.infinite ? (n.slideCount > n.options.slidesToShow && (n.slideOffset = n.slideWidth * n.options.slidesToShow * -1, s = -1, !0 === n.options.vertical && !0 === n.options.centerMode && (2 === n.options.slidesToShow ? s = -1.5 : 1 === n.options.slidesToShow && (s = -2)), r = t * n.options.slidesToShow * s), n.slideCount % n.options.slidesToScroll != 0 && i + n.options.slidesToScroll > n.slideCount && n.slideCount > n.options.slidesToShow && (i > n.slideCount ? (n.slideOffset = (n.options.slidesToShow - (i - n.slideCount)) * n.slideWidth * -1, r = (n.options.slidesToShow - (i - n.slideCount)) * t * -1) : (n.slideOffset = n.slideCount % n.options.slidesToScroll * n.slideWidth * -1, r = n.slideCount % n.options.slidesToScroll * t * -1))) : i + n.options.slidesToShow > n.slideCount && (n.slideOffset = (i + n.options.slidesToShow - n.slideCount) * n.slideWidth, r = (i + n.options.slidesToShow - n.slideCount) * t), n.slideCount <= n.options.slidesToShow && (n.slideOffset = 0, r = 0), !0 === n.options.centerMode && n.slideCount <= n.options.slidesToShow ? n.slideOffset = n.slideWidth * Math.floor(n.options.slidesToShow) / 2 - n.slideWidth * n.slideCount / 2 : !0 === n.options.centerMode && !0 === n.options.infinite ? n.slideOffset += n.slideWidth * Math.floor(n.options.slidesToShow / 2) - n.slideWidth : !0 === n.options.centerMode && (n.slideOffset = 0, n.slideOffset += n.slideWidth * Math.floor(n.options.slidesToShow / 2)), e = !1 === n.options.vertical ? i * n.slideWidth * -1 + n.slideOffset : i * t * -1 + r, !0 === n.options.variableWidth && (o = n.slideCount <= n.options.slidesToShow || !1 === n.options.infinite ? n.$slideTrack.children(".slick-slide").eq(i) : n.$slideTrack.children(".slick-slide").eq(i + n.options.slidesToShow), e = !0 === n.options.rtl ? o[0] ? -1 * (n.$slideTrack.width() - o[0].offsetLeft - o.width()) : 0 : o[0] ? -1 * o[0].offsetLeft : 0, !0 === n.options.centerMode && (o = n.slideCount <= n.options.slidesToShow || !1 === n.options.infinite ? n.$slideTrack.children(".slick-slide").eq(i) : n.$slideTrack.children(".slick-slide").eq(i + n.options.slidesToShow + 1), e = !0 === n.options.rtl ? o[0] ? -1 * (n.$slideTrack.width() - o[0].offsetLeft - o.width()) : 0 : o[0] ? -1 * o[0].offsetLeft : 0, e += (n.$list.width() - o.outerWidth()) / 2)), e
      }, e.prototype.getOption = e.prototype.slickGetOption = function (i) {
          return this.options[i]
      }, e.prototype.getNavigableIndexes = function () {
          var i, e = this,
              t = 0,
              o = 0,
              s = [];
          for (!1 === e.options.infinite ? i = e.slideCount : (t = -1 * e.options.slidesToScroll, o = -1 * e.options.slidesToScroll, i = 2 * e.slideCount); t < i;) s.push(t), t = o + e.options.slidesToScroll, o += e.options.slidesToScroll <= e.options.slidesToShow ? e.options.slidesToScroll : e.options.slidesToShow;
          return s
      }, e.prototype.getSlick = function () {
          return this
      }, e.prototype.getSlideCount = function () {
          var e, t, o = this;
          return t = !0 === o.options.centerMode ? o.slideWidth * Math.floor(o.options.slidesToShow / 2) : 0, !0 === o.options.swipeToSlide ? (o.$slideTrack.find(".slick-slide").each(function (s, n) {
              if (n.offsetLeft - t + i(n).outerWidth() / 2 > -1 * o.swipeLeft) return e = n, !1
          }), Math.abs(i(e).attr("data-slick-index") - o.currentSlide) || 1) : o.options.slidesToScroll
      }, e.prototype.goTo = e.prototype.slickGoTo = function (i, e) {
          this.changeSlide({
              data: {
                  message: "index",
                  index: parseInt(i)
              }
          }, e)
      }, e.prototype.init = function (e) {
          var t = this;
          i(t.$slider).hasClass("slick-initialized") || (i(t.$slider).addClass("slick-initialized"), t.buildRows(), t.buildOut(), t.setProps(), t.startLoad(), t.loadSlider(), t.initializeEvents(), t.updateArrows(), t.updateDots(), t.checkResponsive(!0), t.focusHandler()), e && t.$slider.trigger("init", [t]), !0 === t.options.accessibility && t.initADA(), t.options.autoplay && (t.paused = !1, t.autoPlay())
      }, e.prototype.initADA = function () {
          var e = this,
              t = Math.ceil(e.slideCount / e.options.slidesToShow),
              o = e.getNavigableIndexes().filter(function (i) {
                  return i >= 0 && i < e.slideCount
              });
          e.$slides.add(e.$slideTrack.find(".slick-cloned")).attr({
              "aria-hidden": "true",
              tabindex: "-1"
          }).find("a, input, button, select").attr({
              tabindex: "-1"
          }), null !== e.$dots && (e.$slides.not(e.$slideTrack.find(".slick-cloned")).each(function (t) {
              var s = o.indexOf(t);
              i(this).attr({
                  role: "tabpanel",
                  id: "slick-slide" + e.instanceUid + t,
                  tabindex: -1
              }), -1 !== s && i(this).attr({
                  "aria-describedby": "slick-slide-control" + e.instanceUid + s
              })
          }), e.$dots.attr("role", "tablist").find("li").each(function (s) {
              var n = o[s];
              i(this).attr({
                  role: "presentation"
              }), i(this).find("button").first().attr({
                  role: "tab",
                  id: "slick-slide-control" + e.instanceUid + s,
                  "aria-controls": "slick-slide" + e.instanceUid + n,
                  "aria-label": s + 1 + " of " + t,
                  "aria-selected": null,
                  tabindex: "-1"
              })
          }).eq(e.currentSlide).find("button").attr({
              "aria-selected": "true",
              tabindex: "0"
          }).end());
          for (var s = e.currentSlide, n = s + e.options.slidesToShow; s < n; s++) e.$slides.eq(s).attr("tabindex", 0);
          e.activateADA()
      }, e.prototype.initArrowEvents = function () {
          var i = this;
          !0 === i.options.arrows && i.slideCount > i.options.slidesToShow && (i.$prevArrow.off("click.slick").on("click.slick", {
              message: "previous"
          }, i.changeSlide), i.$nextArrow.off("click.slick").on("click.slick", {
              message: "next"
          }, i.changeSlide), !0 === i.options.accessibility && (i.$prevArrow.on("keydown.slick", i.keyHandler), i.$nextArrow.on("keydown.slick", i.keyHandler)))
      }, e.prototype.initDotEvents = function () {
          var e = this;
          !0 === e.options.dots && (i("li", e.$dots).on("click.slick", {
              message: "index"
          }, e.changeSlide), !0 === e.options.accessibility && e.$dots.on("keydown.slick", e.keyHandler)), !0 === e.options.dots && !0 === e.options.pauseOnDotsHover && i("li", e.$dots).on("mouseenter.slick", i.proxy(e.interrupt, e, !0)).on("mouseleave.slick", i.proxy(e.interrupt, e, !1))
      }, e.prototype.initSlideEvents = function () {
          var e = this;
          e.options.pauseOnHover && (e.$list.on("mouseenter.slick", i.proxy(e.interrupt, e, !0)), e.$list.on("mouseleave.slick", i.proxy(e.interrupt, e, !1)))
      }, e.prototype.initializeEvents = function () {
          var e = this;
          e.initArrowEvents(), e.initDotEvents(), e.initSlideEvents(), e.$list.on("touchstart.slick mousedown.slick", {
              action: "start"
          }, e.swipeHandler), e.$list.on("touchmove.slick mousemove.slick", {
              action: "move"
          }, e.swipeHandler), e.$list.on("touchend.slick mouseup.slick", {
              action: "end"
          }, e.swipeHandler), e.$list.on("touchcancel.slick mouseleave.slick", {
              action: "end"
          }, e.swipeHandler), e.$list.on("click.slick", e.clickHandler), i(document).on(e.visibilityChange, i.proxy(e.visibility, e)), !0 === e.options.accessibility && e.$list.on("keydown.slick", e.keyHandler), !0 === e.options.focusOnSelect && i(e.$slideTrack).children().on("click.slick", e.selectHandler), i(window).on("orientationchange.slick.slick-" + e.instanceUid, i.proxy(e.orientationChange, e)), i(window).on("resize.slick.slick-" + e.instanceUid, i.proxy(e.resize, e)), i("[draggable!=true]", e.$slideTrack).on("dragstart", e.preventDefault), i(window).on("load.slick.slick-" + e.instanceUid, e.setPosition), i(e.setPosition)
      }, e.prototype.initUI = function () {
          var i = this;
          !0 === i.options.arrows && i.slideCount > i.options.slidesToShow && (i.$prevArrow.show(), i.$nextArrow.show()), !0 === i.options.dots && i.slideCount > i.options.slidesToShow && i.$dots.show()
      }, e.prototype.keyHandler = function (i) {
          var e = this;
          i.target.tagName.match("TEXTAREA|INPUT|SELECT") || (37 === i.keyCode && !0 === e.options.accessibility ? e.changeSlide({
              data: {
                  message: !0 === e.options.rtl ? "next" : "previous"
              }
          }) : 39 === i.keyCode && !0 === e.options.accessibility && e.changeSlide({
              data: {
                  message: !0 === e.options.rtl ? "previous" : "next"
              }
          }))
      }, e.prototype.lazyLoad = function () {
          function e(e) {
              i("img[data-lazy]", e).each(function () {
                  var e = i(this),
                      t = i(this).attr("data-lazy"),
                      o = i(this).attr("data-srcset"),
                      s = i(this).attr("data-sizes") || n.$slider.attr("data-sizes"),
                      r = document.createElement("img");
                  r.onload = function () {
                      e.animate({
                          opacity: 0
                      }, 100, function () {
                          o && (e.attr("srcset", o), s && e.attr("sizes", s)), e.attr("src", t).animate({
                              opacity: 1
                          }, 200, function () {
                              e.removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading")
                          }), n.$slider.trigger("lazyLoaded", [n, e, t])
                      })
                  }, r.onerror = function () {
                      e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), n.$slider.trigger("lazyLoadError", [n, e, t])
                  }, r.src = t
              })
          }
          var t, o, s, n = this;
          if (!0 === n.options.centerMode ? !0 === n.options.infinite ? s = (o = n.currentSlide + (n.options.slidesToShow / 2 + 1)) + n.options.slidesToShow + 2 : (o = Math.max(0, n.currentSlide - (n.options.slidesToShow / 2 + 1)), s = n.options.slidesToShow / 2 + 1 + 2 + n.currentSlide) : (o = n.options.infinite ? n.options.slidesToShow + n.currentSlide : n.currentSlide, s = Math.ceil(o + n.options.slidesToShow), !0 === n.options.fade && (o > 0 && o--, s <= n.slideCount && s++)), t = n.$slider.find(".slick-slide").slice(o, s), "anticipated" === n.options.lazyLoad)
              for (var r = o - 1, l = s, d = n.$slider.find(".slick-slide"), a = 0; a < n.options.slidesToScroll; a++) r < 0 && (r = n.slideCount - 1), t = (t = t.add(d.eq(r))).add(d.eq(l)), r--, l++;
          e(t), n.slideCount <= n.options.slidesToShow ? e(n.$slider.find(".slick-slide")) : n.currentSlide >= n.slideCount - n.options.slidesToShow ? e(n.$slider.find(".slick-cloned").slice(0, n.options.slidesToShow)) : 0 === n.currentSlide && e(n.$slider.find(".slick-cloned").slice(-1 * n.options.slidesToShow))
      }, e.prototype.loadSlider = function () {
          var i = this;
          i.setPosition(), i.$slideTrack.css({
              opacity: 1
          }), i.$slider.removeClass("slick-loading"), i.initUI(), "progressive" === i.options.lazyLoad && i.progressiveLazyLoad()
      }, e.prototype.next = e.prototype.slickNext = function () {
          this.changeSlide({
              data: {
                  message: "next"
              }
          })
      }, e.prototype.orientationChange = function () {
          var i = this;
          i.checkResponsive(), i.setPosition()
      }, e.prototype.pause = e.prototype.slickPause = function () {
          var i = this;
          i.autoPlayClear(), i.paused = !0
      }, e.prototype.play = e.prototype.slickPlay = function () {
          var i = this;
          i.autoPlay(), i.options.autoplay = !0, i.paused = !1, i.focussed = !1, i.interrupted = !1
      }, e.prototype.postSlide = function (e) {
          var t = this;
          t.unslicked || (t.$slider.trigger("afterChange", [t, e]), t.animating = !1, t.slideCount > t.options.slidesToShow && t.setPosition(), t.swipeLeft = null, t.options.autoplay && t.autoPlay(), !0 === t.options.accessibility && (t.initADA(), t.options.focusOnChange && i(t.$slides.get(t.currentSlide)).attr("tabindex", 0).focus()))
      }, e.prototype.prev = e.prototype.slickPrev = function () {
          this.changeSlide({
              data: {
                  message: "previous"
              }
          })
      }, e.prototype.preventDefault = function (i) {
          i.preventDefault()
      }, e.prototype.progressiveLazyLoad = function (e) {
          e = e || 1;
          var t, o, s, n, r, l = this,
              d = i("img[data-lazy]", l.$slider);
          d.length ? (t = d.first(), o = t.attr("data-lazy"), s = t.attr("data-srcset"), n = t.attr("data-sizes") || l.$slider.attr("data-sizes"), (r = document.createElement("img")).onload = function () {
              s && (t.attr("srcset", s), n && t.attr("sizes", n)), t.attr("src", o).removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"), !0 === l.options.adaptiveHeight && l.setPosition(), l.$slider.trigger("lazyLoaded", [l, t, o]), l.progressiveLazyLoad()
          }, r.onerror = function () {
              e < 3 ? setTimeout(function () {
                  l.progressiveLazyLoad(e + 1)
              }, 500) : (t.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"), l.$slider.trigger("lazyLoadError", [l, t, o]), l.progressiveLazyLoad())
          }, r.src = o) : l.$slider.trigger("allImagesLoaded", [l])
      }, e.prototype.refresh = function (e) {
          var t, o, s = this;
          o = s.slideCount - s.options.slidesToShow, !s.options.infinite && s.currentSlide > o && (s.currentSlide = o), s.slideCount <= s.options.slidesToShow && (s.currentSlide = 0), t = s.currentSlide, s.destroy(!0), i.extend(s, s.initials, {
              currentSlide: t
          }), s.init(), e || s.changeSlide({
              data: {
                  message: "index",
                  index: t
              }
          }, !1)
      }, e.prototype.registerBreakpoints = function () {
          var e, t, o, s = this,
              n = s.options.responsive || null;
          if ("array" === i.type(n) && n.length) {
              s.respondTo = s.options.respondTo || "window";
              for (e in n)
                  if (o = s.breakpoints.length - 1, n.hasOwnProperty(e)) {
                      for (t = n[e].breakpoint; o >= 0;) s.breakpoints[o] && s.breakpoints[o] === t && s.breakpoints.splice(o, 1), o--;
                      s.breakpoints.push(t), s.breakpointSettings[t] = n[e].settings
                  } s.breakpoints.sort(function (i, e) {
                  return s.options.mobileFirst ? i - e : e - i
              })
          }
      }, e.prototype.reinit = function () {
          var e = this;
          e.$slides = e.$slideTrack.children(e.options.slide).addClass("slick-slide"), e.slideCount = e.$slides.length, e.currentSlide >= e.slideCount && 0 !== e.currentSlide && (e.currentSlide = e.currentSlide - e.options.slidesToScroll), e.slideCount <= e.options.slidesToShow && (e.currentSlide = 0), e.registerBreakpoints(), e.setProps(), e.setupInfinite(), e.buildArrows(), e.updateArrows(), e.initArrowEvents(), e.buildDots(), e.updateDots(), e.initDotEvents(), e.cleanUpSlideEvents(), e.initSlideEvents(), e.checkResponsive(!1, !0), !0 === e.options.focusOnSelect && i(e.$slideTrack).children().on("click.slick", e.selectHandler), e.setSlideClasses("number" == typeof e.currentSlide ? e.currentSlide : 0), e.setPosition(), e.focusHandler(), e.paused = !e.options.autoplay, e.autoPlay(), e.$slider.trigger("reInit", [e])
      }, e.prototype.resize = function () {
          var e = this;
          i(window).width() !== e.windowWidth && (clearTimeout(e.windowDelay), e.windowDelay = window.setTimeout(function () {
              e.windowWidth = i(window).width(), e.checkResponsive(), e.unslicked || e.setPosition()
          }, 50))
      }, e.prototype.removeSlide = e.prototype.slickRemove = function (i, e, t) {
          var o = this;
          if (i = "boolean" == typeof i ? !0 === (e = i) ? 0 : o.slideCount - 1 : !0 === e ? --i : i, o.slideCount < 1 || i < 0 || i > o.slideCount - 1) return !1;
          o.unload(), !0 === t ? o.$slideTrack.children().remove() : o.$slideTrack.children(this.options.slide).eq(i).remove(), o.$slides = o.$slideTrack.children(this.options.slide), o.$slideTrack.children(this.options.slide).detach(), o.$slideTrack.append(o.$slides), o.$slidesCache = o.$slides, o.reinit()
      }, e.prototype.setCSS = function (i) {
          var e, t, o = this,
              s = {};
          !0 === o.options.rtl && (i = -i), e = "left" == o.positionProp ? Math.ceil(i) + "px" : "0px", t = "top" == o.positionProp ? Math.ceil(i) + "px" : "0px", s[o.positionProp] = i, !1 === o.transformsEnabled ? o.$slideTrack.css(s) : (s = {}, !1 === o.cssTransitions ? (s[o.animType] = "translate(" + e + ", " + t + ")", o.$slideTrack.css(s)) : (s[o.animType] = "translate3d(" + e + ", " + t + ", 0px)", o.$slideTrack.css(s)))
      }, e.prototype.setDimensions = function () {
          var i = this;
          !1 === i.options.vertical ? !0 === i.options.centerMode && i.$list.css({
              padding: "0px " + i.options.centerPadding
          }) : (i.$list.height(i.$slides.first().outerHeight(!0) * i.options.slidesToShow), !0 === i.options.centerMode && i.$list.css({
              padding: i.options.centerPadding + " 0px"
          })), i.listWidth = i.$list.width(), i.listHeight = i.$list.height(), !1 === i.options.vertical && !1 === i.options.variableWidth ? (i.slideWidth = Math.ceil(i.listWidth / i.options.slidesToShow), i.$slideTrack.width(Math.ceil(i.slideWidth * i.$slideTrack.children(".slick-slide").length))) : !0 === i.options.variableWidth ? i.$slideTrack.width(5e3 * i.slideCount) : (i.slideWidth = Math.ceil(i.listWidth), i.$slideTrack.height(Math.ceil(i.$slides.first().outerHeight(!0) * i.$slideTrack.children(".slick-slide").length)));
          var e = i.$slides.first().outerWidth(!0) - i.$slides.first().width();
          !1 === i.options.variableWidth && i.$slideTrack.children(".slick-slide").width(i.slideWidth - e)
      }, e.prototype.setFade = function () {
          var e, t = this;
          t.$slides.each(function (o, s) {
              e = t.slideWidth * o * -1, !0 === t.options.rtl ? i(s).css({
                  position: "relative",
                  right: e,
                  top: 0,
                  zIndex: t.options.zIndex - 2,
                  opacity: 0
              }) : i(s).css({
                  position: "relative",
                  left: e,
                  top: 0,
                  zIndex: t.options.zIndex - 2,
                  opacity: 0
              })
          }), t.$slides.eq(t.currentSlide).css({
              zIndex: t.options.zIndex - 1,
              opacity: 1
          })
      }, e.prototype.setHeight = function () {
          var i = this;
          if (1 === i.options.slidesToShow && !0 === i.options.adaptiveHeight && !1 === i.options.vertical) {
              var e = i.$slides.eq(i.currentSlide).outerHeight(!0);
              i.$list.css("height", e)
          }
      }, e.prototype.setOption = e.prototype.slickSetOption = function () {
          var e, t, o, s, n, r = this,
              l = !1;
          if ("object" === i.type(arguments[0]) ? (o = arguments[0], l = arguments[1], n = "multiple") : "string" === i.type(arguments[0]) && (o = arguments[0], s = arguments[1], l = arguments[2], "responsive" === arguments[0] && "array" === i.type(arguments[1]) ? n = "responsive" : void 0 !== arguments[1] && (n = "single")), "single" === n) r.options[o] = s;
          else if ("multiple" === n) i.each(o, function (i, e) {
              r.options[i] = e
          });
          else if ("responsive" === n)
              for (t in s)
                  if ("array" !== i.type(r.options.responsive)) r.options.responsive = [s[t]];
                  else {
                      for (e = r.options.responsive.length - 1; e >= 0;) r.options.responsive[e].breakpoint === s[t].breakpoint && r.options.responsive.splice(e, 1), e--;
                      r.options.responsive.push(s[t])
                  } l && (r.unload(), r.reinit())
      }, e.prototype.setPosition = function () {
          var i = this;
          i.setDimensions(), i.setHeight(), !1 === i.options.fade ? i.setCSS(i.getLeft(i.currentSlide)) : i.setFade(), i.$slider.trigger("setPosition", [i])
      }, e.prototype.setProps = function () {
          var i = this,
              e = document.body.style;
          i.positionProp = !0 === i.options.vertical ? "top" : "left", "top" === i.positionProp ? i.$slider.addClass("slick-vertical") : i.$slider.removeClass("slick-vertical"), void 0 === e.WebkitTransition && void 0 === e.MozTransition && void 0 === e.msTransition || !0 === i.options.useCSS && (i.cssTransitions = !0), i.options.fade && ("number" == typeof i.options.zIndex ? i.options.zIndex < 3 && (i.options.zIndex = 3) : i.options.zIndex = i.defaults.zIndex), void 0 !== e.OTransform && (i.animType = "OTransform", i.transformType = "-o-transform", i.transitionType = "OTransition", void 0 === e.perspectiveProperty && void 0 === e.webkitPerspective && (i.animType = !1)), void 0 !== e.MozTransform && (i.animType = "MozTransform", i.transformType = "-moz-transform", i.transitionType = "MozTransition", void 0 === e.perspectiveProperty && void 0 === e.MozPerspective && (i.animType = !1)), void 0 !== e.webkitTransform && (i.animType = "webkitTransform", i.transformType = "-webkit-transform", i.transitionType = "webkitTransition", void 0 === e.perspectiveProperty && void 0 === e.webkitPerspective && (i.animType = !1)), void 0 !== e.msTransform && (i.animType = "msTransform", i.transformType = "-ms-transform", i.transitionType = "msTransition", void 0 === e.msTransform && (i.animType = !1)), void 0 !== e.transform && !1 !== i.animType && (i.animType = "transform", i.transformType = "transform", i.transitionType = "transition"), i.transformsEnabled = i.options.useTransform && null !== i.animType && !1 !== i.animType
      }, e.prototype.setSlideClasses = function (i) {
          var e, t, o, s, n = this;
          if (t = n.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden", "true"), n.$slides.eq(i).addClass("slick-current"), !0 === n.options.centerMode) {
              var r = n.options.slidesToShow % 2 == 0 ? 1 : 0;
              e = Math.floor(n.options.slidesToShow / 2), !0 === n.options.infinite && (i >= e && i <= n.slideCount - 1 - e ? n.$slides.slice(i - e + r, i + e + 1).addClass("slick-active").attr("aria-hidden", "false") : (o = n.options.slidesToShow + i, t.slice(o - e + 1 + r, o + e + 2).addClass("slick-active").attr("aria-hidden", "false")), 0 === i ? t.eq(t.length - 1 - n.options.slidesToShow).addClass("slick-center") : i === n.slideCount - 1 && t.eq(n.options.slidesToShow).addClass("slick-center")), n.$slides.eq(i).addClass("slick-center")
          } else i >= 0 && i <= n.slideCount - n.options.slidesToShow ? n.$slides.slice(i, i + n.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false") : t.length <= n.options.slidesToShow ? t.addClass("slick-active").attr("aria-hidden", "false") : (s = n.slideCount % n.options.slidesToShow, o = !0 === n.options.infinite ? n.options.slidesToShow + i : i, n.options.slidesToShow == n.options.slidesToScroll && n.slideCount - i < n.options.slidesToShow ? t.slice(o - (n.options.slidesToShow - s), o + s).addClass("slick-active").attr("aria-hidden", "false") : t.slice(o, o + n.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false"));
          "ondemand" !== n.options.lazyLoad && "anticipated" !== n.options.lazyLoad || n.lazyLoad()
      }, e.prototype.setupInfinite = function () {
          var e, t, o, s = this;
          if (!0 === s.options.fade && (s.options.centerMode = !1), !0 === s.options.infinite && !1 === s.options.fade && (t = null, s.slideCount > s.options.slidesToShow)) {
              for (o = !0 === s.options.centerMode ? s.options.slidesToShow + 1 : s.options.slidesToShow, e = s.slideCount; e > s.slideCount - o; e -= 1) t = e - 1, i(s.$slides[t]).clone(!0).attr("id", "").attr("data-slick-index", t - s.slideCount).prependTo(s.$slideTrack).addClass("slick-cloned");
              for (e = 0; e < o + s.slideCount; e += 1) t = e, i(s.$slides[t]).clone(!0).attr("id", "").attr("data-slick-index", t + s.slideCount).appendTo(s.$slideTrack).addClass("slick-cloned");
              s.$slideTrack.find(".slick-cloned").find("[id]").each(function () {
                  i(this).attr("id", "")
              })
          }
      }, e.prototype.interrupt = function (i) {
          var e = this;
          i || e.autoPlay(), e.interrupted = i
      }, e.prototype.selectHandler = function (e) {
          var t = this,
              o = i(e.target).is(".slick-slide") ? i(e.target) : i(e.target).parents(".slick-slide"),
              s = parseInt(o.attr("data-slick-index"));
          s || (s = 0), t.slideCount <= t.options.slidesToShow ? t.slideHandler(s, !1, !0) : t.slideHandler(s)
      }, e.prototype.slideHandler = function (i, e, t) {
          var o, s, n, r, l, d = null,
              a = this;
          if (e = e || !1, !(!0 === a.animating && !0 === a.options.waitForAnimate || !0 === a.options.fade && a.currentSlide === i))
              if (!1 === e && a.asNavFor(i), o = i, d = a.getLeft(o), r = a.getLeft(a.currentSlide), a.currentLeft = null === a.swipeLeft ? r : a.swipeLeft, !1 === a.options.infinite && !1 === a.options.centerMode && (i < 0 || i > a.getDotCount() * a.options.slidesToScroll)) !1 === a.options.fade && (o = a.currentSlide, !0 !== t ? a.animateSlide(r, function () {
                  a.postSlide(o)
              }) : a.postSlide(o));
              else if (!1 === a.options.infinite && !0 === a.options.centerMode && (i < 0 || i > a.slideCount - a.options.slidesToScroll)) !1 === a.options.fade && (o = a.currentSlide, !0 !== t ? a.animateSlide(r, function () {
              a.postSlide(o)
          }) : a.postSlide(o));
          else {
              if (a.options.autoplay && clearInterval(a.autoPlayTimer), s = o < 0 ? a.slideCount % a.options.slidesToScroll != 0 ? a.slideCount - a.slideCount % a.options.slidesToScroll : a.slideCount + o : o >= a.slideCount ? a.slideCount % a.options.slidesToScroll != 0 ? 0 : o - a.slideCount : o, a.animating = !0, a.$slider.trigger("beforeChange", [a, a.currentSlide, s]), n = a.currentSlide, a.currentSlide = s, a.setSlideClasses(a.currentSlide), a.options.asNavFor && (l = (l = a.getNavTarget()).slick("getSlick")).slideCount <= l.options.slidesToShow && l.setSlideClasses(a.currentSlide), a.updateDots(), a.updateArrows(), !0 === a.options.fade) return !0 !== t ? (a.fadeSlideOut(n), a.fadeSlide(s, function () {
                  a.postSlide(s)
              })) : a.postSlide(s), void a.animateHeight();
              !0 !== t ? a.animateSlide(d, function () {
                  a.postSlide(s)
              }) : a.postSlide(s)
          }
      }, e.prototype.startLoad = function () {
          var i = this;
          !0 === i.options.arrows && i.slideCount > i.options.slidesToShow && (i.$prevArrow.hide(), i.$nextArrow.hide()), !0 === i.options.dots && i.slideCount > i.options.slidesToShow && i.$dots.hide(), i.$slider.addClass("slick-loading")
      }, e.prototype.swipeDirection = function () {
          var i, e, t, o, s = this;
          return i = s.touchObject.startX - s.touchObject.curX, e = s.touchObject.startY - s.touchObject.curY, t = Math.atan2(e, i), (o = Math.round(180 * t / Math.PI)) < 0 && (o = 360 - Math.abs(o)), o <= 45 && o >= 0 ? !1 === s.options.rtl ? "left" : "right" : o <= 360 && o >= 315 ? !1 === s.options.rtl ? "left" : "right" : o >= 135 && o <= 225 ? !1 === s.options.rtl ? "right" : "left" : !0 === s.options.verticalSwiping ? o >= 35 && o <= 135 ? "down" : "up" : "vertical"
      }, e.prototype.swipeEnd = function (i) {
          var e, t, o = this;
          if (o.dragging = !1, o.swiping = !1, o.scrolling) return o.scrolling = !1, !1;
          if (o.interrupted = !1, o.shouldClick = !(o.touchObject.swipeLength > 10), void 0 === o.touchObject.curX) return !1;
          if (!0 === o.touchObject.edgeHit && o.$slider.trigger("edge", [o, o.swipeDirection()]), o.touchObject.swipeLength >= o.touchObject.minSwipe) {
              switch (t = o.swipeDirection()) {
                  case "left":
                  case "down":
                      e = o.options.swipeToSlide ? o.checkNavigable(o.currentSlide + o.getSlideCount()) : o.currentSlide + o.getSlideCount(), o.currentDirection = 0;
                      break;
                  case "right":
                  case "up":
                      e = o.options.swipeToSlide ? o.checkNavigable(o.currentSlide - o.getSlideCount()) : o.currentSlide - o.getSlideCount(), o.currentDirection = 1
              }
              "vertical" != t && (o.slideHandler(e), o.touchObject = {}, o.$slider.trigger("swipe", [o, t]))
          } else o.touchObject.startX !== o.touchObject.curX && (o.slideHandler(o.currentSlide), o.touchObject = {})
      }, e.prototype.swipeHandler = function (i) {
          var e = this;
          if (!(!1 === e.options.swipe || "ontouchend" in document && !1 === e.options.swipe || !1 === e.options.draggable && -1 !== i.type.indexOf("mouse"))) switch (e.touchObject.fingerCount = i.originalEvent && void 0 !== i.originalEvent.touches ? i.originalEvent.touches.length : 1, e.touchObject.minSwipe = e.listWidth / e.options.touchThreshold, !0 === e.options.verticalSwiping && (e.touchObject.minSwipe = e.listHeight / e.options.touchThreshold), i.data.action) {
              case "start":
                  e.swipeStart(i);
                  break;
              case "move":
                  e.swipeMove(i);
                  break;
              case "end":
                  e.swipeEnd(i)
          }
      }, e.prototype.swipeMove = function (i) {
          var e, t, o, s, n, r, l = this;
          return n = void 0 !== i.originalEvent ? i.originalEvent.touches : null, !(!l.dragging || l.scrolling || n && 1 !== n.length) && (e = l.getLeft(l.currentSlide), l.touchObject.curX = void 0 !== n ? n[0].pageX : i.clientX, l.touchObject.curY = void 0 !== n ? n[0].pageY : i.clientY, l.touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(l.touchObject.curX - l.touchObject.startX, 2))), r = Math.round(Math.sqrt(Math.pow(l.touchObject.curY - l.touchObject.startY, 2))), !l.options.verticalSwiping && !l.swiping && r > 4 ? (l.scrolling = !0, !1) : (!0 === l.options.verticalSwiping && (l.touchObject.swipeLength = r), t = l.swipeDirection(), void 0 !== i.originalEvent && l.touchObject.swipeLength > 4 && (l.swiping = !0, i.preventDefault()), s = (!1 === l.options.rtl ? 1 : -1) * (l.touchObject.curX > l.touchObject.startX ? 1 : -1), !0 === l.options.verticalSwiping && (s = l.touchObject.curY > l.touchObject.startY ? 1 : -1), o = l.touchObject.swipeLength, l.touchObject.edgeHit = !1, !1 === l.options.infinite && (0 === l.currentSlide && "right" === t || l.currentSlide >= l.getDotCount() && "left" === t) && (o = l.touchObject.swipeLength * l.options.edgeFriction, l.touchObject.edgeHit = !0), !1 === l.options.vertical ? l.swipeLeft = e + o * s : l.swipeLeft = e + o * (l.$list.height() / l.listWidth) * s, !0 === l.options.verticalSwiping && (l.swipeLeft = e + o * s), !0 !== l.options.fade && !1 !== l.options.touchMove && (!0 === l.animating ? (l.swipeLeft = null, !1) : void l.setCSS(l.swipeLeft))))
      }, e.prototype.swipeStart = function (i) {
          var e, t = this;
          if (t.interrupted = !0, 1 !== t.touchObject.fingerCount || t.slideCount <= t.options.slidesToShow) return t.touchObject = {}, !1;
          void 0 !== i.originalEvent && void 0 !== i.originalEvent.touches && (e = i.originalEvent.touches[0]), t.touchObject.startX = t.touchObject.curX = void 0 !== e ? e.pageX : i.clientX, t.touchObject.startY = t.touchObject.curY = void 0 !== e ? e.pageY : i.clientY, t.dragging = !0
      }, e.prototype.unfilterSlides = e.prototype.slickUnfilter = function () {
          var i = this;
          null !== i.$slidesCache && (i.unload(), i.$slideTrack.children(this.options.slide).detach(), i.$slidesCache.appendTo(i.$slideTrack), i.reinit())
      }, e.prototype.unload = function () {
          var e = this;
          i(".slick-cloned", e.$slider).remove(), e.$dots && e.$dots.remove(), e.$prevArrow && e.htmlExpr.test(e.options.prevArrow) && e.$prevArrow.remove(), e.$nextArrow && e.htmlExpr.test(e.options.nextArrow) && e.$nextArrow.remove(), e.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden", "true").css("width", "")
      }, e.prototype.unslick = function (i) {
          var e = this;
          e.$slider.trigger("unslick", [e, i]), e.destroy()
      }, e.prototype.updateArrows = function () {
          var i = this;
          Math.floor(i.options.slidesToShow / 2), !0 === i.options.arrows && i.slideCount > i.options.slidesToShow && !i.options.infinite && (i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false"), 0 === i.currentSlide ? (i.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true"), i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : i.currentSlide >= i.slideCount - i.options.slidesToShow && !1 === i.options.centerMode ? (i.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")) : i.currentSlide >= i.slideCount - 1 && !0 === i.options.centerMode && (i.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"), i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false")))
      }, e.prototype.updateDots = function () {
          var i = this;
          null !== i.$dots && (i.$dots.find("li").removeClass("slick-active").end(), i.$dots.find("li").eq(Math.floor(i.currentSlide / i.options.slidesToScroll)).addClass("slick-active"))
      }, e.prototype.visibility = function () {
          var i = this;
          i.options.autoplay && (document[i.hidden] ? i.interrupted = !0 : i.interrupted = !1)
      }, i.fn.slick = function () {
          var i, t, o = this,
              s = arguments[0],
              n = Array.prototype.slice.call(arguments, 1),
              r = o.length;
          for (i = 0; i < r; i++)
              if ("object" == typeof s || void 0 === s ? o[i].slick = new e(o[i], s) : t = o[i].slick[s].apply(o[i].slick, n), void 0 !== t) return t;
          return o
      }
  });
  
  /*! WOW wow.js - v1.3.0 - 2016-10-04
   * https://wowjs.uk
   * Copyright (c) 2016 Thomas Grainger; Licensed MIT */
  ! function (a, b) {
      if ("function" == typeof define && define.amd) define(["module", "exports"], b);
      else if ("undefined" != typeof exports) b(module, exports);
      else {
          var c = {
              exports: {}
          };
          b(c, c.exports), a.WOW = c.exports
      }
  }(this, function (a, b) {
      "use strict";
  
      function c(a, b) {
          if (!(a instanceof b)) throw new TypeError("Cannot call a class as a function")
      }
  
      function d(a, b) {
          return b.indexOf(a) >= 0
      }
  
      function e(a, b) {
          for (var c in b)
              if (null == a[c]) {
                  var d = b[c];
                  a[c] = d
              } return a
      }
  
      function f(a) {
          return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(a)
      }
  
      function g(a) {
          var b = arguments.length <= 1 || void 0 === arguments[1] ? !1 : arguments[1],
              c = arguments.length <= 2 || void 0 === arguments[2] ? !1 : arguments[2],
              d = arguments.length <= 3 || void 0 === arguments[3] ? null : arguments[3],
              e = void 0;
          return null != document.createEvent ? (e = document.createEvent("CustomEvent"), e.initCustomEvent(a, b, c, d)) : null != document.createEventObject ? (e = document.createEventObject(), e.eventType = a) : e.eventName = a, e
      }
  
      function h(a, b) {
          null != a.dispatchEvent ? a.dispatchEvent(b) : b in (null != a) ? a[b]() : "on" + b in (null != a) && a["on" + b]()
      }
  
      function i(a, b, c) {
          null != a.addEventListener ? a.addEventListener(b, c, !1) : null != a.attachEvent ? a.attachEvent("on" + b, c) : a[b] = c
      }
  
      function j(a, b, c) {
          null != a.removeEventListener ? a.removeEventListener(b, c, !1) : null != a.detachEvent ? a.detachEvent("on" + b, c) : delete a[b]
      }
  
      function k() {
          return "innerHeight" in window ? window.innerHeight : document.documentElement.clientHeight
      }
      Object.defineProperty(b, "__esModule", {
          value: !0
      });
      var l, m, n = function () {
              function a(a, b) {
                  for (var c = 0; c < b.length; c++) {
                      var d = b[c];
                      d.enumerable = d.enumerable || !1, d.configurable = !0, "value" in d && (d.writable = !0), Object.defineProperty(a, d.key, d)
                  }
              }
              return function (b, c, d) {
                  return c && a(b.prototype, c), d && a(b, d), b
              }
          }(),
          o = window.WeakMap || window.MozWeakMap || function () {
              function a() {
                  c(this, a), this.keys = [], this.values = []
              }
              return n(a, [{
                  key: "get",
                  value: function (a) {
                      for (var b = 0; b < this.keys.length; b++) {
                          var c = this.keys[b];
                          if (c === a) return this.values[b]
                      }
                  }
              }, {
                  key: "set",
                  value: function (a, b) {
                      for (var c = 0; c < this.keys.length; c++) {
                          var d = this.keys[c];
                          if (d === a) return this.values[c] = b, this
                      }
                      return this.keys.push(a), this.values.push(b), this
                  }
              }]), a
          }(),
          p = window.MutationObserver || window.WebkitMutationObserver || window.MozMutationObserver || (m = l = function () {
              function a() {
                  c(this, a), "undefined" != typeof console && null !== console && (console.warn("MutationObserver is not supported by your browser."), console.warn("WOW.js cannot detect dom mutations, please call .sync() after loading new content."))
              }
              return n(a, [{
                  key: "observe",
                  value: function () {}
              }]), a
          }(), l.notSupported = !0, m),
          q = window.getComputedStyle || function (a) {
              var b = /(\-([a-z]){1})/g;
              return {
                  getPropertyValue: function (c) {
                      "float" === c && (c = "styleFloat"), b.test(c) && c.replace(b, function (a, b) {
                          return b.toUpperCase()
                      });
                      var d = a.currentStyle;
                      return (null != d ? d[c] : void 0) || null
                  }
              }
          },
          r = function () {
              function a() {
                  var b = arguments.length <= 0 || void 0 === arguments[0] ? {} : arguments[0];
                  c(this, a), this.defaults = {
                      boxClass: "wow",
                      animateClass: "animated",
                      offset: 0,
                      mobile: !0,
                      live: !0,
                      callback: null,
                      scrollContainer: null,
                      resetAnimation: !0
                  }, this.animate = function () {
                      return "requestAnimationFrame" in window ? function (a) {
                          return window.requestAnimationFrame(a)
                      } : function (a) {
                          return a()
                      }
                  }(), this.vendors = ["moz", "webkit"], this.start = this.start.bind(this), this.resetAnimation = this.resetAnimation.bind(this), this.scrollHandler = this.scrollHandler.bind(this), this.scrollCallback = this.scrollCallback.bind(this), this.scrolled = !0, this.config = e(b, this.defaults), null != b.scrollContainer && (this.config.scrollContainer = document.querySelector(b.scrollContainer)), this.animationNameCache = new o, this.wowEvent = g(this.config.boxClass)
              }
              return n(a, [{
                  key: "init",
                  value: function () {
                      this.element = window.document.documentElement, d(document.readyState, ["interactive", "complete"]) ? this.start() : i(document, "DOMContentLoaded", this.start), this.finished = []
                  }
              }, {
                  key: "start",
                  value: function () {
                      var a = this;
                      if (this.stopped = !1, this.boxes = [].slice.call(this.element.querySelectorAll("." + this.config.boxClass)), this.all = this.boxes.slice(0), this.boxes.length)
                          if (this.disabled()) this.resetStyle();
                          else
                              for (var b = 0; b < this.boxes.length; b++) {
                                  var c = this.boxes[b];
                                  this.applyStyle(c, !0)
                              }
                      if (this.disabled() || (i(this.config.scrollContainer || window, "scroll", this.scrollHandler), i(window, "resize", this.scrollHandler), this.interval = setInterval(this.scrollCallback, 50)), this.config.live) {
                          var d = new p(function (b) {
                              for (var c = 0; c < b.length; c++)
                                  for (var d = b[c], e = 0; e < d.addedNodes.length; e++) {
                                      var f = d.addedNodes[e];
                                      a.doSync(f)
                                  }
                          });
                          d.observe(document.body, {
                              childList: !0,
                              subtree: !0
                          })
                      }
                  }
              }, {
                  key: "stop",
                  value: function () {
                      this.stopped = !0, j(this.config.scrollContainer || window, "scroll", this.scrollHandler), j(window, "resize", this.scrollHandler), null != this.interval && clearInterval(this.interval)
                  }
              }, {
                  key: "sync",
                  value: function () {
                      p.notSupported && this.doSync(this.element)
                  }
              }, {
                  key: "doSync",
                  value: function (a) {
                      if ("undefined" != typeof a && null !== a || (a = this.element), 1 === a.nodeType) {
                          a = a.parentNode || a;
                          for (var b = a.querySelectorAll("." + this.config.boxClass), c = 0; c < b.length; c++) {
                              var e = b[c];
                              d(e, this.all) || (this.boxes.push(e), this.all.push(e), this.stopped || this.disabled() ? this.resetStyle() : this.applyStyle(e, !0), this.scrolled = !0)
                          }
                      }
                  }
              }, {
                  key: "show",
                  value: function (a) {
                      return this.applyStyle(a), a.className = a.className + " " + this.config.animateClass, null != this.config.callback && this.config.callback(a), h(a, this.wowEvent), this.config.resetAnimation && (i(a, "animationend", this.resetAnimation), i(a, "oanimationend", this.resetAnimation), i(a, "webkitAnimationEnd", this.resetAnimation), i(a, "MSAnimationEnd", this.resetAnimation)), a
                  }
              }, {
                  key: "applyStyle",
                  value: function (a, b) {
                      var c = this,
                          d = a.getAttribute("data-wow-duration"),
                          e = a.getAttribute("data-wow-delay"),
                          f = a.getAttribute("data-wow-iteration");
                      return this.animate(function () {
                          return c.customStyle(a, b, d, e, f)
                      })
                  }
              }, {
                  key: "resetStyle",
                  value: function () {
                      for (var a = 0; a < this.boxes.length; a++) {
                          var b = this.boxes[a];
                          b.style.visibility = "visible"
                      }
                  }
              }, {
                  key: "resetAnimation",
                  value: function (a) {
                      if (a.type.toLowerCase().indexOf("animationend") >= 0) {
                          var b = a.target || a.srcElement;
                          b.className = b.className.replace(this.config.animateClass, "").trim()
                      }
                  }
              }, {
                  key: "customStyle",
                  value: function (a, b, c, d, e) {
                      return b && this.cacheAnimationName(a), a.style.visibility = b ? "hidden" : "visible", c && this.vendorSet(a.style, {
                          animationDuration: c
                      }), d && this.vendorSet(a.style, {
                          animationDelay: d
                      }), e && this.vendorSet(a.style, {
                          animationIterationCount: e
                      }), this.vendorSet(a.style, {
                          animationName: b ? "none" : this.cachedAnimationName(a)
                      }), a
                  }
              }, {
                  key: "vendorSet",
                  value: function (a, b) {
                      for (var c in b)
                          if (b.hasOwnProperty(c)) {
                              var d = b[c];
                              a["" + c] = d;
                              for (var e = 0; e < this.vendors.length; e++) {
                                  var f = this.vendors[e];
                                  a["" + f + c.charAt(0).toUpperCase() + c.substr(1)] = d
                              }
                          }
                  }
              }, {
                  key: "vendorCSS",
                  value: function (a, b) {
                      for (var c = q(a), d = c.getPropertyCSSValue(b), e = 0; e < this.vendors.length; e++) {
                          var f = this.vendors[e];
                          d = d || c.getPropertyCSSValue("-" + f + "-" + b)
                      }
                      return d
                  }
              }, {
                  key: "animationName",
                  value: function (a) {
                      var b = void 0;
                      try {
                          b = this.vendorCSS(a, "animation-name").cssText
                      } catch (c) {
                          b = q(a).getPropertyValue("animation-name")
                      }
                      return "none" === b ? "" : b
                  }
              }, {
                  key: "cacheAnimationName",
                  value: function (a) {
                      return this.animationNameCache.set(a, this.animationName(a))
                  }
              }, {
                  key: "cachedAnimationName",
                  value: function (a) {
                      return this.animationNameCache.get(a)
                  }
              }, {
                  key: "scrollHandler",
                  value: function () {
                      this.scrolled = !0
                  }
              }, {
                  key: "scrollCallback",
                  value: function () {
                      if (this.scrolled) {
                          this.scrolled = !1;
                          for (var a = [], b = 0; b < this.boxes.length; b++) {
                              var c = this.boxes[b];
                              if (c) {
                                  if (this.isVisible(c)) {
                                      this.show(c);
                                      continue
                                  }
                                  a.push(c)
                              }
                          }
                          this.boxes = a, this.boxes.length || this.config.live || this.stop()
                      }
                  }
              }, {
                  key: "offsetTop",
                  value: function (a) {
                      for (; void 0 === a.offsetTop;) a = a.parentNode;
                      for (var b = a.offsetTop; a.offsetParent;) a = a.offsetParent, b += a.offsetTop;
                      return b
                  }
              }, {
                  key: "isVisible",
                  value: function (a) {
                      var b = a.getAttribute("data-wow-offset") || this.config.offset,
                          c = this.config.scrollContainer && this.config.scrollContainer.scrollTop || window.pageYOffset,
                          d = c + Math.min(this.element.clientHeight, k()) - b,
                          e = this.offsetTop(a),
                          f = e + a.clientHeight;
                      return d >= e && f >= c
                  }
              }, {
                  key: "disabled",
                  value: function () {
                      return !this.config.mobile && f(navigator.userAgent)
                  }
              }]), a
          }();
      b["default"] = r, a.exports = b["default"]
  });
  $(document).ready(function () {
      //	Custom JS
  
      new WOW().init();
  
  
  
      (function () {
          var menuAppear = new TimelineMax({
              paused: true
          });
  
          menuAppear.fromTo(".header-search", 0.6, {
                  left: "-100%",
                  opacity: 0,
                  ease: Power3.easeOut
              }, {
                  left: "0%",
                  opacity: 1,
                  ease: Power3.easeOut
              })
              .from(".search-global__input", 1, {
                  y: 300,
                  opacity: 0,
                  display: "none",
                  ease: Power3.easeOut
              }, "+=0.6")
              .from(".search-global__note", 1, {
                  y: 90,
                  opacity: 0,
                  ease: Power3.easeOut
              }, "-=0.2");
  
          menuAppear.reverse();
  
          $(document).on("click", ".icon-magnifier.header-search-icon", function () {
              menuAppear.reversed(!menuAppear.reversed());
          });
          $(document).on("click", ".search-close.close", function () {
              // event.preventDefault();
              menuAppear.reversed(!menuAppear.reversed());
          });
      })();
  
  
      /////////////////////////////////////
      //		Dropdown Menu
      /////////////////////////////////////
      $('ul.nav li.dropdown').hover(function () {
          $(this).find('.dropdown-menu').stop(true, true).delay(200).fadeIn(500);
      }, function () {
          $(this).find('.dropdown-menu').stop(true, true).delay(200).fadeOut(500);
      });
  
      /////////////////////////////////////////////////////////////////
      // Slider numbers
      /////////////////////////////////////////////////////////////////
  
      if ($('#price-range-slider').length) {
  
          var keypressSlider = document.getElementById('price-range-slider');
          var input0 = document.getElementById('input-with-keypress-0');
          var input1 = document.getElementById('input-with-keypress-1');
          var inputs = [input0, input1];
  
          noUiSlider.create(keypressSlider, {
              start: [1000, 50000],
              connect: true,
              step: 100,
              format: wNumb({
                  decimals: 0,
                  prefix: '$',
                  thousand: ','
              }),
              range: {
                  'min': 1000,
                  'max': 50000
              }
          });
  
          keypressSlider.noUiSlider.on('update', function (values, handle) {
              inputs[handle].value = values[handle];
          });
      }
  
  
  
  
      /////////////////////////////////////
      // Datepicker
      /////////////////////////////////////
  
      $('.input-group input').each(function () {
          $(this).datepicker({
              format: "M d, yyyy",
              autoclose: true,
              todayHighlight: true,
              showOtherMonths: true,
              selectOtherMonths: true,
              autoclose: true,
              changeMonth: true,
              changeYear: true,
              startView: "days",
              orientation: "button"
          });
      });
  
  
      /////////////////////////////////////
      // Select customization
      /////////////////////////////////////
  
      if ($('.selectpicker').length) {
          $('.selectpicker').selectpicker();
      }
  
  
      /////////////////////////////////////
      //	Background Images function
      /////////////////////////////////////
      (function () {
          $('.bg-img').each(function () {
              var url = $(this).attr('data-img');
              if (url) {
                  $(this).css('background-image', 'url(' + url + ')');
              }
          });
      })();
  
      /////////////////////////////////////  
      //  OWL Carousel
      /////////////////////////////////////  
      $('#home-1-cars').owlCarousel({
          loop: true,
          autoPlay: 1000,
          center: false,
          items: 3,
          margin: 30,
          nav: false,
          responsive: {
              // breakpoint from 0 up
              0: {
                  items: 1,
              },
              // breakpoint from 480 up
              480: {
                  items: 1,
              },
              // breakpoint from 768 up
              768: {
                  items: 2,
              },
  
              1200: {
                  items: 3,
              }
          }
      });
  
      $('#home-1-types').owlCarousel({
          loop: true,
          autoPlay: 1000,
          center: true,
          items: 5,
          margin: 0,
          nav: false,
          responsive: {
              // breakpoint from 0 up
              0: {
                  items: 1,
              },
              // breakpoint from 480 up
              480: {
                  items: 1,
              },
              // breakpoint from 768 up
              768: {
                  items: 3,
              },
              1024: {
                  items: 3,
              },
  
              1200: {
                  items: 5,
              }
          }
      });
  
  
      $('#home-1-reviews').owlCarousel({
          loop: true,
          autoPlay: 1000,
          center: false,
          items: 5,
          margin: 0,
          nav: false,
          responsive: {
              // breakpoint from 0 up
              0: {
                  items: 1,
              },
              // breakpoint from 480 up
              480: {
                  items: 1,
              },
              // breakpoint from 768 up
              768: {
                  items: 1,
              },
  
              1200: {
                  items: 2,
              }
          }
  
      });
  
      $('#home-1-news').owlCarousel({
          loop: false,
          autoPlay: 1000,
          center: false,
          items: 5,
          margin: 40,
          nav: false,
          responsive: {
              // breakpoint from 0 up
              0: {
                  items: 1,
              },
              // breakpoint from 480 up
              480: {
                  items: 1,
              },
              // breakpoint from 768 up
              768: {
                  items: 2,
              },
  
              1200: {
                  items: 3,
              }
          }
  
      });
  
      $('#home-1-logos-carousel').owlCarousel({
          loop: true,
          autoPlay: 1000,
          // center: true,
          items: 3,
          margin: 30,
          nav: false,
          dots: false,
          responsive: {
              // breakpoint from 0 up
              0: {
                  items: 1,
              },
              // breakpoint from 480 up
              480: {
                  items: 2,
              },
              // breakpoint from 768 up
              768: {
                  items: 2,
              },
  
              1200: {
                  items: 5,
              }
          }
  
      });
  
      $('.triple-carousel').owlCarousel({
          loop: false,
          autoPlay: 1000,
          // center: true,
          items: 2,
          margin: 30,
          nav: false,
          dots: true,
          responsive: {
              // breakpoint from 0 up
              0: {
                  items: 1,
              },
              // breakpoint from 480 up
              480: {
                  items: 1,
              },
              // breakpoint from 768 up
              768: {
                  items: 2,
              },
  
              1200: {
                  items: 3,
              }
          }
  
      });
  
      $('#tabs-carousel').owlCarousel({
          loop: true,
          autoPlay: 1000,
          center: true,
          items: 1,
          margin: 0,
          nav: false,
          dots: true,
          responsive: {
              // breakpoint from 0 up
              0: {
                  items: 1,
              },
              // breakpoint from 480 up
              480: {
                  items: 1,
              },
              // breakpoint from 768 up
              768: {
                  items: 1,
              },
  
              1200: {
                  items: 5,
              }
          }
  
      });
  
      $('#review-owl-carousel').owlCarousel({
          loop: true,
          autoPlay: 1000,
          center: true,
          items: 2,
          margin: 30,
          nav: false,
          dots: true,
          responsive: {
              // breakpoint from 0 up
              0: {
                  items: 1,
              },
              // breakpoint from 480 up
              480: {
                  items: 1,
              },
              // breakpoint from 768 up
              768: {
                  items: 1,
              },
  
              1200: {
                  items: 1,
              }
          }
  
      });
  
      $('#featured-icons').owlCarousel({
          loop: true,
          autoPlay: 1000,
          center: false,
          items: 6,
          margin: 40,
          nav: false,
          dots: true,
          responsive: {
              // breakpoint from 0 up
              0: {
                  items: 3,
              },
              // breakpoint from 480 up
              480: {
                  items: 3,
              },
              // breakpoint from 768 up
              768: {
                  items: 3,
              },
  
              1200: {
                  items: 6,
              }
          }
  
      });
  
  
      $('.cr-tabs a').on('click', function (e) {
          e.preventDefault()
          $(this).tab('show')
      })
  
  
      /////////////////////////////////////
      //  Chars Start
      /////////////////////////////////////
      if ($('body').length) {
          $(window).on('scroll', function () {
              var winH = $(window).scrollTop();
  
              $('.cr-counters').waypoint(function () {
                  $('.js-chart').each(function () {
                      CharsStart();
                  });
              }, {
                  offset: '80%'
              });
          });
      }
  
      function CharsStart() {
  
          $('.js-chart').easyPieChart({
              barColor: false,
              trackColor: false,
              scaleColor: false,
              scaleLength: false,
              lineCap: false,
              lineWidth: false,
              size: false,
              animate: 5000,
  
              onStep: function (from, to, percent) {
                  $(this.el).find('.js-percent').text(Math.round(percent));
              }
          });
      }
  
  
      ////////////////////////////////////////////
      // Sliders with thumbnails
      ///////////////////////////////////////////
  
      if ($('.js-slider-for').length) {
          $('.js-slider-for').slick({
              arrows: false,
              fade: true,
              asNavFor: '.js-slider-nav'
          });
          $('.js-slider-nav').slick({
              slidesToShow: 5,
              slidesToScroll: 1,
              asNavFor: '.js-slider-for',
              focusOnSelect: true,
              responsive: [
                  {
                      breakpoint: 1024,
                      settings: {
                          slidesToShow: 5,
                          slidesToScroll: 1,
                          infinite: true,
                          dots: true
                      }
  		},
                  {
                      breakpoint: 600,
                      settings: {
                          slidesToShow: 3,
                          slidesToScroll: 1
                      }
  		},
                  {
                      breakpoint: 480,
                      settings: {
                          slidesToShow: 1,
                          slidesToScroll: 1
                      }
  		}
  		// You can unslick at a given breakpoint now by adding:
  		// settings: "unslick"
  		// instead of a settings object
  	  ]
          });
      }
  
  
      /////////////////////////////////////////////////////////////////
      // Map
      /////////////////////////////////////////////////////////////////
  
  
      // When the window has finished loading create our google map below
      // google.maps.event.addDomListener(window, 'load', init);
  
      function init() {
          // Basic options for a simple Google Map
          // For more options see: https://developers.google.com/maps/documentation/javascript/reference#MapOptions
          var mapOptions = {
              // How zoomed in you want the map to start at (always required)
              zoom: 11,
  
              // The latitude and longitude to center the map (always required)
              center: new google.maps.LatLng(40.6700, -73.9400), // New York
  
              scrollwheel: false,
  
  
              // How you would like to style the map.
              // This is where you would paste any style found on Snazzy Maps.
              styles: [{
                  "featureType": "water",
                  "elementType": "geometry",
                  "stylers": [{
                      "color": "#e9e9e9"
                  }, {
                      "lightness": 17
                  }]
              }, {
                  "featureType": "landscape",
                  "elementType": "geometry",
                  "stylers": [{
                      "color": "#f5f5f5"
                  }, {
                      "lightness": 20
                  }]
              }, {
                  "featureType": "road.highway",
                  "elementType": "geometry.fill",
                  "stylers": [{
                      "color": "#ffffff"
                  }, {
                      "lightness": 17
                  }]
              }, {
                  "featureType": "road.highway",
                  "elementType": "geometry.stroke",
                  "stylers": [{
                      "color": "#ffffff"
                  }, {
                      "lightness": 29
                  }, {
                      "weight": 0.2
                  }]
              }, {
                  "featureType": "road.arterial",
                  "elementType": "geometry",
                  "stylers": [{
                      "color": "#ffffff"
                  }, {
                      "lightness": 18
                  }]
              }, {
                  "featureType": "road.local",
                  "elementType": "geometry",
                  "stylers": [{
                      "color": "#ffffff"
                  }, {
                      "lightness": 16
                  }]
              }, {
                  "featureType": "poi",
                  "elementType": "geometry",
                  "stylers": [{
                      "color": "#f5f5f5"
                  }, {
                      "lightness": 21
                  }]
              }, {
                  "featureType": "poi.park",
                  "elementType": "geometry",
                  "stylers": [{
                      "color": "#dedede"
                  }, {
                      "lightness": 21
                  }]
              }, {
                  "elementType": "labels.text.stroke",
                  "stylers": [{
                      "visibility": "on"
                  }, {
                      "color": "#ffffff"
                  }, {
                      "lightness": 16
                  }]
              }, {
                  "elementType": "labels.text.fill",
                  "stylers": [{
                      "saturation": 36
                  }, {
                      "color": "#333333"
                  }, {
                      "lightness": 40
                  }]
              }, {
                  "elementType": "labels.icon",
                  "stylers": [{
                      "visibility": "off"
                  }]
              }, {
                  "featureType": "transit",
                  "elementType": "geometry",
                  "stylers": [{
                      "color": "#f2f2f2"
                  }, {
                      "lightness": 19
                  }]
              }, {
                  "featureType": "administrative",
                  "elementType": "geometry.fill",
                  "stylers": [{
                      "color": "#fefefe"
                  }, {
                      "lightness": 20
                  }]
              }, {
                  "featureType": "administrative",
                  "elementType": "geometry.stroke",
                  "stylers": [{
                      "color": "#fefefe"
                  }, {
                      "lightness": 17
                  }, {
                      "weight": 1.2
                  }]
              }]
          };
  
          // Get the HTML DOM element that will contain your map
          // We are using a div with id="map" seen below in the <body>
          var mapElement = document.getElementById('map');
  
          // Create the Google Map using our element and options defined above
          var map = new google.maps.Map(mapElement, mapOptions);
  
          var image = 'assets/media/general/map-marker.png';
          // Let's also add a marker while we're at it
          var marker = new google.maps.Marker({
              position: new google.maps.LatLng(40.6700, -73.9400),
              map: map,
              icon: image,
              draggable: true,
              animation: google.maps.Animation.DROP
          });
          marker.addListener('click', toggleBounce);
  
          function toggleBounce() {
              if (marker.getAnimation() !== null) {
                  marker.setAnimation(null);
              } else {
                  marker.setAnimation(google.maps.Animation.BOUNCE);
              }
          }
      }
  });
  