/* Minification failed. Returning unminified contents.
(108,25-40): run-time error JS1300: Strict-mode does not allow assignment to undefined variables: propertiesToSum
(104,21-36): run-time error JS1300: Strict-mode does not allow assignment to undefined variables: propertiesToSum
 */
/*! VelocityJS.org (1.3.0). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */
/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */
!function (a) { "use strict"; function b(a) { var b = a.length, d = c.type(a); return "function" !== d && !c.isWindow(a) && (!(1 !== a.nodeType || !b) || ("array" === d || 0 === b || "number" == typeof b && b > 0 && b - 1 in a)) } if (!a.jQuery) { var c = function (a, b) { return new c.fn.init(a, b) }; c.isWindow = function (a) { return a && a === a.window }, c.type = function (a) { return a ? "object" == typeof a || "function" == typeof a ? e[g.call(a)] || "object" : typeof a : a + "" }, c.isArray = Array.isArray || function (a) { return "array" === c.type(a) }, c.isPlainObject = function (a) { var b; if (!a || "object" !== c.type(a) || a.nodeType || c.isWindow(a)) return !1; try { if (a.constructor && !f.call(a, "constructor") && !f.call(a.constructor.prototype, "isPrototypeOf")) return !1 } catch (d) { return !1 } for (b in a); return void 0 === b || f.call(a, b) }, c.each = function (a, c, d) { var e, f = 0, g = a.length, h = b(a); if (d) { if (h) for (; f < g && (e = c.apply(a[f], d), e !== !1) ; f++); else for (f in a) if (e = c.apply(a[f], d), e === !1) break } else if (h) for (; f < g && (e = c.call(a[f], f, a[f]), e !== !1) ; f++); else for (f in a) if (e = c.call(a[f], f, a[f]), e === !1) break; return a }, c.data = function (a, b, e) { if (void 0 === e) { var f = a[c.expando], g = f && d[f]; if (void 0 === b) return g; if (g && b in g) return g[b] } else if (void 0 !== b) { var h = a[c.expando] || (a[c.expando] = ++c.uuid); return d[h] = d[h] || {}, d[h][b] = e, e } }, c.removeData = function (a, b) { var e = a[c.expando], f = e && d[e]; f && (b ? c.each(b, function (a, b) { delete f[b] }) : delete d[e]) }, c.extend = function () { var a, b, d, e, f, g, h = arguments[0] || {}, i = 1, j = arguments.length, k = !1; for ("boolean" == typeof h && (k = h, h = arguments[i] || {}, i++), "object" != typeof h && "function" !== c.type(h) && (h = {}), i === j && (h = this, i--) ; i < j; i++) if (f = arguments[i]) for (e in f) a = h[e], d = f[e], h !== d && (k && d && (c.isPlainObject(d) || (b = c.isArray(d))) ? (b ? (b = !1, g = a && c.isArray(a) ? a : []) : g = a && c.isPlainObject(a) ? a : {}, h[e] = c.extend(k, g, d)) : void 0 !== d && (h[e] = d)); return h }, c.queue = function (a, d, e) { function f(a, c) { var d = c || []; return a && (b(Object(a)) ? !function (a, b) { for (var c = +b.length, d = 0, e = a.length; d < c;) a[e++] = b[d++]; if (c !== c) for (; void 0 !== b[d];) a[e++] = b[d++]; return a.length = e, a }(d, "string" == typeof a ? [a] : a) : [].push.call(d, a)), d } if (a) { d = (d || "fx") + "queue"; var g = c.data(a, d); return e ? (!g || c.isArray(e) ? g = c.data(a, d, f(e)) : g.push(e), g) : g || [] } }, c.dequeue = function (a, b) { c.each(a.nodeType ? [a] : a, function (a, d) { b = b || "fx"; var e = c.queue(d, b), f = e.shift(); "inprogress" === f && (f = e.shift()), f && ("fx" === b && e.unshift("inprogress"), f.call(d, function () { c.dequeue(d, b) })) }) }, c.fn = c.prototype = { init: function (a) { if (a.nodeType) return this[0] = a, this; throw new Error("Not a DOM node.") }, offset: function () { var b = this[0].getBoundingClientRect ? this[0].getBoundingClientRect() : { top: 0, left: 0 }; return { top: b.top + (a.pageYOffset || document.scrollTop || 0) - (document.clientTop || 0), left: b.left + (a.pageXOffset || document.scrollLeft || 0) - (document.clientLeft || 0) } }, position: function () { function a(a) { for (var b = a.offsetParent || document; b && "html" !== b.nodeType.toLowerCase && "static" === b.style.position;) b = b.offsetParent; return b || document } var b = this[0], d = a(b), e = this.offset(), f = /^(?:body|html)$/i.test(d.nodeName) ? { top: 0, left: 0 } : c(d).offset(); return e.top -= parseFloat(b.style.marginTop) || 0, e.left -= parseFloat(b.style.marginLeft) || 0, d.style && (f.top += parseFloat(d.style.borderTopWidth) || 0, f.left += parseFloat(d.style.borderLeftWidth) || 0), { top: e.top - f.top, left: e.left - f.left } } }; var d = {}; c.expando = "velocity" + (new Date).getTime(), c.uuid = 0; for (var e = {}, f = e.hasOwnProperty, g = e.toString, h = "Boolean Number String Function Array Date RegExp Object Error".split(" "), i = 0; i < h.length; i++) e["[object " + h[i] + "]"] = h[i].toLowerCase(); c.fn.init.prototype = c.fn, a.Velocity = { Utilities: c } } }(window), function (a) { "use strict"; "object" == typeof module && "object" == typeof module.exports ? module.exports = a() : "function" == typeof define && define.amd ? define(a) : a() }(function () {
    "use strict"; return function (a, b, c, d) {
        function e(a) { for (var b = -1, c = a ? a.length : 0, d = []; ++b < c;) { var e = a[b]; e && d.push(e) } return d } function f(a) { return p.isWrapped(a) ? a = [].slice.call(a) : p.isNode(a) && (a = [a]), a } function g(a) { var b = m.data(a, "velocity"); return null === b ? d : b } function h(a) { return function (b) { return Math.round(b * a) * (1 / a) } } function i(a, c, d, e) { function f(a, b) { return 1 - 3 * b + 3 * a } function g(a, b) { return 3 * b - 6 * a } function h(a) { return 3 * a } function i(a, b, c) { return ((f(b, c) * a + g(b, c)) * a + h(b)) * a } function j(a, b, c) { return 3 * f(b, c) * a * a + 2 * g(b, c) * a + h(b) } function k(b, c) { for (var e = 0; e < p; ++e) { var f = j(c, a, d); if (0 === f) return c; var g = i(c, a, d) - b; c -= g / f } return c } function l() { for (var b = 0; b < t; ++b) x[b] = i(b * u, a, d) } function m(b, c, e) { var f, g, h = 0; do g = c + (e - c) / 2, f = i(g, a, d) - b, f > 0 ? e = g : c = g; while (Math.abs(f) > r && ++h < s); return g } function n(b) { for (var c = 0, e = 1, f = t - 1; e !== f && x[e] <= b; ++e) c += u; --e; var g = (b - x[e]) / (x[e + 1] - x[e]), h = c + g * u, i = j(h, a, d); return i >= q ? k(b, h) : 0 === i ? h : m(b, c, c + u) } function o() { y = !0, a === c && d === e || l() } var p = 4, q = .001, r = 1e-7, s = 10, t = 11, u = 1 / (t - 1), v = "Float32Array" in b; if (4 !== arguments.length) return !1; for (var w = 0; w < 4; ++w) if ("number" != typeof arguments[w] || isNaN(arguments[w]) || !isFinite(arguments[w])) return !1; a = Math.min(a, 1), d = Math.min(d, 1), a = Math.max(a, 0), d = Math.max(d, 0); var x = v ? new Float32Array(t) : new Array(t), y = !1, z = function (b) { return y || o(), a === c && d === e ? b : 0 === b ? 0 : 1 === b ? 1 : i(n(b), c, e) }; z.getControlPoints = function () { return [{ x: a, y: c }, { x: d, y: e }] }; var A = "generateBezier(" + [a, c, d, e] + ")"; return z.toString = function () { return A }, z } function j(a, b) { var c = a; return p.isString(a) ? t.Easings[a] || (c = !1) : c = p.isArray(a) && 1 === a.length ? h.apply(null, a) : p.isArray(a) && 2 === a.length ? u.apply(null, a.concat([b])) : !(!p.isArray(a) || 4 !== a.length) && i.apply(null, a), c === !1 && (c = t.Easings[t.defaults.easing] ? t.defaults.easing : s), c } function k(a) { if (a) { var b = (new Date).getTime(), c = t.State.calls.length; c > 1e4 && (t.State.calls = e(t.State.calls), c = t.State.calls.length); for (var f = 0; f < c; f++) if (t.State.calls[f]) { var h = t.State.calls[f], i = h[0], j = h[2], n = h[3], o = !!n, q = null; n || (n = t.State.calls[f][3] = b - 16); for (var r = Math.min((b - n) / j.duration, 1), s = 0, u = i.length; s < u; s++) { var w = i[s], y = w.element; if (g(y)) { var z = !1; if (j.display !== d && null !== j.display && "none" !== j.display) { if ("flex" === j.display) { var A = ["-webkit-box", "-moz-box", "-ms-flexbox", "-webkit-flex"]; m.each(A, function (a, b) { v.setPropertyValue(y, "display", b) }) } v.setPropertyValue(y, "display", j.display) } j.visibility !== d && "hidden" !== j.visibility && v.setPropertyValue(y, "visibility", j.visibility); for (var B in w) if ("element" !== B) { var C, D = w[B], E = p.isString(D.easing) ? t.Easings[D.easing] : D.easing; if (1 === r) C = D.endValue; else { var F = D.endValue - D.startValue; if (C = D.startValue + F * E(r, j, F), !o && C === D.currentValue) continue } if (D.currentValue = C, "tween" === B) q = C; else { var G; if (v.Hooks.registered[B]) { G = v.Hooks.getRoot(B); var H = g(y).rootPropertyValueCache[G]; H && (D.rootPropertyValue = H) } var I = v.setPropertyValue(y, B, D.currentValue + (0 === parseFloat(C) ? "" : D.unitType), D.rootPropertyValue, D.scrollData); v.Hooks.registered[B] && (v.Normalizations.registered[G] ? g(y).rootPropertyValueCache[G] = v.Normalizations.registered[G]("extract", null, I[1]) : g(y).rootPropertyValueCache[G] = I[1]), "transform" === I[0] && (z = !0) } } j.mobileHA && g(y).transformCache.translate3d === d && (g(y).transformCache.translate3d = "(0px, 0px, 0px)", z = !0), z && v.flushTransformCache(y) } } j.display !== d && "none" !== j.display && (t.State.calls[f][2].display = !1), j.visibility !== d && "hidden" !== j.visibility && (t.State.calls[f][2].visibility = !1), j.progress && j.progress.call(h[1], h[1], r, Math.max(0, n + j.duration - b), n, q), 1 === r && l(f) } } t.State.isTicking && x(k) } function l(a, b) { if (!t.State.calls[a]) return !1; for (var c = t.State.calls[a][0], e = t.State.calls[a][1], f = t.State.calls[a][2], h = t.State.calls[a][4], i = !1, j = 0, k = c.length; j < k; j++) { var l = c[j].element; b || f.loop || ("none" === f.display && v.setPropertyValue(l, "display", f.display), "hidden" === f.visibility && v.setPropertyValue(l, "visibility", f.visibility)); var n = g(l); if (f.loop !== !0 && (m.queue(l)[1] === d || !/\.velocityQueueEntryFlag/i.test(m.queue(l)[1])) && n) { n.isAnimating = !1, n.rootPropertyValueCache = {}; var o = !1; m.each(v.Lists.transforms3D, function (a, b) { var c = /^scale/.test(b) ? 1 : 0, e = n.transformCache[b]; n.transformCache[b] !== d && new RegExp("^\\(" + c + "[^.]").test(e) && (o = !0, delete n.transformCache[b]) }), f.mobileHA && (o = !0, delete n.transformCache.translate3d), o && v.flushTransformCache(l), v.Values.removeClass(l, "velocity-animating") } if (!b && f.complete && !f.loop && j === k - 1) try { f.complete.call(e, e) } catch (p) { setTimeout(function () { throw p }, 1) } h && f.loop !== !0 && h(e), n && f.loop === !0 && !b && (m.each(n.tweensContainer, function (a, b) { if (/^rotate/.test(a) && (parseFloat(b.startValue) - parseFloat(b.endValue)) % 360 === 0) { var c = b.startValue; b.startValue = b.endValue, b.endValue = c } /^backgroundPosition/.test(a) && 100 === parseFloat(b.endValue) && "%" === b.unitType && (b.endValue = 0, b.startValue = 100) }), t(l, "reverse", { loop: !0, delay: f.delay })), f.queue !== !1 && m.dequeue(l, f.queue) } t.State.calls[a] = !1; for (var q = 0, r = t.State.calls.length; q < r; q++) if (t.State.calls[q] !== !1) { i = !0; break } i === !1 && (t.State.isTicking = !1, delete t.State.calls, t.State.calls = []) } var m, n = function () { if (c.documentMode) return c.documentMode; for (var a = 7; a > 4; a--) { var b = c.createElement("div"); if (b.innerHTML = "<!--[if IE " + a + "]><span></span><![endif]-->", b.getElementsByTagName("span").length) return b = null, a } return d }(), o = function () { var a = 0; return b.webkitRequestAnimationFrame || b.mozRequestAnimationFrame || function (b) { var c, d = (new Date).getTime(); return c = Math.max(0, 16 - (d - a)), a = d + c, setTimeout(function () { b(d + c) }, c) } }(), p = { isString: function (a) { return "string" == typeof a }, isArray: Array.isArray || function (a) { return "[object Array]" === Object.prototype.toString.call(a) }, isFunction: function (a) { return "[object Function]" === Object.prototype.toString.call(a) }, isNode: function (a) { return a && a.nodeType }, isNodeList: function (a) { return "object" == typeof a && /^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(a)) && a.length !== d && (0 === a.length || "object" == typeof a[0] && a[0].nodeType > 0) }, isWrapped: function (a) { return a && (a.jquery || b.Zepto && b.Zepto.zepto.isZ(a)) }, isSVG: function (a) { return b.SVGElement && a instanceof b.SVGElement }, isEmptyObject: function (a) { for (var b in a) return !1; return !0 } }, q = !1; if (a.fn && a.fn.jquery ? (m = a, q = !0) : m = b.Velocity.Utilities, n <= 8 && !q) throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity."); if (n <= 7) return void (jQuery.fn.velocity = jQuery.fn.animate); var r = 400, s = "swing", t = { State: { isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), isAndroid: /Android/i.test(navigator.userAgent), isGingerbread: /Android 2\.3\.[3-7]/i.test(navigator.userAgent), isChrome: b.chrome, isFirefox: /Firefox/i.test(navigator.userAgent), prefixElement: c.createElement("div"), prefixMatches: {}, scrollAnchor: null, scrollPropertyLeft: null, scrollPropertyTop: null, isTicking: !1, calls: [] }, CSS: {}, Utilities: m, Redirects: {}, Easings: {}, Promise: b.Promise, defaults: { queue: "", duration: r, easing: s, begin: d, complete: d, progress: d, display: d, visibility: d, loop: !1, delay: !1, mobileHA: !0, _cacheValues: !0 }, init: function (a) { m.data(a, "velocity", { isSVG: p.isSVG(a), isAnimating: !1, computedStyle: null, tweensContainer: null, rootPropertyValueCache: {}, transformCache: {} }) }, hook: null, mock: !1, version: { major: 1, minor: 3, patch: 0 }, debug: !1 }; b.pageYOffset !== d ? (t.State.scrollAnchor = b, t.State.scrollPropertyLeft = "pageXOffset", t.State.scrollPropertyTop = "pageYOffset") : (t.State.scrollAnchor = c.documentElement || c.body.parentNode || c.body, t.State.scrollPropertyLeft = "scrollLeft", t.State.scrollPropertyTop = "scrollTop"); var u = function () { function a(a) { return -a.tension * a.x - a.friction * a.v } function b(b, c, d) { var e = { x: b.x + d.dx * c, v: b.v + d.dv * c, tension: b.tension, friction: b.friction }; return { dx: e.v, dv: a(e) } } function c(c, d) { var e = { dx: c.v, dv: a(c) }, f = b(c, .5 * d, e), g = b(c, .5 * d, f), h = b(c, d, g), i = 1 / 6 * (e.dx + 2 * (f.dx + g.dx) + h.dx), j = 1 / 6 * (e.dv + 2 * (f.dv + g.dv) + h.dv); return c.x = c.x + i * d, c.v = c.v + j * d, c } return function d(a, b, e) { var f, g, h, i = { x: -1, v: 0, tension: null, friction: null }, j = [0], k = 0, l = 1e-4, m = .016; for (a = parseFloat(a) || 500, b = parseFloat(b) || 20, e = e || null, i.tension = a, i.friction = b, f = null !== e, f ? (k = d(a, b), g = k / e * m) : g = m; ;) if (h = c(h || i, g), j.push(1 + h.x), k += 16, !(Math.abs(h.x) > l && Math.abs(h.v) > l)) break; return f ? function (a) { return j[a * (j.length - 1) | 0] } : k } }(); t.Easings = { linear: function (a) { return a }, swing: function (a) { return .5 - Math.cos(a * Math.PI) / 2 }, spring: function (a) { return 1 - Math.cos(4.5 * a * Math.PI) * Math.exp(6 * -a) } }, m.each([["ease", [.25, .1, .25, 1]], ["ease-in", [.42, 0, 1, 1]], ["ease-out", [0, 0, .58, 1]], ["ease-in-out", [.42, 0, .58, 1]], ["easeInSine", [.47, 0, .745, .715]], ["easeOutSine", [.39, .575, .565, 1]], ["easeInOutSine", [.445, .05, .55, .95]], ["easeInQuad", [.55, .085, .68, .53]], ["easeOutQuad", [.25, .46, .45, .94]], ["easeInOutQuad", [.455, .03, .515, .955]], ["easeInCubic", [.55, .055, .675, .19]], ["easeOutCubic", [.215, .61, .355, 1]], ["easeInOutCubic", [.645, .045, .355, 1]], ["easeInQuart", [.895, .03, .685, .22]], ["easeOutQuart", [.165, .84, .44, 1]], ["easeInOutQuart", [.77, 0, .175, 1]], ["easeInQuint", [.755, .05, .855, .06]], ["easeOutQuint", [.23, 1, .32, 1]], ["easeInOutQuint", [.86, 0, .07, 1]], ["easeInExpo", [.95, .05, .795, .035]], ["easeOutExpo", [.19, 1, .22, 1]], ["easeInOutExpo", [1, 0, 0, 1]], ["easeInCirc", [.6, .04, .98, .335]], ["easeOutCirc", [.075, .82, .165, 1]], ["easeInOutCirc", [.785, .135, .15, .86]]], function (a, b) { t.Easings[b[0]] = i.apply(null, b[1]) }); var v = t.CSS = { RegEx: { isHex: /^#([A-f\d]{3}){1,2}$/i, valueUnwrap: /^[A-z]+\((.*)\)$/i, wrappedValueAlreadyExtracted: /[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/, valueSplit: /([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi }, Lists: { colors: ["fill", "stroke", "stopColor", "color", "backgroundColor", "borderColor", "borderTopColor", "borderRightColor", "borderBottomColor", "borderLeftColor", "outlineColor"], transformsBase: ["translateX", "translateY", "scale", "scaleX", "scaleY", "skewX", "skewY", "rotateZ"], transforms3D: ["transformPerspective", "translateZ", "scaleZ", "rotateX", "rotateY"] }, Hooks: { templates: { textShadow: ["Color X Y Blur", "black 0px 0px 0px"], boxShadow: ["Color X Y Blur Spread", "black 0px 0px 0px 0px"], clip: ["Top Right Bottom Left", "0px 0px 0px 0px"], backgroundPosition: ["X Y", "0% 0%"], transformOrigin: ["X Y Z", "50% 50% 0px"], perspectiveOrigin: ["X Y", "50% 50%"] }, registered: {}, register: function () { for (var a = 0; a < v.Lists.colors.length; a++) { var b = "color" === v.Lists.colors[a] ? "0 0 0 1" : "255 255 255 1"; v.Hooks.templates[v.Lists.colors[a]] = ["Red Green Blue Alpha", b] } var c, d, e; if (n) for (c in v.Hooks.templates) { d = v.Hooks.templates[c], e = d[0].split(" "); var f = d[1].match(v.RegEx.valueSplit); "Color" === e[0] && (e.push(e.shift()), f.push(f.shift()), v.Hooks.templates[c] = [e.join(" "), f.join(" ")]) } for (c in v.Hooks.templates) { d = v.Hooks.templates[c], e = d[0].split(" "); for (var g in e) { var h = c + e[g], i = g; v.Hooks.registered[h] = [c, i] } } }, getRoot: function (a) { var b = v.Hooks.registered[a]; return b ? b[0] : a }, cleanRootPropertyValue: function (a, b) { return v.RegEx.valueUnwrap.test(b) && (b = b.match(v.RegEx.valueUnwrap)[1]), v.Values.isCSSNullValue(b) && (b = v.Hooks.templates[a][1]), b }, extractValue: function (a, b) { var c = v.Hooks.registered[a]; if (c) { var d = c[0], e = c[1]; return b = v.Hooks.cleanRootPropertyValue(d, b), b.toString().match(v.RegEx.valueSplit)[e] } return b }, injectValue: function (a, b, c) { var d = v.Hooks.registered[a]; if (d) { var e, f, g = d[0], h = d[1]; return c = v.Hooks.cleanRootPropertyValue(g, c), e = c.toString().match(v.RegEx.valueSplit), e[h] = b, f = e.join(" ") } return c } }, Normalizations: { registered: { clip: function (a, b, c) { switch (a) { case "name": return "clip"; case "extract": var d; return v.RegEx.wrappedValueAlreadyExtracted.test(c) ? d = c : (d = c.toString().match(v.RegEx.valueUnwrap), d = d ? d[1].replace(/,(\s+)?/g, " ") : c), d; case "inject": return "rect(" + c + ")" } }, blur: function (a, b, c) { switch (a) { case "name": return t.State.isFirefox ? "filter" : "-webkit-filter"; case "extract": var d = parseFloat(c); if (!d && 0 !== d) { var e = c.toString().match(/blur\(([0-9]+[A-z]+)\)/i); d = e ? e[1] : 0 } return d; case "inject": return parseFloat(c) ? "blur(" + c + ")" : "none" } }, opacity: function (a, b, c) { if (n <= 8) switch (a) { case "name": return "filter"; case "extract": var d = c.toString().match(/alpha\(opacity=(.*)\)/i); return c = d ? d[1] / 100 : 1; case "inject": return b.style.zoom = 1, parseFloat(c) >= 1 ? "" : "alpha(opacity=" + parseInt(100 * parseFloat(c), 10) + ")" } else switch (a) { case "name": return "opacity"; case "extract": return c; case "inject": return c } } }, register: function () { n && !(n > 9) || t.State.isGingerbread || (v.Lists.transformsBase = v.Lists.transformsBase.concat(v.Lists.transforms3D)); for (var a = 0; a < v.Lists.transformsBase.length; a++) !function () { var b = v.Lists.transformsBase[a]; v.Normalizations.registered[b] = function (a, c, e) { switch (a) { case "name": return "transform"; case "extract": return g(c) === d || g(c).transformCache[b] === d ? /^scale/i.test(b) ? 1 : 0 : g(c).transformCache[b].replace(/[()]/g, ""); case "inject": var f = !1; switch (b.substr(0, b.length - 1)) { case "translate": f = !/(%|px|em|rem|vw|vh|\d)$/i.test(e); break; case "scal": case "scale": t.State.isAndroid && g(c).transformCache[b] === d && e < 1 && (e = 1), f = !/(\d)$/i.test(e); break; case "skew": f = !/(deg|\d)$/i.test(e); break; case "rotate": f = !/(deg|\d)$/i.test(e) } return f || (g(c).transformCache[b] = "(" + e + ")"), g(c).transformCache[b] } } }(); for (var b = 0; b < v.Lists.colors.length; b++) !function () { var a = v.Lists.colors[b]; v.Normalizations.registered[a] = function (b, c, e) { switch (b) { case "name": return a; case "extract": var f; if (v.RegEx.wrappedValueAlreadyExtracted.test(e)) f = e; else { var g, h = { black: "rgb(0, 0, 0)", blue: "rgb(0, 0, 255)", gray: "rgb(128, 128, 128)", green: "rgb(0, 128, 0)", red: "rgb(255, 0, 0)", white: "rgb(255, 255, 255)" }; /^[A-z]+$/i.test(e) ? g = h[e] !== d ? h[e] : h.black : v.RegEx.isHex.test(e) ? g = "rgb(" + v.Values.hexToRgb(e).join(" ") + ")" : /^rgba?\(/i.test(e) || (g = h.black), f = (g || e).toString().match(v.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g, " ") } return (!n || n > 8) && 3 === f.split(" ").length && (f += " 1"), f; case "inject": return n <= 8 ? 4 === e.split(" ").length && (e = e.split(/\s+/).slice(0, 3).join(" ")) : 3 === e.split(" ").length && (e += " 1"), (n <= 8 ? "rgb" : "rgba") + "(" + e.replace(/\s+/g, ",").replace(/\.(\d)+(?=,)/g, "") + ")" } } }() } }, Names: { camelCase: function (a) { return a.replace(/-(\w)/g, function (a, b) { return b.toUpperCase() }) }, SVGAttribute: function (a) { var b = "width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2"; return (n || t.State.isAndroid && !t.State.isChrome) && (b += "|transform"), new RegExp("^(" + b + ")$", "i").test(a) }, prefixCheck: function (a) { if (t.State.prefixMatches[a]) return [t.State.prefixMatches[a], !0]; for (var b = ["", "Webkit", "Moz", "ms", "O"], c = 0, d = b.length; c < d; c++) { var e; if (e = 0 === c ? a : b[c] + a.replace(/^\w/, function (a) { return a.toUpperCase() }), p.isString(t.State.prefixElement.style[e])) return t.State.prefixMatches[a] = e, [e, !0] } return [a, !1] } }, Values: { hexToRgb: function (a) { var b, c = /^#?([a-f\d])([a-f\d])([a-f\d])$/i, d = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i; return a = a.replace(c, function (a, b, c, d) { return b + b + c + c + d + d }), b = d.exec(a), b ? [parseInt(b[1], 16), parseInt(b[2], 16), parseInt(b[3], 16)] : [0, 0, 0] }, isCSSNullValue: function (a) { return !a || /^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(a) }, getUnitType: function (a) { return /^(rotate|skew)/i.test(a) ? "deg" : /(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(a) ? "" : "px" }, getDisplayType: function (a) { var b = a && a.tagName.toString().toLowerCase(); return /^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(b) ? "inline" : /^(li)$/i.test(b) ? "list-item" : /^(tr)$/i.test(b) ? "table-row" : /^(table)$/i.test(b) ? "table" : /^(tbody)$/i.test(b) ? "table-row-group" : "block" }, addClass: function (a, b) { a.classList ? a.classList.add(b) : a.className += (a.className.length ? " " : "") + b }, removeClass: function (a, b) { a.classList ? a.classList.remove(b) : a.className = a.className.toString().replace(new RegExp("(^|\\s)" + b.split(" ").join("|") + "(\\s|$)", "gi"), " ") } }, getPropertyValue: function (a, c, e, f) { function h(a, c) { var e = 0; if (n <= 8) e = m.css(a, c); else { var i = !1; /^(width|height)$/.test(c) && 0 === v.getPropertyValue(a, "display") && (i = !0, v.setPropertyValue(a, "display", v.Values.getDisplayType(a))); var j = function () { i && v.setPropertyValue(a, "display", "none") }; if (!f) { if ("height" === c && "border-box" !== v.getPropertyValue(a, "boxSizing").toString().toLowerCase()) { var k = a.offsetHeight - (parseFloat(v.getPropertyValue(a, "borderTopWidth")) || 0) - (parseFloat(v.getPropertyValue(a, "borderBottomWidth")) || 0) - (parseFloat(v.getPropertyValue(a, "paddingTop")) || 0) - (parseFloat(v.getPropertyValue(a, "paddingBottom")) || 0); return j(), k } if ("width" === c && "border-box" !== v.getPropertyValue(a, "boxSizing").toString().toLowerCase()) { var l = a.offsetWidth - (parseFloat(v.getPropertyValue(a, "borderLeftWidth")) || 0) - (parseFloat(v.getPropertyValue(a, "borderRightWidth")) || 0) - (parseFloat(v.getPropertyValue(a, "paddingLeft")) || 0) - (parseFloat(v.getPropertyValue(a, "paddingRight")) || 0); return j(), l } } var o; o = g(a) === d ? b.getComputedStyle(a, null) : g(a).computedStyle ? g(a).computedStyle : g(a).computedStyle = b.getComputedStyle(a, null), "borderColor" === c && (c = "borderTopColor"), e = 9 === n && "filter" === c ? o.getPropertyValue(c) : o[c], "" !== e && null !== e || (e = a.style[c]), j() } if ("auto" === e && /^(top|right|bottom|left)$/i.test(c)) { var p = h(a, "position"); ("fixed" === p || "absolute" === p && /top|left/i.test(c)) && (e = m(a).position()[c] + "px") } return e } var i; if (v.Hooks.registered[c]) { var j = c, k = v.Hooks.getRoot(j); e === d && (e = v.getPropertyValue(a, v.Names.prefixCheck(k)[0])), v.Normalizations.registered[k] && (e = v.Normalizations.registered[k]("extract", a, e)), i = v.Hooks.extractValue(j, e) } else if (v.Normalizations.registered[c]) { var l, o; l = v.Normalizations.registered[c]("name", a), "transform" !== l && (o = h(a, v.Names.prefixCheck(l)[0]), v.Values.isCSSNullValue(o) && v.Hooks.templates[c] && (o = v.Hooks.templates[c][1])), i = v.Normalizations.registered[c]("extract", a, o) } if (!/^[\d-]/.test(i)) { var p = g(a); if (p && p.isSVG && v.Names.SVGAttribute(c)) if (/^(height|width)$/i.test(c)) try { i = a.getBBox()[c] } catch (q) { i = 0 } else i = a.getAttribute(c); else i = h(a, v.Names.prefixCheck(c)[0]) } return v.Values.isCSSNullValue(i) && (i = 0), t.debug >= 2 && console.log("Get " + c + ": " + i), i }, setPropertyValue: function (a, c, d, e, f) { var h = c; if ("scroll" === c) f.container ? f.container["scroll" + f.direction] = d : "Left" === f.direction ? b.scrollTo(d, f.alternateValue) : b.scrollTo(f.alternateValue, d); else if (v.Normalizations.registered[c] && "transform" === v.Normalizations.registered[c]("name", a)) v.Normalizations.registered[c]("inject", a, d), h = "transform", d = g(a).transformCache[c]; else { if (v.Hooks.registered[c]) { var i = c, j = v.Hooks.getRoot(c); e = e || v.getPropertyValue(a, j), d = v.Hooks.injectValue(i, d, e), c = j } if (v.Normalizations.registered[c] && (d = v.Normalizations.registered[c]("inject", a, d), c = v.Normalizations.registered[c]("name", a)), h = v.Names.prefixCheck(c)[0], n <= 8) try { a.style[h] = d } catch (k) { t.debug && console.log("Browser does not support [" + d + "] for [" + h + "]") } else { var l = g(a); l && l.isSVG && v.Names.SVGAttribute(c) ? a.setAttribute(c, d) : a.style[h] = d } t.debug >= 2 && console.log("Set " + c + " (" + h + "): " + d) } return [h, d] }, flushTransformCache: function (a) { var b = "", c = g(a); if ((n || t.State.isAndroid && !t.State.isChrome) && c && c.isSVG) { var d = function (b) { return parseFloat(v.getPropertyValue(a, b)) }, e = { translate: [d("translateX"), d("translateY")], skewX: [d("skewX")], skewY: [d("skewY")], scale: 1 !== d("scale") ? [d("scale"), d("scale")] : [d("scaleX"), d("scaleY")], rotate: [d("rotateZ"), 0, 0] }; m.each(g(a).transformCache, function (a) { /^translate/i.test(a) ? a = "translate" : /^scale/i.test(a) ? a = "scale" : /^rotate/i.test(a) && (a = "rotate"), e[a] && (b += a + "(" + e[a].join(" ") + ") ", delete e[a]) }) } else { var f, h; m.each(g(a).transformCache, function (c) { return f = g(a).transformCache[c], "transformPerspective" === c ? (h = f, !0) : (9 === n && "rotateZ" === c && (c = "rotate"), void (b += c + f + " ")) }), h && (b = "perspective" + h + " " + b) } v.setPropertyValue(a, "transform", b) } }; v.Hooks.register(), v.Normalizations.register(), t.hook = function (a, b, c) { var e; return a = f(a), m.each(a, function (a, f) { if (g(f) === d && t.init(f), c === d) e === d && (e = t.CSS.getPropertyValue(f, b)); else { var h = t.CSS.setPropertyValue(f, b, c); "transform" === h[0] && t.CSS.flushTransformCache(f), e = h } }), e }; var w = function () {
            function a() { return i ? C.promise || null : n } function e(a, e) { function f(f) { var n, o; if (i.begin && 0 === z) try { i.begin.call(q, q) } catch (r) { setTimeout(function () { throw r }, 1) } if ("scroll" === D) { var w, x, A, B = /^x$/i.test(i.axis) ? "Left" : "Top", E = parseFloat(i.offset) || 0; i.container ? p.isWrapped(i.container) || p.isNode(i.container) ? (i.container = i.container[0] || i.container, w = i.container["scroll" + B], A = w + m(a).position()[B.toLowerCase()] + E) : i.container = null : (w = t.State.scrollAnchor[t.State["scrollProperty" + B]], x = t.State.scrollAnchor[t.State["scrollProperty" + ("Left" === B ? "Top" : "Left")]], A = m(a).offset()[B.toLowerCase()] + E), l = { scroll: { rootPropertyValue: !1, startValue: w, currentValue: w, endValue: A, unitType: "", easing: i.easing, scrollData: { container: i.container, direction: B, alternateValue: x } }, element: a }, t.debug && console.log("tweensContainer (scroll): ", l.scroll, a) } else if ("reverse" === D) { if (n = g(a), !n) return; if (!n.tweensContainer) return void m.dequeue(a, i.queue); "none" === n.opts.display && (n.opts.display = "auto"), "hidden" === n.opts.visibility && (n.opts.visibility = "visible"), n.opts.loop = !1, n.opts.begin = null, n.opts.complete = null, u.easing || delete i.easing, u.duration || delete i.duration, i = m.extend({}, n.opts, i), o = m.extend(!0, {}, n ? n.tweensContainer : null); for (var F in o) if ("element" !== F) { var G = o[F].startValue; o[F].startValue = o[F].currentValue = o[F].endValue, o[F].endValue = G, p.isEmptyObject(u) || (o[F].easing = i.easing), t.debug && console.log("reverse tweensContainer (" + F + "): " + JSON.stringify(o[F]), a) } l = o } else if ("start" === D) { n = g(a), n && n.tweensContainer && n.isAnimating === !0 && (o = n.tweensContainer); var H = function (b, c) { var f, g, h; return p.isArray(b) ? (f = b[0], !p.isArray(b[1]) && /^[\d-]/.test(b[1]) || p.isFunction(b[1]) || v.RegEx.isHex.test(b[1]) ? h = b[1] : (p.isString(b[1]) && !v.RegEx.isHex.test(b[1]) || p.isArray(b[1])) && (g = c ? b[1] : j(b[1], i.duration), b[2] !== d && (h = b[2]))) : f = b, c || (g = g || i.easing), p.isFunction(f) && (f = f.call(a, e, y)), p.isFunction(h) && (h = h.call(a, e, y)), [f || 0, g, h] }; m.each(s, function (a, b) { if (RegExp("^" + v.Lists.colors.join("$|^") + "$").test(v.Names.camelCase(a))) { var c = H(b, !0), e = c[0], f = c[1], g = c[2]; if (v.RegEx.isHex.test(e)) { for (var h = ["Red", "Green", "Blue"], i = v.Values.hexToRgb(e), j = g ? v.Values.hexToRgb(g) : d, k = 0; k < h.length; k++) { var l = [i[k]]; f && l.push(f), j !== d && l.push(j[k]), s[v.Names.camelCase(a) + h[k]] = l } delete s[a] } } }); for (var K in s) { var L = H(s[K]), M = L[0], N = L[1], O = L[2]; K = v.Names.camelCase(K); var P = v.Hooks.getRoot(K), Q = !1; if (n && n.isSVG || "tween" === P || v.Names.prefixCheck(P)[1] !== !1 || v.Normalizations.registered[P] !== d) { (i.display !== d && null !== i.display && "none" !== i.display || i.visibility !== d && "hidden" !== i.visibility) && /opacity|filter/.test(K) && !O && 0 !== M && (O = 0), i._cacheValues && o && o[K] ? (O === d && (O = o[K].endValue + o[K].unitType), Q = n.rootPropertyValueCache[P]) : v.Hooks.registered[K] ? O === d ? (Q = v.getPropertyValue(a, P), O = v.getPropertyValue(a, K, Q)) : Q = v.Hooks.templates[P][1] : O === d && (O = v.getPropertyValue(a, K)); var R, S, T, U = !1, V = function (a, b) { var c, d; return d = (b || "0").toString().toLowerCase().replace(/[%A-z]+$/, function (a) { return c = a, "" }), c || (c = v.Values.getUnitType(a)), [d, c] }; R = V(K, O), O = R[0], T = R[1], R = V(K, M), M = R[0].replace(/^([+-\/*])=/, function (a, b) { return U = b, "" }), S = R[1], O = parseFloat(O) || 0, M = parseFloat(M) || 0, "%" === S && (/^(fontSize|lineHeight)$/.test(K) ? (M /= 100, S = "em") : /^scale/.test(K) ? (M /= 100, S = "") : /(Red|Green|Blue)$/i.test(K) && (M = M / 100 * 255, S = "")); var W = function () { var d = { myParent: a.parentNode || c.body, position: v.getPropertyValue(a, "position"), fontSize: v.getPropertyValue(a, "fontSize") }, e = d.position === I.lastPosition && d.myParent === I.lastParent, f = d.fontSize === I.lastFontSize; I.lastParent = d.myParent, I.lastPosition = d.position, I.lastFontSize = d.fontSize; var g = 100, h = {}; if (f && e) h.emToPx = I.lastEmToPx, h.percentToPxWidth = I.lastPercentToPxWidth, h.percentToPxHeight = I.lastPercentToPxHeight; else { var i = n && n.isSVG ? c.createElementNS("http://www.w3.org/2000/svg", "rect") : c.createElement("div"); t.init(i), d.myParent.appendChild(i), m.each(["overflow", "overflowX", "overflowY"], function (a, b) { t.CSS.setPropertyValue(i, b, "hidden") }), t.CSS.setPropertyValue(i, "position", d.position), t.CSS.setPropertyValue(i, "fontSize", d.fontSize), t.CSS.setPropertyValue(i, "boxSizing", "content-box"), m.each(["minWidth", "maxWidth", "width", "minHeight", "maxHeight", "height"], function (a, b) { t.CSS.setPropertyValue(i, b, g + "%") }), t.CSS.setPropertyValue(i, "paddingLeft", g + "em"), h.percentToPxWidth = I.lastPercentToPxWidth = (parseFloat(v.getPropertyValue(i, "width", null, !0)) || 1) / g, h.percentToPxHeight = I.lastPercentToPxHeight = (parseFloat(v.getPropertyValue(i, "height", null, !0)) || 1) / g, h.emToPx = I.lastEmToPx = (parseFloat(v.getPropertyValue(i, "paddingLeft")) || 1) / g, d.myParent.removeChild(i) } return null === I.remToPx && (I.remToPx = parseFloat(v.getPropertyValue(c.body, "fontSize")) || 16), null === I.vwToPx && (I.vwToPx = parseFloat(b.innerWidth) / 100, I.vhToPx = parseFloat(b.innerHeight) / 100), h.remToPx = I.remToPx, h.vwToPx = I.vwToPx, h.vhToPx = I.vhToPx, t.debug >= 1 && console.log("Unit ratios: " + JSON.stringify(h), a), h }; if (/[\/*]/.test(U)) S = T; else if (T !== S && 0 !== O) if (0 === M) S = T; else { h = h || W(); var X = /margin|padding|left|right|width|text|word|letter/i.test(K) || /X$/.test(K) || "x" === K ? "x" : "y"; switch (T) { case "%": O *= "x" === X ? h.percentToPxWidth : h.percentToPxHeight; break; case "px": break; default: O *= h[T + "ToPx"] } switch (S) { case "%": O *= 1 / ("x" === X ? h.percentToPxWidth : h.percentToPxHeight); break; case "px": break; default: O *= 1 / h[S + "ToPx"] } } switch (U) { case "+": M = O + M; break; case "-": M = O - M; break; case "*": M = O * M; break; case "/": M = O / M } l[K] = { rootPropertyValue: Q, startValue: O, currentValue: O, endValue: M, unitType: S, easing: N }, t.debug && console.log("tweensContainer (" + K + "): " + JSON.stringify(l[K]), a) } else t.debug && console.log("Skipping [" + P + "] due to a lack of browser support.") } l.element = a } l.element && (v.Values.addClass(a, "velocity-animating"), J.push(l), n = g(a), n && ("" === i.queue && (n.tweensContainer = l, n.opts = i), n.isAnimating = !0), z === y - 1 ? (t.State.calls.push([J, q, i, null, C.resolver]), t.State.isTicking === !1 && (t.State.isTicking = !0, k())) : z++) } var h, i = m.extend({}, t.defaults, u), l = {}; switch (g(a) === d && t.init(a), parseFloat(i.delay) && i.queue !== !1 && m.queue(a, i.queue, function (b) { t.velocityQueueEntryFlag = !0, g(a).delayTimer = { setTimeout: setTimeout(b, parseFloat(i.delay)), next: b } }), i.duration.toString().toLowerCase()) { case "fast": i.duration = 200; break; case "normal": i.duration = r; break; case "slow": i.duration = 600; break; default: i.duration = parseFloat(i.duration) || 1 } t.mock !== !1 && (t.mock === !0 ? i.duration = i.delay = 1 : (i.duration *= parseFloat(t.mock) || 1, i.delay *= parseFloat(t.mock) || 1)), i.easing = j(i.easing, i.duration), i.begin && !p.isFunction(i.begin) && (i.begin = null), i.progress && !p.isFunction(i.progress) && (i.progress = null), i.complete && !p.isFunction(i.complete) && (i.complete = null), i.display !== d && null !== i.display && (i.display = i.display.toString().toLowerCase(), "auto" === i.display && (i.display = t.CSS.Values.getDisplayType(a))), i.visibility !== d && null !== i.visibility && (i.visibility = i.visibility.toString().toLowerCase()), i.mobileHA = i.mobileHA && t.State.isMobile && !t.State.isGingerbread, i.queue === !1 ? i.delay ? setTimeout(f, i.delay) : f() : m.queue(a, i.queue, function (a, b) { return b === !0 ? (C.promise && C.resolver(q), !0) : (t.velocityQueueEntryFlag = !0, void f(a)) }), "" !== i.queue && "fx" !== i.queue || "inprogress" === m.queue(a)[0] || m.dequeue(a) } var h, i, n, o, q, s, u, x = arguments[0] && (arguments[0].p || m.isPlainObject(arguments[0].properties) && !arguments[0].properties.names || p.isString(arguments[0].properties)); if (p.isWrapped(this) ? (i = !1, o = 0, q = this, n = this) : (i = !0, o = 1, q = x ? arguments[0].elements || arguments[0].e : arguments[0]), q = f(q)) {
                x ? (s = arguments[0].properties || arguments[0].p, u = arguments[0].options || arguments[0].o) : (s = arguments[o], u = arguments[o + 1]); var y = q.length, z = 0; if (!/^(stop|finish|finishAll)$/i.test(s) && !m.isPlainObject(u)) { var A = o + 1; u = {}; for (var B = A; B < arguments.length; B++) p.isArray(arguments[B]) || !/^(fast|normal|slow)$/i.test(arguments[B]) && !/^\d/.test(arguments[B]) ? p.isString(arguments[B]) || p.isArray(arguments[B]) ? u.easing = arguments[B] : p.isFunction(arguments[B]) && (u.complete = arguments[B]) : u.duration = arguments[B] } var C = { promise: null, resolver: null, rejecter: null }; i && t.Promise && (C.promise = new t.Promise(function (a, b) { C.resolver = a, C.rejecter = b })); var D; switch (s) {
                    case "scroll": D = "scroll"; break; case "reverse": D = "reverse"; break; case "finish": case "finishAll": case "stop": m.each(q, function (a, b) { g(b) && g(b).delayTimer && (clearTimeout(g(b).delayTimer.setTimeout), g(b).delayTimer.next && g(b).delayTimer.next(), delete g(b).delayTimer), "finishAll" !== s || u !== !0 && !p.isString(u) || (m.each(m.queue(b, p.isString(u) ? u : ""), function (a, b) { p.isFunction(b) && b() }), m.queue(b, p.isString(u) ? u : "", [])) }); var E = []; return m.each(t.State.calls, function (a, b) {
                        b && m.each(b[1], function (c, e) { var f = u === d ? "" : u; return f !== !0 && b[2].queue !== f && (u !== d || b[2].queue !== !1) || void m.each(q, function (c, d) { if (d === e) if ((u === !0 || p.isString(u)) && (m.each(m.queue(d, p.isString(u) ? u : ""), function (a, b) { p.isFunction(b) && b(null, !0) }), m.queue(d, p.isString(u) ? u : "", [])), "stop" === s) { var h = g(d); h && h.tweensContainer && f !== !1 && m.each(h.tweensContainer, function (a, b) { b.endValue = b.currentValue }), E.push(a) } else "finish" !== s && "finishAll" !== s || (b[2].duration = 1) }) })
                    }), "stop" === s && (m.each(E, function (a, b) { l(b, !0) }), C.promise && C.resolver(q)), a(); default: if (!m.isPlainObject(s) || p.isEmptyObject(s)) { if (p.isString(s) && t.Redirects[s]) { h = m.extend({}, u); var F = h.duration, G = h.delay || 0; return h.backwards === !0 && (q = m.extend(!0, [], q).reverse()), m.each(q, function (a, b) { parseFloat(h.stagger) ? h.delay = G + parseFloat(h.stagger) * a : p.isFunction(h.stagger) && (h.delay = G + h.stagger.call(b, a, y)), h.drag && (h.duration = parseFloat(F) || (/^(callout|transition)/.test(s) ? 1e3 : r), h.duration = Math.max(h.duration * (h.backwards ? 1 - a / y : (a + 1) / y), .75 * h.duration, 200)), t.Redirects[s].call(b, b, h || {}, a, y, q, C.promise ? C : d) }), a() } var H = "Velocity: First argument (" + s + ") was not a property map, a known action, or a registered redirect. Aborting."; return C.promise ? C.rejecter(new Error(H)) : console.log(H), a() } D = "start"
                } var I = { lastParent: null, lastPosition: null, lastFontSize: null, lastPercentToPxWidth: null, lastPercentToPxHeight: null, lastEmToPx: null, remToPx: null, vwToPx: null, vhToPx: null }, J = []; m.each(q, function (a, b) { p.isNode(b) && e(b, a) }), h = m.extend({}, t.defaults, u), h.loop = parseInt(h.loop, 10); var K = 2 * h.loop - 1; if (h.loop) for (var L = 0; L < K; L++) { var M = { delay: h.delay, progress: h.progress }; L === K - 1 && (M.display = h.display, M.visibility = h.visibility, M.complete = h.complete), w(q, "reverse", M) } return a()
            }
        }; t = m.extend(w, t), t.animate = w; var x = b.requestAnimationFrame || o; return t.State.isMobile || c.hidden === d || c.addEventListener("visibilitychange", function () { c.hidden ? (x = function (a) { return setTimeout(function () { a(!0) }, 16) }, k()) : x = b.requestAnimationFrame || o }), a.Velocity = t, a !== b && (a.fn.velocity = w, a.fn.velocity.defaults = t.defaults), m.each(["Down", "Up"], function (a, b) { t.Redirects["slide" + b] = function (a, c, e, f, g, h) { var i = m.extend({}, c), j = i.begin, k = i.complete, l = { height: "", marginTop: "", marginBottom: "", paddingTop: "", paddingBottom: "" }, n = {}; i.display === d && (i.display = "Down" === b ? "inline" === t.CSS.Values.getDisplayType(a) ? "inline-block" : "block" : "none"), i.begin = function () { j && j.call(g, g); for (var c in l) { n[c] = a.style[c]; var d = t.CSS.getPropertyValue(a, c); l[c] = "Down" === b ? [d, 0] : [0, d] } n.overflow = a.style.overflow, a.style.overflow = "hidden" }, i.complete = function () { for (var b in n) a.style[b] = n[b]; k && k.call(g, g), h && h.resolver(g) }, t(a, l, i) } }), m.each(["In", "Out"], function (a, b) { t.Redirects["fade" + b] = function (a, c, e, f, g, h) { var i = m.extend({}, c), j = i.complete, k = { opacity: "In" === b ? 1 : 0 }; e !== f - 1 ? i.complete = i.begin = null : i.complete = function () { j && j.call(g, g), h && h.resolver(g) }, i.display === d && (i.display = "In" === b ? "auto" : "none"), t(this, k, i) } }), t
    }(window.jQuery || window.Zepto || window, window, document)
});

/**********************
 Velocity UI Pack
 **********************/

/* VelocityJS.org UI Pack (5.1.0). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License. Portions copyright Daniel Eden, Christian Pucci. */

(function (factory) {
    "use strict";
    /* CommonJS module. */
    if (typeof require === "function" && typeof exports === "object") {
        module.exports = factory();
        /* AMD module. */
    } else if (typeof define === "function" && define.amd) {
        define(["velocity"], factory);
        /* Browser globals. */
    } else {
        factory();
    }
}(function () {
    "use strict";
    return function (global, window, document, undefined) {

        /*************
		 Checks
		 *************/
        var Velocity = global.Velocity;

        if (!Velocity || !Velocity.Utilities) {
            if (window.console) {
                console.log("Velocity UI Pack: Velocity must be loaded first. Aborting.");
            }
            return;
        }
        var $ = Velocity.Utilities;

        var velocityVersion = Velocity.version,
				requiredVersion = { major: 1, minor: 1, patch: 0 };

        function greaterSemver(primary, secondary) {
            var versionInts = [];

            if (!primary || !secondary) {
                return false;
            }

            $.each([primary, secondary], function (i, versionObject) {
                var versionIntsComponents = [];

                $.each(versionObject, function (component, value) {
                    while (value.toString().length < 5) {
                        value = "0" + value;
                    }
                    versionIntsComponents.push(value);
                });

                versionInts.push(versionIntsComponents.join(""));
            });

            return (parseFloat(versionInts[0]) > parseFloat(versionInts[1]));
        }

        if (greaterSemver(requiredVersion, velocityVersion)) {
            var abortError = "Velocity UI Pack: You need to update Velocity (jquery.velocity.js) to a newer version. Visit http://github.com/julianshapiro/velocity.";
            alert(abortError);
            throw new Error(abortError);
        }

        /************************
		 Effect Registration
		 ************************/

        /* Note: RegisterUI is a legacy name. */
        Velocity.RegisterEffect = Velocity.RegisterUI = function (effectName, properties) {
            /* Animate the expansion/contraction of the elements' parent's height for In/Out effects. */
            function animateParentHeight(elements, direction, totalDuration, stagger) {
                var totalHeightDelta = 0,
						parentNode;

                /* Sum the total height (including padding and margin) of all targeted elements. */
                $.each(elements.nodeType ? [elements] : elements, function (i, element) {
                    if (stagger) {
                        /* Increase the totalDuration by the successive delay amounts produced by the stagger option. */
                        totalDuration += i * stagger;
                    }

                    parentNode = element.parentNode;

                    propertiesToSum = ["height", "paddingTop", "paddingBottom", "marginTop", "marginBottom"];

                    /* If box-sizing is border-box, the height already includes padding and margin */
                    if (Velocity.CSS.getPropertyValue(element, "boxSizing").toString().toLowerCase() === "border-box") {
                        propertiesToSum = ["height"];
                    }

                    $.each(propertiesToSum, function (i, property) {
                        totalHeightDelta += parseFloat(Velocity.CSS.getPropertyValue(element, property));
                    });
                });

                /* Animate the parent element's height adjustment (with a varying duration multiplier for aesthetic benefits). */
                Velocity.animate(
						parentNode,
						{ height: (direction === "In" ? "+" : "-") + "=" + totalHeightDelta },
						{ queue: false, easing: "ease-in-out", duration: totalDuration * (direction === "In" ? 0.6 : 1) }
				);
            }

            /* Register a custom redirect for each effect. */
            Velocity.Redirects[effectName] = function (element, redirectOptions, elementsIndex, elementsSize, elements, promiseData) {
                var finalElement = (elementsIndex === elementsSize - 1);

                if (typeof properties.defaultDuration === "function") {
                    properties.defaultDuration = properties.defaultDuration.call(elements, elements);
                } else {
                    properties.defaultDuration = parseFloat(properties.defaultDuration);
                }

                /* Iterate through each effect's call array. */
                for (var callIndex = 0; callIndex < properties.calls.length; callIndex++) {
                    var call = properties.calls[callIndex],
							propertyMap = call[0],
							redirectDuration = 1000,
							durationPercentage = call[1],
							callOptions = call[2] || {},
							opts = {};

                    if (redirectOptions.duration !== undefined) {
                        redirectDuration = redirectOptions.duration;
                    } else if (properties.defaultDuration !== undefined) {
                        redirectDuration = properties.defaultDuration;
                    }

                    /* Assign the whitelisted per-call options. */
                    opts.duration = redirectDuration * (durationPercentage || 1);
                    opts.queue = redirectOptions.queue || "";
                    opts.easing = callOptions.easing || "ease";
                    opts.delay = parseFloat(callOptions.delay) || 0;
                    opts._cacheValues = callOptions._cacheValues || true;

                    /* Special processing for the first effect call. */
                    if (callIndex === 0) {
                        /* If a delay was passed into the redirect, combine it with the first call's delay. */
                        opts.delay += (parseFloat(redirectOptions.delay) || 0);

                        if (elementsIndex === 0) {
                            opts.begin = function () {
                                /* Only trigger a begin callback on the first effect call with the first element in the set. */
                                if (redirectOptions.begin) {
                                    redirectOptions.begin.call(elements, elements);
                                }

                                var direction = effectName.match(/(In|Out)$/);

                                /* Make "in" transitioning elements invisible immediately so that there's no FOUC between now
								 and the first RAF tick. */
                                if ((direction && direction[0] === "In") && propertyMap.opacity !== undefined) {
                                    $.each(elements.nodeType ? [elements] : elements, function (i, element) {
                                        Velocity.CSS.setPropertyValue(element, "opacity", 0);
                                    });
                                }

                                /* Only trigger animateParentHeight() if we're using an In/Out transition. */
                                if (redirectOptions.animateParentHeight && direction) {
                                    animateParentHeight(elements, direction[0], redirectDuration + opts.delay, redirectOptions.stagger);
                                }
                            };
                        }

                        /* If the user isn't overriding the display option, default to "auto" for "In"-suffixed transitions. */
                        if (redirectOptions.display !== null) {
                            if (redirectOptions.display !== undefined && redirectOptions.display !== "none") {
                                opts.display = redirectOptions.display;
                            } else if (/In$/.test(effectName)) {
                                /* Inline elements cannot be subjected to transforms, so we switch them to inline-block. */
                                var defaultDisplay = Velocity.CSS.Values.getDisplayType(element);
                                opts.display = (defaultDisplay === "inline") ? "inline-block" : defaultDisplay;
                            }
                        }

                        if (redirectOptions.visibility && redirectOptions.visibility !== "hidden") {
                            opts.visibility = redirectOptions.visibility;
                        }
                    }

                    /* Special processing for the last effect call. */
                    if (callIndex === properties.calls.length - 1) {
                        /* Append promise resolving onto the user's redirect callback. */
                        var injectFinalCallbacks = function () {
                            if ((redirectOptions.display === undefined || redirectOptions.display === "none") && /Out$/.test(effectName)) {
                                $.each(elements.nodeType ? [elements] : elements, function (i, element) {
                                    Velocity.CSS.setPropertyValue(element, "display", "none");
                                });
                            }
                            if (redirectOptions.complete) {
                                redirectOptions.complete.call(elements, elements);
                            }
                            if (promiseData) {
                                promiseData.resolver(elements || element);
                            }
                        };

                        opts.complete = function () {
                            if (properties.reset) {
                                for (var resetProperty in properties.reset) {
                                    var resetValue = properties.reset[resetProperty];

                                    /* Format each non-array value in the reset property map to [ value, value ] so that changes apply
									 immediately and DOM querying is avoided (via forcefeeding). */
                                    /* Note: Don't forcefeed hooks, otherwise their hook roots will be defaulted to their null values. */
                                    if (Velocity.CSS.Hooks.registered[resetProperty] === undefined && (typeof resetValue === "string" || typeof resetValue === "number")) {
                                        properties.reset[resetProperty] = [properties.reset[resetProperty], properties.reset[resetProperty]];
                                    }
                                }

                                /* So that the reset values are applied instantly upon the next rAF tick, use a zero duration and parallel queueing. */
                                var resetOptions = { duration: 0, queue: false };

                                /* Since the reset option uses up the complete callback, we trigger the user's complete callback at the end of ours. */
                                if (finalElement) {
                                    resetOptions.complete = injectFinalCallbacks;
                                }

                                Velocity.animate(element, properties.reset, resetOptions);
                                /* Only trigger the user's complete callback on the last effect call with the last element in the set. */
                            } else if (finalElement) {
                                injectFinalCallbacks();
                            }
                        };

                        if (redirectOptions.visibility === "hidden") {
                            opts.visibility = redirectOptions.visibility;
                        }
                    }

                    Velocity.animate(element, propertyMap, opts);
                }
            };

            /* Return the Velocity object so that RegisterUI calls can be chained. */
            return Velocity;
        };

        /*********************
		 Packaged Effects
		 *********************/

        /* Externalize the packagedEffects data so that they can optionally be modified and re-registered. */
        /* Support: <=IE8: Callouts will have no effect, and transitions will simply fade in/out. IE9/Android 2.3: Most effects are fully supported, the rest fade in/out. All other browsers: full support. */
        Velocity.RegisterEffect.packagedEffects =
				{
				    /* Animate.css */
				    "callout.bounce": {
				        defaultDuration: 550,
				        calls: [
							[{ translateY: -30 }, 0.25],
							[{ translateY: 0 }, 0.125],
							[{ translateY: -15 }, 0.125],
							[{ translateY: 0 }, 0.25]
				        ]
				    },
				    /* Animate.css */
				    "callout.shake": {
				        defaultDuration: 800,
				        calls: [
							[{ translateX: -11 }, 0.125],
							[{ translateX: 11 }, 0.125],
							[{ translateX: -11 }, 0.125],
							[{ translateX: 11 }, 0.125],
							[{ translateX: -11 }, 0.125],
							[{ translateX: 11 }, 0.125],
							[{ translateX: -11 }, 0.125],
							[{ translateX: 0 }, 0.125]
				        ]
				    },
				    /* Animate.css */
				    "callout.flash": {
				        defaultDuration: 1100,
				        calls: [
							[{ opacity: [0, "easeInOutQuad", 1] }, 0.25],
							[{ opacity: [1, "easeInOutQuad"] }, 0.25],
							[{ opacity: [0, "easeInOutQuad"] }, 0.25],
							[{ opacity: [1, "easeInOutQuad"] }, 0.25]
				        ]
				    },
				    /* Animate.css */
				    "callout.pulse": {
				        defaultDuration: 825,
				        calls: [
							[{ scaleX: 1.1, scaleY: 1.1 }, 0.50, { easing: "easeInExpo" }],
							[{ scaleX: 1, scaleY: 1 }, 0.50]
				        ]
				    },
				    /* Animate.css */
				    "callout.swing": {
				        defaultDuration: 950,
				        calls: [
							[{ rotateZ: 15 }, 0.20],
							[{ rotateZ: -10 }, 0.20],
							[{ rotateZ: 5 }, 0.20],
							[{ rotateZ: -5 }, 0.20],
							[{ rotateZ: 0 }, 0.20]
				        ]
				    },
				    /* Animate.css */
				    "callout.tada": {
				        defaultDuration: 1000,
				        calls: [
							[{ scaleX: 0.9, scaleY: 0.9, rotateZ: -3 }, 0.10],
							[{ scaleX: 1.1, scaleY: 1.1, rotateZ: 3 }, 0.10],
							[{ scaleX: 1.1, scaleY: 1.1, rotateZ: -3 }, 0.10],
							["reverse", 0.125],
							["reverse", 0.125],
							["reverse", 0.125],
							["reverse", 0.125],
							["reverse", 0.125],
							[{ scaleX: 1, scaleY: 1, rotateZ: 0 }, 0.20]
				        ]
				    },
				    "transition.fadeIn": {
				        defaultDuration: 500,
				        calls: [
							[{ opacity: [1, 0] }]
				        ]
				    },
				    "transition.fadeOut": {
				        defaultDuration: 500,
				        calls: [
							[{ opacity: [0, 1] }]
				        ]
				    },
				    /* Support: Loses rotation in IE9/Android 2.3 (fades only). */
				    "transition.flipXIn": {
				        defaultDuration: 700,
				        calls: [
							[{ opacity: [1, 0], transformPerspective: [800, 800], rotateY: [0, -55] }]
				        ],
				        reset: { transformPerspective: 0 }
				    },
				    /* Support: Loses rotation in IE9/Android 2.3 (fades only). */
				    "transition.flipXOut": {
				        defaultDuration: 700,
				        calls: [
							[{ opacity: [0, 1], transformPerspective: [800, 800], rotateY: 55 }]
				        ],
				        reset: { transformPerspective: 0, rotateY: 0 }
				    },
				    /* Support: Loses rotation in IE9/Android 2.3 (fades only). */
				    "transition.flipYIn": {
				        defaultDuration: 800,
				        calls: [
							[{ opacity: [1, 0], transformPerspective: [800, 800], rotateX: [0, -45] }]
				        ],
				        reset: { transformPerspective: 0 }
				    },
				    /* Support: Loses rotation in IE9/Android 2.3 (fades only). */
				    "transition.flipYOut": {
				        defaultDuration: 800,
				        calls: [
							[{ opacity: [0, 1], transformPerspective: [800, 800], rotateX: 25 }]
				        ],
				        reset: { transformPerspective: 0, rotateX: 0 }
				    },
				    /* Animate.css */
				    /* Support: Loses rotation in IE9/Android 2.3 (fades only). */
				    "transition.flipBounceXIn": {
				        defaultDuration: 900,
				        calls: [
							[{ opacity: [0.725, 0], transformPerspective: [400, 400], rotateY: [-10, 90] }, 0.50],
							[{ opacity: 0.80, rotateY: 10 }, 0.25],
							[{ opacity: 1, rotateY: 0 }, 0.25]
				        ],
				        reset: { transformPerspective: 0 }
				    },
				    /* Animate.css */
				    /* Support: Loses rotation in IE9/Android 2.3 (fades only). */
				    "transition.flipBounceXOut": {
				        defaultDuration: 800,
				        calls: [
							[{ opacity: [0.9, 1], transformPerspective: [400, 400], rotateY: -10 }, 0.50],
							[{ opacity: 0, rotateY: 90 }, 0.50]
				        ],
				        reset: { transformPerspective: 0, rotateY: 0 }
				    },
				    /* Animate.css */
				    /* Support: Loses rotation in IE9/Android 2.3 (fades only). */
				    "transition.flipBounceYIn": {
				        defaultDuration: 850,
				        calls: [
							[{ opacity: [0.725, 0], transformPerspective: [400, 400], rotateX: [-10, 90] }, 0.50],
							[{ opacity: 0.80, rotateX: 10 }, 0.25],
							[{ opacity: 1, rotateX: 0 }, 0.25]
				        ],
				        reset: { transformPerspective: 0 }
				    },
				    /* Animate.css */
				    /* Support: Loses rotation in IE9/Android 2.3 (fades only). */
				    "transition.flipBounceYOut": {
				        defaultDuration: 800,
				        calls: [
							[{ opacity: [0.9, 1], transformPerspective: [400, 400], rotateX: -15 }, 0.50],
							[{ opacity: 0, rotateX: 90 }, 0.50]
				        ],
				        reset: { transformPerspective: 0, rotateX: 0 }
				    },
				    /* Magic.css */
				    "transition.swoopIn": {
				        defaultDuration: 850,
				        calls: [
							[{ opacity: [1, 0], transformOriginX: ["100%", "50%"], transformOriginY: ["100%", "100%"], scaleX: [1, 0], scaleY: [1, 0], translateX: [0, -700], translateZ: 0 }]
				        ],
				        reset: { transformOriginX: "50%", transformOriginY: "50%" }
				    },
				    /* Magic.css */
				    "transition.swoopOut": {
				        defaultDuration: 850,
				        calls: [
							[{ opacity: [0, 1], transformOriginX: ["50%", "100%"], transformOriginY: ["100%", "100%"], scaleX: 0, scaleY: 0, translateX: -700, translateZ: 0 }]
				        ],
				        reset: { transformOriginX: "50%", transformOriginY: "50%", scaleX: 1, scaleY: 1, translateX: 0 }
				    },
				    /* Magic.css */
				    /* Support: Loses rotation in IE9/Android 2.3. (Fades and scales only.) */
				    "transition.whirlIn": {
				        defaultDuration: 850,
				        calls: [
							[{ opacity: [1, 0], transformOriginX: ["50%", "50%"], transformOriginY: ["50%", "50%"], scaleX: [1, 0], scaleY: [1, 0], rotateY: [0, 160] }, 1, { easing: "easeInOutSine" }]
				        ]
				    },
				    /* Magic.css */
				    /* Support: Loses rotation in IE9/Android 2.3. (Fades and scales only.) */
				    "transition.whirlOut": {
				        defaultDuration: 750,
				        calls: [
							[{ opacity: [0, "easeInOutQuint", 1], transformOriginX: ["50%", "50%"], transformOriginY: ["50%", "50%"], scaleX: 0, scaleY: 0, rotateY: 160 }, 1, { easing: "swing" }]
				        ],
				        reset: { scaleX: 1, scaleY: 1, rotateY: 0 }
				    },
				    "transition.shrinkIn": {
				        defaultDuration: 750,
				        calls: [
							[{ opacity: [1, 0], transformOriginX: ["50%", "50%"], transformOriginY: ["50%", "50%"], scaleX: [1, 1.5], scaleY: [1, 1.5], translateZ: 0 }]
				        ]
				    },
				    "transition.shrinkOut": {
				        defaultDuration: 600,
				        calls: [
							[{ opacity: [0, 1], transformOriginX: ["50%", "50%"], transformOriginY: ["50%", "50%"], scaleX: 1.3, scaleY: 1.3, translateZ: 0 }]
				        ],
				        reset: { scaleX: 1, scaleY: 1 }
				    },
				    "transition.expandIn": {
				        defaultDuration: 700,
				        calls: [
							[{ opacity: [1, 0], transformOriginX: ["50%", "50%"], transformOriginY: ["50%", "50%"], scaleX: [1, 0.625], scaleY: [1, 0.625], translateZ: 0 }]
				        ]
				    },
				    "transition.expandOut": {
				        defaultDuration: 700,
				        calls: [
							[{ opacity: [0, 1], transformOriginX: ["50%", "50%"], transformOriginY: ["50%", "50%"], scaleX: 0.5, scaleY: 0.5, translateZ: 0 }]
				        ],
				        reset: { scaleX: 1, scaleY: 1 }
				    },
				    /* Animate.css */
				    "transition.bounceIn": {
				        defaultDuration: 800,
				        calls: [
							[{ opacity: [1, 0], scaleX: [1.05, 0.3], scaleY: [1.05, 0.3] }, 0.40],
							[{ scaleX: 0.9, scaleY: 0.9, translateZ: 0 }, 0.20],
							[{ scaleX: 1, scaleY: 1 }, 0.50]
				        ]
				    },
				    /* Animate.css */
				    "transition.bounceOut": {
				        defaultDuration: 800,
				        calls: [
							[{ scaleX: 0.95, scaleY: 0.95 }, 0.35],
							[{ scaleX: 1.1, scaleY: 1.1, translateZ: 0 }, 0.35],
							[{ opacity: [0, 1], scaleX: 0.3, scaleY: 0.3 }, 0.30]
				        ],
				        reset: { scaleX: 1, scaleY: 1 }
				    },
				    /* Animate.css */
				    "transition.bounceUpIn": {
				        defaultDuration: 800,
				        calls: [
							[{ opacity: [1, 0], translateY: [-30, 1000] }, 0.60, { easing: "easeOutCirc" }],
							[{ translateY: 10 }, 0.20],
							[{ translateY: 0 }, 0.20]
				        ]
				    },
				    /* Animate.css */
				    "transition.bounceUpOut": {
				        defaultDuration: 1000,
				        calls: [
							[{ translateY: 20 }, 0.20],
							[{ opacity: [0, "easeInCirc", 1], translateY: -1000 }, 0.80]
				        ],
				        reset: { translateY: 0 }
				    },
				    /* Animate.css */
				    "transition.bounceDownIn": {
				        defaultDuration: 800,
				        calls: [
							[{ opacity: [1, 0], translateY: [30, -1000] }, 0.60, { easing: "easeOutCirc" }],
							[{ translateY: -10 }, 0.20],
							[{ translateY: 0 }, 0.20]
				        ]
				    },
				    /* Animate.css */
				    "transition.bounceDownOut": {
				        defaultDuration: 1000,
				        calls: [
							[{ translateY: -20 }, 0.20],
							[{ opacity: [0, "easeInCirc", 1], translateY: 1000 }, 0.80]
				        ],
				        reset: { translateY: 0 }
				    },
				    /* Animate.css */
				    "transition.bounceLeftIn": {
				        defaultDuration: 750,
				        calls: [
							[{ opacity: [1, 0], translateX: [30, -1250] }, 0.60, { easing: "easeOutCirc" }],
							[{ translateX: -10 }, 0.20],
							[{ translateX: 0 }, 0.20]
				        ]
				    },
				    /* Animate.css */
				    "transition.bounceLeftOut": {
				        defaultDuration: 750,
				        calls: [
							[{ translateX: 30 }, 0.20],
							[{ opacity: [0, "easeInCirc", 1], translateX: -1250 }, 0.80]
				        ],
				        reset: { translateX: 0 }
				    },
				    /* Animate.css */
				    "transition.bounceRightIn": {
				        defaultDuration: 750,
				        calls: [
							[{ opacity: [1, 0], translateX: [-30, 1250] }, 0.60, { easing: "easeOutCirc" }],
							[{ translateX: 10 }, 0.20],
							[{ translateX: 0 }, 0.20]
				        ]
				    },
				    /* Animate.css */
				    "transition.bounceRightOut": {
				        defaultDuration: 750,
				        calls: [
							[{ translateX: -30 }, 0.20],
							[{ opacity: [0, "easeInCirc", 1], translateX: 1250 }, 0.80]
				        ],
				        reset: { translateX: 0 }
				    },
				    "transition.slideUpIn": {
				        defaultDuration: 900,
				        calls: [
							[{ opacity: [1, 0], translateY: [0, 20], translateZ: 0 }]
				        ]
				    },
				    "transition.slideUpOut": {
				        defaultDuration: 900,
				        calls: [
							[{ opacity: [0, 1], translateY: -20, translateZ: 0 }]
				        ],
				        reset: { translateY: 0 }
				    },
				    "transition.slideDownIn": {
				        defaultDuration: 900,
				        calls: [
							[{ opacity: [1, 0], translateY: [0, -20], translateZ: 0 }]
				        ]
				    },
				    "transition.slideDownOut": {
				        defaultDuration: 900,
				        calls: [
							[{ opacity: [0, 1], translateY: 20, translateZ: 0 }]
				        ],
				        reset: { translateY: 0 }
				    },
				    "transition.slideLeftIn": {
				        defaultDuration: 1000,
				        calls: [
							[{ opacity: [1, 0], translateX: [0, -20], translateZ: 0 }]
				        ]
				    },
				    "transition.slideLeftOut": {
				        defaultDuration: 1050,
				        calls: [
							[{ opacity: [0, 1], translateX: -20, translateZ: 0 }]
				        ],
				        reset: { translateX: 0 }
				    },
				    "transition.slideRightIn": {
				        defaultDuration: 1000,
				        calls: [
							[{ opacity: [1, 0], translateX: [0, 20], translateZ: 0 }]
				        ]
				    },
				    "transition.slideRightOut": {
				        defaultDuration: 1050,
				        calls: [
							[{ opacity: [0, 1], translateX: 20, translateZ: 0 }]
				        ],
				        reset: { translateX: 0 }
				    },
				    "transition.slideUpBigIn": {
				        defaultDuration: 850,
				        calls: [
							[{ opacity: [1, 0], translateY: [0, 75], translateZ: 0 }]
				        ]
				    },
				    "transition.slideUpBigOut": {
				        defaultDuration: 800,
				        calls: [
							[{ opacity: [0, 1], translateY: -75, translateZ: 0 }]
				        ],
				        reset: { translateY: 0 }
				    },
				    "transition.slideDownBigIn": {
				        defaultDuration: 850,
				        calls: [
							[{ opacity: [1, 0], translateY: [0, -75], translateZ: 0 }]
				        ]
				    },
				    "transition.slideDownBigOut": {
				        defaultDuration: 800,
				        calls: [
							[{ opacity: [0, 1], translateY: 75, translateZ: 0 }]
				        ],
				        reset: { translateY: 0 }
				    },
				    "transition.slideLeftBigIn": {
				        defaultDuration: 800,
				        calls: [
							[{ opacity: [1, 0], translateX: [0, -75], translateZ: 0 }]
				        ]
				    },
				    "transition.slideLeftBigOut": {
				        defaultDuration: 750,
				        calls: [
							[{ opacity: [0, 1], translateX: -75, translateZ: 0 }]
				        ],
				        reset: { translateX: 0 }
				    },
				    "transition.slideRightBigIn": {
				        defaultDuration: 800,
				        calls: [
							[{ opacity: [1, 0], translateX: [0, 75], translateZ: 0 }]
				        ]
				    },
				    "transition.slideRightBigOut": {
				        defaultDuration: 750,
				        calls: [
							[{ opacity: [0, 1], translateX: 75, translateZ: 0 }]
				        ],
				        reset: { translateX: 0 }
				    },
				    /* Magic.css */
				    "transition.perspectiveUpIn": {
				        defaultDuration: 800,
				        calls: [
							[{ opacity: [1, 0], transformPerspective: [800, 800], transformOriginX: [0, 0], transformOriginY: ["100%", "100%"], rotateX: [0, -180] }]
				        ],
				        reset: { transformPerspective: 0, transformOriginX: "50%", transformOriginY: "50%" }
				    },
				    /* Magic.css */
				    /* Support: Loses rotation in IE9/Android 2.3 (fades only). */
				    "transition.perspectiveUpOut": {
				        defaultDuration: 850,
				        calls: [
							[{ opacity: [0, 1], transformPerspective: [800, 800], transformOriginX: [0, 0], transformOriginY: ["100%", "100%"], rotateX: -180 }]
				        ],
				        reset: { transformPerspective: 0, transformOriginX: "50%", transformOriginY: "50%", rotateX: 0 }
				    },
				    /* Magic.css */
				    /* Support: Loses rotation in IE9/Android 2.3 (fades only). */
				    "transition.perspectiveDownIn": {
				        defaultDuration: 800,
				        calls: [
							[{ opacity: [1, 0], transformPerspective: [800, 800], transformOriginX: [0, 0], transformOriginY: [0, 0], rotateX: [0, 180] }]
				        ],
				        reset: { transformPerspective: 0, transformOriginX: "50%", transformOriginY: "50%" }
				    },
				    /* Magic.css */
				    /* Support: Loses rotation in IE9/Android 2.3 (fades only). */
				    "transition.perspectiveDownOut": {
				        defaultDuration: 850,
				        calls: [
							[{ opacity: [0, 1], transformPerspective: [800, 800], transformOriginX: [0, 0], transformOriginY: [0, 0], rotateX: 180 }]
				        ],
				        reset: { transformPerspective: 0, transformOriginX: "50%", transformOriginY: "50%", rotateX: 0 }
				    },
				    /* Magic.css */
				    /* Support: Loses rotation in IE9/Android 2.3 (fades only). */
				    "transition.perspectiveLeftIn": {
				        defaultDuration: 950,
				        calls: [
							[{ opacity: [1, 0], transformPerspective: [2000, 2000], transformOriginX: [0, 0], transformOriginY: [0, 0], rotateY: [0, -180] }]
				        ],
				        reset: { transformPerspective: 0, transformOriginX: "50%", transformOriginY: "50%" }
				    },
				    /* Magic.css */
				    /* Support: Loses rotation in IE9/Android 2.3 (fades only). */
				    "transition.perspectiveLeftOut": {
				        defaultDuration: 950,
				        calls: [
							[{ opacity: [0, 1], transformPerspective: [2000, 2000], transformOriginX: [0, 0], transformOriginY: [0, 0], rotateY: -180 }]
				        ],
				        reset: { transformPerspective: 0, transformOriginX: "50%", transformOriginY: "50%", rotateY: 0 }
				    },
				    /* Magic.css */
				    /* Support: Loses rotation in IE9/Android 2.3 (fades only). */
				    "transition.perspectiveRightIn": {
				        defaultDuration: 950,
				        calls: [
							[{ opacity: [1, 0], transformPerspective: [2000, 2000], transformOriginX: ["100%", "100%"], transformOriginY: [0, 0], rotateY: [0, 180] }]
				        ],
				        reset: { transformPerspective: 0, transformOriginX: "50%", transformOriginY: "50%" }
				    },
				    /* Magic.css */
				    /* Support: Loses rotation in IE9/Android 2.3 (fades only). */
				    "transition.perspectiveRightOut": {
				        defaultDuration: 950,
				        calls: [
							[{ opacity: [0, 1], transformPerspective: [2000, 2000], transformOriginX: ["100%", "100%"], transformOriginY: [0, 0], rotateY: 180 }]
				        ],
				        reset: { transformPerspective: 0, transformOriginX: "50%", transformOriginY: "50%", rotateY: 0 }
				    }
				};

        /* Register the packaged effects. */
        for (var effectName in Velocity.RegisterEffect.packagedEffects) {
            Velocity.RegisterEffect(effectName, Velocity.RegisterEffect.packagedEffects[effectName]);
        }

        /*********************
		 Sequence Running
		 **********************/

        /* Note: Sequence calls must use Velocity's single-object arguments syntax. */
        Velocity.RunSequence = function (originalSequence) {
            var sequence = $.extend(true, [], originalSequence);

            if (sequence.length > 1) {
                $.each(sequence.reverse(), function (i, currentCall) {
                    var nextCall = sequence[i + 1];

                    if (nextCall) {
                        /* Parallel sequence calls (indicated via sequenceQueue:false) are triggered
						 in the previous call's begin callback. Otherwise, chained calls are normally triggered
						 in the previous call's complete callback. */
                        var currentCallOptions = currentCall.o || currentCall.options,
								nextCallOptions = nextCall.o || nextCall.options;

                        var timing = (currentCallOptions && currentCallOptions.sequenceQueue === false) ? "begin" : "complete",
								callbackOriginal = nextCallOptions && nextCallOptions[timing],
								options = {};

                        options[timing] = function () {
                            var nextCallElements = nextCall.e || nextCall.elements;
                            var elements = nextCallElements.nodeType ? [nextCallElements] : nextCallElements;

                            if (callbackOriginal) {
                                callbackOriginal.call(elements, elements);
                            }
                            Velocity(currentCall);
                        };

                        if (nextCall.o) {
                            nextCall.o = $.extend({}, nextCallOptions, options);
                        } else {
                            nextCall.options = $.extend({}, nextCallOptions, options);
                        }
                    }
                });

                sequence.reverse();
            }

            Velocity(sequence[0]);
        };
    }((window.jQuery || window.Zepto || window), window, document);
}));;
