1 2/*! 3 * modernizr v3.2.0 4 * Build http://modernizr.com/download?-applicationcache-audio-backgroundsize-bgsizecover-borderimage-borderradius-boxshadow-canvas-canvastext-cssanimations-csscolumns-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-flexbox-fontface-generatedcontent-geolocation-hashchange-history-hsla-indexeddb-inlinesvg-input-inputtypes-localstorage-multiplebgs-opacity-postmessage-preserve3d-requestanimationframe-rgba-sessionstorage-smil-svg-svgclippaths-svgfilters-textshadow-touchevents-video-webgl-webglextensions-websockets-websqldatabase-webworkers-addtest-domprefixes-hasevent-mq-prefixed-prefixes-shiv-testallprops-testprop-teststyles-dontmin 5 * 6 * Copyright (c) 7 * Faruk Ates 8 * Paul Irish 9 * Alex Sexton 10 * Ryan Seddon 11 * Patrick Kettner 12 * Stu Cox 13 * Richard Herrera 14 15 * MIT License 16 */ 17(function(N,d,l){var f=[];var Y=d.documentElement;var a=Y.nodeName.toLowerCase()==="svg";var L;if(!a){(function(ai,ak){var ae="3.7.3";var ab=ai.html5||{};var af=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;var aa=/^(?: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;var ap;var ag="_html5shiv";var i=0;var am={};var ac;(function(){try{var at=ak.createElement("a");at.innerHTML="<xyz></xyz>";ap=("hidden" in at);ac=at.childNodes.length==1||(function(){(ak.createElement)("a");var av=ak.createDocumentFragment();return(typeof av.cloneNode=="undefined"||typeof av.createDocumentFragment=="undefined"||typeof av.createElement=="undefined")}())}catch(au){ap=true;ac=true}}());function ad(at,av){var aw=at.createElement("p"),au=at.getElementsByTagName("head")[0]||at.documentElement;aw.innerHTML="x<style>"+av+"</style>";return au.insertBefore(aw.lastChild,au.firstChild)}function aj(){var at=ah.elements;return typeof at=="string"?at.split(" "):at}function an(at,au){var av=ah.elements;if(typeof av!="string"){av=av.join(" ")}if(typeof at!="string"){at=at.join(" ")}ah.elements=av+" "+at;Z(au)}function ao(at){var au=am[at[ag]];if(!au){au={};i++;at[ag]=i;am[i]=au}return au}function al(aw,at,av){if(!at){at=ak}if(ac){return at.createElement(aw)}if(!av){av=ao(at)}var au;if(av.cache[aw]){au=av.cache[aw].cloneNode()}else{if(aa.test(aw)){au=(av.cache[aw]=av.createElem(aw)).cloneNode()}else{au=av.createElem(aw)}}return au.canHaveChildren&&!af.test(aw)&&!au.tagUrn?av.frag.appendChild(au):au}function aq(av,ax){if(!av){av=ak}if(ac){return av.createDocumentFragment()}ax=ax||ao(av);var ay=ax.frag.cloneNode(),aw=0,au=aj(),at=au.length;for(;aw<at;aw++){ay.createElement(au[aw])}return ay}function ar(at,au){if(!au.cache){au.cache={};au.createElem=at.createElement;au.createFrag=at.createDocumentFragment;au.frag=au.createFrag()}at.createElement=function(av){if(!ah.shivMethods){return au.createElem(av)}return al(av,at,au)};at.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+aj().join().replace(/[\w\-:]+/g,function(av){au.createElem(av);au.frag.createElement(av);return'c("'+av+'")'})+");return n}")(ah,au.frag)}function Z(at){if(!at){at=ak}var au=ao(at);if(ah.shivCSS&&!ap&&!au.hasCSS){au.hasCSS=!!ad(at,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")}if(!ac){ar(at,au)}return at}var ah={elements:ab.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:ae,shivCSS:(ab.shivCSS!==false),supportsUnknownElements:ac,shivMethods:(ab.shivMethods!==false),type:"default",shivDocument:Z,createElement:al,createDocumentFragment:aq,addElements:an};ai.html5=ah;Z(ak);if(typeof module=="object"&&module.exports){module.exports=ah}}(typeof N!=="undefined"?N:this,d))}var p=[];var R={_version:"3.2.0",_config:{classPrefix:"",enableClasses:true,enableJSClass:true,usePrefixes:true},_q:[],on:function(aa,i){var Z=this;setTimeout(function(){i(Z[aa])},0)},addTest:function(Z,aa,i){p.push({name:Z,fn:aa,options:i})},addAsyncTest:function(i){p.push({name:null,fn:i}
17)}};var I=function(){};I.prototype=R;I=new I();function b(aa){var ab=Y.className;var Z=I._config.classPrefix||"";if(a){ab=ab.baseVal}if(I._config.enableJSClass){var i=new RegExp("(^|\\s)"+Z+"no-js(\\s|$)");ab=ab.replace(i,"$1"+Z+"js$2")}if(I._config.enableClasses){ab+=" "+Z+aa.join(" "+Z);a?Y.className.baseVal=ab:Y.className=ab}} 18/*! 19{ 20 "name": "Application Cache", 21 "property": "applicationcache", 22 "caniuse": "offline-apps", 23 "tags": ["storage", "offline"], 24 "notes": [{ 25 "name": "MDN documentation", 26 "href": "https://developer.mozilla.org/en/docs/HTML/Using_the_application_cache" 27 }], 28 "polyfills": ["html5gears"] 29} 30!*/ 31I.addTest("applicationcache","applicationCache" in N); 32/*! 33{ 34 "name": "Geolocation API", 35 "property": "geolocation", 36 "caniuse": "geolocation", 37 "tags": ["media"], 38 "notes": [{ 39 "name": "MDN documentation", 40 "href": "https://developer.mozilla.org/en-US/docs/WebAPI/Using_geolocation" 41 }], 42 "polyfills": [ 43 "joshuabell-polyfill", 44 "webshims", 45 "geo-location-javascript", 46 "geolocation-api-polyfill" 47 ] 48} 49!*/ 50I.addTest("geolocation","geolocation" in navigator); 51/*! 52{ 53 "name": "History API", 54 "property": "history", 55 "caniuse": "history", 56 "tags": ["history"], 57 "authors": ["Hay Kranen", "Alexander Farkas"], 58 "notes": [{ 59 "name": "W3C Spec", 60 "href": "http://www.w3.org/TR/html51/browsers.html#the-history-interface" 61 }, { 62 "name": "MDN documentation", 63 "href": "https://developer.mozilla.org/en-US/docs/Web/API/window.history" 64 }], 65 "polyfills": ["historyjs", "html5historyapi"] 66} 67!*/ 68I.addTest("history",function(){var i=navigator.userAgent;if((i.indexOf("Android 2.")!==-1||(i.indexOf("Android 4.0")!==-1))&&i.indexOf("Mobile Safari")!==-1&&i.indexOf("Chrome")===-1&&i.indexOf("Windows Phone")===-1){return false}return(N.history&&"pushState" in N.history)}); 69/*! 70{ 71 "name": "postMessage", 72 "property": "postmessage", 73 "caniuse": "x-doc-messaging", 74 "notes": [{ 75 "name": "W3C Spec", 76 "href": "http://www.w3.org/TR/html5/comms.html#posting-messages" 77 }], 78 "polyfills": ["easyxdm", "postmessage-jquery"] 79} 80!*/ 81I.addTest("postmessage","postMessage" in N); 82/*! 83{ 84 "name": "SVG", 85 "property": "svg", 86 "caniuse": "svg", 87 "tags": ["svg"], 88 "authors": ["Erik Dahlstrom"], 89 "polyfills": [ 90 "svgweb", 91 "raphael", 92 "amplesdk", 93 "canvg", 94 "svg-boilerplate", 95 "sie", 96 "dojogfx", 97 "fabricjs" 98 ] 99} 100!*/ 101I.addTest("svg",!!d.createElementNS&&!!d.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect); 102/*! 103{ 104 "name": "WebSockets Support", 105 "property": "websockets", 106 "authors": ["Phread [fearphage]", "Mike Sherov [mikesherov]", "Burak Yigit Kaya [BYK]"], 107 "caniuse": "websockets", 108 "tags": ["html5"], 109 "warnings": [ 110 "This test will reject any old version of WebSockets even if it is not prefixed such as in Safari 5.1" 111 ], 112 "notes": [{ 113 "name": "CLOSING State and Spec", 114 "href": "http://www.w3.org/TR/websockets/#the-websocket-interface" 115 }], 116 "polyfills": [ 117 "sockjs", 118 "socketio", 119 "kaazing-websocket-gateway", 120 "websocketjs", 121 "atmosphere", 122 "graceful-websocket", 123 "portal", 124 "datachannel" 125 ] 126} 127!*/ 128I.addTest("websockets","WebSocket" in N&&N.WebSocket.CLOSING===2); 129/*! 130{ 131 "name": "Local Storage", 132 "property": "localstorage", 133 "caniuse": "namevalue-storage", 134 "tags": ["storage"], 135 "knownBugs": [], 136 "notes": [], 137 "warnings": [], 138 "polyfills": [ 139 "joshuabell-polyfill", 140 "cupcake", 141 "storagepolyfill", 142 "amplifyjs", 143 "yui-cacheoffline" 144 ] 145} 146!*/ 147I.addTest("localstorage",function(){var i="modernizr";try{localStorage.setItem(i,i);localStorage.removeItem(i);return true}catch(Z){return false}}); 148/*! 149{ 150 "name": "Session Storage", 151 "property": "sessionstorage", 152 "tags": ["storage"], 153 "polyfills": ["joshuabell-polyfill", "cupcake", "sessionstorage"] 154} 155!*/ 156I.addTest("sessionstorage",function(){var i="modernizr";try{sessionStorage.setItem(i,i);sessionStorage.removeItem(i);return true}catch(Z){return false}}); 157/*! 158{ 159 "name": "Web SQL Database", 160 "property": "websqldatabase", 161 "caniuse": "sql-storage", 162 "tags": ["storage"] 163} 164!*/ 165I.addTest("websqldatabase","openDatabase" in N); 166/*! 167{ 168 "name": "SVG filters", 169 "property": "svgfilters", 170 "caniuse": "svg-filters", 171 "tags": ["svg"], 172 "builderAliases": ["svg_filters"], 173 "authors": ["Erik Dahlstrom"], 174 "notes": [{ 175 "name": "W3C Spec", 176 "href": "http://www.w3.org/TR/SVG11/filters.html"
177 }] 178} 179!*/ 180I.addTest("svgfilters",function(){var i=false;try{i="SVGFEColorMatrixElement" in N&&SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE==2}catch(Z){}return i}); 181/*! 182{ 183 "name": "Web Workers", 184 "property": "webworkers", 185 "caniuse" : "webworkers", 186 "tags": ["performance", "workers"], 187 "notes": [{ 188 "name": "W3C Reference", 189 "href": "http://www.w3.org/TR/workers/" 190 }, { 191 "name": "HTML5 Rocks article", 192 "href": "http://www.html5rocks.com/en/tutorials/workers/basics/" 193 }, { 194 "name": "MDN documentation", 195 "href": "https://developer.mozilla.org/en-US/docs/Web/Guide/Performance/Using_web_workers" 196 }], 197 "polyfills": ["fakeworker", "html5shims"] 198} 199!*/ 200I.addTest("webworkers","Worker" in N);var o=(R._config.usePrefixes?" -webkit- -moz- -o- -ms- ".split(" "):[]);R._prefixes=o;function D(Z,i){return typeof Z===i}function W(){var ac;var ad;var aa;var i;var Z;var ab;var af;for(var ae in p){if(p.hasOwnProperty(ae)){ac=[];ad=p[ae];if(ad.name){ac.push(ad.name.toLowerCase());if(ad.options&&ad.options.aliases&&ad.options.aliases.length){for(aa=0;aa<ad.options.aliases.length;aa++){ac.push(ad.options.aliases[aa].toLowerCase())}}}i=D(ad.fn,"function")?ad.fn():ad.fn;for(Z=0;Z<ac.length;Z++){ab=ac[Z];af=ab.split(".");if(af.length===1){I[af[0]]=i}else{if(I[af[0]]&&!(I[af[0]] instanceof Boolean)){I[af[0]]=new Boolean(I[af[0]])}I[af[0]][af[1]]=i}f.push((i?"":"no-")+af.join("-"))}}}}var m="Moz O ms Webkit";var U=(R._config.usePrefixes?m.toLowerCase().split(" "):[]);R._domPrefixes=U;function G(){if(typeof d.createElement!=="function"){return d.createElement(arguments[0])}else{if(a){return d.createElementNS.call(d,"http://www.w3.org/2000/svg",arguments[0])}else{return d.createElement.apply(d,arguments)}}}var y=(function(aa){var Z=!("onblur" in d.documentElement);function i(ab,ad){var ac;if(!ab){return false}if(!ad||typeof ad==="string"){ad=G(ad||"div")}ab="on"+ab;ac=ab in ad;if(!ac&&Z){if(!ad.setAttribute){ad=G("div")}ad.setAttribute(ab,"");ac=typeof ad[ab]==="function";if(ad[ab]!==aa){ad[ab]=aa}ad.removeAttribute(ab)}return ac}return i})();R.hasEvent=y; 201/*! 202{ 203 "name": "Hashchange event", 204 "property": "hashchange", 205 "caniuse": "hashchange", 206 "tags": ["history"], 207 "notes": [{ 208 "name": "MDN documentation", 209 "href": "https://developer.mozilla.org/en-US/docs/Web/API/window.onhashchange" 210 }], 211 "polyfills": [ 212 "jquery-hashchange", 213 "moo-historymanager", 214 "jquery-ajaxy", 215 "hasher", 216 "shistory" 217 ] 218} 219!*/ 220I.addTest("hashchange",function(){if(y("hashchange",N)===false){return false}return(d.documentMode===l||d.documentMode>7)}); 221/*! 222{ 223 "name" : "HTML5 Audio Element", 224 "property": "audio", 225 "tags" : ["html5", "audio", "media"] 226} 227!*/ 228I.addTest("audio",function(){var Z=G("audio");var i=false;try{if(i=!!Z.canPlayType){i=new Boolean(i);i.ogg=Z.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,"");i.mp3=Z.canPlayType('audio/mpeg; codecs="mp3"').replace(/^no$/,"");i.opus=Z.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,"");i.wav=Z.canPlayType('audio/wav; codecs="1"').replace(/^no$/,"");i.m4a=(Z.canPlayType("audio/x-m4a;")||Z.canPlayType("audio/aac;")).replace(/^no$/,"")}}catch(aa){}return i}); 229/*! 230{ 231 "name": "Canvas", 232 "property": "canvas", 233 "caniuse": "canvas", 234 "tags": ["canvas", "graphics"], 235 "polyfills": ["flashcanvas", "excanvas", "slcanvas", "fxcanvas"] 236} 237!*/ 238I.addTest("canvas",function(){var i=G("canvas");return !!(i.getContext&&i.getContext("2d"))}); 239/*! 240{ 241 "name": "Canvas text", 242 "property": "canvastext", 243 "caniuse": "canvas-text", 244 "tags": ["canvas", "graphics"], 245 "polyfills": ["canvastext"] 246} 247!*/ 248I.addTest("canvastext",function(){if(I.canvas===false){return false}return typeof G("canvas").getContext("2d").fillText=="function"}); 249/*! 250{ 251 "name": "HTML5 Video", 252 "property": "video", 253 "caniuse": "video", 254 "tags": ["html5"], 255 "knownBugs": [ 256 "Without QuickTime, `Modernizr.video.h264` will be `undefined`; http://github.com/Modernizr/Modernizr/issues/546" 257 ], 258 "polyfills": [ 259 "html5media", 260 "mediaelementjs", 261 "sublimevideo", 262 "videojs", 263 "leanbackplayer", 264 "videoforeverybody" 265 ] 266} 267!*/ 268I.addTest("video",function(){var Z=G("video");var i=false;try{if(i=!!Z.canPlayType){i=new Boolean(i);i.ogg=Z.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,"");i.h264=Z.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,"");i.webm=Z.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"");i.vp9=Z.canPlayType('video/webm; codecs="vp9"').replace(/^no$/,"");i.hls=Z.canPlayType('application/x-mpegURL; codecs="avc1.42E01E"').replace(/^no$/,"")}}catch(aa){}return i}); 269/*! 270{ 271 "name": "WebGL", 272 "property": "webgl", 273 "caniuse": "webgl", 274 "tags": ["webgl", "graphics"], 275 "polyfills": ["jebgl", "cwebgl", "iewebgl"] 276} 277!*/ 278I.addTest("webgl",function(){var Z=G("canvas");var i="probablySupportsContext" in Z?"probablySupportsContext":"supportsContext";if(i in Z){return Z[i]("webgl")||Z[i]("experimental-webgl")}return"WebGLRenderingContext" in N}); 279/*! 280{ 281 "name": "CSS Gradients", 282 "caniuse": "css-gradients", 283 "property": "cssgradients", 284 "tags": ["css"], 285 "knownBugs": ["False-positives on webOS (https://github.com/Modernizr/Modernizr/issues/202)"], 286 "notes": [{ 287 "name": "Webkit Gradient Syntax", 288 "href": "http://webkit.org/blog/175/introducing-css-gradients/" 289 },{ 290 "name": "Mozilla Linear Gradient Syntax", 291 "href": "http://developer.mozilla.org/en/CSS/-moz-linear-gradient" 292 },{ 293 "name": "Mozilla Radial Gradient Syntax", 294 "href": "http://developer.mozilla.org/en/CSS/-moz-radial-gradient" 295 },{ 296 "name": "W3C Gradient Spec", 297 "href": "dev.w3.org/csswg/css3-images/#gradients-" 298 }] 299} 300!*/ 301I.addTest("cssgradients",function(){var af="background-image:";var ae="gradient(linear,left top,right bottom,from(#9f9),to(white));";var ab="";var ag;for(var aa=0,Z=o.length-1;aa<Z;aa++){ag=(aa===0?"to ":"");ab+=af+o[aa]+"linear-gradient("+ag+"left top, #9f9, white);"}
301if(I._config.usePrefixes){ab+=af+"-webkit-"+ae}var ad=G("a");var ac=ad.style;ac.cssText=ab;return(""+ac.backgroundImage).indexOf("gradient")>-1}); 302/*! 303{ 304 "name": "CSS Multiple Backgrounds", 305 "caniuse": "multibackgrounds", 306 "property": "multiplebgs", 307 "tags": ["css"] 308} 309!*/ 310I.addTest("multiplebgs",function(){var i=G("a").style;i.cssText="background:url(https://),url(https://),red url(https://)";return(/(url\s*\(.*?){3}/).test(i.background)}); 311/*! 312{ 313 "name": "CSS Opacity", 314 "caniuse": "css-opacity", 315 "property": "opacity", 316 "tags": ["css"] 317} 318!*/ 319I.addTest("opacity",function(){var i=G("a").style;i.cssText=o.join("opacity:.55;");return(/^0.55$/).test(i.opacity)}); 320/*! 321{ 322 "name": "CSS rgba", 323 "caniuse": "css3-colors", 324 "property": "rgba", 325 "tags": ["css"], 326 "notes": [{ 327 "name": "CSSTricks Tutorial", 328 "href": "http://css-tricks.com/rgba-browser-support/" 329 }] 330} 331!*/ 332I.addTest("rgba",function(){var i=G("a").style;i.cssText="background-color:rgba(150,255,150,.5)";return(""+i.backgroundColor).indexOf("rgba")>-1}); 333/*! 334{ 335 "name": "Inline SVG", 336 "property": "inlinesvg", 337 "caniuse": "svg-html5", 338 "tags": ["svg"], 339 "notes": [{ 340 "name": "Test page", 341 "href": "http://paulirish.com/demo/inline-svg" 342 }, { 343 "name": "Test page and results", 344 "href": "http://codepen.io/eltonmesquita/full/GgXbvo/" 345 }], 346 "polyfills": ["inline-svg-polyfill"], 347 "knownBugs": ["False negative on some Chromia browsers."] 348} 349!*/ 350I.addTest("inlinesvg",function(){var i=G("div");i.innerHTML="<svg/>";return(typeof SVGRect!="undefined"&&i.firstChild&&i.firstChild.namespaceURI)=="http://www.w3.org/2000/svg"}); 351/*! 352{ 353 "name": "WebGL Extensions", 354 "property": "webglextensions", 355 "tags": ["webgl", "graphics"], 356 "builderAliases": ["webgl_extensions"], 357 "async" : true, 358 "authors": ["Ilmari Heikkinen"], 359 "knownBugs": [], 360 "notes": [{ 361 "name": "Kronos extensions registry", 362 "href": "http://www.khronos.org/registry/webgl/extensions/" 363 }] 364} 365!*/ 366I.addAsyncTest(function(){I.webglextensions=new Boolean(false);if(!I.webgl){return}var ab;var aa;var ad;try{ab=G("canvas");aa=ab.getContext("webgl")||ab.getContext("experimental-webgl");ad=aa.getSupportedExtensions()}catch(ae){return}if(aa!==l){I.webglextensions=new Boolean(true)}for(var ac=-1,Z=ad.length;++ac<Z;){I.webglextensions[ad[ac]]=true}ab=l});var J;(function(){var i=({}).hasOwnProperty;if(!D(i,"undefined")&&!D(i.call,"undefined")){J=function(Z,aa){return i.call(Z,aa)}}else{J=function(Z,aa){return((aa in Z)&&D(Z.constructor.prototype[aa],"undefined"))}}})();R._l={};R.on=function(Z,i){if(!this._l[Z]){this._l[Z]=[]}this._l[Z].push(i);if(I.hasOwnProperty(Z)){setTimeout(function(){I._trigger(Z,I[Z])},0)}};R._trigger=function(aa,Z){if(!this._l[aa]){return}var i=this._l[aa];setTimeout(function(){var ac,ab;for(ac=0;ac<i.length;ac++){ab=i[ac];ab(Z)}},0);delete this._l[aa]};function C(Z,ac){if(typeof Z=="object"){for(var i in Z){if(J(Z,i)){C(i,Z[i])}}}else{Z=Z.toLowerCase();var ab=Z.split(".");var aa=I[ab[0]];if(ab.length==2){aa=aa[ab[1]]}if(typeof aa!="undefined"){return I}ac=typeof ac=="function"?ac():ac;if(ab.length==1){I[ab[0]]=ac}else{if(I[ab[0]]&&!(I[ab[0]] instanceof Boolean)){I[ab[0]]=new Boolean(I[ab[0]])}I[ab[0]][ab[1]]=ac}b([(!!ac&&ac!=false?"":"no-")+ab.join("-")]);I._trigger(Z,ac)}return I}I._q.push(function(){R.addTest=C});function z(i){return i.replace(/([a-z])-([a-z])/g,function(ab,aa,Z){return aa+Z.toUpperCase()}).replace(/^-/,"")}function H(Z,i){return !!~(""+Z).indexOf(i)} 367/*! 368{ 369 "name": "CSS HSLA Colors", 370 "caniuse": "css3-colors", 371 "property": "hsla", 372 "tags": ["css"] 373} 374!*/ 375I.addTest("hsla",function(){var i=G("a").style;i.cssText="background-color:hsla(120,40%,100%,.5)";return H(i.backgroundColor,"rgba")||H(i.backgroundColor,"hsla")});var X=G("input"); 376/*! 377{ 378 "name": "Input attributes", 379 "property": "input", 380 "tags": ["forms"], 381 "authors": ["Mike Taylor"], 382 "notes": [{ 383 "name": "WHATWG spec", 384 "href": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary" 385 }], 386 "knownBugs": ["Some blackberry devices report false positive for input.multiple"] 387} 388!*/ 389var O="autocomplete autofocus list placeholder max min multiple pattern required step".split(" ");var j={};I.input=(function(ab){for(var aa=0,Z=ab.length;aa<Z;aa++){j[ab[aa]]=!!(ab[aa] in X)}if(j.list){j.list=!!(G("datalist")&&N.HTMLDataListElement)}return j})(O); 390/*! 391{ 392 "name": "Form input types", 393 "property": "inputtypes", 394 "caniuse": "forms", 395 "tags": ["forms"], 396 "authors": ["Mike Taylor"], 397 "polyfills": [ 398 "jquerytools", 399 "webshims", 400 "h5f", 401 "webforms2", 402 "nwxforms", 403 "fdslider", 404 "html5slider", 405 "galleryhtml5forms", 406 "jscolor", 407 "html5formshim", 408 "selectedoptionsjs", 409 "formvalidationjs" 410 ] 411} 412!*/ 413var s="search tel url email datetime date month week time datetime-local number range color".split(" ");var t={};I.inputtypes=(function(ad){var Z=ad.length;var ab=":)";var af;var ae;var aa;for(var ac=0;ac<Z;ac++){X.setAttribute("type",af=ad[ac]);aa=X.type!=="text"&&"style" in X;if(aa){X.value=ab;X.style.cssText="position:absolute;visibility:hidden;";if(/^range$/.test(af)&&X.style.WebkitAppearance!==l){Y.appendChild(X);ae=d.defaultView;aa=ae.getComputedStyle&&ae.getComputedStyle(X,null).WebkitAppearance!=="textfield"&&(X.offsetHeight!==0);Y.removeChild(X)}else{if(/^(search|tel)$/.test(af)){}else{if(/^(url|email|number)$/.test(af)){aa=X.checkValidity&&X.checkValidity()===false}else{aa=X.value!=ab}}}}t[ad[ac]]=!!aa}return t})(s); 414/*! 415{ 416 "name": "CSS Supports", 417 "property": "supports", 418 "caniuse": "css-featurequeries", 419 "tags": ["css"],
420 "builderAliases": ["css_supports"], 421 "notes": [{ 422 "name": "W3 Spec", 423 "href": "http://dev.w3.org/csswg/css3-conditional/#at-supports" 424 },{ 425 "name": "Related Github Issue", 426 "href": "github.com/Modernizr/Modernizr/issues/648" 427 },{ 428 "name": "W3 Info", 429 "href": "http://dev.w3.org/csswg/css3-conditional/#the-csssupportsrule-interface" 430 }] 431} 432!*/ 433var F="CSS" in N&&"supports" in N.CSS;var A="supportsCSS" in N;I.addTest("supports",F||A);var x=({}).toString; 434/*! 435{ 436 "name": "SVG clip paths", 437 "property": "svgclippaths", 438 "tags": ["svg"], 439 "notes": [{ 440 "name": "Demo", 441 "href": "http://srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg" 442 }] 443} 444!*/ 445I.addTest("svgclippaths",function(){return !!d.createElementNS&&/SVGClipPath/.test(x.call(d.createElementNS("http://www.w3.org/2000/svg","clipPath")))}); 446/*! 447{ 448 "name": "SVG SMIL animation", 449 "property": "smil", 450 "caniuse": "svg-smil", 451 "tags": ["svg"], 452 "notes": [{ 453 "name": "W3C Synchronised Multimedia spec", 454 "href": "http://www.w3.org/AudioVideo/" 455 }] 456} 457!*/ 458I.addTest("smil",function(){return !!d.createElementNS&&/SVGAnimate/.test(x.call(d.createElementNS("http://www.w3.org/2000/svg","animate")))});var Q=(R._config.usePrefixes?m.split(" "):[]);R._cssomPrefixes=Q;var e=function(af){var ab=o.length;var ad=N.CSSRule;var ae;if(typeof ad==="undefined"){return l}if(!af){return false}af=af.replace(/^@/,"");ae=af.replace(/-/g,"_").toUpperCase()+"_RULE";if(ae in ad){return"@"+af}for(var Z=0;Z<ab;Z++){var ac=o[Z];var aa=ac.toUpperCase()+"_"+ae;if(aa in ad){return"@-"+ac.toLowerCase()+"-"+af}}return false};R.atRule=e;function V(){var i=d.body;if(!i){i=G(a?"svg":"body");i.fake=true}return i}function r(af,ai,aa,ah){var ag="modernizr";var Z;var ae;var ab;var ac;var i=G("div");var ad=V();if(parseInt(aa,10)){while(aa--){ab=G("div");ab.id=ah?ah[aa]:ag+(aa+1);i.appendChild(ab)}}Z=G("style");Z.type="text/css";Z.id="s"+ag;(!ad.fake?i:ad).appendChild(Z);ad.appendChild(i);if(Z.styleSheet){Z.styleSheet.cssText=af}else{Z.appendChild(d.createTextNode(af))}i.id=ag;if(ad.fake){ad.style.background="";ad.style.overflow="hidden";ac=Y.style.overflow;Y.style.overflow="hidden";Y.appendChild(ad)}ae=ai(i,af);if(ad.fake){ad.parentNode.removeChild(ad);Y.style.overflow=ac;Y.offsetHeight}else{i.parentNode.removeChild(i)}return !!ae}var k=(function(){var i=N.matchMedia||N.msMatchMedia;if(i){return function(aa){var Z=i(aa);return Z&&Z.matches||false}}return function(aa){var Z=false;r("@media "+aa+" { #modernizr { position: absolute; } }",function(ab){Z=(N.getComputedStyle?N.getComputedStyle(ab,null):ab.currentStyle)["position"]=="absolute"});return Z}})();R.mq=k;var w=R.testStyles=r; 459/*! 460{ 461 "name": "Touch Events", 462 "property": "touchevents", 463 "caniuse" : "touch", 464 "tags": ["media", "attribute"], 465 "notes": [{ 466 "name": "Touch Events spec", 467 "href": "http://www.w3.org/TR/2013/WD-touch-events-20130124/" 468 }], 469 "warnings": [ 470 "Indicates if the browser supports the Touch Events spec, and does not necessarily reflect a touchscreen device" 471 ], 472 "knownBugs": [ 473 "False-positive on some configurations of Nokia N900", 474 "False-positive on some BlackBerry 6.0 builds � https://github.com/Modernizr/Modernizr/issues/372#issuecomment-3112695" 475 ] 476} 477!*/ 478I.addTest("touchevents",function(){var i;if(("ontouchstart" in N)||N.DocumentTouch&&d instanceof DocumentTouch){i=true}else{var Z=["@media (",o.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");w(Z,function(aa){i=aa.offsetTop===9})}return i}); 479/*! 480{ 481 "name": "@font-face", 482 "property": "fontface", 483 "authors": ["Diego Perini", "Mat Marquis"], 484 "tags": ["css"], 485 "knownBugs": [ 486 "False Positive: WebOS http://github.com/Modernizr/Modernizr/issues/342", 487 "False Postive: WP7 http://github.com/Modernizr/Modernizr/issues/538" 488 ], 489 "notes": [{ 490 "name": "@font-face detection routine by Diego Perini", 491 "href": "http://javascript.nwbox.com/CSSSupport/" 492 },{ 493 "name": "Filament Group @font-face compatibility research", 494 "href": "https://docs.google.com/presentation/d/1n4NyG4uPRjAA8zn_pSQ_
494Ket0RhcWC6QlZ6LMjKeECo0/edit#slide=id.p" 495 },{ 496 "name": "Filament Grunticon/@font-face device testing results", 497 "href": "https://docs.google.com/spreadsheet/ccc?key=0Ag5_yGvxpINRdHFYeUJPNnZMWUZKR2ItMEpRTXZPdUE#gid=0" 498 },{ 499 "name": "CSS fonts on Android", 500 "href": "http://stackoverflow.com/questions/3200069/css-fonts-on-android" 501 },{ 502 "name": "@font-face and Android", 503 "href": "http://archivist.incutio.com/viewlist/css-discuss/115960" 504 }] 505} 506!*/ 507var K=(function(){var ab=navigator.userAgent;var i=ab.match(/applewebkit\/([0-9]+)/gi)&&parseFloat(RegExp.$1);var aa=ab.match(/w(eb)?osbrowser/gi);var ac=ab.match(/windows phone/gi)&&ab.match(/iemobile\/([0-9])+/gi)&&parseFloat(RegExp.$1)>=9;var Z=i<533&&ab.match(/android/gi);return aa||Z||ac}());if(K){I.addTest("fontface",false)}else{w('@font-face {font-family:"font";src:url("https://")}',function(ac,ad){var ab=d.getElementById("smodernizr");var Z=ab.sheet||ab.styleSheet;var aa=Z?(Z.cssRules&&Z.cssRules[0]?Z.cssRules[0].cssText:Z.cssText||""):"";var i=/src/i.test(aa)&&aa.indexOf(ad.split(" ")[0])===0;I.addTest("fontface",i)})} 508/*! 509{ 510 "name": "CSS Generated Content", 511 "property": "generatedcontent", 512 "tags": ["css"], 513 "warnings": ["Android won't return correct height for anything below 7px #738"], 514 "notes": [{ 515 "name": "W3C CSS Selectors Level 3 spec", 516 "href": "http://www.w3.org/TR/css3-selectors/#gen-content" 517 },{ 518 "name": "MDN article on :before", 519 "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/::before" 520 },{ 521 "name": "MDN article on :after", 522 "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/::before" 523 }] 524} 525!*/ 526w('#modernizr{font:0/0 a}#modernizr:after{content:":)";visibility:hidden;font:7px/1 a}',function(i){I.addTest("generatedcontent",i.offsetHeight>=7)});var T={elem:G("modernizr")};I._q.push(function(){delete T.elem});var P={style:T.elem.style};I._q.unshift(function(){delete P.style});function B(i,Z){return function(){return i.apply(Z,arguments)}}function v(aa,ad,ac){var ab;for(var Z in aa){if(aa[Z] in ad){if(ac===false){return aa[Z]}ab=ad[aa[Z]];if(D(ab,"function")){return B(ab,ac||ad)}return ab}}return false}function h(i){return i.replace(/([A-Z])/g,function(aa,Z){return"-"+Z.toLowerCase()}).replace(/^ms-/,"-ms-")}function E(aa,ab){var Z=aa.length;if("CSS" in N&&"supports" in N.CSS){while(Z--){if(N.CSS.supports(h(aa[Z]),ab)){return true}}return false}else{if("CSSSupportsRule" in N){var ac=[];while(Z--){ac.push("("+h(aa[Z])+":"+ab+")")}ac=ac.join(" or ");return r("@supports ("+ac+") { #modernizr { position: absolute; } }",function(i){return getComputedStyle(i,null).position=="absolute"})}}return l}function M(ag,ac,aj,ah){ah=D(ah,"undefined")?false:ah;if(!D(aj,"undefined")){var al=E(ag,aj);if(!D(al,"undefined")){return al}}var ak,ad,Z,ab,ai;var aa=["modernizr","tspan"];while(!P.style){ak=true;P.modElem=G(aa.shift());P.style=P.modElem.style}function ae(){if(ak){delete P.style;delete P.modElem}}Z=ag.length;for(ad=0;ad<Z;ad++){ab=ag[ad];ai=P.style[ab];if(H(ab,"-")){ab=z(ab)}if(P.style[ab]!==l){if(!ah&&!D(aj,"undefined")){try{P.style[ab]=aj}catch(af){}if(P.style[ab]!=ai){ae();return ac=="pfx"?ab:true}}else{ae();return ac=="pfx"?ab:true}}}ae();return false}var g=R.testProp=function(aa,Z,i){return M([aa],l,Z,i)}; 527/*! 528{ 529 "name": "CSS textshadow", 530 "property": "textshadow", 531 "caniuse": "css-textshadow", 532 "tags": ["css"], 533 "knownBugs": ["FF3.0 will false positive on this test"] 534} 535!*/ 536I.addTest("textshadow",g("textShadow","1px 1px"));function q(ae,i,ab,ac,ad){var Z=ae.charAt(0).toUpperCase()+ae.slice(1),aa=(ae+" "+Q.join(Z+" ")+Z).split(" ");if(D(i,"string")||D(i,"undefined")){return M(aa,i,ac,ad)}else{aa=(ae+" "+(U).join(Z+" ")+Z).split(" ");return v(aa,i,ab)}}R.testAllProps=q;function n(aa,i,Z){return q(aa,l,l,i,Z)}R.testAllProps=n; 537/*! 538{ 539 "name": "CSS Animations", 540 "property": "cssanimations", 541 "caniuse": "css-animation", 542 "polyfills": ["transformie", "csssandpaper"], 543 "tags": ["css"], 544 "warnings": ["Android < 4 will pass this test, but can only animate a single property at a time"], 545 "notes": [{ 546 "name" : "Article: 'Dispelling the Android CSS animation myths'", 547 "href": "http://goo.gl/OGw5Gm" 548 }] 549} 550!*/ 551I.addTest("cssanimations",n("animationName","a",true)); 552/*! 553{
554 "name": "Background Size", 555 "property": "backgroundsize", 556 "tags": ["css"], 557 "knownBugs": ["This will false positive in Opera Mini - http://github.com/Modernizr/Modernizr/issues/396"], 558 "notes": [{ 559 "name": "Related Issue", 560 "href": "http://github.com/Modernizr/Modernizr/issues/396" 561 }] 562} 563!*/ 564I.addTest("backgroundsize",n("backgroundSize","100%",true)); 565/*! 566{ 567 "name": "Background Size Cover", 568 "property": "bgsizecover", 569 "tags": ["css"], 570 "builderAliases": ["css_backgroundsizecover"], 571 "notes": [{ 572 "name" : "MDN Docs", 573 "href": "http://developer.mozilla.org/en/CSS/background-size" 574 }] 575} 576!*/ 577I.addTest("bgsizecover",n("backgroundSize","cover")); 578/*! 579{ 580 "name": "Border Image", 581 "property": "borderimage", 582 "caniuse": "border-image", 583 "polyfills": ["css3pie"], 584 "knownBugs": ["Android < 2.0 is true, but has a broken implementation"], 585 "tags": ["css"] 586} 587!*/ 588I.addTest("borderimage",n("borderImage","url() 1",true)); 589/*! 590{ 591 "name": "Border Radius", 592 "property": "borderradiu
592s", 593 "caniuse": "border-radius", 594 "polyfills": ["css3pie"], 595 "tags": ["css"], 596 "notes": [{ 597 "name": "Comprehensive Compat Chart", 598 "href": "http://muddledramblings.com/table-of-css3-border-radius-compliance" 599 }] 600} 601!*/ 602I.addTest("borderradius",n("borderRadius","0px",true)); 603/*! 604{ 605 "name": "Box Shadow", 606 "property": "boxshadow", 607 "caniuse": "css-boxshadow", 608 "tags": ["css"], 609 "knownBugs": [ 610 "WebOS false positives on this test.", 611 "The Kindle Silk browser false positives" 612 ] 613} 614!*/ 615I.addTest("boxshadow",n("boxShadow","1px 1px",true)); 616/*! 617{ 618 "name": "CSS Columns", 619 "property": "csscolumns", 620 "caniuse": "multicolumn", 621 "polyfills": ["css3multicolumnjs"], 622 "tags": ["css"] 623} 624!*/ 625(function(){I.addTest("csscolumns",function(){var i=false;var ae=n("columnCount");try{if(i=!!ae){i=new Boolean(i)}}catch(ad){}return i});var ab=["Width","Span","Fill","Gap","Rule","RuleColor","RuleStyle","RuleWidth","BreakBefore","BreakAfter","BreakInside"];var Z,ac;for(var aa=0;aa<ab.length;aa++){Z=ab[aa].toLowerCase();ac=n("column"+ab[aa]);if(Z==="breakbefore"||Z==="breakafter"||Z=="breakinside"){ac=ac||n(ab[aa])}I.addTest("csscolumns."+Z,ac)}})(); 626/*! 627{ 628 "name": "Flexbox", 629 "property": "flexbox", 630 "caniuse": "flexbox", 631 "tags": ["css"], 632 "notes": [{ 633 "name": "The _new_ flexbox", 634 "href": "http://dev.w3.org/csswg/css3-flexbox" 635 }], 636 "warnings": [ 637 "A `true` result for this detect does not imply that the `flex-wrap` property is supported; see the `flexwrap` detect." 638 ] 639} 640!*/ 641I.addTest("flexbox",n("flexBasis","1px",true)); 642/*! 643{ 644 "name": "CSS Reflections", 645 "caniuse": "css-reflections", 646 "property": "cssreflections", 647 "tags": ["css"] 648} 649!*/ 650I.addTest("cssreflections",n("boxReflect","above",true)); 651/*! 652{ 653 "name": "CSS Transforms", 654 "property": "csstransforms", 655 "caniuse": "transforms2d", 656 "tags": ["css"] 657} 658!*/ 659I.addTest("csstransforms",function(){return navigator.userAgent.indexOf("Android 2.")===-1&&n("transform","scale(1)",true)}); 660/*! 661{ 662 "name": "CSS Transforms 3D", 663 "property": "csstransforms3d", 664 "caniuse": "transforms3d", 665 "tags": ["css"], 666 "warnings": [ 667 "Chrome may occassionally fail this test on some systems; more info: https://code.google.com/p/chromium/issues/detail?id=129004" 668 ] 669} 670!*/ 671I.addTest("csstransforms3d",function(){var Z=!!n("perspective","1px",true);var i=I._config.usePrefixes;if(Z&&(!i||"webkitPerspective" in Y.style)){var aa;var ab="#modernizr{width:0;height:0}";if(I.supports){aa="@supports (perspective: 1px)"}else{aa="@media (transform-3d)";if(i){aa+=",(-webkit-transform-3d)"}}aa+="{#modernizr{width:7px;height:18px;margin:0;padding:0;border:0}}";w(ab+aa,function(ac){Z=ac.offsetWidth===7&&ac.offsetHeight===18})}return Z}); 672/*! 673{ 674 "name": "CSS Transform Style preserve-3d", 675 "property": "preserve3d", 676 "authors": ["edmellum"], 677 "tags": ["css"], 678 "notes": [{ 679 "name": "MDN Docs", 680 "href": "https://developer.mozilla.org/en-US/docs/Web/CSS/transform-style" 681 },{ 682 "name": "Related Github Issue", 683 "href": "https://github.com/Modernizr/Modernizr/issues/762" 684 }] 685} 686!*/ 687I.addTest("preserve3d",n("transformStyle","preserve-3d")); 688/*! 689{ 690 "name": "CSS Transitions", 691 "property": "csstransitions", 692 "caniuse": "css-transitions", 693 "tags": ["css"] 694} 695!*/ 696I.addTest("csstransitions",n("transition","all",true));var u=R.prefixed=function(aa,Z,i){if(aa.indexOf("@")===0){return e(aa)}if(aa.indexOf("-")!=-1){aa=z(aa)}if(!Z){return q(aa,"pfx")}else{return q(aa,Z,i)}}; 697/*! 698{ 699 "name": "IndexedDB", 700 "property": "indexeddb", 701 "caniuse": "indexeddb", 702 "tags": ["storage"], 703 "polyfills": ["indexeddb"] 704} 705!*/ 706var c=u("indexedDB",N);I.addTest("indexeddb",!!c);if(!!c){I.addTest("indexeddb.deletedatabase","deleteDatabase" in c)} 707/*! 708{ 709 "name": "requestAnimationFrame", 710 "property": "requestanimationframe", 711 "aliases": ["raf"], 712 "caniuse": "requestanimationframe", 713 "tags": ["animation"], 714 "authors": ["Addy Osmani"], 715 "notes": [{ 716 "name": "W3C spec", 717 "href": "http://www.w3.org/TR/animation-timing/" 718 }], 719 "polyfills": ["raf"] 720} 721!*/ 722I.addTest("requestanimationframe",!!u("requestAnimationFrame",N),{aliases:["raf"]});W();b(f);delete R.addTest;delete R.addAsyncTest;for(var S=0;S<I._q.length;S++){I._q[S]()}N.Modernizr=I})(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.