! function () { function t(t) { return t.split("").reverse().join("") } function e(t, e, n) { if ((t[e] || t[n]) && t[e] === t[n]) throw Error(e) } function n(e, n, r, i, o, s, a, l, u, c, p, f) { a = f; var d, h = p = ""; return s && (f = s(f)), !("number" != typeof f || !isFinite(f)) && (e && 0 === parseFloat(f.toFixed(e)) && (f = 0), 0 > f && (d = !0, f = Math.abs(f)), e && (s = Math.pow(10, e), f = (Math.round(f * s) / s).toFixed(e)), -1 !== (f = f.toString()).indexOf(".") && (f = (e = f.split("."))[0], r && (p = r + e[1])), n && (f = t((f = t(f).match(/.{1,3}/g)).join(t(n)))), d && l && (h += l), i && (h += i), d && u && (h += u), h = h + f + p, o && (h += o), c && (h = c(h, a)), h) } function r(t, e, n, r, i, o, s, a, l, u, c, p) { var f; return t = "", c && (p = c(p)), !(!p || "string" != typeof p) && (a && p.substring(0, a.length) === a && (p = p.replace(a, ""), f = !0), r && p.substring(0, r.length) === r && (p = p.replace(r, "")), l && p.substring(0, l.length) === l && (p = p.replace(l, ""), f = !0), i && p.slice(-1 * i.length) === i && (p = p.slice(0, -1 * i.length)), e && (p = p.split(e).join("")), n && (p = p.replace(n, ".")), f && (t += "-"), t = Number((t + p).replace(/[^0-9\.\-.]/g, "")), s && (t = s(t)), !("number" != typeof t || !isFinite(t)) && t) } function i(t, e, n) { var r, i = []; for (r = 0; r < o.length; r += 1) i.push(t[o[r]]); return i.push(n), e.apply("", i) } var o = "decimals thousand mark prefix postfix encoder decoder negativeBefore negative edit undo".split(" "); window.wNumb = function t(s) { if (!(this instanceof t)) return new t(s); "object" == typeof s && (s = function (t) { var n, r, i, s = {}; for (n = 0; n < o.length; n += 1) r = o[n], i = t[r], void 0 === i ? s[r] = "negative" !== r || s.negativeBefore ? "mark" === r && "." !== s.thousand && "." : "-" : "decimals" === r ? 0 < i && 8 > i && (s[r] = i) : "encoder" === r || "decoder" === r || "edit" === r || "undo" === r ? "function" == typeof i && (s[r] = i) : "string" == typeof i && (s[r] = i); return e(s, "mark", "thousand"), e(s, "prefix", "negative"), e(s, "prefix", "negativeBefore"), s }(s), this.to = function (t) { return i(s, n, t) }, this.from = function (t) { return i(s, r, t) }) } }(), function (t) { "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? module.exports = t() : window.noUiSlider = t() }(function () { "use strict"; function t(t, e) { var n = document.createElement("div"); return o(n, e), t.appendChild(n), n } function e(t) { return "number" == typeof t && !isNaN(t) && isFinite(t) } function n(t, e, n) { n > 0 && (o(t, e), setTimeout(function () { s(t, e) }, n)) } function r(t) { return Array.isArray(t) ? t : [t] } function i(t) { var e = (t = String(t)).split("."); return e.length > 1 ? e[1].length : 0 } function o(t, e) { t.classList ? t.classList.add(e) : t.className += " " + e } function s(t, e) { t.classList ? t.classList.remove(e) : t.className = t.className.replace(new RegExp("(^|\\b)" + e.split(" ").join("|") + "(\\b|$)", "gi"), " ") } function a() { var t = void 0 !== window.pageXOffset, e = "CSS1Compat" === (document.compatMode || ""); return { x: t ? window.pageXOffset : e ? document.documentElement.scrollLeft : document.body.scrollLeft, y: t ? window.pageYOffset : e ? document.documentElement.scrollTop : document.body.scrollTop } } function l(t, e) { return 100 / (e - t) } function u(t, e) { return 100 * e / (t[1] - t[0]) } function c(t, e) { for (var n = 1; t >= e[n];) n += 1; return n } function p(t, e, n) { if (n >= t.slice(-1)[0]) return 100; var r, i, o, s, a, p, f = c(n, t); return r = t[f - 1], i = t[f], o = e[f - 1], s = e[f], o + (p = n, u(a = [r, i], a[0] < 0 ? p + Math.abs(a[0]) : p - a[0]) / l(o, s)) } function f(t, e, n, r) { if (100 === r) return r; var i, o, s, a, l = c(r, t); return n ? r - (i = t[l - 1]) > ((o = t[l]) - i) / 2 ? o : i : e[l - 1] ? t[l - 1] + (s = r - t[l - 1], a = e[l - 1], Math.round(s / a) * a) : r } function d(t, n, r) { var i; if ("number" == typeof n && (n = [n]), "[object Array]" !== Object.prototype.toString.call(n)) throw new Error("noUiSlider: 'range' contains invalid value."); if (!e(i = "min" === t ? 0 : "max" === t ? 100 : parseFloat(t)) || !e(n[0])) throw new Error("noUiSlider: 'range' value isn't numeric."); r.xPct.push(i), r.xVal.push(n[0]), i ? r.xSteps.push(!isNaN(n[1]) && n[1]) : isNaN(n[1]) || (r.xSteps[0] = n[1]), r.xHighestCompleteStep.push(0) } function h(t, e, n) { if (!e) return !0; n.xSteps[t] = u([n.xVal[t], n.xVal[t + 1]], e) / l(n.xPct[t], n.xPct[t + 1]); var r = (n.xVal[t + 1] - n.xVal[t]) / n.xNumSteps[t], i = Math.ceil(Number(r.toFixed(3)) - 1), o = n.xVal[t] + n.xNumSteps[t] * i; n.xHighestCompleteStep[t] = o } function m(t, e, n, r) { this.xPct = [], this.xVal = [], this.xSteps = [r || !1], this.xNumSteps = [!1], this.xHighestCompleteStep = [], this.snap = e, this.direction = n; var i, o = []; for (i in t) t.hasOwnProperty(i) && o.push([t[i], i]); for (o.length && "object" == typeof o[0][0] ? o.sort(function (t, e) { return t[0][0] - e[0][0] }) : o.sort(function (t, e) { return t[0] - e[0] }), i = 0; i < o.length; i++) d(o[i][1], o[i][0], this); for (this.xNumSteps = this.xSteps.slice(0), i = 0; i < this.xNumSteps.length; i++) h(i, this.xNumSteps[i], this) } m.prototype.getMargin = function (t) { var e = this.xNumSteps[0]; if (e && t / e % 1 != 0) throw new Error("noUiSlider: 'limit', 'margin' and 'padding' must be divisible by step."); return 2 === this.xPct.length && u(this.xVal, t) }, m.prototype.toStepping = function (t) { return t = p(this.xVal, this.xPct, t) }, m.prototype.fromStepping = function (t) { return function (t, e, n) { if (n >= 100) return t.slice(-1)[0]; var r, i, o, s, a, u = c(n, e); return r = t[u - 1], i = t[u], o = e[u - 1], s = e[u], a = [r, i], (n - o) * l(o, s) * (a[1] - a[0]) / 100 + a[0] }(this.xVal, this.xPct, t) }, m.prototype.getStep = function (t) { return t = f(this.xPct, this.xSteps, this.snap, t) }, m.prototype.getNearbySteps = function (t) { var e = c(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 - 0], step: this.xNumSteps[e - 0], highestStep: this.xHighestCompleteStep[e - 0] } } }, m.prototype.countStepDecimals = function () { var t = this.xNumSteps.map(i); return Math.max.apply(null, t) }, m.prototype.convert = function (t) { return this.getStep(this.toStepping(t)) }; var g = { to: function (t) { return void 0 !== t && t.toFixed(2) }, from: Number }; function v(t, n) { if (!e(n)) throw new Error("noUiSlider: 'step' is not numeric."); t.singleStep = n } function b(t, e) { if ("object" != typeof e || Array.isArray(e)) throw new Error("noUiSlider: 'range' is not an object."); if (void 0 === e.min || void 0 === e.max) throw new Error("noUiSlider: Missing 'min' or 'max' in 'range'."); if (e.min === e.max) throw new Error("noUiSlider: 'range' 'min' and 'max' cannot be equal."); t.spectrum = new m(e, t.snap, t.dir, t.singleStep) } function w(t, e) { if (e = r(e), !Array.isArray(e) || !e.length) throw new Error("noUiSlider: 'start' option is incorrect."); t.handles = e.length, t.start = e } function S(t, e) { if (t.snap = e, "boolean" != typeof e) throw new Error("noUiSlider: 'snap' option must be a boolean.") } function x(t, e) { if (t.animate = e, "boolean" != typeof e) throw new Error("noUiSlider: 'animate' option must be a boolean.") } function y(t, e) { if (t.animationDuration = e, "number" != typeof e) throw new Error("noUiSlider: 'animationDuration' option must be a number.") } function E(t, e) { var n, r = [!1]; if ("lower" === e ? e = [!0, !1] : "upper" === e && (e = [!1, !0]), !0 === e || !1 === e) { for (n = 1; n < t.handles; n++) r.push(e); r.push(!1) } else { if (!Array.isArray(e) || !e.length || e.length !== t.handles + 1) throw new Error("noUiSlider: 'connect' option doesn't match handle count."); r = e } t.connect = r } function C(t, e) { switch (e) { case "horizontal": t.ort = 0; break; case "vertical": t.ort = 1; break; default: throw new Error("noUiSlider: 'orientation' option is invalid.") } } function N(t, n) { if (!e(n)) throw new Error("noUiSlider: 'margin' option must be numeric."); if (0 !== n && (t.margin = t.spectrum.getMargin(n), !t.margin)) throw new Error("noUiSlider: 'margin' option is only supported on linear sliders.") } function U(t, n) { if (!e(n)) throw new Error("noUiSlider: 'limit' option must be numeric."); if (t.limit = t.spectrum.getMargin(n), !t.limit || t.handles < 2) throw new Error("noUiSlider: 'limit' option is only supported on linear sliders with 2 or more handles.") } function M(t, n) { if (!e(n)) throw new Error("noUiSlider: 'padding' option must be numeric."); if (0 !== n) { if (t.padding = t.spectrum.getMargin(n), !t.padding) throw new Error("noUiSlider: 'padding' option is only supported on linear sliders."); if (t.padding < 0) throw new Error("noUiSlider: 'padding' option must be a positive number."); if (t.padding >= 50) throw new Error("noUiSlider: 'padding' option must be less than half the range.") } } function P(t, e) { switch (e) { case "ltr": t.dir = 0; break; case "rtl": t.dir = 1; break; default: throw new Error("noUiSlider: 'direction' option was not recognized.") } } function k(t, e) { if ("string" != typeof e) throw new Error("noUiSlider: 'behaviour' must be a string containing options."); var n = e.indexOf("tap") >= 0, r = e.indexOf("drag") >= 0, i = e.indexOf("fixed") >= 0, o = e.indexOf("snap") >= 0, s = e.indexOf("hover") >= 0; if (i) { if (2 !== t.handles) throw new Error("noUiSlider: 'fixed' behaviour must be used with 2 handles"); N(t, t.start[1] - t.start[0]) } t.events = { tap: n || o, drag: r, fixed: i, snap: o, hover: s } } function O(t, e) { if (!1 !== e) if (!0 === e) { t.tooltips = []; for (var n = 0; n < t.handles; n++) t.tooltips.push(!0) } else { if (t.tooltips = r(e), t.tooltips.length !== t.handles) throw new Error("noUiSlider: 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: 'tooltips' must be passed a formatter or 'false'.") }) } } function V(t, e) { if (t.format = e, "function" == typeof e.to && "function" == typeof e.from) return !0; throw new Error("noUiSlider: 'format' requires 'to' and 'from' methods.") } function A(t, e) { if (void 0 !== e && "string" != typeof e && !1 !== e) throw new Error("noUiSlider: 'cssPrefix' must be a string or `false`."); t.cssPrefix = e } function L(t, e) { if (void 0 !== e && "object" != typeof e) throw new Error("noUiSlider: 'cssClasses' must be an object."); if ("string" == typeof t.cssPrefix) { t.cssClasses = {}; for (var n in e) e.hasOwnProperty(n) && (t.cssClasses[n] = t.cssPrefix + e[n]) } else t.cssClasses = e } function F(t, e) { if (!0 !== e && !1 !== e) throw new Error("noUiSlider: 'useRequestAnimationFrame' option should be true (default) or false."); t.useRequestAnimationFrame = e } function j(t) { var e = { margin: 0, limit: 0, padding: 0, animate: !0, animationDuration: 300, format: g }, n = { step: { r: !1, t: v }, start: { r: !0, t: w }, connect: { r: !0, t: E }, direction: { r: !0, t: P }, snap: { r: !1, t: S }, animate: { r: !1, t: x }, animationDuration: { r: !1, t: y }, range: { r: !0, t: b }, orientation: { r: !1, t: C }, margin: { r: !1, t: N }, limit: { r: !1, t: U }, padding: { r: !1, t: M }, behaviour: { r: !0, t: k }, format: { r: !1, t: V }, tooltips: { r: !1, t: O }, cssPrefix: { r: !1, t: A }, cssClasses: { r: !1, t: L }, useRequestAnimationFrame: { r: !1, t: F } }, r = { connect: !1, direction: "ltr", behaviour: "tap", orientation: "horizontal", cssPrefix: "noUi-", cssClasses: { target: "target", base: "base", origin: "origin", handle: "handle", handleTouchArea: "handle-touch-area", handleLower: "handle-lower", handleUpper: "handle-upper", horizontal: "horizontal", vertical: "vertical", background: "background", connect: "connect", 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" }, useRequestAnimationFrame: !0 }; Object.keys(n).forEach(function (i) { if (void 0 === t[i] && void 0 === r[i]) { if (n[i].r) throw new Error("noUiSlider: '" + i + "' is required."); return !0 } n[i].t(e, void 0 === t[i] ? r[i] : t[i]) }), e.pips = t.pips; var i = [ ["left", "top"], ["right", "bottom"] ]; return e.style = i[e.dir][e.ort], e.styleOposite = i[e.dir ? 0 : 1][e.ort], e } function z(e, i, l) { var u, c, p, f, d, h, m, g = 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" }, v = e, b = [], w = [], S = !1, x = i.spectrum, y = [], E = {}; function C(e, n) { return !!n && t(e, i.cssClasses.connect) } function N(e, n) { return !!i.tooltips[n] && t(e.firstChild, i.cssClasses.tooltip) } function U(t, e, n) { var r = document.createElement("div"), s = "", a = [i.cssClasses.valueNormal, i.cssClasses.valueLarge, i.cssClasses.valueSub], l = [i.cssClasses.markerNormal, i.cssClasses.markerLarge, i.cssClasses.markerSub], u = [i.cssClasses.valueHorizontal, i.cssClasses.valueVertical], c = [i.cssClasses.markerHorizontal, i.cssClasses.markerVertical]; function p(t, e, n) { return 'class="' + (r = n[1], s = (o = e) === i.cssClasses.value, p = s ? a : l, o + " " + (s ? u : c)[i.ort] + " " + p[r]) + '" style="' + i.style + ": " + t + '%"'; var r, o, s, p } return o(r, i.cssClasses.pips), o(r, 0 === i.ort ? i.cssClasses.pipsHorizontal : i.cssClasses.pipsVertical), Object.keys(t).forEach(function (r) { var o, a; o = r, (a = t[r])[1] = a[1] && e ? e(a[0], a[1]) : a[1], s += "
", a[1] && (s += "