PageSourceSearch

https://www.rucabel.ru/static/js/modernizr.js?166790380852211

js rucabel.ru collected 2026-10-05 03:39:49 UTC 52,211 bytes, 1,118 lines download raw bytes

1/*!
2 * modernizr v3.11.2
3 * Build https://modernizr.com/download?-arrow-backgroundblendmode-backgroundcliptext-backgroundsize-bgpositionshorthand-bgpositionxy-bgrepeatspace_bgrepeatround-bgsizecover-borderimage-canvas-checked-contains-cssfilters-cssgradients-cssmask-csspositionsticky-dataset-ellipsis-es5-es5array-es5date-es5function-es5object-es5string-es5syntax-es5undefined-es6array-es6collections-es6math-es6number-es6object-es6string-fetch-filereader-filesystem-flexbox-formvalidation-generators-geolocation-hidden-hiddenscroll-history-htmlimports-ie8compat-inlinesvg-input-inputtypes-json-localstorage-lowbattery-mediaqueries-notification-opacity-picture-postmessage-progressbar_meter-promises-queryselector-scriptasync-scriptdefer-serviceworker-sessionstorage-shapes-smil-strictmode-svg-svgasimg-svgclippaths-svgfilters-svgforeignobject-webp-websqldatabase-webworkers-atrule-hasevent-prefixed-prefixedcss-prefixedcssvalue-printshiv-setclasses-testprop-teststyles-dontmin-cssclassprefix:mdz_
4 *
5 * Copyright (c)
6 *  Faruk Ates
7 *  Paul Irish
8 *  Alex Sexton
9 *  Ryan Seddon
10 *  Patrick Kettner
11 *  Stu Cox
12 *  Richard Herrera
13 *  Veeck
14
15 * MIT License
16 */
17!function(scriptGlobalObject,window,document,undefined){var tests=[],ModernizrProto={_version:"3.11.2",_config:{classPrefix:"mdz_",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var r=this;setTimeout((function(){t(r[e])}),0)},addTest:function(e,t,r){tests.push({name:e,fn:t,options:r})},addAsyncTest:function(e){tests.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=ModernizrProto,Modernizr=new Modernizr;var classes=[];function is(e,t){return typeof e===t}function testRunner(){var e,t,r,n,o,i;for(var s in tests)if(tests.hasOwnProperty(s)){if(e=[],(t=tests[s]).name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(r=0;r<t.options.aliases.length;r++)e.push(t.options.aliases[r].toLowerCase());for(n=is(t.fn,"function")?t.fn():t.fn,o=0;o<e.length;o++)1===(i=e[o].split(".")).length?Modernizr[i[0]]=n:(Modernizr[i[0]]&&(!Modernizr[i[0]]||Modernizr[i[0]]instanceof Boolean)||(Modernizr[i[0]]=new Boolean(Modernizr[i[0]])),Modernizr[i[0]][i[1]]=n),classes.push((n?"":"no-")+i.join("-"))}}var docElement=document.documentElement,isSVG="svg"===docElement.nodeName.toLowerCase();function setClasses(e){var t=docElement.className,r=Modernizr._config.classPrefix||"";if(isSVG&&(t=t.baseVal),Modernizr._config.enableJSClass){var n=new RegExp("(^|\\s)"+r+"no-js(\\s|$)");t=t.replace(n,"$1"+r+"js$2")}Modernizr._config.enableClasses&&(e.length>0&&(t+=" "+r+e.join(" "+r)),isSVG?docElement.className.baseVal=t:docElement.className=t)}var omPrefixes="Moz O ms Webkit",cssomPrefixes=ModernizrProto._config.usePrefixes?omPrefixes.split(" "):[];ModernizrProto._cssomPrefixes=cssomPrefixes;var atRule=function(e){var t,r=prefixes.length,n=window.CSSRule;if(void 0===n)return undefined;if(!e)return!1;if((t=(e=e.replace(/^@/,"")).replace(/-/g,"_").toUpperCase()+"_RULE")in n)return"@"+e;for(var o=0;o<r;o++){var i=prefixes[o];if(i.toUpperCase()+"_"+t in n)return"@-"+i.toLowerCase()+"-"+e}return!1};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)}ModernizrProto.atRule=atRule;var hasEvent=(needsFallback=!("onblur"in docElement),function(e,t){var r;return!!e&&(t&&"string"!=typeof t||(t=createElement(t||"div")),!(r=(e="on"+e)in t)&&needsFallback&&(t.setAttribute||(t=createElement("div")),t.setAttribute(e,""),r="function"==typeof t[e],t[e]!==undefined&&(t[e]=undefined),t.removeAttribute(e)),r)}),needsFallback;function contains(e,t){return!!~(""+e).indexOf(t)}ModernizrProto.hasEvent=hasEvent;var modElem={elem:createElement("modernizr")};Modernizr._q.push((function(){delete modElem.elem}));var mStyle={style:modElem.elem.style};function getBody(){var e=document.body;return e||((e=createElement(isSVG?"svg":"body")).fake=!0),e}function injectElementWithStyles(e,t,r,n){var o,i,s,a,d="modernizr",l=createElement("div"),c=getBody();if(parseInt(r,10))for(;r--;)(s=createElement("div")).id=n?n[r]:d+(r+1),l.appendChild(s);return(o=createElement("style")).type="text/css",o.id="s"+d,(c.fake?c:l).appendChild(o),c.appendChild(l),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e)),l.id=d,c.fake&&(c.style.background="",c.style.overflow="hidden",a=docElement.style.overflow,docElement.style.overflow="hidden",docElement.appendChild(c)),i=t(l,e),c.fake?(c.parentNode.removeChild(c),docElement.style.overflow=a,docElement.offsetHeight):l.parentNode.removeChild(l),!!i}function domToCSS(e){return e.replace(/([A-Z])/g,(function(e,t){return"-"+t.toLowerCase()})).replace(/^ms-/,"-ms-")}function computedStyle(e,t,r){var n;if("getComputedStyle"in window){n=getComputedStyle.call(window,e,t);var o=window.console;if(null!==n)r&&(n=n.getPropertyValue(r));else if(o)o[o.error?"error":"log"].call(o,"getComputedStyle returning null, its possible modernizr test results are inaccurate")}else n=!t&&e.currentStyle&&e.currentStyle[r];return n}function nativeTestProps(e,t){var r=e.length;if("CSS"in window&&"supports"in window.CSS){for(;r--;)if(window.CSS.supports(domToCSS(e[r]),t))return!0;return!1}if("CSSSupportsRule"in window){for(var n=[];r--;)n.push("("+domToCSS(e[r])+":"+t+")");return injectElementWithStyles("@supports ("+(n=n.join(" or "))+") { #modernizr { position: absolute; } }",(function(e){return"absolute"===computedStyle(e,null,"position")}))}return undefined}function cssToDOM(e){return e.replace(/([a-z])-([a-z])/g,(function(e,t,r){return t+r.toUpperCase()})).replace(/^-/,"")}function testProps(e,t,r,n){if(n=!is(n,"undefined")&&n,!is(r,"undefined")){var o=nativeTestProps(e,r);if(!is(o,"undefined"))return o}for(var i,s,a,d,l,c=["modernizr","tspan","samp"];!mStyle.style&&c.length;)i=!0,mStyle.modElem=createElement(c.shift()),mStyle.style=mStyle.modElem.style;function u(){i&&(delete mStyle.style,delete mStyle.modElem)}for(a=e.length,s=0;s<a;s++)if(d=e[s],l=mStyle.style[d],contains(d,"-")&&(d=cssToDOM(d)),mStyle.style[d]!==undefined){if(n||is(r,"undefined"))return u(),"pfx"!==t||d;try{mStyle.style[d]=r}catch(e){}if(mStyle.style[d]!==l)return u(),"pfx"!==t||d}return u(),!1}Modernizr._q.unshift((function(){delete mStyle.style}));var domPrefixes=ModernizrProto._config.usePrefixes?omPrefixes.toLowerCase().split(" "):[];function fnBind(e,t){return function(){return e.apply(t,arguments)}}function testDOMProps(e,t,r){var n;for(var o in e)if(e[o]in t)return!1===r?e[o]:is(n=t[e[o]],"function")?fnBind(n,r||t):n;return!1}function testPropsAll(e,t,r,n,o){var i=e.charAt(0).toUpperCase()+e.slice(1),s=(e+" "+cssomPrefixes.join(i+" ")+i).split(" ");return is(t,"string")||is(t,"undefined")?testProps(s,t,n,o):testDOMProps(s=(e+" "+domPrefixes.join(i+" ")+i).split(" "),t,r)}ModernizrProto._domPrefixes=domPrefixes,ModernizrProto.testAllProps=testPropsAll;var prefixed=ModernizrProto.prefixed=function(e,t,r){return 0===e.indexOf("@")?atRule(e):(-1!==e.indexOf("-")&&(e=cssToDOM(e)),t?testPropsAll(e,t,r):testPropsAll(e,"pfx"))},prefixedCSS=ModernizrProto.prefixedCSS=function(e){var t=prefixed(e);return t&&domToCSS(t)},prefixedCSSValue=function(e,t){var r=!1,n=createElement("div").style;if(e in n){var o=domPrefixes.length;for(n[e]=t,r=n[e];o--&&!r;)n[e]="-"+domPrefixes[o]+"-"+t,r=n[e]}return""===r&&(r=!1),r};ModernizrProto.prefixedCSSValue=prefixedCSSValue;var testProp=ModernizrProto.testProp=function(e,t,r){return testProps([e],undefined,t,r)},testStyles=ModernizrProto.testStyles=injectElementWithStyles,html5,hasOwnProp,_hasOwnProperty;function addTest(e,t){if("object"==typeof e)for(var r in e)hasOwnProp(e,r)&&addTest(r,e[r]);else{var n=(e=e.toLowerCase()).split("."),o=Modernizr[n[0]];if(2===n.length&&(o=o[n[1]]),void 0!==o)return Modernizr;t="function"==typeof t?t():t,1===n.length?Modernizr[n[0]]=t:(!Modernizr[n[0]]||Modernizr[n[0]]instanceof Boolean||(Modernizr[n[0]]=new Boolean(Modernizr[n[0]])),Modernizr[n[0]][n[1]]=t),setClasses([(t&&!1!==t?"":"no-")+n.join("-")]),Modernizr._trigger(e,t)}return Modernizr}isSVG||function(e,t){var r,n,o=e.html5||{},i=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,s=/^(?: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,a=0,d={};function l(e,t){var r=e.createElement("p"),n=e.getElementsByTagName("head")[0]||e.documentElement;return r.innerHTML="x<style>"+t+"</style>",n.insertBefore(r.lastChild,n.firstChild)}function c(){var e=f.elements;return"string"==typeof e?e.split(" "):e}function u(e){var t=d[e._html5shiv];return t||(t={},a++,e._html5shiv=a,d[a]=t),t}function p(e,r,o){return r||(r=t),n?r.createElement(e):(o||(o=u(r)),!(a=o.cache[e]?o.cache[e].cloneNode():s.test(e)?(o.cache[e]=o.createElem(e)).cloneNode():o.createElem(e)).canHaveChildren||i.test(e)||a.tagUrn?a:o.frag.appendChild(a));var a}function m(e){e||(e=t);var o=u(e);return!f.shivCSS||r||o.hasCSS||(o.hasCSS=!!l(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{dis
17play:block}mark{background:#FF0;color:#000}template{display:none}")),n||function(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(r){return f.shivMethods?p(r,e,t):t.createElem(r)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+c().join().replace(/[\w\-:]+/g,(function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'}))+");return n}")(f,t.frag)}(e,o),e}!function(){try{var e=t.createElement("a");e.innerHTML="<xyz></xyz>",r="hidden"in e,n=1==e.childNodes.length||function(){t.createElement("a");var e=t.createDocumentFragment();return void 0===e.cloneNode||void 0===e.createDocumentFragment||void 0===e.createElement}()}catch(e){r=!0,n=!0}}();var f={elements:o.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:"3.7.3",shivCSS:!1!==o.shivCSS,supportsUnknownElements:n,shivMethods:!1!==o.shivMethods,type:"default",shivDocument:m,createElement:p,createDocumentFragment:function(e,r){if(e||(e=t),n)return e.createDocumentFragment();for(var o=(r=r||u(e)).frag.cloneNode(),i=0,s=c(),a=s.length;i<a;i++)o.createElement(s[i]);return o},addElements:function(e,t){var r=f.elements;"string"!=typeof r&&(r=r.join(" ")),"string"!=typeof e&&(e=e.join(" ")),f.elements=r+" "+e,m(t)}};e.html5=f,m(t);var h,g=/^$|\b(?:all|print)\b/,y=!(n||(h=t.documentElement,void 0===t.namespaces||void 0===t.parentWindow||void 0===h.applyElement||void 0===h.removeNode||void 0===e.attachEvent));function v(e){for(var t,r=e.attributes,n=r.length,o=e.ownerDocument.createElement("html5shiv:"+e.nodeName);n--;)(t=r[n]).specified&&o.setAttribute(t.nodeName,t.nodeValue);return o.style.cssText=e.style.cssText,o}function A(e){var t,r,n=u(e),o=e.namespaces,i=e.parentWindow;if(!y||e.printShived)return e;function s(){clearTimeout(n._removeSheetTimer),t&&t.removeNode(!0),t=null}return void 0===o.html5shiv&&o.add("html5shiv"),i.attachEvent("onbeforeprint",(function(){s();for(var n,o,i,a=e.styleSheets,d=[],u=a.length,p=Array(u);u--;)p[u]=a[u];for(;i=p.pop();)if(!i.disabled&&g.test(i.media)){try{o=(n=i.imports).length}catch(e){o=0}for(u=0;u<o;u++)p.push(n[u]);try{d.push(i.cssText)}catch(e){}}d=function(e){for(var t,r=e.split("{"),n=r.length,o=RegExp("(^|[\\s,>+~])("+c().join("|")+")(?=[[\\s,>+~#.:]|$)","gi");n--;)(t=r[n]=r[n].split("}"))[t.length-1]=t[t.length-1].replace(o,"$1html5shiv\\:$2"),r[n]=t.join("}");return r.join("{")}(d.reverse().join("")),r=function(e){for(var t,r=e.getElementsByTagName("*"),n=r.length,o=RegExp("^(?:"+c().join("|")+")$","i"),i=[];n--;)t=r[n],o.test(t.nodeName)&&i.push(t.applyElement(v(t)));return i}(e),t=l(e,d)})),i.attachEvent("onafterprint",(function(){!function(e){for(var t=e.length;t--;)e[t].removeNode()}(r),clearTimeout(n._removeSheetTimer),n._removeSheetTimer=setTimeout(s,500)})),e.printShived=!0,e}f.type+=" print",f.shivPrint=A,A(t),"object"==typeof module&&module.exports&&(module.exports=f)}(void 0!==window?window:this,document),
18/*!
19{
20  "name": "Canvas",
21  "property": "canvas",
22  "caniuse": "canvas",
23  "tags": ["canvas", "graphics"],
24  "polyfills": ["flashcanvas", "excanvas", "slcanvas", "fxcanvas"]
25}
26!*/
27Modernizr.addTest("canvas",(function(){var e=createElement("canvas");return!(!e.getContext||!e.getContext("2d"))})),
28/*!
29{
30  "name": "Geolocation API",
31  "property": "geolocation",
32  "caniuse": "geolocation",
33  "tags": ["media"],
34  "notes": [{
35    "name": "MDN Docs",
36    "href": "https://developer.mozilla.org/en-US/docs/WebAPI/Using_geolocation"
37  }],
38  "polyfills": [
39    "joshuabell-polyfill",
40    "webshims",
41    "geo-location-javascript",
42    "geolocation-api-polyfill"
43  ]
44}
45!*/
46Modernizr.addTest("geolocation","geolocation"in navigator),
47/*!
48{
49  "name": "Hidden Scrollbar",
50  "property": "hiddenscroll",
51  "authors": ["Oleg Korsunsky"],
52  "tags": ["overlay"],
53  "notes": [{
54    "name": "Overlay Scrollbar description",
55    "href": "https://developer.apple.com/library/mac/releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_7.html#//apple_ref/doc/uid/TP40010355-SW39"
56  }, {
57    "name": "Video example of overlay scrollbars",
58    "href": "https://gfycat.com/FoolishMeaslyAtlanticsharpnosepuffer"
59  }]
60}
61!*/
62Modernizr.addTest("hiddenscroll",(function(){return testStyles("#modernizr {width:100px;height:100px;overflow:scroll}",(function(e){return e.offsetWidth===e.clientWidth}
62))})),
63/*!
64{
65  "name": "History API",
66  "property": "history",
67  "caniuse": "history",
68  "tags": ["history"],
69  "authors": ["Hay Kranen", "Alexander Farkas"],
70  "notes": [{
71    "name": "W3C Spec",
72    "href": "https://www.w3.org/TR/html51/browsers.html#the-history-interface"
73  }, {
74    "name": "MDN Docs",
75    "href": "https://developer.mozilla.org/en-US/docs/Web/API/window.history"
76  }],
77  "polyfills": ["historyjs", "html5historyapi"]
78}
79!*/
80Modernizr.addTest("history",(function(){var e=navigator.userAgent;return!!e&&((-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")||"file:"===location.protocol)&&(window.history&&"pushState"in window.history))})),_hasOwnProperty={}.hasOwnProperty,hasOwnProp=is(_hasOwnProperty,"undefined")||is(_hasOwnProperty.call,"undefined")?function(e,t){return t in e&&is(e.constructor.prototype[t],"undefined")}:function(e,t){return _hasOwnProperty.call(e,t)},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 r=this._l[e];setTimeout((function(){var e;for(e=0;e<r.length;e++)(0,r[e])(t)}),0),delete this._l[e]}},Modernizr._q.push((function(){ModernizrProto.addTest=addTest})),
81/*!
82{
83  "name": "HTML Imports",
84  "property": "htmlimports",
85  "tags": ["html", "import"],
86  "polyfills": ["polymer-htmlimports"],
87  "notes": [{
88    "name": "W3C Spec",
89    "href": "https://w3c.github.io/webcomponents/spec/imports/"
90  }, {
91    "name": "HTML Imports - #include for the web",
92    "href": "https://www.html5rocks.com/en/tutorials/webcomponents/imports/"
93  }]
94}
95!*/
96Modernizr.addTest("htmlimports","import"in createElement("link")),
97/*!
98{
99  "name": "IE8 compat mode",
100  "property": "ie8compat",
101  "authors": ["Erich Ocean"]
102}
103!*/
104Modernizr.addTest("ie8compat",!window.addEventListener&&!!document.documentMode&&7===document.documentMode);var inputElem=createElement("input"),inputattrs="autocomplete autofocus list placeholder max min multiple pattern required step".split(" "),attrs={};
105/*!
106{
107  "name": "Input attributes",
108  "property": "input",
109  "tags": ["forms"],
110  "authors": ["Mike Taylor"],
111  "notes": [{
112    "name": "WHATWG Spec",
113    "href": "https://html.spec.whatwg.org/multipage/input.html#input-type-attr-summary"
114  }],
115  "knownBugs": ["Some blackberry devices report false positive for input.multiple"]
116}
117!*/Modernizr.input=function(e){for(var t=0,r=e.length;t<r;t++)attrs[e[t]]=!!(e[t]in inputElem);return attrs.list&&(attrs.list=!(!createElement("datalist")||!window.HTMLDataListElement)),attrs}
117(inputattrs),
118/*!
119{
120  "name": "Form input types",
121  "property": "inputtypes",
122  "caniuse": "forms",
123  "tags": ["forms"],
124  "authors": ["Mike Taylor"],
125  "polyfills": [
126    "jquerytools",
127    "webshims",
128    "h5f",
129    "webforms2",
130    "nwxforms",
131    "fdslider",
132    "html5slider",
133    "galleryhtml5forms",
134    "jscolor",
135    "html5formshim",
136    "selectedoptionsjs",
137    "formvalidationjs"
138  ]
139}
140!*/
141function(){for(var e,t,r,n=["search","tel","url","email","datetime","date","month","week","time","datetime-local","number","range","color"],o=0;o<n.length;o++)inputElem.setAttribute("type",e=n[o]),(r="text"!==inputElem.type&&"style"in inputElem)&&(inputElem.value="1)",inputElem.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(e)&&inputElem.style.WebkitAppearance!==undefined?(docElement.appendChild(inputElem),r=(t=document.defaultView).getComputedStyle&&"textfield"!==t.getComputedStyle(inputElem,null).WebkitAppearance&&0!==inputElem.offsetHeight,docElement.removeChild(inputElem)):/^(search|tel)$/.test(e)||(r=/^(url|email)$/.test(e)?inputElem.checkValidity&&!1===inputElem.checkValidity():"1)"!==inputElem.value)),Modernizr.addTest("inputtypes."+e,!!r)}(),
142/*!
143{
144  "name": "JSON",
145  "property": "json",
146  "caniuse": "json",
147  "notes": [{
148    "name": "MDN Docs",
149    "href": "https://developer.mozilla.org/en-US/docs/Glossary/JSON"
150  }],
151  "polyfills": ["json2"]
152}
153!*/
154Modernizr.addTest("json","JSON"in window&&"parse"in JSON&&"stringify"in JSON),
155/*!
156{
157  "name": "Notification",
158  "property": "notification",
159  "caniuse": "notifications",
160  "authors": ["Theodoor van Donge", "Hendrik Beskow"],
161  "notes": [{
162    "name": "HTML5 Rocks Tutorial",
163    "href": "https://www.html5rocks.com/en/tutorials/notifications/quick/"
164  }, {
165    "name": "W3C Spec",
166    "href": "https://www.w3.org/TR/notifications/"
167  }, {
168    "name": "Changes in Chrome to Notifications API due to Service Worker Push Notifications",
169    "href": "https://developers.google.com/web/updates/2015/05/Notifying-you-of-notificiation-changes"
170  }],
171  "knownBugs": ["Possibility of false-positive on Chrome for Android if permissions we're granted for a website prior to Chrome 44."],
172  "polyfills": ["desktop-notify", "html5-notifications"]
173}
174!*/
175Modernizr.addTest("notification",(function(){if(!window.Notification||!window.Notification.requestPermission)return!1;if("granted"===window.Notification.permission)return!0;try{new window.Notification("")}catch(e){if("TypeError"===e.name)return!1}return!0}));
176/*!
177{
178  "name": "postMessage",
179  "property": "postmessage",
180  "caniuse": "x-doc-messaging",
181  "notes": [{
182    "name": "W3C Spec",
183    "href": "https://www.w3.org/TR/webmessaging/#crossDocumentMessages"
184  }],
185  "polyfills": ["easyxdm", "postmessage-jquery"],
186  "knownBugs": ["structuredclones - Android 2&3 can not send a structured clone of dates, filelists or regexps"],
187  "warnings": ["Some old WebKit versions have bugs. Stick with object, array, number and pixeldata to be safe."]
188}
189!*/
190var bool=!0;try{window.postMessage({toString:function(){bool=!1}},"*")}catch(e){}function testAllProps(e,t,r){return testPropsAll(e,undefined,undefined,t,r)}Modernizr.addTest("postmessage",new Boolean("postMessage"in window)),Modernizr.addTest("postmessage.structuredclones",bool),
191/*!
192{
193  "name": "QuerySelector",
194  "property": "queryselector",
195  "caniuse": "queryselector",
196  "tags": ["queryselector"],
197  "authors": ["Andrew Betts (@triblondon)"],
198  "notes": [{
199    "name": "W3C Spec",
200    "href": "https://www.w3.org/TR/selectors-api/#queryselectorall"
201  }],
202  "polyfills": ["css-selector-engine"]
203}
204!*/
205Modernizr.addTest("queryselector","querySelector"in document&&"querySelectorAll"in document),
206/*!
207{
208  "name": "ServiceWorker API",
209  "property": "serviceworker",
210  "caniuse": "serviceworkers",
211  "notes": [{
212    "name": "ServiceWorkers Explained",
213    "href": "https://github.com/slightlyoff/ServiceWorker/blob/master/explainer.md"
214  }]
215}
216!*/
217Modernizr.addTest("serviceworker","serviceWorker"in navigator),
218/*!
219{
220  "name": "SVG",
221  "property": "svg",
222  "caniuse": "svg",
223  "tags": ["svg"],
224  "authors": ["Erik Dahlstrom"],
225  "polyfills": [
226    "svgweb",
227    "raphael",
228    "amplesdk",
229    "canvg",
230    "svg-boilerplate",
231    "sie",
232    "dojogfx",
233    "fabricjs"
234  ]
235}
236!*/
237Modernizr.addTest("svg",!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect),
238/*!
239{
240  "name": "Low Battery Level",
241  "property": "lowbattery",
242  "tags": ["hardware", "mobile"],
243  "builderAliases": ["battery_level"],
244  "authors": ["Paul Sayre"],
245  "notes": [{
246    "name": "MDN Docs",
247    "href": "https://developer.mozilla.org/en-US/docs/Web/API/Navigator/battery"
248  }]
249}
250!*/
251Modernizr.addTest("lowbattery",(function(){var e=prefixed("battery",navigator);return!!(e&&!e.charging&&e.level<=.2)})),
252/*!
253{
254  "name": "CSS Background Blend Mode",
255  "property": "backgroundblendmode",
256  "caniuse": "css-backgroundblendmode",
257  "tags": ["css"],
258  "notes": [{
259    "name": "CSS Blend Modes could be the next big thing in Web Design",
260    "href": "https://medium.com/@bennettfeely/css-blend-modes-could-be-the-next-big-thing-in-web-design-6b51bf53743a"
261  }, {
262    "name": "Demo",
263    "href": "https://bennettfeely.com/gradients/"
264  }]
265}
266!*/
267Modernizr.addTest("backgroundblendmode",prefixed("backgroundBlendMode","text")),ModernizrProto.testAllProps=testAllProps,
268/*!
269{
270  "name": "CSS Background Clip Text",
271  "property": "backgroundcliptext",
272  "authors": ["ausi"],
273  "tags": ["css"],
274  "notes": [{
275    "name": "CSS Tricks Article",
276    "href": "https://css-tricks.com/image-under-text/"
277  }, {
278    "name": "MDN Docs",
279    "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip"
280  }, {
281    "name": "Related Github Issue",
282    "href": "https://github.com/Modernizr/Modernizr/issues/199"
283  }]
284}
285!*/
286Modernizr.addTest("backgroundcliptext",(function(){return testAllProps("backgroundClip","text")})),
287/*!
288{
289  "name": "Background Position Shorthand",
290  "property": "bgpositionshorthand",
291  "caniuse": "css-background-offsets",
292  "tags": ["css"],
293  "builderAliases": ["css_backgroundposition_shorthand"],
294  "notes": [{
295    "name": "MDN Docs",
296    "href": "https://developer.mozilla.org/en/CSS/background-position"
297  }, {
298    "name": "W3C Spec",
299    "href": "https://www.w3.org/TR/css3-background/#background-position"
300  }, {
301    "name": "Demo",
302    "href": "https://jsfiddle.net/Blink/bBXvt/"
303  }]
304}
305!*/
306Modernizr.addTest("bgpositionshorthand",(function(){var e=createElement("a").style,t="right 10px bottom 10px";return e.cssText="background-position: "+t+";",e.backgroundPosition===t})),
307/*!
308{
309  "name": "Background Position XY",
310  "property": "bgpositionxy",
311  "tags": ["css"],
312  "builderAliases": ["css_backgroundposition_xy"],
313  "authors": ["Allan Lei", "Brandom Aaron"],
314  "notes": [{
315    "name": "Demo",
316    "href": "https://jsfiddle.net/allanlei/R8AYS/"
317  }, {
318    "name": "Adapted From",
319    "href": "https://github.com/brandonaaron/jquery-cssHooks/blob/master/bgpos.js"
320  }]
321}
322!*/
323Modernizr.addTest("bgpositionxy",(function(){return testAllProps("backgroundPositionX","3px",!0)&&testAllProps("backgroundPositionY","5px",!0)})),
324/*!
325{
326  "name": "Background Repeat",
327  "property": ["bgrepeatspace", "bgrepeatround"],
328  "tags": ["css"],
329  "builderAliases": ["css_backgroundrepeat"],
330  "authors": ["Ryan Seddon"],
331  "notes": [{
332    "name": "MDN Docs",
333    "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat"
334  }, {
335    "name": "Test Page",
336    "href": "https://jsbin.com/uzesun/"
337  }, {
338    "name": "Demo",
339    "href": "https://jsfiddle.net/ryanseddon/yMLTQ/6/"
340  }]
341}
342!*/
343Modernizr.addTest("bgrepeatround",testAllProps("backgroundRepeat","round")),Modernizr.addTest("bgrepeatspace",testAllProps("backgroundRepeat","space")),
344/*!
345{
346  "name": "Background Size",
347  "property": "backgroundsize",
348  "tags": ["css"],
349  "knownBugs": ["This will false positive in Opera Mini - https://github.com/Modernizr/Modernizr/issues/396"],
350  "notes": [{
351    "name": "Related Issue",
352    "href": "https://github.com/Modernizr/Modernizr/issues/396"
353  }]
354}
355!*/
356Modernizr.addTest("backgroundsize",testAllProps("backgroundSize","100%",!0)),
357/*!
358{
359  "name": "Background Size Cover",
360  "property": "bgsizecover",
361  "tags": ["css"],
362  "builderAliases": ["css_backgroundsizecover"],
363  "notes": [{
364    "name": "MDN Docs",
365    "href": "https://developer.mozilla.org/en/CSS/background-size"
366  }]
367}
368!*/
369Modernizr.addTest("bgsizecover",testAllProps("backgroundSize","cover")),
370/*!
371{
372  "name": "Border Image",
373  "property": "borderimage",
374  "caniuse": "border-image",
375  "polyfills": ["css3pie"],
376  "knownBugs": ["Android < 2.0 is true, but has a broken implementation"],
377  "tags": ["css"]
378}
379!*/
380Modernizr.addTest("borderimage",testAllProps("borderImage","url() 1",!0)),
381/*!
382{
383  "name": "CSS :checked pseudo-selector",
384  "caniuse": "css-sel3",
385  "property": "checked",
386  "tags": ["css"],
387  "notes": [{
388    "name": "Related Github Issue",
389    "href": "https://github.com/Modernizr/Modernizr/pull/879"
390  }]
391}
392!*/
393Modernizr.addTest("checked",(function(){return testStyles("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;
393display:block}",(function(e){var t=createElement("input");return t.setAttribute("type","checkbox"),t.setAttribute("checked","checked"),e.appendChild(t),20===t.offsetLeft}))})),
394/*!
395{
396  "name": "CSS text-overflow ellipsis",
397  "property": "ellipsis",
398  "caniuse": "text-overflow",
399  "polyfills": ["text-overflow"],
400  "tags": ["css"]
401}
402!*/
403Modernizr.addTest("ellipsis",testAllProps("textOverflow","ellipsis"));var prefixes=ModernizrProto._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):["",""];ModernizrProto._prefixes=prefixes;
404/*!
405{
406  "name": "CSS Supports",
407  "property": "supports",
408  "caniuse": "css-featurequeries",
409  "tags": ["css"],
410  "builderAliases": ["css_supports"],
411  "notes": [{
412    "name": "W3C Spec (The @supports rule)",
413    "href": "https://dev.w3.org/csswg/css3-conditional/#at-supports"
414  }, {
415    "name": "Related Github Issue",
416    "href": "https://github.com/Modernizr/Modernizr/issues/648"
417  }, {
418    "name": "W3C Spec (The CSSSupportsRule interface)",
419    "href": "https://dev.w3.org/csswg/css3-conditional/#the-csssupportsrule-interface"
420  }]
421}
422!*/
423var newSyntax="CSS"in window&&"supports"in window.CSS,oldSyntax="supportsCSS"in window;Modernizr.addTest("supports",newSyntax||oldSyntax),
424/*!
425{
426  "name": "CSS Filters",
427  "property": "cssfilters",
428  "caniuse": "css-filters",
429  "polyfills": ["polyfilter"],
430  "tags": ["css"],
431  "builderAliases": ["css_filters"],
432  "notes": [{
433    "name": "MDN Docs",
434    "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/filter"
435  }]
436}
437!*/
438Modernizr.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)})),
439/*!
440{
441  "name": "Flexbox",
442  "property": "flexbox",
443  "caniuse": "flexbox",
444  "tags": ["css"],
445  "notes": [{
446    "name": "The _new_ flexbox",
447    "href": "https://www.w3.org/TR/css-flexbox-1/"
448  }],
449  "warnings": [
450    "A `true` result for this detect does not imply that the `flex-wrap` property is supported; see the `flexwrap` detect."
451  ]
452}
453!*/
454Modernizr.addTest("flexbox",testAllProps("flexBasis","1px",!0)),
455/*!
456{
457  "name": "CSS Gradients",
458  "caniuse": "css-gradients",
459  "property": "cssgradients",
460  "tags": ["css"],
461  "knownBugs": ["False-positives on webOS (https://github.com/Modernizr/Modernizr/issues/202)"],
462  "notes": [{
463    "name": "Webkit Gradient Syntax",
464    "href": "https://webkit.org/blog/175/introducing-css-gradients/"
465  }, {
466    "name": "Linear Gradient Syntax",
467    "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient"
468  }, {
469    "name": "W3C Spec",
470    "href": "https://drafts.csswg.org/css-images-3/#gradients"
471  }]
472}
473!*/
474Modernizr.addTest("cssgradients",(function(){for(var e,t="background-image:",r="",n=0,o=prefixes.length-1;n<o;n++)e=0===n?"to ":"",r+=t+prefixes[n]+"linear-gradient("+e+"left top, #9f9, white);";Modernizr._config.usePrefixes&&(r+=t+"-webkit-gradient(linear,left top,right bottom,from(#9f9),to(white));");var i=createElement("a").style;return i.cssText=r,(""+i.backgroundImage).indexOf("gradient")>-1})),
475/*!
476{
477  "name": "CSS Mask",
478  "caniuse": "css-masks",
479  "property": "cssmask",
480  "tags": ["css"],
481  "builderAliases": ["css_mask"],
482  "notes": [{
483    "name": "Webkit blog on CSS Masks",
484    "href": "https://webkit.org/blog/181/css-masks/"
485  }, {
486    "name": "Safari Docs",
487    "href": "https://developer.apple.com/library/archive/documentation/InternetWeb/Conceptual/SafariVisualEffectsProgGuide/Masks/Masks.html"
488  }, {
489    "name": "CSS SVG mask",
490    "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/mask"
491  }, {
492    "name": "Combine with clippaths for awesomeness",
493    "href": "https://web.archive.org/web/20150508193041/http://generic.cx:80/for/webkit/test.html"
494  }]
495}
496!*/
497Modernizr.addTest("cssmask",testAllProps("maskRepeat","repeat-x",!0));var mq=(matchMedia=window.matchMedia||window.msMatchMedia,matchMedia?function(e){var t=matchMedia(e);return t&&t.matches||!1}:function(e){var t=!1;return injectElementWithStyles("@media "+e+" { #modernizr { position: absolute; } }",(function(e){t="absolute"===computedStyle(e,null,"position")})),t}),matchMedia;ModernizrProto.mq=mq,
498/*!
499{
500  "name": "CSS Media Queries",
501  "caniuse": "css-mediaqueries",
502  "property": "mediaqueries",
503  "tags": ["css"],
504  "builderAliases": ["css_mediaqueries"]
505}
506!*/
507Modernizr.addTest("mediaqueries",mq("only all")),
508/*!
509{
510  "name": "CSS Opacity",
511  "caniuse": "css-opacity",
512  "property": "opacity",
513  "tags": ["css"]
514}
515!*/
516Modernizr.addTest("opacity",(function(){var e=createElement("a").style;return e.cssText=prefixes.join("opacity:.55;"),/^0.55$/.test(e.opacity)})),
517/*!
518{
519  "name": "CSS position: sticky",
520  "property": "csspositionsticky",
521  "tags": ["css"],
522  "builderAliases": ["css_positionsticky"],
523  "notes": [{
524    "name": "Chrome bug report",
525    "href":"https://bugs.chromium.org/p/chromium/issues/detail?id=322972"
526  }],
527  "warnings": ["using position:sticky on anything but top aligned elements is buggy in Chrome < 37 and iOS <=7+"]
528}
529!*/
530Modernizr.addTest("csspositionsticky",(function(){var e="position:",t=createElement("a").style;return t.cssText=e+prefixes.join("sticky;"+e).slice(0,-e.length),-1!==t.position.indexOf("sticky")})),
531/*!
532{
533  "name": "CSS Shapes",
534  "property": "shapes",
535  "tags": ["css"],
536  "notes": [{
537    "name": "W3C Spec",
538    "href": "https://www.w3.org/TR/css-shapes"
539  }, {
540    "name": "Examples from Adobe",
541    "href": "https://web.archive.org/web/20171230010236/http://webplatform.adobe.com:80/shapes"
542  }, {
543    "name": "Examples from CSS-Tricks",
544    "href": "https://css-tricks.com/examples/ShapesOfCSS/"
545  }]
546}
547!*/
548Modernizr.addTest("shapes",testAllProps("shapeOutside","content-box",!0)),
549/*!
550{
551  "name": "dataset API",
552  "caniuse": "dataset",
553  "property": "dataset",
554  "tags": ["dom"],
555  "builderAliases": ["dom_dataset"],
556  "authors": ["@phiggins42"]
557}
558!*/
559Modernizr.addTest("dataset",(function(){var e=createElement("div");return e.setAttribute("data-a-b","c"),!(!e.dataset||"c"!==e.dataset.aB)})),
560/*!
561{
562  "name": "[hidden] Attribute",
563  "property": "hidden",
564  "tags": ["dom"],
565  "notes": [{
566    "name": "WHATWG Spec",
567    "href": "https://html.spec.whatwg.org/dev/interaction.html#the-hidden-attribute"
568  }, {
569    "name": "original implementation of detect code",
570    "href": "https://github.com/aFarkas/html5shiv/blob/bf4fcc4/src/html5shiv.js#L38"
571  }],
572  "polyfills": ["html5shiv"],
573  "authors": ["Ron Waldon (@jokeyrhyme)"]
574}
575!*/
576Modernizr.addTest("hidden","hidden"in createElement("a")),
577/*!
578{
579  "name": "picture Element",
580  "property": "picture",
581  "tags": ["elem"],
582  "authors": ["Scott Jehl", "Mat Marquis"],
583  "notes": [{
584    "name": "WHATWG Spec",
585    "href": "https://html.spec.whatwg.org/multipage/embedded-content.html#embedded-content"
586  }, {
587    "name": "Relevant spec issue",
588    "href": "https://github.com/ResponsiveImagesCG/picture-element/issues/87"
589  }]
590}
591!*/
592Modernizr.addTest("picture","HTMLPictureElement"in window),
593/*!
594{
595  "name": "progress Element",
596  "caniuse": "progress",
597  "property": ["progressbar", "meter"],
598  "tags": ["elem"],
599  "builderAliases": ["elem_progress_meter"],
600  "authors": ["Stefan Wallin"]
601}
602!*/
603Modernizr.addTest("progressbar",createElement("progress").max!==undefined),Modernizr.addTest("meter",createElement("meter").max!==undefined),
604/*!
605{
606  "name": "ES5 Array",
607  "property": "es5array",
608  "notes": [{
609    "name": "ECMAScript 5.1 Language Specification",
610    "href": "https://www.ecma-international.org/ecma-262/5.1/"
611  }],
612  "polyfills": ["es5shim"],
613  "authors": ["Ron Waldon (@jokeyrhyme)"],
614  "tags": ["es5"]
615}
616!*/
617Modernizr.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)})),
618/*!
619{
620  "name": "ES5 Date",
621  "property": "es5date",
622  "notes": [{
623    "name": "ECMAScript 5.1 Language Specification",
624    "href": "https://www.ecma-international.org/ecma-262/5.1/"
625  }],
626  "polyfills": ["es5shim"],
627  "authors": ["Ron Waldon (@jokeyrhyme)"],
628  "tags": ["es5"]
629}
630!*/
631Modernizr.addTest("es5date",(function(){var e=!1;try{e=!!Date.parse("2013-04-12T06:06:37.307Z")}catch(e){}return!!(Date.now&&Date.prototype&&Date.prototype.toISOString&&Date.prototype.toJSON&&e)})),
632/*!
633{
634  "name": "ES5 Function",
635  "property": "es5function",
636  "notes": [{
637    "name": "ECMAScript 5.1 Language Specification",
638    "href": "https://www.ecma-international.org/ecma-262/5.1/"
639  }],
640  "polyfills": ["es5shim"],
641  "authors": ["Ron Waldon (@jokeyrhyme)"],
642  "tags": ["es5"]
643}
644!*/
645Modernizr.addTest("es5function",(function(){return!(!Function.prototype||!Function.prototype.bind)})),
646/*!
647{
648  "name": "ES5 Object",
649  "property": "es5object",
650  "notes": [{
651    "name": "ECMAScript 5.1 Language Specification",
652    "href": "https://www.ecma-international.org/ecma-262/5.1/"
653  }],
654  "polyfills": ["es5shim", "es5sham"],
655  "authors": ["Ron Waldon (@jokeyrhyme)"],
656  "tags": ["es5"]
657}
658!*/
659Modernizr.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)})),
660/*!
661{
662  "name": "ES5 Strict Mode",
663  "property": "strictmode",
664  "caniuse": "use-strict",
665  "notes": [{
666    "name": "ECMAScript 5.1 Language Specification",
667    "href": "https://www.ecma-international.org/ecma-262/5.1/"
668  }],
669  "authors": ["@kangax"],
670  "tags": ["es5"],
671  "builderAliases": ["es5_strictmode"]
672}
673!*/
674Modernizr.addTest("strictmode",function(){"use strict";return!this}()),
675/*!
676{
677  "name": "ES5 String",
678  "property": "es5string",
679  "notes": [{
680    "name": "ECMAScript 5.1 Language Specification",
681    "href": "https://www.ecma-international.org/ecma-262/5.1/"
682  }],
683  "polyfills": ["es5shim"],
684  "authors": ["Ron Waldon (@jokeyrhyme)"],
685  "tags": ["es5"]
686}
687!*/
688Modernizr.addTest("es5string",(function(){return!(!String.prototype||!String.prototype.trim)})),
689/*!
690{
691  "name": "ES5 Syntax",
692  "property": "es5syntax",
693  "notes": [{
694    "name": "ECMAScript 5.1 Language Specification",
695    "href": "https://www.ecma-international.org/ecma-262/5.1/"
696  }, {
697    "name": "original implementation of detect code",
698    "href": "https://kangax.github.io/compat-table/es5/"
699  }],
700  "authors": ["Ron Waldon (@jokeyrhyme)"],
701  "warnings": ["This detect uses `eval()`, so CSP may be a problem."],
702  "tags": ["es5"]
703}
704!*/
705Modernizr.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(e){return!1}}
705)),
706/*!
707{
708  "name": "ES5 Immutable Undefined",
709  "property": "es5undefined",
710  "notes": [{
711    "name": "ECMAScript 5.1 Language Specification",
712    "href": "https://www.ecma-international.org/ecma-262/5.1/"
713  }, {
714    "name": "original implementation of detect code",
715    "href": "https://kangax.github.io/compat-table/es5/"
716  }],
717  "authors": ["Ron Waldon (@jokeyrhyme)"],
718  "tags": ["es5"]
719}
720!*/
721Modernizr.addTest("es5undefined",(function(){var e,t;try{t=window.undefined,window.undefined=12345,e=void 0===window.undefined,window.undefined=t}catch(e){return!1}return e})),
722/*!
723{
724  "name": "ES5",
725  "property": "es5",
726  "caniuse": "es5",
727  "notes": [{
728    "name": "ECMAScript 5.1 Language Specification",
729    "href": "https://www.ecma-international.org/ecma-262/5.1/"
730  }],
731  "polyfills": ["es5shim", "es5sham"],
732  "authors": ["Ron Waldon (@jokeyrhyme)"],
733  "tags": ["es5"]
734}
735!*/
736Modernizr.addTest("es5",(function(){return!!(Modernizr.es5array&&Modernizr.es5date&&Modernizr.es5function&&Modernizr.es5object&&Modernizr.strictmode&&Modernizr.es5string&&Modernizr.json&&Modernizr.es5syntax&&Modernizr.es5undefined)})),
737/*!
738{
739  "name": "ES6 Array",
740  "property": "es6array",
741  "notes": [{
742    "name": "unofficial ECMAScript 6 draft specification",
743    "href": "https://web.archive.org/web/20180825202128/https://tc39.github.io/ecma262/"
744  }],
745  "polyfills": ["es6shim"],
746  "authors": ["Ron Waldon (@jokeyrhyme)"],
747  "warnings": ["ECMAScript 6 is still a only a draft, so this detect may not match the final specification or implementations."],
748  "tags": ["es6"]
749}
750!*/
751Modernizr.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)),
752/*!
753{
754  "name": "ES6 Arrow Functions",
755  "property": "arrow",
756  "authors": ["Vincent Riemer"],
757  "tags": ["es6"]
758}
759!*/
760Modernizr.addTest("arrow",(function(){try{eval("()=>{}")}catch(e){return!1}return!0})),
761/*!
762{
763  "name": "ES6 Collections",
764  "property": "es6collections",
765  "notes": [{
766    "name": "unofficial ECMAScript 6 draft specification",
767    "href": "https://web.archive.org/web/20180825202128/https://tc39.github.io/ecma262/"
768  }],
769  "polyfills": ["es6shim", "weakmap"],
770  "authors": ["Ron Waldon (@jokeyrhyme)"],
771  "warnings": ["ECMAScript 6 is still a only a draft, so this detect may not match the final specification or implementations."],
772  "tags": ["es6"]
773}
774!*/
775Modernizr.addTest("es6collections",!!(window.Map&&window.Set&&window.WeakMap&&window.WeakSet)),
776/*!
777{
778  "name": "ES5 String.prototype.contains",
779  "property": "contains",
780  "authors": ["Robert Kowalski"],
781  "tags": ["es6"]
782}
783!*/
784Modernizr.addTest("contains",is(String.prototype.contains,"function")),
785/*!
786{
787  "name": "ES6 Generators",
788  "property": "generators",
789  "authors": ["Michael Kachanovskyi"],
790  "tags": ["es6"]
791}
792!*/
793Modernizr.addTest("generators",(function(){try{new Function("function* test() {}")()}catch(e){return!1}return!0})),
794/*!
795{
796  "name": "ES6 Math",
797  "property": "es6math",
798  "notes": [{
799    "name": "unofficial ECMAScript 6 draft specification",
800    "href": "https://web.archive.org/web/20180825202128/https://tc39.github.io/ecma262/"
801  }],
802  "polyfills": ["es6shim"],
803  "authors": ["Ron Waldon (@jokeyrhyme)"],
804  "warnings": ["ECMAScript 6 is still a only a draft, so this detect may not match the final specification or implementations."],
805  "tags": ["es6"]
806}
807!*/
808Modernizr.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)),
809/*!
810{
811  "name": "ES6 Number",
812  "property": "es6number",
813  "notes": [{
814    "name": "unofficial ECMAScript 6 draft specification",
815    "href": "https://web.archive.org/web/20180825202128/https://tc39.github.io/ecma262/"
816  }],
817  "polyfills": ["es6shim"],
818  "authors": ["Ron Waldon (@jokeyrhyme)"],
819  "warnings": ["ECMAScript 6 is still a only a draft, so this detect may not match the final specification or implementations."],
820  "tags": ["es6"]
821}
822!*/
823Modernizr.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))),
824/*!
825{
826  "name": "ES6 Object",
827  "property": "es6object",
828  "notes": [{
829    "name": "unofficial ECMAScript 6 draft specification",
830    "href": "https://web.archive.org/web/20180825202128/https://tc39.github.io/ecma262/"
831  }],
832  "polyfills": ["es6shim"],
833  "authors": ["Ron Waldon (@jokeyrhyme)"],
834  "warnings": ["ECMAScript 6 is still a only a draft, so this detect may not match the final specification or implementations."],
835  "tags": ["es6"]
836}
837!*/
838Modernizr.addTest("es6object",!!(Object.assign&&Object.is&&Object.setPrototypeOf)),
839/*!
840{
841  "name": "ES6 Promises",
842  "property": "promises",
843  "caniuse": "promises",
844  "polyfills": ["es6promises"],
845  "authors": ["Krister Kari", "Jake Archibald"],
846  "tags": ["es6"],
847  "notes": [{
848    "name": "The ES6 promises spec",
849    "href": "https://github.com/domenic/promises-unwrapping"
850  }, {
851    "name": "Chromium dashboard - ES6 Promises",
852    "href": "https://www.chromestatus.com/features/5681726336532480"
853  }, {
854    "name": "JavaScript Promises: an Introduction",
855    "href": "https://developers.google.com/web/fundamentals/primers/promises/"
856  }]
857}
858!*/
859Modernizr.addTest("promises",(function(){return"Promise"in window&&"resolve"in window.Promise&&"reject"in window.Promise&&"all"in window.Promise&&"race"in window.Promise&&(new window.Promise((function(t){e=t})),"function"==typeof e);var e})),
860/*!
861{
862  "name": "ES6 String",
863  "property": "es6string",
864  "notes": [{
865    "name": "unofficial ECMAScript 6 draft specification",
866    "href": "https://web.archive.org/web/20180825202128/https://tc39.github.io/ecma262/"
867  }],
868  "polyfills": ["es6shim"],
869  "authors": ["Ron Waldon (@jokeyrhyme)"],
870  "warnings": ["ECMAScript 6 is still a only a draft, so this detect may not match the final specification or implementations."],
871  "tags": ["es6"]
872}
873!*/
874Modernizr.addTest("es6string",!!(String.fromCodePoint&&String.raw&&String.prototype.codePointAt&&String.prototype.repeat&&String.prototype.startsWith&&String.prototype.endsWith&&String.prototype.includes)),
875/*!
876{
877  "name": "File API",
878  "property": "filereader",
879  "caniuse": "fileapi",
880  "notes": [{
881    "name": "W3C Working Draft Spec",
882    "href": "https://www.w3.org/TR/FileAPI/"
883  }],
884  "tags": ["file"],
885  "builderAliases": ["file_api"],
886  "knownBugs": ["Will fail in Safari 5 due to its lack of support for the standards defined FileReader object"]
887}
888!*/
889Modernizr.addTest("filereader",!!(window.File&&window.FileList&&window.FileReader)),
890/*!
891{
892  "name": "Filesystem API",
893  "property": "filesystem",
894  "caniuse": "filesystem",
895  "notes": [{
896    "name": "W3C Spec",
897    "href": "https://www.w3.org/TR/file-system-api/"
898  }],
899  "authors": ["Eric Bidelman (@ebidel)"],
900  "tags": ["file"],
901  "builderAliases": ["file_filesystem"],
902  "knownBugs": ["The API will be present in Chrome incognito, but will throw an exception. See crbug.com/93417"]
903}
904!*/
905Modernizr.addTest("filesystem",!!prefixed("requestFileSystem",window)),
906/*!
907{
908  "name": "Form Validation",
909  "property": "formvalidation",
910  "tags": ["forms", "validation", "attribute"],
911  "builderAliases": ["forms_validation"]
912}
913!*/
914Modernizr.addTest("formvalidation",(function(){var e=createElement("form");if(!("checkValidity"in e)||!("addEventListener"in e))return!1;if("reportValidity"in e)return!0;var t,r=!1;return Modernizr.formvalidationapi=!0,e.addEventListener("submit",(function(e){window.opera&&!window.operamini||e.preventDefault(),e.stopPropagation()}),!1),e.innerHTML='<input name="modTest" required="required" /><button></button>',testStyles("#modernizr form{position:absolute;top:-99999em}",(function(n){n.appendChild(e),(t=e.getElementsByTagName("input")[0]).addEventListener("invalid",(function(e){r=!0,e.preventDefault(),e.stopPropagation()}),!1),Modernizr.formvalidationmessage=!!t.validationMessage,e.getElementsByTagName("button")[0].click()})),r})),
915/*!
916{
917  "name": "Webp",
918  "async": true,
919  "property": "webp",
920  "caniuse": "webp",
921  "tags": ["image"],
922  "builderAliases": ["img_webp"],
923  "authors": ["Krister Kari", "@amandeep", "Rich Bradshaw", "Ryan Seddon", "Paul Irish"],
924  "notes": [{
925    "name": "Webp Info",
926    "href": "https://developers.google.com/speed/webp/"
927  }, {
928    "name": "Chromium blog - Chrome 32 Beta: Animated WebP images and faster Chrome for Android touch input",
929    "href": "https://blog.chromium.org/2013/11/chrome-32-beta-animated-webp-images-and.html"
930  }, {
931    "name": "Webp Lossless Spec",
932    "href": "https://developers.google.com/speed/webp/docs/webp_lossless_bitstream_specification"
933  }, {
934    "name": "Article about WebP support",
935    "href": "https://optimus.keycdn.com/support/webp-support/"
936  }, {
937    "name": "Chromium WebP announcement",
938    "href": "https://blog.chromium.org/2011/11/lossless-and-transparency-encoding-in.html?m=1"
939  }]
940}
941!*/
942Modernizr.addAsyncTest((function(){var e=[{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"}],t=e.shift();function r(e,t,r){var n=new Image;function o(t){var o=!(!t||"load"!==t.type)&&1===n.width;addTest(e,"webp"===e&&o?new Boolean(o):o),r&&r(t)}n.onerror=o,n.onload=o,n.src=t}r(t.name,t.uri,(function(t){if(t&&"load"===t.type)for(var n=0;n<e.length;n++)r(e[n].name,e[n].uri)}))})),
943/*!
944{
945  "name": "Fetch API",
946  "property": "fetch",
947  "tags": ["network"],
948  "caniuse": "fetch",
949  "notes": [{
950    "name": "WHATWG Spec",
951    "href": "https://fetch.spec.whatwg.org/"
952  }],
953  "polyfills": ["fetch"]
954}
955!*/
956Modernizr.addTest("fetch","fetch"in window),
957/*!
958{
959  "name": "script[async]",
960  "property": "scriptasync",
961  "caniuse": "script-async",
962  "tags": ["script"],
963  "builderAliases": ["script_async"],
964  "authors": ["Theodoor van Donge"]
965}
966!*/
967Modernizr.addTest("scriptasync","async"in createElement("script")),
968/*!
969{
970  "name": "script[defer]",
971  "property": "scriptdefer",
972  "caniuse": "script-defer",
973  "tags": ["script"],
974  "builderAliases": ["script_defer"],
975  "authors": ["Theodoor van Donge"],
976  "warnings": ["Browser implementation of the `defer` attribute vary: https://stackoverflow.com/questions/3952009/defer-attribute-chrome#answer-3982619"],
977  "knownBugs": ["False positive in Opera 12"]
978}
979!*/
980Modernizr.addTest("scriptdefer","defer"in createElement("script")),
981/*!
982{
983  "name": "Local Storage",
984  "property": "localstorage",
985  "caniuse": "namevalue-storage",
986  "tags": ["storage"],
987  "polyfills": [
988    "joshuabell-polyfill",
989    "cupcake",
990    "storagepolyfill",
991    "amplifyjs",
992    "yui-cacheoffline"
993  ]
994}
995!*/
996Modernizr.addTest("localstorage",(function(){var e="modernizr";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(e){return!1}}
996)),
997/*!
998{
999  "name": "Session Storage",
1000  "property": "sessionstorage",
1001  "tags": ["storage"],
1002  "polyfills": ["joshuabell-polyfill", "cupcake", "sessionstorage"]
1003}
1004!*/
1005Modernizr.addTest("sessionstorage",(function(){var e="modernizr";try{return sessionStorage.setItem(e,e),sessionStorage.removeItem(e),!0}catch(e){return!1}})),
1006/*!
1007{
1008  "name": "Web SQL Database",
1009  "property": "websqldatabase",
1010  "caniuse": "sql-storage",
1011  "tags": ["storage"]
1012}
1013!*/
1014Modernizr.addTest("websqldatabase","openDatabase"in window),
1015/*!
1016{
1017  "name": "SVG as an <img> tag source",
1018  "property": "svgasimg",
1019  "caniuse": "svg-img",
1020  "tags": ["svg"],
1021  "aliases": ["svgincss"],
1022  "authors": ["Chris Coyier"],
1023  "notes": [{
1024    "name": "HTML5 Spec",
1025    "href": "https://www.w3.org/TR/html5/embedded-content-0.html#the-img-element"
1026  }]
1027}
1028!*/
1029Modernizr.addTest("svgasimg",document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1"));var toStringFn={}.toString;
1030/*!
1031{
1032  "name": "SVG clip paths",
1033  "property": "svgclippaths",
1034  "tags": ["svg"],
1035  "notes": [{
1036    "name": "Demo",
1037    "href": "http://srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg"
1038  }]
1039}
1040!*/Modernizr.addTest("svgclippaths",(function(){return!!document.createElementNS&&/SVGClipPath/.test(toStringFn.call(document.createElementNS("http://www.w3.org/2000/svg","clipPath")))})),
1041/*!
1042{
1043  "name": "SVG filters",
1044  "property": "svgfilters",
1045  "caniuse": "svg-filters",
1046  "tags": ["svg"],
1047  "builderAliases": ["svg_filters"],
1048  "authors": ["Erik Dahlstrom"],
1049  "notes": [{
1050    "name": "W3C Spec",
1051    "href": "https://www.w3.org/TR/SVG11/filters.html"
1052  }]
1053}
1054!*/
1055Modernizr.addTest("svgfilters",(function(){var e=!1;try{e="SVGFEColorMatrixElement"in window&&2===SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE}catch(e){}return e})),
1056/*!
1057{
1058  "name": "SVG foreignObject",
1059  "property": "svgforeignobject",
1060  "tags": ["svg"],
1061  "notes": [{
1062    "name": "W3C Spec",
1063    "href": "https://www.w3.org/TR/SVG11/extend.html"
1064  }]
1065}
1066!*/
1067Modernizr.addTest("svgforeignobject",(function(){return!!document.createElementNS&&/SVGForeignObject/.test(toStringFn.call(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")))})),
1068/*!
1069{
1070  "name": "Inline SVG",
1071  "property": "inlinesvg",
1072  "caniuse": "svg-html5",
1073  "tags": ["svg"],
1074  "notes": [{
1075    "name": "Test page",
1076    "href": "https://paulirish.com/demo/inline-svg"
1077  }, {
1078    "name": "Test page and results",
1079    "href": "https://codepen.io/eltonmesquita/full/GgXbvo/"
1080  }],
1081  "polyfills": ["inline-svg-polyfill"],
1082  "knownBugs": ["False negative on some Chromia browsers."]
1083}
1084!*/
1085Modernizr.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)})),
1086/*!
1087{
1088  "name": "SVG SMIL animation",
1089  "property": "smil",
1090  "caniuse": "svg-smil",
1091  "tags": ["svg"],
1092  "notes": [{
1093  "name": "W3C Spec",
1094  "href": "https://www.w3.org/AudioVideo/"
1095  }]
1096}
1097!*/
1098Modernizr.addTest("smil",(function(){return!!document.createElementNS&&/SVGAnimate/.test(toStringFn.call(document.createElementNS("http://www.w3.org/2000/svg","animate")))})),
1099/*!
1100{
1101  "name": "Web Workers",
1102  "property": "webworkers",
1103  "caniuse": "webworkers",
1104  "tags": ["performance", "workers"],
1105  "notes": [{
1106    "name": "W3C Spec",
1107    "href": "https://www.w3.org/TR/workers/"
1108  }, {
1109    "name": "HTML5 Rocks Tutorial",
1110    "href": "https://www.html5rocks.com/en/tutorials/workers/basics/"
1111  }, {
1112    "name": "MDN Docs",
1113    "href": "https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers"
1114  }],
1115  "polyfills": ["fakeworker", "html5shims"]
1116}
1117!*/
1118Modernizr.addTest("webworkers","Worker"in window),testRunner(),setClasses(classes),delete ModernizrProto.addTest,delete ModernizrProto.addAsyncTest;for(var i=0;i<Modernizr._q.length;i++)Modernizr._q[i]();scriptGlobalObject.Modernizr=Modernizr}(window,window,document);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.