/*! modernizr 3.0.0-alpha.4 (Custom Build) | MIT *
 * http://modernizr.com/download/#-adownload-ambientlight-animation-apng-appearance-applicationcache-audio-audioloop-audiopreload-backgroundblendmode-backgroundcliptext-backgroundsize-batteryapi-beacon-bgpositionshorthand-bgpositionxy-bgrepeatspace_bgrepeatround-bgsizecover-blobconstructor-bloburls-blobworkers-borderimage-borderradius-boxshadow-boxsizing-canvas-canvasblending-canvastext-canvaswinding-capture-checked-classlist-contains-contenteditable-contextmenu-cookies-cors-createelementattrs_createelement_attrs-cssall-cssanimations-csscalc-csschunit-csscolumns-cssescape-cssexunit-cssfilters-cssgradients-csshyphens_softhyphens_softhyphensfind-cssinvalid-cssmask-csspointerevents-csspositionsticky-csspseudoanimations-csspseudotransitions-cssreflections-cssremunit-cssresize-cssscrollbar-csstransforms-csstransforms3d-csstransitions-cssvalid-cssvhunit-cssvmaxunit-cssvminunit-cssvwunit-cubicbezierrange-customevent-customprotocolhandler-dart-datachannel-datalistelem-dataset-datauri-dataview-dataworkers-details-devicemotion_deviceorientation-directory-display_runin-displaytable-documentfragment-ellipsis-emoji-es5-es5array-es5date-es5function-es5object-es5string-es5syntax-es5undefined-es6array-es6math-es6number-es6object-es6string-eventlistener-eventsource-exiforientation-fetch-fileinput-filereader-filesystem-flash-flexbox-flexboxlegacy-flexboxtweener-flexwrap-fontface-formattribute-formvalidation-framed-fullscreen-gamepads-generatedcontent-generators-geolocation-getrandomvalues-getusermedia-hashchange-hidden-hiddenscroll-history-hsla-htmlimports-ie8compat-indexeddb-indexeddbblob-inlinesvg-input-inputformaction-inputformenctype-inputformmethod-inputformtarget-inputtypes-intl-jpegxr-json-lastchild-localizednumber-localstorage-lowbandwidth-lowbattery-matchmedia-mathml-mediaqueries-microdata-multiplebgs-mutationobserver-notification-nthchild-objectfit-olreversed-oninput-opacity-outputelem-overflowscrolling-pagevisibility-peerconnection-performance-picture-placeholder-pointerevents-pointerlock-postmessage-preserve3d-progressbar_meter-promises-proximity-queryselector-quotamanagement-regions-requestanimationframe-requestautocomplete-rgba-ruby-sandbox-scriptasync-scriptdefer-seamless-search-serviceworker-sessionstorage-shapes-sharedworkers-siblinggeneral-sizes-smil-speechrecognition-speechsynthesis-srcdoc-srcset-strictmode-stylescoped-subpixelfont-supports-svg-svgasimg-svgclippaths-svgfilters-svgforeignobject-target-template-templatestrings-textalignlast-textareamaxlength-textshadow-texttrackapi_track-time-todataurljpeg_todataurlpng_todataurlwebp-touchevents-transferables-typedarrays-unicode-unicoderange-unknownelements-urlparser-userdata-userselect-vibrate-video-videoautoplay-videoloop-videopreload-vml-webaudio-webgl-webglextensions-webintents-webp-webpalpha-webpanimation-webplossless_webp_lossless-websockets-websocketsbinary-websqldatabase-webworkers-willchange-wrapflow-xhr2-xhrresponsetype-xhrresponsetypearraybuffer-xhrresponsetypeblob-xhrresponsetypedocument-xhrresponsetypejson-xhrresponsetypetext-addtest-atrule-domprefixes-hasevent-mq-prefixed-prefixedcss-prefixes-shiv-testallprops-testprop-teststyles !*/
! function(window, document, undefined) {
    function roundedEquals(e, t) {
        return e - 1 === t || e === t || e + 1 === t
    }

    function cssToDOM(e) {
        return e.replace(/([a-z])-([a-z])/g, function(e, t, n) {
            return t + n.toUpperCase()
        }).replace(/^-/, "")
    }

    function is(e, t) {
        return typeof e === t
    }

    function testRunner() {
        var e, t, n, r, o, i, a;
        for (var d in tests) {
            if (e = [], t = tests[d], t.name && (e.push(t.name.toLowerCase()), t.options && t.options.aliases && t.options.aliases.length))
                for (n = 0; n < t.options.aliases.length; n++) e.push(t.options.aliases[n].toLowerCase());
            for (r = is(t.fn, "function") ? t.fn() : t.fn, o = 0; o < e.length; o++) i = e[o], a = i.split("."), 1 === a.length ? Modernizr[a[0]] = r : (!Modernizr[a[0]] || Modernizr[a[0]] instanceof Boolean || (Modernizr[a[0]] = new Boolean(Modernizr[a[0]])), Modernizr[a[0]][a[1]] = r), classes.push((r ? "" : "no-") + a.join("-"))
        }
    }

    function contains(e, t) {
        return !!~("" + e).indexOf(t)
    }

    function setClasses(e) {
        var t = docElement.className,
            n = Modernizr._config.classPrefix || "";
        if (isSVG && (t = t.baseVal), Modernizr._config.enableJSClass) {
            var r = new RegExp("(^|\\s)" + n + "no-js(\\s|$)");
            t = t.replace(r, "$1" + n + "js$2")
        }
        Modernizr._config.enableClasses && (t += " " + n + e.join(" " + n), isSVG ? docElement.className.baseVal = t : docElement.className = t)
    }

    function addTest(e, t) {
        if ("object" == typeof e)
            for (var n in e) hasOwnProp(e, n) && addTest(n, e[n]);
        else {
            e = e.toLowerCase();
            var r = e.split("."),
                o = Modernizr[r[0]];
            if (2 == r.length && (o = o[r[1]]), "undefined" != typeof o) return Modernizr;
            t = "function" == typeof t ? t() : t, 1 == r.length ? Modernizr[r[0]] = t : (!Modernizr[r[0]] || Modernizr[r[0]] instanceof Boolean || (Modernizr[r[0]] = new Boolean(Modernizr[r[0]])), Modernizr[r[0]][r[1]] = t), setClasses([(t && 0 != t ? "" : "no-") + r.join("-")]), Modernizr._trigger(e, t)
        }
        return Modernizr
    }

    function createElement() {
        return "function" != typeof document.createElement ? document.createElement(arguments[0]) : isSVG ? document.createElementNS.call(document, "http://www.w3.org/2000/svg", arguments[0]) : document.createElement.apply(document, arguments)
    }

    function getBody() {
        var e = document.body;
        return e || (e = createElement(isSVG ? "svg" : "body"), e.fake = !0), e
    }

    function injectElementWithStyles(e, t, n, r) {
        var o, i, a, d, s = "modernizr",
            A = createElement("div"),
            l = getBody();
        if (parseInt(n, 10))
            for (; n--;) a = createElement("div"), a.id = r ? r[n] : s + (n + 1), A.appendChild(a);
        return o = createElement("style"), o.type = "text/css", o.id = "s" + s, (l.fake ? l : A).appendChild(o), l.appendChild(A), o.styleSheet ? o.styleSheet.cssText = e : o.appendChild(document.createTextNode(e)), A.id = s, l.fake && (l.style.background = "", l.style.overflow = "hidden", d = docElement.style.overflow, docElement.style.overflow = "hidden", docElement.appendChild(l)), i = t(A, e), l.fake ? (l.parentNode.removeChild(l), docElement.style.overflow = d, docElement.offsetHeight) : A.parentNode.removeChild(A), !!i
    }

    function fnBind(e, t) {
        return function() {
            return e.apply(t, arguments)
        }
    }

    function testDOMProps(e, t, n) {
        var r;
        for (var o in e)
            if (e[o] in t) return n === !1 ? e[o] : (r = t[e[o]], is(r, "function") ? fnBind(r, n || t) : r);
        return !1
    }

    function domToCSS(e) {
        return e.replace(/([A-Z])/g, function(e, t) {
            return "-" + t.toLowerCase()
        }).replace(/^ms-/, "-ms-")
    }

    function nativeTestProps(e, t) {
        var n = e.length;
        if ("CSS" in window && "supports" in window.CSS) {
            for (; n--;)
                if (window.CSS.supports(domToCSS(e[n]), t)) return !0;
            return !1
        }
        if ("CSSSupportsRule" in window) {
            for (var r = []; n--;) r.push("(" + domToCSS(e[n]) + ":" + t + ")");
            return r = r.join(" or "), injectElementWithStyles("@supports (" + r + ") { #modernizr { position: absolute; } }", function(e) {
                return "absolute" == getComputedStyle(e, null).position
            })
        }
        return undefined
    }

    function testProps(e, t, n, r) {
        function o() {
            a && (delete mStyle.style, delete mStyle.modElem)
        }
        if (r = is(r, "undefined") ? !1 : r, !is(n, "undefined")) {
            var i = nativeTestProps(e, n);
            if (!is(i, "undefined")) return i
        }
        for (var a, d, s, A, l, c = ["modernizr", "tspan"]; !mStyle.style;) a = !0, mStyle.modElem = createElement(c.shift()), mStyle.style = mStyle.modElem.style;
        for (s = e.length, d = 0; s > d; d++)
            if (A = e[d], l = mStyle.style[A], contains(A, "-") && (A = cssToDOM(A)), mStyle.style[A] !== undefined) {
                if (r || is(n, "undefined")) return o(), "pfx" == t ? A : !0;
                try {
                    mStyle.style[A] = n
                } catch (u) {}
                if (mStyle.style[A] != l) return o(), "pfx" == t ? A : !0
            }
        return o(), !1
    }

    function testPropsAll(e, t, n, r, o) {
        var i = e.charAt(0).toUpperCase() + e.slice(1),
            a = (e + " " + cssomPrefixes.join(i + " ") + i).split(" ");
        return is(t, "string") || is(t, "undefined") ? testProps(a, t, r, o) : (a = (e + " " + domPrefixes.join(i + " ") + i).split(" "), testDOMProps(a, t, n))
    }

    function testAllProps(e, t, n) {
        return testPropsAll(e, undefined, undefined, t, n)
    }
    var classes = [],
        tests = [],
        ModernizrProto = {
            _version: "3.0.0-alpha.4",
            _config: {
                classPrefix: "",
                enableClasses: !0,
                enableJSClass: !0,
                usePrefixes: !0
            },
            _q: [],
            on: function(e, t) {
                var n = this;
                setTimeout(function() {
                    t(n[e])
                }, 0)
            },
            addTest: function(e, t, n) {
                tests.push({
                    name: e,
                    fn: t,
                    options: n
                })
            },
            addAsyncTest: function(e) {
                tests.push({
                    name: null,
                    fn: e
                })
            }
        },
        Modernizr = function() {};
    Modernizr.prototype = ModernizrProto, Modernizr = new Modernizr;
    var newSyntax = "CSS" in window && "supports" in window.CSS,
        oldSyntax = "supportsCSS" in window;
    Modernizr.addTest("supports", newSyntax || oldSyntax), Modernizr.addTest("applicationcache", "applicationCache" in window), Modernizr.addTest("blobconstructor", function() {
        try {
            return !!new Blob
        } catch (e) {
            return !1
        }
    }, {
        aliases: ["blob-constructor"]
    }), Modernizr.addTest("cookies", function() {
        try {
            document.cookie = "cookietest=1";
            var e = -1 != document.cookie.indexOf("cookietest=");
            return document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT", e
        } catch (t) {
            return !1
        }
    }), Modernizr.addTest("cors", "XMLHttpRequest" in window && "withCredentials" in new XMLHttpRequest), Modernizr.addTest("customprotocolhandler", function() {
        if (!navigator.registerProtocolHandler) return !1;
        try {
            navigator.registerProtocolHandler("thisShouldFail")
        } catch (e) {
            return e instanceof TypeError
        }
        return !1
    }), Modernizr.addTest("customevent", "CustomEvent" in window && "function" == typeof window.CustomEvent), Modernizr.addTest("dataview", "undefined" != typeof DataView && "getFloat64" in DataView.prototype), Modernizr.addTest("eventlistener", "addEventListener" in window), Modernizr.addTest("geolocation", "geolocation" in navigator), Modernizr.addTest("history", function() {
        var e = navigator.userAgent;
        return -1 === e.indexOf("Android 2.") && -1 === e.indexOf("Android 4.0") || -1 === e.indexOf("Mobile Safari") || -1 !== e.indexOf("Chrome") || -1 !== e.indexOf("Windows Phone") ? window.history && "pushState" in window.history : !1
    }), Modernizr.addTest("ie8compat", !window.addEventListener && !!document.documentMode && 7 === document.documentMode), Modernizr.addTest("json", "JSON" in window && "parse" in JSON && "stringify" in JSON), Modernizr.addTest("notification", "Notification" in window && "permission" in window.Notification && "requestPermission" in window.Notification), Modernizr.addTest("postmessage", "postMessage" in window), Modernizr.addTest("queryselector", "querySelector" in document && "querySelectorAll" in document), Modernizr.addTest("serviceworker", "serviceWorker" in navigator), Modernizr.addTest("svg", !!document.createElementNS && !!document.createElementNS("http://www.w3.org/2000/svg", "svg").createSVGRect), Modernizr.addTest("templatestrings", function() {
        var supports;
        try {
            eval("``"), supports = !0
        } catch (e) {}
        return !!supports
    }), Modernizr.addTest("typedarrays", "ArrayBuffer" in window), Modernizr.addTest("websockets", "WebSocket" in window && 2 === window.WebSocket.CLOSING), Modernizr.addTest("webaudio", function() {
        var e = "webkitAudioContext" in window,
            t = "AudioContext" in window;
        return Modernizr._config.usePrefixes ? e || t : t
    });
    var CSS = window.CSS;
    Modernizr.addTest("cssescape", CSS ? "function" == typeof CSS.escape : !1), Modernizr.addTest("microdata", "getItems" in document), Modernizr.addTest("picture", "HTMLPictureElement" in window), Modernizr.addTest("es5undefined", function() {
        var e, t;
        try {
            t = window.undefined, window.undefined = 12345, e = "undefined" == typeof window.undefined, window.undefined = t
        } catch (n) {
            return !1
        }
        return e
    }), Modernizr.addTest("devicemotion", "DeviceMotionEvent" in window), Modernizr.addTest("deviceorientation", "DeviceOrientationEvent" in window), Modernizr.addTest("filereader", !!(window.File && window.FileList && window.FileReader)), Modernizr.addTest("beacon", "sendBeacon" in navigator), Modernizr.addTest("lowbandwidth", function() {
        var e = navigator.connection || {
            type: 0
        };
        return 3 == e.type || 4 == e.type || /^[23]g$/.test(e.type)
    }), Modernizr.addTest("eventsource", "EventSource" in window), Modernizr.addTest("fetch", "fetch" in window), Modernizr.addTest("xhrresponsetype", function() {
        if ("undefined" == typeof XMLHttpRequest) return !1;
        var e = new XMLHttpRequest;
        return e.open("get", "/", !0), "response" in e
    }()), Modernizr.addTest("xhr2", "XMLHttpRequest" in window && "withCredentials" in new XMLHttpRequest), Modernizr.addTest("speechsynthesis", "SpeechSynthesisUtterance" in window), Modernizr.addTest("localstorage", function() {
        var e = "modernizr";
        try {
            return localStorage.setItem(e, e), localStorage.removeItem(e), !0
        } catch (t) {
            return !1
        }
    }), Modernizr.addTest("sessionstorage", function() {
        var e = "modernizr";
        try {
            return sessionStorage.setItem(e, e), sessionStorage.removeItem(e), !0
        } catch (t) {
            return !1
        }
    }), Modernizr.addTest("websqldatabase", "openDatabase" in window), Modernizr.addTest("svgfilters", function() {
        var e = !1;
        try {
            e = "SVGFEColorMatrixElement" in window && 2 == SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE
        } catch (t) {}
        return e
    }), Modernizr.addTest("urlparser", function() {
        var e;
        try {
            return e = new URL("http://modernizr.com/"), "http://modernizr.com/" === e.href
        } catch (t) {
            return !1
        }
    }), Modernizr.addTest("websocketsbinary", function() {
        var e, t = "https:" == location.protocol ? "wss" : "ws";
        if ("WebSocket" in window) {
            if (e = "binaryType" in WebSocket.prototype) return e;
            try {
                return !!new WebSocket(t + "://.").binaryType
            } catch (n) {}
        }
        return !1
    }), Modernizr.addTest("framed", window.location != top.location), Modernizr.addTest("sharedworkers", "SharedWorker" in window), Modernizr.addTest("webworkers", "Worker" in window), Modernizr.addTest("target", function() {
        var e = window.document;
        if (!("querySelectorAll" in e)) return !1;
        try {
            return e.querySelectorAll(":target"), !0
        } catch (t) {
            return !1
        }
    }), Modernizr.addTest("mutationobserver", !!window.MutationObserver || !!window.WebKitMutationObserver), Modernizr.addTest("es5array", function() {
        return !!(Array.prototype && Array.prototype.every && Array.prototype.filter && Array.prototype.forEach && Array.prototype.indexOf && Array.prototype.lastIndexOf && Array.prototype.map && Array.prototype.some && Array.prototype.reduce && Array.prototype.reduceRight && Array.isArray)
    }), Modernizr.addTest("es5date", function() {
        var e = "2013-04-12T06:06:37.307Z",
            t = !1;
        try {
            t = !!Date.parse(e)
        } catch (n) {}
        return !!(Date.now && Date.prototype && Date.prototype.toISOString && Date.prototype.toJSON && t)
    }), Modernizr.addTest("es5function", function() {
        return !(!Function.prototype || !Function.prototype.bind)
    }), Modernizr.addTest("es5object", function() {
        return !!(Object.keys && Object.create && Object.getPrototypeOf && Object.getOwnPropertyNames && Object.isSealed && Object.isFrozen && Object.isExtensible && Object.getOwnPropertyDescriptor && Object.defineProperty && Object.defineProperties && Object.seal && Object.freeze && Object.preventExtensions)
    }), Modernizr.addTest("strictmode", function() {
        "use strict";
        return !this
    }()), Modernizr.addTest("es5string", function() {
        return !(!String.prototype || !String.prototype.trim)
    }), Modernizr.addTest("es5syntax", function() {
        var value, obj, stringAccess, getter, setter, reservedWords, zeroWidthChars;
        try {
            return stringAccess = eval('"foobar"[3] === "b"'), getter = eval("({ get x(){ return 1 } }).x === 1"), eval("({ set x(v){ value = v; } }).x = 1"), setter = 1 === value, eval("obj = ({ if: 1 })"), reservedWords = 1 === obj["if"], zeroWidthChars = eval("_‌‍ = true"), stringAccess && getter && setter && reservedWords && zeroWidthChars
        } catch (ignore) {
            return !1
        }
    }), Modernizr.addTest("es5", function() {
        return !!(Modernizr.es5array && Modernizr.es5date && Modernizr.es5function && Modernizr.es5object && Modernizr.strictmode && Modernizr.es5string && Modernizr.json && Modernizr.es5syntax && Modernizr.es5undefined)
    }), Modernizr.addTest("es6math", !!(Math && Math.clz32 && Math.cbrt && Math.imul && Math.sign && Math.log10 && Math.log2 && Math.log1p && Math.expm1 && Math.cosh && Math.sinh && Math.tanh && Math.acosh && Math.asinh && Math.atanh && Math.hypot && Math.trunc && Math.fround)), Modernizr.addTest("es6number", !!(Number.isFinite && Number.isInteger && Number.isSafeInteger && Number.isNaN && Number.parseInt && Number.parseFloat && Number.isInteger(Number.MAX_SAFE_INTEGER) && Number.isInteger(Number.MIN_SAFE_INTEGER) && Number.isFinite(Number.EPSILON))), Modernizr.addTest("es6object", !!(Object.assign && Object.is && Object.setPrototypeOf)), Modernizr.addTest("generators", function() {
        try {
            new Function("function* test() {}")()
        } catch (e) {
            return !1
        }
        return !0
    }), Modernizr.addTest("es6string", !!(String.fromCodePoint && String.raw && String.prototype.codePointAt && String.prototype.repeat && String.prototype.startsWith && String.prototype.endsWith && String.prototype.contains)), Modernizr.addTest("promises", function() {
        return "Promise" in window && "resolve" in window.Promise && "reject" in window.Promise && "all" in window.Promise && "race" in window.Promise && function() {
            var e;
            return new window.Promise(function(t) {
                e = t
            }), "function" == typeof e
        }()
    });
    var prefixes = ModernizrProto._config.usePrefixes ? " -webkit- -moz- -o- -ms- ".split(" ") : [];
    ModernizrProto._prefixes = prefixes;
    var omPrefixes = "Moz O ms Webkit",
        domPrefixes = ModernizrProto._config.usePrefixes ? omPrefixes.toLowerCase().split(" ") : [];
    ModernizrProto._domPrefixes = domPrefixes, Modernizr.addTest("contains", is(String.prototype.contains, "function"));
    var hasOwnProp;
    ! function() {
        var e = {}.hasOwnProperty;
        hasOwnProp = is(e, "undefined") || is(e.call, "undefined") ? function(e, t) {
            return t in e && is(e.constructor.prototype[t], "undefined")
        } : function(t, n) {
            return e.call(t, n)
        }
    }(), Modernizr.addTest("es6array", !!(Array.prototype && Array.prototype.copyWithin && Array.prototype.fill && Array.prototype.find && Array.prototype.findIndex && Array.prototype.keys && Array.prototype.entries && Array.prototype.values && Array.from && Array.of));
    var cssomPrefixes = ModernizrProto._config.usePrefixes ? omPrefixes.split(" ") : [];
    ModernizrProto._cssomPrefixes = cssomPrefixes;
    var atRule = function(e) {
        var t, n = prefixes.length,
            r = window.CSSRule;
        if ("undefined" == typeof r) return undefined;
        if (!e) return !1;
        if (e = e.replace(/^@/, ""), t = e.replace(/-/g, "_").toUpperCase() + "_RULE", t in r) return "@" + e;
        for (var o = 0; n > o; o++) {
            var i = prefixes[o],
                a = i.toUpperCase() + "_" + t;
            if (a in r) return "@-" + i.toLowerCase() + "-" + e
        }
        return !1
    };
    ModernizrProto.atRule = atRule;
    var docElement = document.documentElement;
    Modernizr.addTest("classlist", "classList" in docElement), Modernizr.addTest("contextmenu", "contextMenu" in docElement && "HTMLMenuItemElement" in window), Modernizr.addTest("willchange", "willChange" in docElement.style), Modernizr.addTest("cssall", "all" in docElement.style), Modernizr.addTest("documentfragment", function() {
        return "createDocumentFragment" in document && "appendChild" in docElement
    });
    var isSVG = "svg" === docElement.nodeName.toLowerCase(),
        html5;
    isSVG || ! function(e, t) {
        function n(e, t) {
            var n = e.createElement("p"),
                r = e.getElementsByTagName("head")[0] || e.documentElement;
            return n.innerHTML = "x<style>" + t + "</style>", r.insertBefore(n.lastChild, r.firstChild)
        }

        function r() {
            var e = v.elements;
            return "string" == typeof e ? e.split(" ") : e
        }

        function o(e, t) {
            var n = v.elements;
            "string" != typeof n && (n = n.join(" ")), "string" != typeof e && (e = e.join(" ")), v.elements = n + " " + e, A(t)
        }

        function i(e) {
            var t = w[e[h]];
            return t || (t = {}, g++, e[h] = g, w[g] = t), t
        }

        function a(e, n, r) {
            if (n || (n = t), c) return n.createElement(e);
            r || (r = i(n));
            var o;
            return o = r.cache[e] ? r.cache[e].cloneNode() : f.test(e) ? (r.cache[e] = r.createElem(e)).cloneNode() : r.createElem(e), !o.canHaveChildren || m.test(e) || o.tagUrn ? o : r.frag.appendChild(o)
        }

        function d(e, n) {
            if (e || (e = t), c) return e.createDocumentFragment();
            n = n || i(e);
            for (var o = n.frag.cloneNode(), a = 0, d = r(), s = d.length; s > a; a++) o.createElement(d[a]);
            return o
        }

        function s(e, t) {
            t.cache || (t.cache = {}, t.createElem = e.createElement, t.createFrag = e.createDocumentFragment, t.frag = t.createFrag()), e.createElement = function(n) {
                return v.shivMethods ? a(n, e, t) : t.createElem(n)
            }, e.createDocumentFragment = Function("h,f", "return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" + r().join().replace(/[\w\-:]+/g, function(e) {
                return t.createElem(e), t.frag.createElement(e), 'c("' + e + '")'
            }) + ");return n}")(v, t.frag)
        }

        function A(e) {
            e || (e = t);
            var r = i(e);
            return !v.shivCSS || l || r.hasCSS || (r.hasCSS = !!n(e, "article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")), c || s(e, r), e
        }
        var l, c, u = "3.7.2",
            p = e.html5 || {},
            m = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,
            f = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,
            h = "_html5shiv",
            g = 0,
            w = {};
        ! function() {
            try {
                var e = t.createElement("a");
                e.innerHTML = "<xyz></xyz>", l = "hidden" in e, c = 1 == e.childNodes.length || function() {
                    t.createElement("a");
                    var e = t.createDocumentFragment();
                    return "undefined" == typeof e.cloneNode || "undefined" == typeof e.createDocumentFragment || "undefined" == typeof e.createElement
                }()
            } catch (n) {
                l = !0, c = !0
            }
        }();
        var v = {
            elements: p.elements || "abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",
            version: u,
            shivCSS: p.shivCSS !== !1,
            supportsUnknownElements: c,
            shivMethods: p.shivMethods !== !1,
            type: "default",
            shivDocument: A,
            createElement: a,
            createDocumentFragment: d,
            addElements: o
        };
        e.html5 = v, A(t)
    }(this, document), ModernizrProto._l = {}, ModernizrProto.on = function(e, t) {
        this._l[e] || (this._l[e] = []), this._l[e].push(t), Modernizr.hasOwnProperty(e) && setTimeout(function() {
            Modernizr._trigger(e, Modernizr[e])
        }, 0)
    }, ModernizrProto._trigger = function(e, t) {
        if (this._l[e]) {
            var n = this._l[e];
            setTimeout(function() {
                var e, r;
                for (e = 0; e < n.length; e++)(r = n[e])(t)
            }, 0), delete this._l[e]
        }
    }, Modernizr._q.push(function() {
        ModernizrProto.addTest = addTest
    }), Modernizr.addAsyncTest(function() {
        var e = new Image;
        e.onerror = function() {
            addTest("exiforientation", !1, {
                aliases: ["exif-orientation"]
            })
        }, e.onload = function() {
            addTest("exiforientation", 2 !== e.width, {
                aliases: ["exif-orientation"]
            })
        }, e.src = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAABgASAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAABAAIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/iiiigD/2Q=="
    }), Modernizr.addAsyncTest(function() {
        function e() {
            clearTimeout(t), window.removeEventListener("deviceproximity", e), addTest("proximity", !0)
        }
        var t, n = 300;
        "ondeviceproximity" in window && "onuserproximity" in window ? (window.addEventListener("deviceproximity", e), t = setTimeout(function() {
            window.removeEventListener("deviceproximity", e), addTest("proximity", !1)
        }, n)) : addTest("proximity", !1)
    }), Modernizr.addAsyncTest(function() {
        var e = new Image;
        e.onload = e.onerror = function() {
            addTest("jpegxr", 1 == e.width, {
                aliases: ["jpeg-xr"]
            })
        }, e.src = "data:image/vnd.ms-photo;base64,SUm8AQgAAAAFAAG8AQAQAAAASgAAAIC8BAABAAAAAQAAAIG8BAABAAAAAQAAAMC8BAABAAAAWgAAAMG8BAABAAAAHwAAAAAAAAAkw91vA07+S7GFPXd2jckNV01QSE9UTwAZAYBxAAAAABP/gAAEb/8AAQAAAQAAAA=="
    }), Modernizr.addAsyncTest(function() {
        var e = new Image;
        e.onerror = function() {
            addTest("webpalpha", !1, {
                aliases: ["webp-alpha"]
            })
        }, e.onload = function() {
            addTest("webpalpha", 1 == e.width, {
                aliases: ["webp-alpha"]
            })
        }, e.src = "data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA=="
    }), Modernizr.addAsyncTest(function() {
        var e = new Image;
        e.onerror = function() {
            addTest("webpanimation", !1, {
                aliases: ["webp-animation"]
            })
        }, e.onload = function() {
            addTest("webpanimation", 1 == e.width, {
                aliases: ["webp-animation"]
            })
        }, e.src = "data:image/webp;base64,UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA"
    }), Modernizr.addAsyncTest(function() {
        var e = new Image;
        e.onerror = function() {
            addTest("webplossless", !1, {
                aliases: ["webp-lossless"]
            })
        }, e.onload = function() {
            addTest("webplossless", 1 == e.width, {
                aliases: ["webp-lossless"]
            })
        }, e.src = "data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="
    }), Modernizr.addAsyncTest(function() {
        function e(e, t, n) {
            function r(t) {
                var r = t && "load" === t.type ? 1 == o.width : !1,
                    i = "webp" === e;
                addTest(e, i ? new Boolean(r) : r), n && n(t)
            }
            var o = new Image;
            o.onerror = r, o.onload = r, o.src = t
        }
        var t = [{
                uri: "data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA=",
                name: "webp"
            }, {
                uri: "data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA==",
                name: "webp.alpha"
            }, {
                uri: "data:image/webp;base64,UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA",
                name: "webp.animation"
            }, {
                uri: "data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=",
                name: "webp.lossless"
            }],
            n = t.shift();
        e(n.name, n.uri, function(n) {
            if (n && "load" === n.type)
                for (var r = 0; r < t.length; r++) e(t[r].name, t[r].uri)
        })
    }), Modernizr.addTest("svgasimg", document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image", "1.1")), Modernizr.addAsyncTest(function() {
        function e() {
            var e = new Image;
            e.onerror = function() {
                addTest("datauri", !0), Modernizr.datauri = new Boolean(!0), Modernizr.datauri.over32kb = !1
            }, e.onload = function() {
                addTest("datauri", !0), Modernizr.datauri = new Boolean(!0), Modernizr.datauri.over32kb = 1 == e.width && 1 == e.height
            };
            for (var t = "R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="; t.length < 33e3;) t = "\r\n" + t;
            e.src = "data:image/gif;base64," + t
        } - 1 !== navigator.userAgent.indexOf("MSIE 7.") && setTimeout(function() {
            addTest("datauri", !1)
        }, 10);
        var t = new Image;
        t.onerror = function() {
            addTest("datauri", !1)
        }, t.onload = function() {
            1 == t.width && 1 == t.height ? e() : addTest("datauri", !1)
        }, t.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="
    }), Modernizr.addAsyncTest(function() {
        function e() {
            addTest("blobworkers", !1), t()
        }

        function t() {
            d && r.revokeObjectURL(d), a && a.terminate(), s && clearTimeout(s)
        }
        try {
            var n = window.BlobBuilder,
                r = window.URL;
            Modernizr._config.usePrefix && (n = n || window.MozBlobBuilder || window.WebKitBlobBuilder || window.MSBlobBuilder || window.OBlobBuilder, r = r || window.MozURL || window.webkitURL || window.MSURL || window.OURL);
            var o, i, a, d, s, A = "Modernizr",
                l = "this.onmessage=function(e){postMessage(e.data)}";
            try {
                o = new Blob([l], {
                    type: "text/javascript"
                })
            } catch (c) {}
            o || (i = new n, i.append(l), o = i.getBlob()), d = r.createObjectURL(o), a = new Worker(d), a.onmessage = function(e) {
                addTest("blobworkers", A === e.data), t()
            }, a.onerror = e, s = setTimeout(e, 200), a.postMessage(A)
        } catch (c) {
            e()
        }
    }), Modernizr.addAsyncTest(function() {
        try {
            var e = "Modernizr",
                t = new Worker("data:text/javascript;base64,dGhpcy5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7cG9zdE1lc3NhZ2UoZS5kYXRhKX0=");
            t.onmessage = function(n) {
                t.terminate(), addTest("dataworkers", e === n.data), t = null
            }, t.onerror = function() {
                addTest("dataworkers", !1), t = null
            }, setTimeout(function() {
                addTest("dataworkers", !1)
            }, 200), t.postMessage(e)
        } catch (n) {
            setTimeout(function() {
                addTest("dataworkers", !1)
            }, 0)
        }
    }), Modernizr.addTest("createelementattrs", function() {
        try {
            return "test" == createElement('<input name="test" />').getAttribute("name")
        } catch (e) {
            return !1
        }
    }, {
        aliases: ["createelement-attrs"]
    });
    var hasEvent = function(e) {
        function t(t, r) {
            var o;
            return t ? (r && "string" != typeof r || (r = createElement(r || "div")), t = "on" + t, o = t in r, !o && n && (r.setAttribute || (r = createElement("div")), r.setAttribute(t, ""), o = "function" == typeof r[t], r[t] !== e && (r[t] = e), r.removeAttribute(t)), o) : !1
        }
        var n = !("onblur" in document.documentElement);
        return t
    }();
    ModernizrProto.hasEvent = hasEvent, Modernizr.addTest("ambientlight", hasEvent("devicelight", window)), Modernizr.addTest("hashchange", function() {
        return hasEvent("hashchange", window) === !1 ? !1 : document.documentMode === undefined || document.documentMode > 7
    }), Modernizr.addTest("inputsearchevent", hasEvent("search")), Modernizr.addTest("pointerevents", function() {
        var e = !1,
            t = domPrefixes.length;
        for (e = Modernizr.hasEvent("pointerdown"); t-- && !e;) hasEvent(domPrefixes[t] + "pointerdown") && (e = !0);
        return e
    }), Modernizr.addTest("audio", function() {
        var e = createElement("audio"),
            t = !1;
        try {
            (t = !!e.canPlayType) && (t = new Boolean(t), t.ogg = e.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""), t.mp3 = e.canPlayType("audio/mpeg;").replace(/^no$/, ""), t.opus = e.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/, ""), t.wav = e.canPlayType('audio/wav; codecs="1"').replace(/^no$/, ""), t.m4a = (e.canPlayType("audio/x-m4a;") || e.canPlayType("audio/aac;")).replace(/^no$/, ""))
        } catch (n) {}
        return t
    }), Modernizr.addTest("canvas", function() {
        var e = createElement("canvas");
        return !(!e.getContext || !e.getContext("2d"))
    }), Modernizr.addTest("canvastext", function() {
        return Modernizr.canvas === !1 ? !1 : "function" == typeof createElement("canvas").getContext("2d").fillText
    }), Modernizr.addTest("contenteditable", function() {
        if ("contentEditable" in docElement) {
            var e = createElement("div");
            return e.contentEditable = !0, "true" === e.contentEditable
        }
    }), Modernizr.addTest("emoji", function() {
        if (!Modernizr.canvastext) return !1;
        var e = window.devicePixelRatio || 1,
            t = 12 * e,
            n = createElement("canvas"),
            r = n.getContext("2d");
        return r.fillStyle = "#f00", r.textBaseline = "top", r.font = "32px Arial", r.fillText("🐨", 0, 0), 0 !== r.getImageData(t, t, 1, 1).data[0]
    }), addTest("htmlimports", "import" in createElement("link")), Modernizr.addTest("olreversed", "reversed" in createElement("ol")), Modernizr.addTest("userdata", !!createElement("div").addBehavior), Modernizr.addTest("video", function() {
        var e = createElement("video"),
            t = !1;
        try {
            (t = !!e.canPlayType) && (t = new Boolean(t), t.ogg = e.canPlayType('video/ogg; codecs="theora"').replace(/^no$/, ""), t.h264 = e.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, ""), t.webm = e.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/, ""), t.vp9 = e.canPlayType('video/webm; codecs="vp9"').replace(/^no$/, ""), t.hls = e.canPlayType('application/x-mpegURL; codecs="avc1.42E01E"').replace(/^no$/, ""))
        } catch (n) {}
        return t
    }), Modernizr.addTest("vml", function() {
        var e, t = createElement("div"),
            n = !1;
        return isSVG || (t.innerHTML = '<v:shape id="vml_flag1" adj="1" />', e = t.firstChild, e.style.behavior = "url(#default#VML)", n = e ? "object" == typeof e.adj : !0), n
    }), Modernizr.addTest("webanimations", "animate" in createElement("div")), Modernizr.addTest("webgl", function() {
        var e = createElement("canvas"),
            t = "probablySupportsContext" in e ? "probablySupportsContext" : "supportsContext";
        return t in e ? e[t]("webgl") || e[t]("experimental-webgl") : "WebGLRenderingContext" in window
    }), Modernizr.addTest("adownload", !window.externalHost && "download" in createElement("a")), Modernizr.addTest("audioloop", "loop" in createElement("audio")), Modernizr.addTest("audiopreload", "preload" in createElement("audio")), Modernizr.addTest("canvasblending", function() {
        if (Modernizr.canvas === !1) return !1;
        var e = createElement("canvas").getContext("2d");
        try {
            e.globalCompositeOperation = "screen"
        } catch (t) {}
        return "screen" === e.globalCompositeOperation
    });
    var canvas = createElement("canvas");
    Modernizr.addTest("todataurljpeg", function() {
        return !!Modernizr.canvas && 0 === canvas.toDataURL("image/jpeg").indexOf("data:image/jpeg")
    }), Modernizr.addTest("todataurlpng", function() {
        return !!Modernizr.canvas && 0 === canvas.toDataURL("image/png").indexOf("data:image/png")
    }), Modernizr.addTest("todataurlwebp", function() {
        var e = !1;
        try {
            e = !!Modernizr.canvas && 0 === canvas.toDataURL("image/webp").indexOf("data:image/webp")
        } catch (t) {}
        return e
    }), Modernizr.addTest("canvaswinding", function() {
        if (Modernizr.canvas === !1) return !1;
        var e = createElement("canvas").getContext("2d");
        return e.rect(0, 0, 10, 10), e.rect(2, 2, 6, 6), e.isPointInPath(5, 5, "evenodd") === !1
    }), Modernizr.addTest("regions", function() {
        if (isSVG) return !1;
        var e = Modernizr.prefixed("flowFrom"),
            t = Modernizr.prefixed("flowInto"),
            n = !1;
        if (!e || !t) return n;
        var r = createElement("iframe"),
            o = createElement("div"),
            i = createElement("div"),
            a = createElement("div"),
            d = "modernizr_flow_for_regions_check";
        i.innerText = "M", o.style.cssText = "top: 150px; left: 150px; padding: 0px;", a.style.cssText = "width: 50px; height: 50px; padding: 42px;", a.style[e] = d, o.appendChild(i), o.appendChild(a), docElement.appendChild(o);
        var s, A, l = i.getBoundingClientRect();
        return i.style[t] = d, s = i.getBoundingClientRect(), A = parseInt(s.left - l.left, 10), docElement.removeChild(o), 42 == A ? n = !0 : (docElement.appendChild(r), l = r.getBoundingClientRect(), r.style[t] = d, s = r.getBoundingClientRect(), l.height > 0 && l.height !== s.height && 0 === s.height && (n = !0)), i = a = o = r = undefined, n
    }), Modernizr.addTest("hidden", "hidden" in createElement("a")), Modernizr.addTest("template", "content" in createElement("template")), Modernizr.addTest("unknownelements", function() {
        var e = createElement("a");
        return e.innerHTML = "<xyz></xyz>", 1 === e.childNodes.length
    }), Modernizr.addTest("bgpositionshorthand", function() {
        var e = createElement("a"),
            t = e.style,
            n = "right 10px bottom 10px";
        return t.cssText = "background-position: " + n + ";", t.backgroundPosition === n
    }), Modernizr.addTest("capture", "capture" in createElement("input")), Modernizr.addTest("fileinput", function() {
        if (navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/)) return !1;
        var e = createElement("input");
        return e.type = "file", !e.disabled
    }), Modernizr.addTest("fileinputdirectory", function() {
        var e = createElement("input"),
            t = "directory";
        if (e.type = "file", t in e) return !0;
        for (var n = 0, r = domPrefixes.length; r > n; n++)
            if (domPrefixes[n] + t in e) return !0;
        return !1
    }), Modernizr.addTest("formattribute", function() {
        var e, t = createElement("form"),
            n = createElement("input"),
            r = createElement("div"),
            o = "formtest" + (new Date).getTime(),
            i = !1;
        t.id = o;
        try {
            n.setAttribute("form", o)
        } catch (a) {
            document.createAttribute && (e = document.createAttribute("form"), e.nodeValue = o, n.setAttributeNode(e))
        }
        return r.appendChild(t), r.appendChild(n), docElement.appendChild(r), i = t.elements && 1 === t.elements.length && n.form == t, r.parentNode.removeChild(r), i
    }), Modernizr.addTest("placeholder", "placeholder" in createElement("input") && "placeholder" in createElement("textarea")), Modernizr.addTest("csscalc", function() {
        var e = "width:",
            t = "calc(10px);",
            n = createElement("a");
        return n.style.cssText = e + prefixes.join(t + e), !!n.style.length
    }), Modernizr.addTest("sandbox", "sandbox" in createElement("iframe")), Modernizr.addTest("seamless", "seamless" in createElement("iframe")), Modernizr.addTest("srcdoc", "srcdoc" in createElement("iframe")), Modernizr.addAsyncTest(function() {
        if (!Modernizr.canvas) return !1;
        var e = new Image,
            t = createElement("canvas"),
            n = t.getContext("2d");
        e.onload = function() {
            addTest("apng", function() {
                return "undefined" == typeof t.getContext ? !1 : (n.drawImage(e, 0, 0), 0 === n.getImageData(0, 0, 1, 1).data[3])
            })
        }, e.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg=="
    }), Modernizr.addTest("sizes", "sizes" in createElement("img")), Modernizr.addTest("cubicbezierrange", function() {
        var e = createElement("a");
        return e.style.cssText = prefixes.join("transition-timing-function:cubic-bezier(1,0,0,1.1); "), !!e.style.length
    }), Modernizr.addTest("srcset", "srcset" in createElement("img")), Modernizr.addTest("inputformaction", !!("formAction" in createElement("input")), {
        aliases: ["input-formaction"]
    }), Modernizr.addTest("inputformenctype", !!("formEnctype" in createElement("input")), {
        aliases: ["input-formenctype"]
    }), Modernizr.addTest("inputformmethod", !!("formMethod" in createElement("input"))), Modernizr.addTest("inputformtarget", !!("formtarget" in createElement("input")), {
        aliases: ["input-formtarget"]
    }), Modernizr.addTest("scriptasync", "async" in createElement("script")), Modernizr.addTest("scriptdefer", "defer" in createElement("script")), Modernizr.addTest("stylescoped", "scoped" in createElement("style")), Modernizr.addTest("inlinesvg", function() {
        var e = createElement("div");
        return e.innerHTML = "<svg/>", "http://www.w3.org/2000/svg" == ("undefined" != typeof SVGRect && e.firstChild && e.firstChild.namespaceURI);
    }), Modernizr.addTest("textareamaxlength", !!("maxLength" in createElement("textarea"))), Modernizr.addAsyncTest(function() {
        function e(n) {
            clearTimeout(t), r.removeEventListener("playing", e, !1), addTest("videoautoplay", n && "playing" === n.type || 0 !== r.currentTime), r.parentNode.removeChild(r)
        }
        var t, n = 300,
            r = createElement("video"),
            o = r.style;
        if (!(Modernizr.video && "autoplay" in r)) return void addTest("videoautoplay", !1);
        o.position = "absolute", o.height = 0, o.width = 0;
        try {
            if (Modernizr.video.ogg) r.src = "data:video/ogg;base64, ";
            else {
                if (!Modernizr.video.h264) return void addTest("videoautoplay", !1);
                r.src = "data:video/mp4;base64,AAAAHGZ0eXBtcDQyAAAAAG1wNDJpc29tYXZjMQAAAz5tb292AAAAbG12aGQAAAAAzaNacc2jWnEAAV+QAAFfkAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAGGlvZHMAAAAAEICAgAcAT////3//AAACQ3RyYWsAAABcdGtoZAAAAAHNo1pxzaNacQAAAAEAAAAAAAFfkAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAEAAAABAAAAAAAd9tZGlhAAAAIG1kaGQAAAAAzaNacc2jWnEAAV+QAAFfkFXEAAAAAAAhaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAAAAAAGWbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAABVnN0YmwAAACpc3RzZAAAAAAAAAABAAAAmWF2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAEAAQAEgAAABIAAAAAAAAAAEOSlZUL0FWQyBDb2RpbmcAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAxYXZjQwH0AAr/4QAZZ/QACq609NQYBBkAAAMAAQAAAwAKjxImoAEABWjOAa8gAAAAEmNvbHJuY2xjAAYAAQAGAAAAGHN0dHMAAAAAAAAAAQAAAAUAAEZQAAAAKHN0c3oAAAAAAAAAAAAAAAUAAAIqAAAACAAAAAgAAAAIAAAACAAAAChzdHNjAAAAAAAAAAIAAAABAAAABAAAAAEAAAACAAAAAQAAAAEAAAAYc3RjbwAAAAAAAAACAAADYgAABaQAAAAUc3RzcwAAAAAAAAABAAAAAQAAABFzZHRwAAAAAAREREREAAAAb3VkdGEAAABnbWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcgAAAAAAAAAAAAAAAAAAAAA6aWxzdAAAADKpdG9vAAAAKmRhdGEAAAABAAAAAEhhbmRCcmFrZSAwLjkuOCAyMDEyMDcxODAwAAACUm1kYXQAAAHkBgX/4NxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxMjAgLSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDExIC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MCByZWY9MSBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjAgbWU9ZXNhIHN1Ym1lPTkgcHN5PTAgbWl4ZWRfcmVmPTAgbWVfcmFuZ2U9NCBjaHJvbWFfbWU9MSB0cmVsbGlzPTAgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0wIGNocm9tYV9xcF9vZmZzZXQ9MCB0aHJlYWRzPTYgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTUwIGtleWludF9taW49NSBzY2VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmM9Y3FwIG1idHJlZT0wIHFwPTAAgAAAAD5liISscR8A+E4ACAACFoAAITAAAgsAAPgYCoKgoC+L4vi+KAvi+L4YfAEAACMzgABF9AAEUGUgABDJiXnf4AAAAARBmiKUAAAABEGaQpQAAAAEQZpilAAAAARBmoKU"
            }
        } catch (i) {
            return void addTest("videoautoplay", !1)
        }
        r.setAttribute("autoplay", ""), r.style.cssText = "display:none", docElement.appendChild(r), setTimeout(function() {
            r.addEventListener("playing", e, !1), t = setTimeout(e, n)
        }, 0)
    }), Modernizr.addTest("hsla", function() {
        var e = createElement("a").style;
        return e.cssText = "background-color:hsla(120,40%,100%,.5)", contains(e.backgroundColor, "rgba") || contains(e.backgroundColor, "hsla")
    }), Modernizr.addTest("videoloop", "loop" in createElement("video")), Modernizr.addTest("videopreload", "preload" in createElement("video")), Modernizr.addAsyncTest(function() {
        if (Modernizr.webglextensions = new Boolean(!1), Modernizr.webgl) {
            var e, t, n;
            try {
                e = createElement("canvas"), t = e.getContext("webgl") || e.getContext("experimental-webgl"), n = t.getSupportedExtensions()
            } catch (r) {
                return
            }
            t !== undefined && (Modernizr.webglextensions = new Boolean(!0));
            for (var o = -1, i = n.length; ++o < i;) Modernizr.webglextensions[n[o]] = !0;
            e = undefined
        }
    }), Modernizr.addTest("cssgradients", function() {
        var e = "background-image:",
            t = "gradient(linear,left top,right bottom,from(#9f9),to(white));",
            n = "linear-gradient(left top,#9f9, white);",
            r = e + prefixes.join(n + e).slice(0, -e.length);
        Modernizr._config.usePrefixes && (r += e + "-webkit-" + t);
        var o = createElement("a"),
            i = o.style;
        return i.cssText = r, ("" + i.backgroundImage).indexOf("gradient") > -1
    }), Modernizr.addTest("multiplebgs", function() {
        var e = createElement("a").style;
        return e.cssText = "background:url(https://),url(https://),red url(https://)", /(url\s*\(.*?){3}/.test(e.background)
    }), Modernizr.addTest("opacity", function() {
        var e = createElement("a").style;
        return e.cssText = prefixes.join("opacity:.55;"), /^0.55$/.test(e.opacity)
    }), Modernizr.addTest("csspointerevents", function() {
        var e = createElement("a").style;
        return e.cssText = "pointer-events:auto", "auto" === e.pointerEvents
    }), Modernizr.addTest("csspositionsticky", function() {
        var e = "position:",
            t = "sticky",
            n = createElement("a"),
            r = n.style;
        return r.cssText = e + prefixes.join(t + ";" + e).slice(0, -e.length), -1 !== r.position.indexOf(t)
    }), Modernizr.addTest("cssremunit", function() {
        var e = createElement("a").style;
        try {
            e.fontSize = "3rem"
        } catch (t) {}
        return /rem/.test(e.fontSize)
    }), Modernizr.addTest("rgba", function() {
        var e = createElement("a").style;
        return e.cssText = "background-color:rgba(150,255,150,.5)", ("" + e.backgroundColor).indexOf("rgba") > -1
    }), Modernizr.addTest("dataset", function() {
        var e = createElement("div");
        return e.setAttribute("data-a-b", "c"), !(!e.dataset || "c" !== e.dataset.aB)
    }), Modernizr.addTest("outputelem", "value" in createElement("output")), Modernizr.addTest("progressbar", createElement("progress").max !== undefined), Modernizr.addTest("meter", createElement("meter").max !== undefined), Modernizr.addTest("time", "valueAsDate" in createElement("time")), Modernizr.addTest("texttrackapi", "function" == typeof createElement("video").addTextTrack), Modernizr.addTest("track", "kind" in createElement("track")), Modernizr.addTest("ruby", function() {
        function e(e, t) {
            var n;
            return window.getComputedStyle ? n = document.defaultView.getComputedStyle(e, null).getPropertyValue(t) : e.currentStyle && (n = e.currentStyle[t]), n
        }

        function t() {
            docElement.removeChild(n), n = null, r = null, o = null
        }
        var n = createElement("ruby"),
            r = createElement("rt"),
            o = createElement("rp"),
            i = "display",
            a = "fontSize";
        return n.appendChild(o), n.appendChild(r), docElement.appendChild(n), "none" == e(o, i) || "ruby" == e(n, i) && "ruby-text" == e(r, i) || "6pt" == e(o, a) && "6pt" == e(r, a) ? (t(), !0) : (t(), !1)
    });
    var modElem = {
        elem: createElement("modernizr")
    };
    Modernizr._q.push(function() {
        delete modElem.elem
    }), Modernizr.addTest("csschunit", function() {
        var e, t = modElem.elem.style;
        try {
            t.fontSize = "3ch", e = -1 !== t.fontSize.indexOf("ch")
        } catch (n) {
            e = !1
        }
        return e
    }), Modernizr.addTest("cssexunit", function() {
        var e, t = modElem.elem.style;
        try {
            t.fontSize = "3ex", e = -1 !== t.fontSize.indexOf("ex")
        } catch (n) {
            e = !1
        }
        return e
    });
    var inputElem = createElement("input"),
        inputattrs = "autocomplete autofocus list placeholder max min multiple pattern required step".split(" "),
        attrs = {};
    Modernizr.input = function(e) {
        for (var t = 0, n = e.length; n > t; t++) attrs[e[t]] = !!(e[t] in inputElem);
        return attrs.list && (attrs.list = !(!createElement("datalist") || !window.HTMLDataListElement)), attrs
    }(inputattrs), Modernizr.addTest("datalistelem", Modernizr.input.list);
    var inputtypes = "search tel url email datetime date month week time datetime-local number range color".split(" "),
        inputs = {};
    Modernizr.inputtypes = function(e) {
        for (var t, n, r, o = e.length, i = ":)", a = 0; o > a; a++) inputElem.setAttribute("type", t = e[a]), r = "text" !== inputElem.type && "style" in inputElem, r && (inputElem.value = i, inputElem.style.cssText = "position:absolute;visibility:hidden;", /^range$/.test(t) && inputElem.style.WebkitAppearance !== undefined ? (docElement.appendChild(inputElem), n = document.defaultView, r = n.getComputedStyle && "textfield" !== n.getComputedStyle(inputElem, null).WebkitAppearance && 0 !== inputElem.offsetHeight, docElement.removeChild(inputElem)) : /^(search|tel)$/.test(t) || (r = /^(url|email|number)$/.test(t) ? inputElem.checkValidity && inputElem.checkValidity() === !1 : inputElem.value != i)), inputs[e[a]] = !!r;
        return inputs
    }(inputtypes), Modernizr.addAsyncTest(function() {
        var e, t, n = function(e) {
                e.fake && e.parentNode && e.parentNode.removeChild(e)
            },
            r = function(e, t) {
                var n = !!e;
                if (n && (n = new Boolean(n), n.blocked = "blocked" === e), addTest("flash", function() {
                        return n
                    }), t && s.contains(t)) {
                    for (; t.parentNode !== s;) t = t.parentNode;
                    s.removeChild(t)
                }
            };
        try {
            t = "ActiveXObject" in window && "Pan" in new window.ActiveXObject("ShockwaveFlash.ShockwaveFlash")
        } catch (o) {}
        if (e = !("plugins" in navigator && "Shockwave Flash" in navigator.plugins || t), e || isSVG) r(!1);
        else {
            var i, a, d = createElement("embed"),
                s = getBody();
            if (d.type = "application/x-shockwave-flash", s.appendChild(d), docElement.appendChild(s), !("Pan" in d || t)) return r("blocked", d), void n(s);
            i = function() {
                return docElement.contains(s) ? (docElement.contains(d) ? (a = d.style.cssText, "" !== a ? r("blocked", d) : r(!0, d)) : r("blocked"), void n(s)) : (s = document.body || s, d = createElement("embed"), d.type = "application/x-shockwave-flash", s.appendChild(d), setTimeout(i, 1e3))
            }, setTimeout(i, 10)
        }
    });
    var testStyles = ModernizrProto.testStyles = injectElementWithStyles;
    testStyles("#modernizr { height: 50vh; }", function(e) {
        var t = parseInt(window.innerHeight / 2, 10),
            n = parseInt((window.getComputedStyle ? getComputedStyle(e, null) : e.currentStyle).height, 10);
        Modernizr.addTest("cssvhunit", n == t)
    }), testStyles("#modernizr1{width: 50vmax}#modernizr2{width:50px;height:50px;overflow:scroll}", function(e) {
        var t = e.childNodes[1],
            n = e.childNodes[0],
            r = parseInt((n.offsetWidth - n.clientWidth) / 2, 10),
            o = docElement.clientWidth / 100,
            i = docElement.clientHeight / 100,
            a = parseInt(50 * Math.max(o, i), 10),
            d = parseInt((window.getComputedStyle ? getComputedStyle(t, null) : t.currentStyle).width, 10);
        Modernizr.addTest("cssvmaxunit", roundedEquals(a, d) || roundedEquals(a, d - r))
    }, 2), testStyles("#modernizr { width: 50vw; }", function(e) {
        var t = parseInt(window.innerWidth / 2, 10),
            n = parseInt((window.getComputedStyle ? getComputedStyle(e, null) : e.currentStyle).width, 10);
        Modernizr.addTest("cssvwunit", n == t)
    }), testStyles("#modernizr1{width: 50vm;width:50vmin}#modernizr2{width:50px;height:50px;overflow:scroll}", function(e) {
        var t = e.childNodes[1],
            n = e.childNodes[0],
            r = parseInt((n.offsetWidth - n.clientWidth) / 2, 10),
            o = docElement.clientWidth / 100,
            i = docElement.clientHeight / 100,
            a = parseInt(50 * Math.min(o, i), 10),
            d = parseInt((window.getComputedStyle ? getComputedStyle(t, null) : t.currentStyle).width, 10);
        Modernizr.addTest("cssvminunit", roundedEquals(a, d) || roundedEquals(a, d - r))
    }, 2), Modernizr.addTest("hiddenscroll", function() {
        return testStyles("#modernizr {width:100px;height:100px;overflow:scroll}", function(e) {
            return e.offsetWidth === e.clientWidth
        })
    }), Modernizr.addTest("mathml", function() {
        var e;
        return testStyles("#modernizr{position:absolute;display:inline-block}", function(t) {
            t.innerHTML += "<math><mfrac><mi>xx</mi><mi>yy</mi></mfrac></math>", e = t.offsetHeight > t.offsetWidth
        }), e
    }), Modernizr.addTest("touchevents", function() {
        var e;
        if ("ontouchstart" in window || window.DocumentTouch && document instanceof DocumentTouch) e = !0;
        else {
            var t = ["@media (", prefixes.join("touch-enabled),("), "heartz", ")", "{#modernizr{top:9px;position:absolute}}"].join("");
            testStyles(t, function(t) {
                e = 9 === t.offsetTop
            })
        }
        return e
    }), Modernizr.addTest("unicoderange", function() {
        return Modernizr.testStyles('@font-face{font-family:"unicodeRange";src:local("Arial");unicode-range:U+0020,U+002E}#modernizr span{font-size:20px;display:inline-block;font-family:"unicodeRange",monospace}#modernizr .mono{font-family:monospace}', function(e) {
            for (var t = [".", ".", "m", "m"], n = 0; n < t.length; n++) {
                var r = createElement("span");
                r.innerHTML = t[n], r.className = n % 2 ? "mono" : "", e.appendChild(r), t[n] = r.clientWidth
            }
            return t[0] !== t[1] && t[2] === t[3]
        })
    }), Modernizr.addTest("unicode", function() {
        var e, t = createElement("span"),
            n = createElement("span");
        return testStyles("#modernizr{font-family:Arial,sans;font-size:300em;}", function(r) {
            t.innerHTML = isSVG ? "妇" : "&#5987", n.innerHTML = isSVG ? "☆" : "&#9734", r.appendChild(t), r.appendChild(n), e = "offsetWidth" in t && t.offsetWidth !== n.offsetWidth
        }), e
    }), testStyles("#modernizr div {width:1px} #modernizr div:nth-child(2n) {width:2px;}", function(e) {
        Modernizr.addTest("nthchild", function() {
            for (var t = e.getElementsByTagName("div"), n = !0, r = 0; 5 > r; r++) n = n && t[r].offsetWidth === r % 2 + 1;
            return n
        })
    }, 5), testStyles("#modernizr{overflow: scroll; width: 40px; height: 40px; }#" + prefixes.join("scrollbar{width:0px} #modernizr::").split("#").slice(1).join("#") + "scrollbar{width:0px}", function(e) {
        Modernizr.addTest("cssscrollbar", 40 == e.scrollWidth)
    }), Modernizr.addTest("siblinggeneral", function() {
        return testStyles("#modernizr div {width:100px} #modernizr div ~ div {width:200px;display:block}", function(e) {
            return 200 == e.lastChild.offsetWidth
        }, 2)
    }), Modernizr.addTest("oninput", function() {
        var e, t = createElement("input");
        if (t.setAttribute("oninput", "return"), hasEvent("oninput", docElement) || "function" == typeof t.oninput) return !0;
        try {
            var n = document.createEvent("KeyboardEvent");
            e = !1;
            var r = function(t) {
                e = !0, t.preventDefault(), t.stopPropagation()
            };
            n.initKeyEvent("keypress", !0, !0, window, !1, !1, !1, !1, 0, "e".charCodeAt(0)), docElement.appendChild(t), t.addEventListener("input", r, !1), t.focus(), t.dispatchEvent(n), t.removeEventListener("input", r, !1), docElement.removeChild(t)
        } catch (o) {
            e = !1
        }
        return e
    }), Modernizr.addTest("formvalidation", function() {
        var e = createElement("form");
        if (!("checkValidity" in e && "addEventListener" in e)) return !1;
        if ("reportValidity" in e) return !0;
        var t, n = !1;
        return Modernizr.formvalidationapi = !0, e.addEventListener("submit", function(e) {
            window.opera || e.preventDefault(), e.stopPropagation()
        }, !1), e.innerHTML = '<input name="modTest" required><button></button>', testStyles("#modernizr form{position:absolute;top:-99999em}", function(r) {
            r.appendChild(e), t = e.getElementsByTagName("input")[0], t.addEventListener("invalid", function(e) {
                n = !0, e.preventDefault(), e.stopPropagation()
            }, !1), Modernizr.formvalidationmessage = !!t.validationMessage, e.getElementsByTagName("button")[0].click()
        }), n
    }), Modernizr.addTest("localizednumber", function() {
        if (!Modernizr.inputtypes.number) return !1;
        if (!Modernizr.formvalidation) return !1;
        var e, t = createElement("div"),
            n = getBody(),
            r = function() {
                return docElement.insertBefore(n, docElement.firstElementChild || docElement.firstChild)
            }();
        t.innerHTML = '<input type="number" value="1.0" step="0.1"/>';
        var o = t.childNodes[0];
        r.appendChild(t), o.focus();
        try {
            document.execCommand("InsertText", !1, "1,1")
        } catch (i) {}
        return e = "number" === o.type && 1.1 === o.valueAsNumber && o.checkValidity(), r.removeChild(t), n.fake && r.parentNode.removeChild(r), e
    }), Modernizr.addTest("checked", function() {
        return testStyles("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}", function(e) {
            var t = createElement("input");
            return t.setAttribute("type", "checkbox"), t.setAttribute("checked", "checked"), e.appendChild(t), 20 === t.offsetLeft
        })
    }), testStyles("#modernizr{display: table; direction: ltr}#modernizr div{display: table-cell; padding: 10px}", function(e) {
        var t, n = e.childNodes;
        t = n[0].offsetLeft < n[1].offsetLeft, Modernizr.addTest("displaytable", t, {
            aliases: ["display-table"]
        })
    }, 2);
    var blacklist = function() {
        var e = navigator.userAgent,
            t = e.match(/applewebkit\/([0-9]+)/gi) && parseFloat(RegExp.$1),
            n = e.match(/w(eb)?osbrowser/gi),
            r = e.match(/windows phone/gi) && e.match(/iemobile\/([0-9])+/gi) && parseFloat(RegExp.$1) >= 9,
            o = 533 > t && e.match(/android/gi);
        return n || o || r
    }();
    blacklist ? Modernizr.addTest("fontface", !1) : testStyles('@font-face {font-family:"font";src:url("https://")}', function(e, t) {
        var n = document.getElementById("smodernizr"),
            r = n.sheet || n.styleSheet,
            o = r ? r.cssRules && r.cssRules[0] ? r.cssRules[0].cssText : r.cssText || "" : "",
            i = /src/i.test(o) && 0 === o.indexOf(t.split(" ")[0]);
        Modernizr.addTest("fontface", i)
    }), testStyles('#modernizr{font:0/0 a}#modernizr:after{content:":)";visibility:hidden;font:7px/1 a}', function(e) {
        Modernizr.addTest("generatedcontent", e.offsetHeight >= 7)
    }), Modernizr.addTest("cssinvalid", function() {
        return testStyles("#modernizr input{height:0;border:0;padding:0;margin:0;width:10px} #modernizr input:invalid{width:50px}", function(e) {
            var t = createElement("input");
            return t.required = !0, e.appendChild(t), t.clientWidth > 10
        })
    }), testStyles("#modernizr div {width:100px} #modernizr :last-child{width:200px;display:block}", function(e) {
        Modernizr.addTest("lastchild", e.lastChild.offsetWidth > e.firstChild.offsetWidth)
    }, 2), testStyles("#modernizr{position: absolute; top: -10em; visibility:hidden; font: normal 10px arial;}#subpixel{float: left; font-size: 33.3333%;}", function(e) {
        var t = e.firstChild;
        t.innerHTML = "This is a text written in Arial", Modernizr.addTest("subpixelfont", window.getComputedStyle ? "44px" !== window.getComputedStyle(t, null).getPropertyValue("width") : !1)
    }, 1, ["subpixel"]), Modernizr.addTest("cssvalid", function() {
        return testStyles("#modernizr input{height:0;border:0;padding:0;margin:0;width:10px} #modernizr input:valid{width:50px}", function(e) {
            var t = createElement("input");
            return e.appendChild(t), t.clientWidth > 10
        })
    }), Modernizr.addTest("details", function() {
        var e, t = createElement("details");
        return "open" in t ? (testStyles("#modernizr details{display:block}", function(n) {
            n.appendChild(t), t.innerHTML = "<summary>a</summary>b", e = t.offsetHeight, t.open = !0, e = e != t.offsetHeight
        }), e) : !1
    });
    var mq = function() {
        var e = window.matchMedia || window.msMatchMedia;
        return e ? function(t) {
            var n = e(t);
            return n && n.matches || !1
        } : function(e) {
            var t = !1;
            return injectElementWithStyles("@media " + e + " { #modernizr { position: absolute; } }", function(e) {
                t = "absolute" == (window.getComputedStyle ? window.getComputedStyle(e, null) : e.currentStyle).position
            }), t
        }
    }();
    ModernizrProto.mq = mq, Modernizr.addTest("mediaqueries", mq("only all"));
    var toStringFn = {}.toString;
    Modernizr.addTest("svgclippaths", function() {
        return !!document.createElementNS && /SVGClipPath/.test(toStringFn.call(document.createElementNS("http://www.w3.org/2000/svg", "clipPath")))
    }), Modernizr.addTest("svgforeignobject", function() {
        return !!document.createElementNS && /SVGForeignObject/.test(toStringFn.call(document.createElementNS("http://www.w3.org/2000/svg", "foreignObject")))
    }), Modernizr.addTest("smil", function() {
        return !!document.createElementNS && /SVGAnimate/.test(toStringFn.call(document.createElementNS("http://www.w3.org/2000/svg", "animate")))
    });
    var testXhrType = function(e) {
        if ("undefined" == typeof XMLHttpRequest) return !1;
        var t = new XMLHttpRequest;
        t.open("get", "/", !0);
        try {
            t.responseType = e
        } catch (n) {
            return !1
        }
        return "response" in t && t.responseType == e
    };
    Modernizr.addTest("xhrresponsetypearraybuffer", testXhrType("arraybuffer")), Modernizr.addTest("xhrresponsetypedocument", testXhrType("document")), Modernizr.addTest("xhrresponsetypejson", testXhrType("json")), Modernizr.addTest("xhrresponsetypetext", testXhrType("text")), Modernizr.addTest("xhrresponsetypeblob", testXhrType("blob"));
    var mStyle = {
        style: modElem.elem.style
    };
    Modernizr._q.unshift(function() {
        delete mStyle.style
    });
    var testProp = ModernizrProto.testProp = function(e, t, n) {
        return testProps([e], undefined, t, n)
    };
    Modernizr.addTest("textshadow", testProp("textShadow", "1px 1px")), ModernizrProto.testAllProps = testPropsAll, ModernizrProto.testAllProps = testAllProps, Modernizr.addTest("borderradius", testAllProps("borderRadius", "0px", !0)), Modernizr.addTest("boxshadow", testAllProps("boxShadow", "1px 1px", !0)), Modernizr.addTest("csstransitions", testAllProps("transition", "all", !0)), Modernizr.addTest("csspseudotransitions", function() {
            var e = !1;
            if (!Modernizr.csstransitions || !window.getComputedStyle) return e;
            var t = '#modernizr:before { content:" "; font-size:5px;' + Modernizr._prefixes.join("transition:0s 100s;") + "}#modernizr.trigger:before { font-size:10px; }";
            return Modernizr.testStyles(t, function(t) {
                window.getComputedStyle(t, ":before").getPropertyValue("font-size"), t.className += "trigger", e = "5px" === window.getComputedStyle(t, ":before").getPropertyValue("font-size")
            }), e
        }), Modernizr.addTest("boxsizing", testAllProps("boxSizing", "border-box", !0) && (document.documentMode === undefined || document.documentMode > 7)), Modernizr.addTest("flexboxtweener", testAllProps("flexAlign", "end", !0)), Modernizr.addTest("flexboxlegacy", testAllProps("boxDirection", "reverse", !0)), Modernizr.addTest("overflowscrolling", testAllProps("overflowScrolling", "touch", !0)), Modernizr.addTest("cssresize", testAllProps("resize", "both", !0)), Modernizr.addTest("shapes", testAllProps("shapeOutside", "content-box", !0)), Modernizr.addTest("flexwrap", testAllProps("flexWrap", "wrap", !0)), Modernizr.addTest("cssanimations", testAllProps("animationName", "a", !0)), Modernizr.addTest("csspseudoanimations", function() {
            var e = !1;
            if (!Modernizr.cssanimations || !window.getComputedStyle) return e;
            var t = ["@", Modernizr._prefixes.join("keyframes csspseudoanimations { from { font-size: 10px; } }@").replace(/\@$/, ""), '#modernizr:before { content:" "; font-size:5px;', Modernizr._prefixes.join("animation:csspseudoanimations 1ms infinite;"), "}"].join("");
            return Modernizr.testStyles(t, function(t) {
                e = "10px" === window.getComputedStyle(t, ":before").getPropertyValue("font-size")
            }), e
        }), Modernizr.addTest("appearance", testAllProps("appearance")), Modernizr.addTest("bgpositionxy", function() {
            return testAllProps("backgroundPositionX", "3px", !0) && testAllProps("backgroundPositionY", "5px", !0)
        }), Modernizr.addTest("backgroundcliptext", function() {
            return testAllProps("backgroundClip", "text")
        }), Modernizr.addTest("bgrepeatround", testAllProps("backgroundRepeat", "round")), Modernizr.addTest("bgrepeatspace", testAllProps("backgroundRepeat", "space")), Modernizr.addTest("backgroundsize", testAllProps("backgroundSize", "100%", !0)), Modernizr.addTest("bgsizecover", testAllProps("backgroundSize", "cover")), Modernizr.addTest("borderimage", testAllProps("borderImage", "url() 1", !0)),
        function() {
            Modernizr.addTest("csscolumns", function() {
                var e = !1,
                    t = testAllProps("columnCount");
                try {
                    (e = !!t) && (e = new Boolean(e))
                } catch (n) {}
                return e
            });
            for (var e, t, n = ["Width", "Span", "Fill", "Gap", "Rule", "RuleColor", "RuleStyle", "RuleWidth", "BreakBefore", "BreakAfter", "BreakInside"], r = 0; r < n.length; r++) e = n[r].toLowerCase(), t = testAllProps("column" + n[r]), ("breakbefore" === e || "breakafter" === e || "breakinside" == e) && (t = t || testAllProps(n[r])), Modernizr.addTest("csscolumns." + e, t)
        }(), Modernizr.addTest("displayrunin", testAllProps("display", "run-in"), {
            aliases: ["display-runin"]
        }), Modernizr.addTest("ellipsis", testAllProps("textOverflow", "ellipsis")), Modernizr.addTest("cssfilters", function() {
            if (Modernizr.supports) return testAllProps("filter", "blur(2px)");
            var e = createElement("a");
            return e.style.cssText = prefixes.join("filter:blur(2px); "), !!e.style.length && (document.documentMode === undefined || document.documentMode > 9)
        }), Modernizr.addTest("flexbox", testAllProps("flexBasis", "1px", !0)), Modernizr.addAsyncTest(function() {
            function e() {
                function n() {
                    try {
                        var e = createElement("div"),
                            t = createElement("span"),
                            n = e.style,
                            r = 0,
                            o = 0,
                            i = !1,
                            a = document.body.firstElementChild || document.body.firstChild;
                        return e.appendChild(t), t.innerHTML = "Bacon ipsum dolor sit amet jerky velit in culpa hamburger et. Laborum dolor proident, enim dolore duis commodo et strip steak. Salami anim et, veniam consectetur dolore qui tenderloin jowl velit sirloin. Et ad culpa, fatback cillum jowl ball tip ham hock nulla short ribs pariatur aute. Pig pancetta ham bresaola, ut boudin nostrud commodo flank esse cow tongue culpa. Pork belly bresaola enim pig, ea consectetur nisi. Fugiat officia turkey, ea cow jowl pariatur ullamco proident do laborum velit sausage. Magna biltong sint tri-tip commodo sed bacon, esse proident aliquip. Ullamco ham sint fugiat, velit in enim sed mollit nulla cow ut adipisicing nostrud consectetur. Proident dolore beef ribs, laborum nostrud meatball ea laboris rump cupidatat labore culpa. Shankle minim beef, velit sint cupidatat fugiat tenderloin pig et ball tip. Ut cow fatback salami, bacon ball tip et in shank strip steak bresaola. In ut pork belly sed mollit tri-tip magna culpa veniam, short ribs qui in andouille ham consequat. Dolore bacon t-bone, velit short ribs enim strip steak nulla. Voluptate labore ut, biltong swine irure jerky. Cupidatat excepteur aliquip salami dolore. Ball tip strip steak in pork dolor. Ad in esse biltong. Dolore tenderloin exercitation ad pork loin t-bone, dolore in chicken ball tip qui pig. Ut culpa tongue, sint ribeye dolore ex shank voluptate hamburger. Jowl et tempor, boudin pork chop labore ham hock drumstick consectetur tri-tip elit swine meatball chicken ground round. Proident shankle mollit dolore. Shoulder ut duis t-bone quis reprehenderit. Meatloaf dolore minim strip steak, laboris ea aute bacon beef ribs elit shank in veniam drumstick qui. Ex laboris meatball cow tongue pork belly. Ea ball tip reprehenderit pig, sed fatback boudin dolore flank aliquip laboris eu quis. Beef ribs duis beef, cow corned beef adipisicing commodo nisi deserunt exercitation. Cillum dolor t-bone spare ribs, ham hock est sirloin. Brisket irure meatloaf in, boudin pork belly sirloin ball tip. Sirloin sint irure nisi nostrud aliqua. Nostrud nulla aute, enim officia culpa ham hock. Aliqua reprehenderit dolore sunt nostrud sausage, ea boudin pork loin ut t-bone ham tempor. Tri-tip et pancetta drumstick laborum. Ham hock magna do nostrud in proident. Ex ground round fatback, venison non ribeye in.", document.body.insertBefore(e, a), n.cssText = "position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;", r = t.offsetHeight, o = t.offsetWidth, n.cssText = "position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;" + prefixes.join("hyphens:auto; "), i = t.offsetHeight != r || t.offsetWidth != o, document.body.removeChild(e), e.removeChild(t), i
                    } catch (d) {
                        return !1
                    }
                }

                function r(e, t) {
                    try {
                        var n = createElement("div"),
                            r = createElement("span"),
                            o = n.style,
                            i = 0,
                            a = !1,
                            d = !1,
                            s = !1,
                            A = document.body.firstElementChild || document.body.firstChild;
                        return o.cssText = "position:absolute;top:0;left:0;overflow:visible;width:1.25em;", n.appendChild(r), document.body.insertBefore(n, A), r.innerHTML = "mm", i = r.offsetHeight, r.innerHTML = "m" + e + "m", d = r.offsetHeight > i, t ? (r.innerHTML = "m<br />m", i = r.offsetWidth, r.innerHTML = "m" + e + "m", s = r.offsetWidth > i) : s = !0, d === !0 && s === !0 && (a = !0), document.body.removeChild(n), n.removeChild(r), a
                    } catch (l) {
                        return !1
                    }
                }

                function o(e) {
                    try {
                        var t, n = createElement("input"),
                            r = createElement("div"),
                            o = "lebowski",
                            i = !1,
                            a = document.body.firstElementChild || document.body.firstChild;
                        if (r.innerHTML = o + e + o, document.body.insertBefore(r, a), document.body.insertBefore(n, r), n.setSelectionRange ? (n.focus(), n.setSelectionRange(0, 0)) : n.createTextRange && (t = n.createTextRange(), t.collapse(!0), t.moveEnd("character", 0), t.moveStart("character", 0), t.select()), window.find) i = window.find(o + o);
                        else try {
                            t = window.self.document.body.createTextRange(), i = t.findText(o + o)
                        } catch (d) {
                            i = !1
                        }
                        return document.body.removeChild(r), document.body.removeChild(n), i
                    } catch (d) {
                        return !1
                    }
                }
                return document.body || document.getElementsByTagName("body")[0] ? (addTest("csshyphens", function() {
                    if (!testAllProps("hyphens", "auto", !0)) return !1;
                    try {
                        return n()
                    } catch (e) {
                        return !1
                    }
                }), addTest("softhyphens", function() {
                    try {
                        return r("&#173;", !0) && r("&#8203;", !1)
                    } catch (e) {
                        return !1
                    }
                }), void addTest("softhyphensfind", function() {
                    try {
                        return o("&#173;") && o("&#8203;")
                    } catch (e) {
                        return !1
                    }
                })) : void setTimeout(e, t)
            }
            var t = 300;
            setTimeout(e, t)
        }), Modernizr.addTest("cssmask", testAllProps("maskRepeat", "repeat-x", !0)), Modernizr.addTest("cssreflections", testAllProps("boxReflect", "above", !0)), Modernizr.addTest("textalignlast", testAllProps("textAlignLast")), Modernizr.addTest("csstransforms", function() {
            return -1 === navigator.userAgent.indexOf("Android 2.") && testAllProps("transform", "scale(1)", !0)
        }), Modernizr.addTest("csstransforms3d", function() {
            var e = !!testAllProps("perspective", "1px", !0),
                t = Modernizr._config.usePrefixes;
            if (e && (!t || "webkitPerspective" in docElement.style)) {
                var n;
                Modernizr.supports ? n = "@supports (perspective: 1px)" : (n = "@media (transform-3d)", t && (n += ",(-webkit-transform-3d)")), n += "{#modernizr{left:9px;position:absolute;height:5px;margin:0;padding:0;border:0}}", testStyles(n, function(t) {
                    e = 9 === t.offsetLeft && 5 === t.offsetHeight
                })
            }
            return e
        }), Modernizr.addTest("preserve3d", testAllProps("transformStyle", "preserve-3d")), Modernizr.addTest("userselect", testAllProps("userSelect", "none", !0));
    var prefixed = ModernizrProto.prefixed = function(e, t, n) {
        return 0 === e.indexOf("@") ? atRule(e) : (-1 != e.indexOf("-") && (e = cssToDOM(e)), t ? testPropsAll(e, t, n) : testPropsAll(e, "pfx"))
    };
    Modernizr.addTest("batteryapi", !!prefixed("battery", navigator), {
        aliases: ["battery-api"]
    }), Modernizr.addTest("dart", !!prefixed("startDart", navigator));
    var prefixedCSS = ModernizrProto.prefixedCSS = function(e) {
        var t = prefixed(e);
        return t && domToCSS(t)
    };
    Modernizr.addTest("fullscreen", !(!prefixed("exitFullscreen", document, !1) && !prefixed("cancelFullScreen", document, !1))), Modernizr.addTest("gamepads", !!prefixed("getGamepads", navigator));
    var indexeddb = prefixed("indexedDB", window);
    Modernizr.addTest("indexeddb", !!indexeddb), indexeddb && Modernizr.addTest("indexeddb.deletedatabase", "deleteDatabase" in indexeddb), Modernizr.addAsyncTest(function() {
        var e, t, n = prefixed("indexedDB", window),
            r = "detect-blob-support",
            o = !1;
        if (!Modernizr.indexeddb || !Modernizr.indexeddb.deleteDatabase) return !1;
        try {
            n.deleteDatabase(r).onsuccess = function() {
                e = n.open(r, 1), e.onupgradeneeded = function() {
                    e.result.createObjectStore("store")
                }, e.onsuccess = function() {
                    t = e.result;
                    try {
                        t.transaction("store", "readwrite").objectStore("store").put(new Blob, "key"), o = !0
                    } catch (i) {
                        o = !1
                    } finally {
                        addTest("indexeddbblob", o), t.close(), n.deleteDatabase(r)
                    }
                }
            }
        } catch (i) {
            addTest("indexeddbblob", !1)
        }
    }), Modernizr.addTest("intl", !!prefixed("Intl", window)), Modernizr.addTest("pagevisibility", !!prefixed("hidden", document, !1)), Modernizr.addTest("performance", !!prefixed("performance", window)), Modernizr.addTest("pointerlock", !!prefixed("exitPointerLock", document)), Modernizr.addTest("quotamanagement", function() {
        var e = prefixed("temporaryStorage", navigator),
            t = prefixed("persistentStorage", navigator);
        return !(!e || !t)
    }), Modernizr.addTest("requestanimationframe", !!prefixed("requestAnimationFrame", window), {
        aliases: ["raf"]
    }), Modernizr.addTest("vibrate", !!prefixed("vibrate", navigator)), Modernizr.addTest("webintents", !!prefixed("startActivity", navigator)), Modernizr.addTest("lowbattery", function() {
        var e = .2,
            t = prefixed("battery", navigator);
        return !!(t && !t.charging && t.level <= e)
    });
    var crypto = prefixed("crypto", window),
        supportsGetRandomValues;
    if (crypto && "getRandomValues" in crypto && "Uint32Array" in window) {
        var array = new Uint32Array(10),
            values = crypto.getRandomValues(array);
        supportsGetRandomValues = values && is(values[0], "number")
    }
    Modernizr.addTest("getrandomvalues", !!supportsGetRandomValues), Modernizr.addTest("objectfit", !!prefixed("objectFit"), {
        aliases: ["object-fit"]
    }), Modernizr.addTest("backgroundblendmode", prefixed("backgroundBlendMode", "text")), Modernizr.addTest("filesystem", !!prefixed("requestFileSystem", window)), Modernizr.addTest("requestautocomplete", !!prefixed("requestAutocomplete", createElement("form"))), Modernizr.addTest("speechrecognition", !!prefixed("SpeechRecognition", window));
    var url = prefixed("URL", window, !1);
    url = url && window[url], Modernizr.addTest("bloburls", url && "revokeObjectURL" in url && "createObjectURL" in url), Modernizr.addAsyncTest(function() {
        function e() {
            addTest("transferables", !1), t()
        }

        function t() {
            d && URL.revokeObjectURL(d), s && s.terminate(), o && clearTimeout(o)
        }
        var n = !!(Modernizr.blobconstructor && Modernizr.bloburls && Modernizr.webworkers && Modernizr.typedarrays);
        if (!n) return addTest("transferables", !1);
        try {
            var r, o, i = 'var hello = "world"',
                a = new Blob([i], {
                    type: "text/javascript"
                }),
                d = URL.createObjectURL(a),
                s = new Worker(d);
            s.onerror = e, o = setTimeout(e, 200), r = new ArrayBuffer(1), s.postMessage(r, [r]), addTest("transferables", 0 === r.byteLength), t()
        } catch (A) {
            e()
        }
    }), Modernizr.addTest("getusermedia", !!prefixed("getUserMedia", navigator)), Modernizr.addTest("peerconnection", !!prefixed("RTCPeerConnection", window)), Modernizr.addTest("datachannel", function() {
        if (!Modernizr.peerconnection) return !1;
        for (var e = 0, t = domPrefixes.length; t > e; e++) {
            var n = window[domPrefixes[e] + "RTCPeerConnection"];
            if (n) {
                var r = new n({
                    iceServers: [{
                        url: "stun:0"
                    }]
                });
                return "createDataChannel" in r
            }
        }
        return !1
    }), Modernizr.addTest("matchmedia", !!prefixed("matchMedia", window)), Modernizr.addTest("wrapflow", function() {
        var e = prefixed("wrapFlow");
        if (!e || isSVG) return !1;
        var t = e.replace(/([A-Z])/g, function(e, t) {
                return "-" + t.toLowerCase()
            }).replace(/^ms-/, "-ms-"),
            n = createElement("div"),
            r = createElement("div"),
            o = createElement("span");
        r.style.cssText = "position: absolute; left: 50px; width: 100px; height: 20px;" + t + ":end;", o.innerText = "X", n.appendChild(r), n.appendChild(o), docElement.appendChild(n);
        var i = o.offsetLeft;
        return docElement.removeChild(n), r = o = n = undefined, 150 == i
    }), testRunner(), setClasses(classes), delete ModernizrProto.addTest, delete ModernizrProto.addAsyncTest;
    for (var i = 0; i < Modernizr._q.length; i++) Modernizr._q[i]();
    window.Modernizr = Modernizr
}(window, document);
