diff -pruN 6.7.6-1/CHANGELOG.md 8.6.5+dfsg-2/CHANGELOG.md
--- 6.7.6-1/CHANGELOG.md	2017-03-12 19:08:11.000000000 +0000
+++ 8.6.5+dfsg-2/CHANGELOG.md	2019-01-06 08:08:48.000000000 +0000
@@ -1,5 +1,186 @@
 # Change Log
 
+## 8.6.5
+* Do not show Grid warnings if IE was not selected.
+
+## 8.6.4
+* Fix `stretch` prefix in Chrome >= 46.
+
+## 8.6.3
+* Add warnings for unsupported Grid features.
+* Add warnings about wrong Grid properties.
+* Add note about `grid` option for grid properties in `rake autoprefixer`.
+
+## 8.6.2
+* Fix error during adding Grid prefixes in `@media` (by Evgeny Petukhov).
+
+## 8.6.1
+* Fix `grid-template` with media queries (by Evgeny Petukhov).
+
+## 8.6 “Follow Reason”
+* Add `gap` support (by Evgeny Petukhov).
+* Add two values support for `grid-gap` and `gap` (by Evgeny Petukhov).
+
+## 8.5.2
+* Fix `grid-template` support wit auto row sizes (by Yury Timofeev).
+
+## 8.5.1
+* Remove unnecessary warning on `-webkit-fill-available`.
+
+## 8.5 “Muito Nobre e Sempre Leal”
+* Add `grid-gap` support (by Evgeny Petukhov).
+* Fix radial gradients direction fix.
+
+## 8.4.1
+* Fix non-related to Ruby issue.
+
+## 8.4 “Non in aves, sed in angues”
+* Add `/* autoprefixer: ignore next */` control comment (by Pavel Vostrikov).
+
+## 8.3.0.1
+* Remove Opera Mobile 12.1 from default browsers.
+* Update Can I Use data.
+
+## 8.3 “Benigno Numine”
+* Add `@media` support to `grid-template` (by Evgeny Petukhov).
+* Fix `radial-gradient` direction warning (by Gustavo Real).
+
+## 8.2 “Ad Astra per Aspera”
+* Add `color-adjust` (by Sergey Lysenko, Stanislav Botev, and Yuriy Alekseyev).
+
+## 8.1.0.1
+* Add more clear error on missed browser version.
+
+## 8.1 “Rex, Familia et Ultio”
+* Add `overscroll-behavior` support.
+* Add `grid-template` shortcut support (by Evgeny Petukhov).
+* Add better `grid-column-end` and `grid-row-end` support (by Evgeny Petukhov).
+* Fix Grid properties support in `@supports`.
+
+## 8.0 “Excelsior”
+* Use Browserslist 3.0.
+* Remove `break-*` to `page-break-*` conversion for Firefox.
+
+## 7.2.6
+* Fix `-ms-` prefix for grid cells with same `grid-area` (by Evgeny Petukhov).
+
+## 7.2.5
+* Fix multiple prefixes in declaration value.
+
+## 7.2.4
+* Update Can I Use data.
+
+## 7.2.3
+* Fix `grid-template-areas` in `@media` (by Evgeny Petukhov).
+
+## 7.2.2
+* Fix `_autoprefixerDisabled is undefined` issue.
+
+## 7.2.1
+* Fix IE and other old JS runtimes support.
+
+## 7.2 “Ordem e Progresso”
+* Add `grid-template-areas` support (by Evgeny Petukhov).
+* Add `grid-template` support (by Evgeny Petukhov).
+* Add `grid-area` support (by Alexey Komarov).
+* Add `autoprefixer-info` CLI tool.
+* Add wrong `radial-gradient` properties warning.
+* Use current working dir on missed `from` in `info()` (by Phil Dokas).
+* Fix `grid-row` and `grid-column` support (by Alexey Komarov).
+* Do not prefix `reverse` animation direction.
+* Improve test coverage (by Dmitry Semigradsky).
+
+## 7.1.6
+* Add warning for using `browserslist` option instead of `browsers`.
+* Add warning for multiple control comments in the same scope.
+* Fix `Invalid array length` error during indent changes.
+
+## 7.1.5
+* Fix `::placeholder` prefix for Edge.
+* Fix `inherit`/`initial`/`unset` values for `flex-direction`.
+* Fix RegExp usage in gradients (by Yet Another Minion).
+
+## 7.1.4.1
+* Update PostCSS.
+* Update Can I Use data.
+
+## 7.1.4
+* Fix `radial-gradient` direction conversion.
+* Fix `image-set` in `cursor`.
+
+## 7.1.3
+* Add warning for old `radial-gradient` direction syntax.
+* Add `last n major versions` browser query.
+
+## 7.1.2.6
+* Fix `.browserslistrc` support
+
+## 7.1.2.5
+* Fix `> 0` query for browsers with one version.
+* Update Can I Use data.
+
+## 7.1.2.4
+* Add `unreleased versions` and `unreleased Chrome versions` browsers queries.
+* Update Can I Use data.
+
+## 7.1.2.3
+* Add region usage statistics support.
+* Fix base64 decoding for old Node.js.
+* Update Can I Use data.
+
+## 7.1.2.2
+* Fix working with empty `autoprefixer.yml` (by Murahashi Kenichi).
+
+## 7.1.2.1
+* Fix loading `autoprefixer.yml` from engines (by Jim Ryan).
+
+## 7.1.2
+* Fix `text-decoration` shortcut support.
+
+## 7.1.1.3
+* Update Can I Use data.
+* Update PostCSS.
+
+## 7.1.1.2
+* Update Can I Use data.
+* Update Browserslist.
+
+## 7.1.1.1
+* Update Can I Use data.
+* Update Browserslist.
+* Update PostCSS.
+
+## 7.1.1
+* Remove non-`-webkit-` intrinsic prefixes in Grid Layout (by 一丝).
+
+## 7.1 “Universitas litterarum”
+* Add `unicode-bidi` support.
+* Add `-webkit-appearance` support for Edge.
+* Fix intrinsic widths prefixes in Grid Layout.
+
+## 7.0.1
+* Fix `therubyracer` support.
+
+## 7.0 “Coelestem adspicit lucem”
+* Remove node.js 0.12 support.
+* Use PostCSS 6.0.
+* Use Browserslist 2.
+* Use `caniuse-lite` instead of `caniuse-db` (by Ben Briggs).
+* Rewrite project from CoffeeScript to Babel (by Dmitry Semigradsky).
+* Disable Grid Layout prefixes for IE by default.
+* Fix `-ms-grid-column-align`.
+
+## 6.7.7.2
+* Update Can I Use data.
+* Update PostCSS.
+
+## 6.7.7.1
+* Update Firefox ESR.
+* Update Can I Use data.
+
+## 6.7.7
+* Fix `order` for non-digit values.
+
 ## 6.7.6
 * Fix `font-kerning` (by Chi Vinh Le).
 
diff -pruN 6.7.6-1/debian/autoprefixer-entry.js 8.6.5+dfsg-2/debian/autoprefixer-entry.js
--- 6.7.6-1/debian/autoprefixer-entry.js	1970-01-01 00:00:00.000000000 +0000
+++ 8.6.5+dfsg-2/debian/autoprefixer-entry.js	2019-02-07 07:51:49.000000000 +0000
@@ -0,0 +1 @@
+module.exports = require("autoprefixer")
diff -pruN 6.7.6-1/debian/changelog 8.6.5+dfsg-2/debian/changelog
--- 6.7.6-1/debian/changelog	2017-06-28 08:20:16.000000000 +0000
+++ 8.6.5+dfsg-2/debian/changelog	2019-02-07 12:47:28.000000000 +0000
@@ -1,7 +1,42 @@
+ruby-autoprefixer-rails (8.6.5+dfsg-2) unstable; urgency=medium
+
+  [ Xavier Guimard ]
+  * Remove useless license
+  * Remove useless lintian overrides
+  * Add upstream/metadata
+  * Switch build to rollup from webpack
+
+  [ Pirate Praveen ]
+  * Reupload to unstable
+  * Remove babel step and add commonjs plugin to rollup.config.js
+
+ -- Pirate Praveen <praveen@debian.org>  Thu, 07 Feb 2019 18:17:28 +0530
+
+ruby-autoprefixer-rails (8.6.5+dfsg-1) experimental; urgency=medium
+
+  * New upstream version 8.6.5+dfsg
+  * Build vendor/autoprefixer.js using webpack and node-autoprefixer
+    (Closes: #837463)
+  * Exclude vendor/autoprefixer.js from orig source
+  * Bump debhelper compatibility level to 11
+  * Bump Standards-Version to 4.3.0 (no changes needed)
+  * Move debian/watch to gemwatch.debian.net
+  * Tighten dependency on node-autoprefixer
+  * Use salsa.debian.org in Vcs-* fields
+
+ -- Pirate Praveen <praveen@debian.org>  Sun, 06 Jan 2019 13:52:01 +0530
+
+ruby-autoprefixer-rails (7.1.4.1-1) experimental; urgency=medium
+
+  * Team upload
+  * New upstream release
+
+ -- Sruthi Chandran <srud@disroot.org>  Sat, 30 Sep 2017 17:15:29 +0530
+
 ruby-autoprefixer-rails (6.7.6-1) unstable; urgency=medium
 
   * Team upload
-  * New upstream release 
+  * New upstream release
 
  -- Sruthi Chandran <srud@disroot.org>  Wed, 28 Jun 2017 13:50:16 +0530
 
@@ -27,8 +62,8 @@ ruby-autoprefixer-rails (6.3.3.1-1) unst
 
 ruby-autoprefixer-rails (6.0.3-2) unstable; urgency=medium
 
-  * Re-upload to unstable. 
-  * Check gemspec dependencies during build. 
+  * Re-upload to unstable.
+  * Check gemspec dependencies during build.
 
  -- Pirate Praveen <praveen@debian.org>  Sun, 20 Dec 2015 12:47:59 +0530
 
diff -pruN 6.7.6-1/debian/compat 8.6.5+dfsg-2/debian/compat
--- 6.7.6-1/debian/compat	2017-06-28 08:20:16.000000000 +0000
+++ 8.6.5+dfsg-2/debian/compat	2019-02-07 07:51:49.000000000 +0000
@@ -1 +1 @@
-9
+11
diff -pruN 6.7.6-1/debian/control 8.6.5+dfsg-2/debian/control
--- 6.7.6-1/debian/control	2017-06-28 08:20:16.000000000 +0000
+++ 8.6.5+dfsg-2/debian/control	2019-02-07 10:26:01.000000000 +0000
@@ -2,17 +2,21 @@ Source: ruby-autoprefixer-rails
 Section: ruby
 Priority: optional
 Maintainer: Debian Ruby Extras Maintainers <pkg-ruby-extras-maintainers@lists.alioth.debian.org>
-Uploaders: Antonio Terceiro <terceiro@debian.org>,
-           Pirate Praveen <praveen@debian.org>
-Build-Depends: debhelper (>= 9~),
+Uploaders: Pirate Praveen <praveen@debian.org>
+Build-Depends: debhelper (>= 11~),
                gem2deb,
                rake,
                ruby-execjs,
                ruby-json,
-               ruby-rspec
-Standards-Version: 4.0.0
-Vcs-Git: https://anonscm.debian.org/git/pkg-ruby-extras/ruby-autoprefixer-rails.git
-Vcs-Browser: https://anonscm.debian.org/cgit/pkg-ruby-extras/ruby-autoprefixer-rails.git
+               ruby-rspec,
+               node-autoprefixer (>= 8.6.5~),
+               node-rollup-plugin-babel,
+               node-rollup-plugin-node-resolve,
+               node-rollup-plugin-commonjs,
+               rollup
+Standards-Version: 4.3.0
+Vcs-Git: https://salsa.debian.org/ruby-team/ruby-autoprefixer-rails.git
+Vcs-Browser: https://salsa.debian.org/ruby-team/ruby-autoprefixer-rails
 Homepage: https://github.com/ai/autoprefixer-rails
 Testsuite: autopkgtest-pkg-ruby
 XS-Ruby-Versions: all
diff -pruN 6.7.6-1/debian/copyright 8.6.5+dfsg-2/debian/copyright
--- 6.7.6-1/debian/copyright	2017-06-28 08:20:16.000000000 +0000
+++ 8.6.5+dfsg-2/debian/copyright	2019-02-07 09:57:07.000000000 +0000
@@ -1,18 +1,12 @@
-Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 Upstream-Name: autoprefixer-rails
 Source: https://github.com/ai/autoprefixer-rails
+Files-Excluded: vendor/autoprefixer.js
 
 Files: *
 Copyright: Copyright 2013 Andrey Sitnik <andrey@sitnik.ru>
 License: Expat
 
-Files: vendor/autoprefixer.js
-Copyright: Copyright Joyent, Inc. and other Node contributors.
- Copyright 2009-2011 Mozilla Foundation and contributors
- Copyright 2011, The Dojo Foundation All Rights Reserved.
- Copyright 2011 The Closure Compiler Authors. All rights reserved.
-License: Expat and BSD-3C
-
 Files: debian/*
 Copyright: 2015 Antonio Terceiro <terceiro@debian.org>
 License: Expat
@@ -35,30 +29,3 @@ License: Expat
  COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-License: BSD-3C
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
- .
-  * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-  * Redistributions in binary form must reproduce the above
-    copyright notice, this list of conditions and the following
-    disclaimer in the documentation and/or other materials provided
-    with the distribution.
-  * Neither the name of Google Inc. nor the names of its
-    contributors may be used to endorse or promote products derived
-    from this software without specific prior written permission.
- .
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff -pruN 6.7.6-1/debian/rollup.config.js 8.6.5+dfsg-2/debian/rollup.config.js
--- 6.7.6-1/debian/rollup.config.js	1970-01-01 00:00:00.000000000 +0000
+++ 8.6.5+dfsg-2/debian/rollup.config.js	2019-02-07 12:42:26.000000000 +0000
@@ -0,0 +1,21 @@
+'use strict'
+
+const path    = require('path')
+const resolve = require('rollup-plugin-node-resolve')
+const common = require('rollup-plugin-commonjs')
+
+const BUNDLE  = process.env.BUNDLE === 'true'
+
+let fileDest  = 'autoprefixer.js'
+const plugins = [
+  common()
+]
+module.exports = {
+  input: '/usr/lib/nodejs/autoprefixer/lib/autoprefixer.js',
+  output: {
+    file: path.resolve(__dirname, `../vendor/${fileDest}`),
+    format: 'umd',
+    name: 'autoprefixer'
+  },
+  plugins
+}
diff -pruN 6.7.6-1/debian/rules 8.6.5+dfsg-2/debian/rules
--- 6.7.6-1/debian/rules	2017-06-28 08:20:16.000000000 +0000
+++ 8.6.5+dfsg-2/debian/rules	2019-02-07 09:57:07.000000000 +0000
@@ -5,3 +5,9 @@ export DH_RUBY = --gem-install
 
 %:
 	dh $@ --buildsystem=ruby --with ruby
+
+override_dh_auto_build:
+	# https://github.com/postcss/autoprefixer/issues/1174
+	#webpack --config debian/webpack.config.js \
+	#debian/autoprefixer-entry.js vendor/autoprefixer.js
+	rollup --config debian/rollup.config.js
diff -pruN 6.7.6-1/debian/source/lintian-overrides 8.6.5+dfsg-2/debian/source/lintian-overrides
--- 6.7.6-1/debian/source/lintian-overrides	2017-06-28 08:20:16.000000000 +0000
+++ 8.6.5+dfsg-2/debian/source/lintian-overrides	1970-01-01 00:00:00.000000000 +0000
@@ -1,2 +0,0 @@
-# False positive
-ruby-autoprefixer-rails source: source-is-missing vendor/autoprefixer.js line length is 852 characters (>512)
diff -pruN 6.7.6-1/debian/upstream/metadata 8.6.5+dfsg-2/debian/upstream/metadata
--- 6.7.6-1/debian/upstream/metadata	1970-01-01 00:00:00.000000000 +0000
+++ 8.6.5+dfsg-2/debian/upstream/metadata	2019-02-07 09:57:07.000000000 +0000
@@ -0,0 +1,7 @@
+---
+Archive: GitHub
+Bug-Database: https://github.com/ai/autoprefixer-rails/issues
+Contact: https://github.com/ai/autoprefixer-rails/issues
+Name: autoprefixer-rails
+Repository: https://github.com/ai/autoprefixer-rails.git
+Repository-Browse: https://github.com/ai/autoprefixer-rails
diff -pruN 6.7.6-1/debian/watch 8.6.5+dfsg-2/debian/watch
--- 6.7.6-1/debian/watch	2017-06-28 08:20:16.000000000 +0000
+++ 8.6.5+dfsg-2/debian/watch	2019-02-07 07:51:49.000000000 +0000
@@ -1,2 +1,6 @@
 version=3
-http://pkg-ruby-extras.alioth.debian.org/cgi-bin/gemwatch/autoprefixer-rails .*/autoprefixer-rails-(.*).tar.gz
+opts=\
+repacksuffix=+dfsg,\
+repack,compression=xz,\
+dversionmangle=s/\+(debian|dfsg|ds|deb)(\.\d+)?$//\
+ https://gemwatch.debian.net/autoprefixer-rails .*/autoprefixer-rails-(.*).tar.gz
diff -pruN 6.7.6-1/debian/webpack.config.js 8.6.5+dfsg-2/debian/webpack.config.js
--- 6.7.6-1/debian/webpack.config.js	1970-01-01 00:00:00.000000000 +0000
+++ 8.6.5+dfsg-2/debian/webpack.config.js	2019-02-07 07:51:49.000000000 +0000
@@ -0,0 +1,18 @@
+'use strict';
+
+var fs = require('fs');
+var path = require('path');
+var webpack = require('webpack');
+
+var config = {
+
+  resolve: {
+    modules: ['/usr/lib/nodejs','/usr/lib/nodejs/autoprefixer/node_modules'],
+  },
+
+  resolveLoader: {
+    modules: ['/usr/lib/nodejs'],
+  }
+}
+
+module.exports = config;
diff -pruN 6.7.6-1/lib/autoprefixer-rails/processor.rb 8.6.5+dfsg-2/lib/autoprefixer-rails/processor.rb
--- 6.7.6-1/lib/autoprefixer-rails/processor.rb	2017-03-12 19:08:11.000000000 +0000
+++ 8.6.5+dfsg-2/lib/autoprefixer-rails/processor.rb	2019-01-06 08:08:48.000000000 +0000
@@ -22,12 +22,30 @@ module AutoprefixerRails
       opts = convert_options(opts)
 
       apply_wrapper =
-        "(function(opts) {" +
-        "return eval(process.apply(this, opts));" +
+        "(function(opts, pluginOpts) {" +
+        "return eval(process.apply(this, opts, pluginOpts));" +
         "})"
 
-      params = params_with_browsers(opts[:from]).merge(opts)
-      result = runtime.call(apply_wrapper, [css, params])
+      pluginOpts = params_with_browsers(opts[:from]).merge(opts)
+      processOpts = {
+        from: pluginOpts.delete(:from),
+        to:   pluginOpts.delete(:to),
+        map:  pluginOpts.delete(:map)
+      }
+
+      begin
+        result = runtime.call(apply_wrapper, [css, processOpts, pluginOpts])
+      rescue ExecJS::ProgramError => e
+        contry_error = 'BrowserslistError: ' +
+          'Country statistics is not supported ' +
+          'in client-side build of Browserslist'
+        if e.message == contry_error
+          raise 'Country statistics is not supported in AutoprefixerRails. ' +
+                'Use Autoprefixer with webpack or other Node.js builder.'
+        else
+          raise e
+        end
+      end
 
       Result.new(result['css'], result['map'], result['warnings'])
     end
@@ -112,8 +130,12 @@ module AutoprefixerRails
       path = Pathname(file).expand_path
 
       while path.parent != path
-        config = path.join('browserslist')
-        return config.read if config.exist? and not config.directory?
+        config1 = path.join('browserslist')
+        return config1.read if config1.exist? and not config1.directory?
+
+        config2 = path.join('.browserslistrc')
+        return config2.read if config2.exist? and not config1.directory?
+
         path = path.parent
       end
 
@@ -134,12 +156,93 @@ module AutoprefixerRails
 
     # Cache autoprefixer.js content
     def read_js
-      @@js ||= Pathname(File.dirname(__FILE__)).join("../../vendor/autoprefixer.js").read
+      @@js ||= begin
+        root = Pathname(File.dirname(__FILE__))
+        path = root.join("../../vendor/autoprefixer.js")
+        path.read.gsub(/Object.setPrototypeOf\(chalk[^)]+\)/, '')
+      end
+    end
+
+    def polyfills
+      <<-JS
+        if (typeof Uint8Array === "undefined")
+          global.Uint8Array = Array;
+        if (typeof ArrayBuffer === "undefined")
+          global.ArrayBuffer = Array;
+        if (typeof Set === "undefined") {
+          global.Set = function (values) { this.values = values }
+          global.Set.prototype = {
+            has: function (i) { return this.values.indexOf(i) !== -1 }
+          }
+        }
+        if (typeof Map === "undefined") {
+          global.Map = function () { this.data = { } }
+          global.Map.prototype = {
+            set: function (k, v) { this.data[k] = v },
+            get: function (k) { return this.data[k] },
+            has: function (k) {
+              return Object.keys(this.data).indexOf(k) !== -1
+            },
+          }
+        }
+          Math.log2 = Math.log2 ||
+          function(x) { return Math.log(x) * Math.LOG2E; };
+        Math.sign = Math.sign ||
+          function(x) {
+            x = +x;
+            if (x === 0 || isNaN(x)) return Number(x);
+            return x > 0 ? 1 : -1;
+          };
+        Array.prototype.fill = Array.prototype.fill ||
+          function(value) {
+            var O = Object(this);
+            var len = O.length >>> 0;
+            var start = arguments[1];
+            var relativeStart = start >> 0;
+            var k = relativeStart < 0 ?
+              Math.max(len + relativeStart, 0) :
+              Math.min(relativeStart, len);
+            var end = arguments[2];
+            var relativeEnd = end === undefined ?
+              len : end >> 0;
+            var final = relativeEnd < 0 ?
+              Math.max(len + relativeEnd, 0) :
+              Math.min(relativeEnd, len);
+            while (k < final) {
+              O[k] = value;
+              k++;
+            }
+            return O;
+          };
+        if (!Object.assign) {
+          Object.assign = function(target, firstSource) {
+            var to = Object(target);
+            for (var i = 1; i < arguments.length; i++) {
+              var nextSource = arguments[i];
+              if (nextSource === undefined || nextSource === null) continue;
+              var keysArray = Object.keys(Object(nextSource));
+              for (var n = 0, len = keysArray.length; n < len; n++) {
+                var nextKey = keysArray[n];
+                var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
+                if (desc !== undefined && desc.enumerable) {
+                  to[nextKey] = nextSource[nextKey];
+                }
+              }
+            }
+            return to;
+          }
+        }
+        if (!Array.isView) {
+          Array.isView = function () {
+            return false
+          }
+        }
+      JS
     end
 
     # Return processor JS with some extra methods
     def build_js
-      'var global = this;' + read_js + process_proxy
+      'var global = this;' + polyfills + read_js + process_proxy
     end
 
     # Return JS code for process method proxy
diff -pruN 6.7.6-1/lib/autoprefixer-rails/railtie.rb 8.6.5+dfsg-2/lib/autoprefixer-rails/railtie.rb
--- 6.7.6-1/lib/autoprefixer-rails/railtie.rb	2017-03-12 19:08:11.000000000 +0000
+++ 8.6.5+dfsg-2/lib/autoprefixer-rails/railtie.rb	2019-01-06 08:08:48.000000000 +0000
@@ -5,30 +5,45 @@ begin
     class Railtie < ::Rails::Railtie
       rake_tasks do |app|
         require 'rake/autoprefixer_tasks'
-        Rake::AutoprefixerTasks.new( config(app.root) ) if defined? app.assets
+        Rake::AutoprefixerTasks.new( config ) if defined? app.assets
       end
 
       if config.respond_to?(:assets) and not config.assets.nil?
         config.assets.configure do |env|
-          AutoprefixerRails.install(env, config(env.root))
+          AutoprefixerRails.install(env, config)
         end
       else
         initializer :setup_autoprefixer, group: :all do |app|
           if defined? app.assets and not app.assets.nil?
-            AutoprefixerRails.install(app.assets, config(app.root))
+            AutoprefixerRails.install(app.assets, config)
           end
         end
       end
 
-      # Read browsers requirements from application config
-      def config(root)
-        file   = File.join(root, 'config/autoprefixer.yml')
-        params = ::YAML.load_file(file) if File.exist?(file)
-        params ||= {}
+      # Read browsers requirements from application or engine config
+      def config
+        params = {}
+
+        roots.each do |root|
+          file = File.join(root, 'config/autoprefixer.yml')
+
+          if File.exist?(file)
+            parsed = ::YAML.load_file(file)
+            next unless parsed
+            params = parsed
+
+            break
+          end
+        end
+
         params = params.symbolize_keys
         params[:env] ||= Rails.env.to_s
         params
       end
+
+      def roots
+        [Rails.application.root] + Rails::Engine.subclasses.map(&:root)
+      end
     end
   end
 rescue LoadError
diff -pruN 6.7.6-1/lib/autoprefixer-rails/version.rb 8.6.5+dfsg-2/lib/autoprefixer-rails/version.rb
--- 6.7.6-1/lib/autoprefixer-rails/version.rb	2017-03-12 19:08:11.000000000 +0000
+++ 8.6.5+dfsg-2/lib/autoprefixer-rails/version.rb	2019-01-06 08:08:48.000000000 +0000
@@ -1,3 +1,3 @@
 module AutoprefixerRails
-  VERSION = '6.7.6'.freeze unless defined? AutoprefixerRails::VERSION
+  VERSION = '8.6.5'.freeze unless defined? AutoprefixerRails::VERSION
 end
diff -pruN 6.7.6-1/mini_racer.gemfile 8.6.5+dfsg-2/mini_racer.gemfile
--- 6.7.6-1/mini_racer.gemfile	1970-01-01 00:00:00.000000000 +0000
+++ 8.6.5+dfsg-2/mini_racer.gemfile	2019-01-06 08:08:48.000000000 +0000
@@ -0,0 +1,16 @@
+source 'https://rubygems.org'
+
+gemspec
+
+gem 'execjs'
+gem 'rails',     '>= 5.0.2'
+gem 'sprockets', '>= 4.0.0.beta4'
+
+# Cannot use shared.gemfile, because therubyracer requires an older version
+# of libv8 than mini_racer
+gem 'mini_racer', platforms: [:mri, :rbx]
+
+gem 'racc',   platforms: :rbx
+gem 'rubysl', platforms: :rbx
+
+gem 'tzinfo-data', platforms: [:mingw, :mswin, :jruby]
diff -pruN 6.7.6-1/README.md 8.6.5+dfsg-2/README.md
--- 6.7.6-1/README.md	2017-03-12 19:08:11.000000000 +0000
+++ 8.6.5+dfsg-2/README.md	2019-01-06 08:08:48.000000000 +0000
@@ -5,7 +5,7 @@
      title="Autoprefixer logo by Anton Lovchikov">
 
 [Autoprefixer] is a tool to parse CSS and add vendor prefixes to CSS rules
-using values from the [Can I Use]. This gem provides Ruby and Ruby on Rails
+using values from the [Can I Use] database. This gem provides Ruby and Ruby on Rails
 integration with this JavaScript tool.
 
 <a href="https://evilmartians.com/?utm_source=autoprefixer-rails">
@@ -19,9 +19,9 @@ integration with this JavaScript tool.
 
 ## Differences
 
-The best way to use Autoprefixer is a webpack or Gulp.
+The best way to use Autoprefixer is with webpack or Gulp.
 
-Autoprefixer Rails doesn’t support this Autoprefixer’s features:
+Autoprefixer Rails doesn’t support these Autoprefixer features:
 
 * Browsers in `package.json`.
 * Custom browsers usage statistics.
@@ -54,7 +54,7 @@ For example in `app/assets/stylesheet/f
   display: flex
 ```
 
-Autoprefixer uses Can I Use database with browser statistics and properties
+Autoprefixer uses the Can I Use database with browser statistics and properties
 support to add vendor prefixes automatically using the Asset Pipeline:
 
 ```css
@@ -123,7 +123,7 @@ AutoprefixerRails.uninstall(Rails.applic
 
 ### Sprockets
 
-If you use Sinatra or other non-Rails frameworks with Sprockets,
+If you use Sinatra or another non-Rails framework with Sprockets,
 just connect your Sprockets environment with Autoprefixer and write CSS
 in the usual way:
 
@@ -145,7 +145,7 @@ require "autoprefixer-rails"
 prefixed = AutoprefixerRails.process(css, from: 'main.css').css
 ```
 
-You can specify browsers by `browsers` option:
+You can specify browsers with the `browsers` option:
 
 ```ruby
 AutoprefixerRails.process(css, from: 'a.css', browsers: ['> 1%', 'ie 10']).css
@@ -200,12 +200,12 @@ a {
 }
 ```
 
-You can disable it by `cascade: false` in `config/autoprefixer.yml`
+You can disable this by specifying `cascade: false` in `config/autoprefixer.yml`
 or in `process()` options.
 
 ## Source Map
 
-Autoprefixer will generate source map, if you set `map` option to `true` in
+Autoprefixer will generate a source map if you set `map` option to `true` in
 `process` method.
 
 You must set input and output CSS files paths (by `from` and `to` options)
diff -pruN 6.7.6-1/spec/app/browserslist 8.6.5+dfsg-2/spec/app/browserslist
--- 6.7.6-1/spec/app/browserslist	2017-03-12 19:08:11.000000000 +0000
+++ 8.6.5+dfsg-2/spec/app/browserslist	1970-01-01 00:00:00.000000000 +0000
@@ -1,4 +0,0 @@
-ie 11
-
-[test]
-chrome 25
diff -pruN 6.7.6-1/spec/app/.browserslistrc 8.6.5+dfsg-2/spec/app/.browserslistrc
--- 6.7.6-1/spec/app/.browserslistrc	1970-01-01 00:00:00.000000000 +0000
+++ 8.6.5+dfsg-2/spec/app/.browserslistrc	2019-01-06 08:08:48.000000000 +0000
@@ -0,0 +1,4 @@
+ie 11
+
+[test]
+chrome 25
diff -pruN 6.7.6-1/spec/autoprefixer_spec.rb 8.6.5+dfsg-2/spec/autoprefixer_spec.rb
--- 6.7.6-1/spec/autoprefixer_spec.rb	2017-03-12 19:08:11.000000000 +0000
+++ 8.6.5+dfsg-2/spec/autoprefixer_spec.rb	2019-01-06 08:08:48.000000000 +0000
@@ -19,6 +19,13 @@ describe AutoprefixerRails do
                              "}"
   end
 
+  it "process @supports" do
+    css = "@supports (display: flex) { }"
+    result = AutoprefixerRails.process(css, browsers: ['chrome 28'])
+    expect(result.css).to eq(
+      '@supports ((display: -webkit-flex) or (display: flex)) { }')
+  end
+
   it "generates source map" do
     result = AutoprefixerRails.process(@css, map: true)
     expect(result.css).to include('/*# sourceMappingURL=data:')
@@ -68,6 +75,12 @@ describe AutoprefixerRails do
       'direction syntax. New syntax is like `to left` instead of `right`.'])
   end
 
+  it "shows correct error on country statistics" do
+    expect {
+      AutoprefixerRails.process('', browsers: '> 1% in US')
+    }.to raise_error(/Use Autoprefixer with webpack/)
+  end
+
   context 'Sprockets' do
     before :each do
       @assets = Sprockets::Environment.new
diff -pruN 6.7.6-1/spec/rails_spec.rb 8.6.5+dfsg-2/spec/rails_spec.rb
--- 6.7.6-1/spec/rails_spec.rb	2017-03-12 19:08:11.000000000 +0000
+++ 8.6.5+dfsg-2/spec/rails_spec.rb	2019-01-06 08:08:48.000000000 +0000
@@ -16,7 +16,7 @@ describe CssController, type: :controlle
 
   it "integrates with Rails and Sass" do
     test_file 'sass'
-    expect(response).to be_success
+    expect(response).to be_successful
     clear_css = response.body.gsub("\n", " ").squeeze(" ").strip
     expect(clear_css).to eq "a { -webkit-mask: none; mask: none }"
   end
@@ -24,7 +24,7 @@ describe CssController, type: :controlle
   if Sprockets::Context.instance_methods.include?(:evaluate)
     it 'supports evaluate' do
       test_file 'evaluate'
-      expect(response).to be_success
+      expect(response).to be_successful
       clear_css = response.body.gsub("\n", ' ').squeeze(' ').strip
       expect(clear_css).to eq 'a { -webkit-mask: none; mask: none }'
     end
@@ -33,10 +33,10 @@ describe CssController, type: :controlle
   if sprockets_4?
     it "works with sprockets 4 source maps" do
       get :test, params: { exact_file: 'sass.css.map' }
-      expect(response).to be_success
+      expect(response).to be_successful
 
-      source_map = JSON.parse(response.body)
-      expect(source_map["sources"].first).to match(/loaded.*.sass/)
+      source_map = JSON.parse(response.body)['sections'].first['map']
+      expect(source_map['sources'].first).to match(/loaded.*.sass/)
     end
   end
 end
diff -pruN 6.7.6-1/spec/railtie_spec.rb 8.6.5+dfsg-2/spec/railtie_spec.rb
--- 6.7.6-1/spec/railtie_spec.rb	1970-01-01 00:00:00.000000000 +0000
+++ 8.6.5+dfsg-2/spec/railtie_spec.rb	2019-01-06 08:08:48.000000000 +0000
@@ -0,0 +1,29 @@
+require_relative 'spec_helper'
+
+describe AutoprefixedRails::Railtie do
+  before do
+    @railtie = AutoprefixedRails::Railtie.instance
+  end
+
+  context 'with config/autoprefixer.yml' do
+    it 'works' do
+      expect(@railtie.config).to eq(cascade: false, supports: false, env: 'test')
+    end
+  end
+
+  context 'with empty config/autoprefixer.yml' do
+    before do
+      file_path = File.join(Rails.application.root, 'config/autoprefixer.yml')
+      allow(File).to receive(:exists?).with(file_path) { true }
+      allow(::YAML).to receive(:load_file).with(file_path) { false } # empty yaml
+    end
+
+    it 'skips empty YAML' do
+      expect { @railtie.config }.not_to raise_error
+    end
+
+    it 'works' do
+      expect(@railtie.config).to eq(env: 'test')
+    end
+  end
+end
diff -pruN 6.7.6-1/spec/spec_helper.rb 8.6.5+dfsg-2/spec/spec_helper.rb
--- 6.7.6-1/spec/spec_helper.rb	2017-03-12 19:08:11.000000000 +0000
+++ 8.6.5+dfsg-2/spec/spec_helper.rb	2019-01-06 08:08:48.000000000 +0000
@@ -5,6 +5,8 @@ require_relative '../lib/autoprefixer-ra
 
 require 'rspec/rails'
 
+STDERR.puts "ExecJS runtime is #{ExecJS.runtime.class}"
+
 RSpec.configure do |c|
   c.filter_run_excluding not_jruby: RUBY_PLATFORM == 'java'
 end
diff -pruN 6.7.6-1/sprockets2.gemfile 8.6.5+dfsg-2/sprockets2.gemfile
--- 6.7.6-1/sprockets2.gemfile	2017-03-12 19:08:11.000000000 +0000
+++ 8.6.5+dfsg-2/sprockets2.gemfile	1970-01-01 00:00:00.000000000 +0000
@@ -1,8 +0,0 @@
-source 'https://rubygems.org'
-
-gemspec
-
-gem 'rails',     '< 5'
-gem 'sprockets', '>= 2.12.4', '< 3.0'
-
-eval_gemfile "#{ File.dirname(__FILE__) }/shared.gemfile"
diff -pruN 6.7.6-1/.travis.yml 8.6.5+dfsg-2/.travis.yml
--- 6.7.6-1/.travis.yml	2017-03-12 19:08:11.000000000 +0000
+++ 8.6.5+dfsg-2/.travis.yml	2019-01-06 08:08:48.000000000 +0000
@@ -1,22 +1,30 @@
 sudo: false
 language: ruby
 rvm:
-  - "2.1.8"
-  - "2.2.4"
-  - "2.3.0"
+  - "2.3.5"
+  - "2.4.2"
+git:
+  depth: 5
 cache: bundler
 gemfile:
-  - sprockets2.gemfile
   - sprockets3.gemfile
   - sprockets4.gemfile
+  - mini_racer.gemfile
 before_install:
   - nvm install stable
 env:
   - EXECJS_RUNTIME=Node
-  - EXECJS_RUNTIME=      # Rubyracer or rubyrhino depending on platform
+  # mini_racer / rubyracer or rubyrhino depending on platform:
+  -
 matrix:
   exclude:
-    - rvm: "2.1.8"
-      gemfile: sprockets4.gemfile
-    - rvm: "2.1.8"
+    - rvm: "2.3.5"
+      env: "EXECJS_RUNTIME=Node"
+    - rvm: "2.3.5"
+      gemfile: mini_racer.gemfile
+
+    - rvm: "2.4.2"
       gemfile: sprockets3.gemfile
+
+    - env: "EXECJS_RUNTIME=Node"
+      gemfile: mini_racer.gemfile
diff -pruN 6.7.6-1/vendor/autoprefixer.js 8.6.5+dfsg-2/vendor/autoprefixer.js
--- 6.7.6-1/vendor/autoprefixer.js	2017-03-12 19:08:11.000000000 +0000
+++ 8.6.5+dfsg-2/vendor/autoprefixer.js	1970-01-01 00:00:00.000000000 +0000
@@ -1,34995 +0,0 @@
-(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.autoprefixer = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
-(function() {
-  var add, backdropFilter, bckgrndImgOpts, boxdecorbreak, crispedges, cursorsGrab, cursorsNewer, decoration, devdaptation, elementFunction, feature, filterFunction, flexbox, fullscreen, gradients, grid, logicalProps, prefix, readOnly, resolution, result, sort, textAlignLast, textSizeAdjust, textSpacing, transforms3d, userSelectNone, writingMode,
-    slice = [].slice;
-
-  sort = function(array) {
-    return array.sort(function(a, b) {
-      var d;
-      a = a.split(' ');
-      b = b.split(' ');
-      if (a[0] > b[0]) {
-        return 1;
-      } else if (a[0] < b[0]) {
-        return -1;
-      } else {
-        d = parseFloat(a[1]) - parseFloat(b[1]);
-        if (d > 0) {
-          return 1;
-        } else if (d < 0) {
-          return -1;
-        } else {
-          return 0;
-        }
-      }
-    });
-  };
-
-  feature = function(data, opts, callback) {
-    var browser, match, need, ref, ref1, support, version, versions;
-    if (!callback) {
-      ref = [opts, {}], callback = ref[0], opts = ref[1];
-    }
-    match = opts.match || /\sx($|\s)/;
-    need = [];
-    ref1 = data.stats;
-    for (browser in ref1) {
-      versions = ref1[browser];
-      for (version in versions) {
-        support = versions[version];
-        if (support.match(match)) {
-          need.push(browser + ' ' + version);
-        }
-      }
-    }
-    return callback(sort(need));
-  };
-
-  result = {};
-
-  prefix = function() {
-    var data, i, j, k, len, name, names, results;
-    names = 2 <= arguments.length ? slice.call(arguments, 0, j = arguments.length - 1) : (j = 0, []), data = arguments[j++];
-    results = [];
-    for (k = 0, len = names.length; k < len; k++) {
-      name = names[k];
-      result[name] = {};
-      results.push((function() {
-        var results1;
-        results1 = [];
-        for (i in data) {
-          results1.push(result[name][i] = data[i]);
-        }
-        return results1;
-      })());
-    }
-    return results;
-  };
-
-  add = function() {
-    var data, j, k, len, name, names, results;
-    names = 2 <= arguments.length ? slice.call(arguments, 0, j = arguments.length - 1) : (j = 0, []), data = arguments[j++];
-    results = [];
-    for (k = 0, len = names.length; k < len; k++) {
-      name = names[k];
-      results.push(result[name].browsers = sort(result[name].browsers.concat(data.browsers)));
-    }
-    return results;
-  };
-
-  module.exports = result;
-
-  feature(require('caniuse-db/features-json/border-radius.json'), function(browsers) {
-    return prefix('border-radius', 'border-top-left-radius', 'border-top-right-radius', 'border-bottom-right-radius', 'border-bottom-left-radius', {
-      mistakes: ['-khtml-', '-ms-', '-o-'],
-      browsers: browsers,
-      feature: 'border-radius'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css-boxshadow.json'), function(browsers) {
-    return prefix('box-shadow', {
-      mistakes: ['-khtml-'],
-      browsers: browsers,
-      feature: 'css-boxshadow'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css-animation.json'), function(browsers) {
-    return prefix('animation', 'animation-name', 'animation-duration', 'animation-delay', 'animation-direction', 'animation-fill-mode', 'animation-iteration-count', 'animation-play-state', 'animation-timing-function', '@keyframes', {
-      mistakes: ['-khtml-', '-ms-'],
-      browsers: browsers,
-      feature: 'css-animation'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css-transitions.json'), function(browsers) {
-    return prefix('transition', 'transition-property', 'transition-duration', 'transition-delay', 'transition-timing-function', {
-      mistakes: ['-khtml-', '-ms-'],
-      browsers: browsers,
-      feature: 'css-transitions'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/transforms2d.json'), function(browsers) {
-    return prefix('transform', 'transform-origin', {
-      browsers: browsers,
-      feature: 'transforms2d'
-    });
-  });
-
-  transforms3d = require('caniuse-db/features-json/transforms3d.json');
-
-  feature(transforms3d, function(browsers) {
-    prefix('perspective', 'perspective-origin', {
-      browsers: browsers,
-      feature: 'transforms3d'
-    });
-    return prefix('transform-style', {
-      mistakes: ['-ms-', '-o-'],
-      browsers: browsers,
-      feature: 'transforms3d'
-    });
-  });
-
-  feature(transforms3d, {
-    match: /y\sx|y\s#2/
-  }, function(browsers) {
-    return prefix('backface-visibility', {
-      mistakes: ['-ms-', '-o-'],
-      browsers: browsers,
-      feature: 'transforms3d'
-    });
-  });
-
-  gradients = require('caniuse-db/features-json/css-gradients.json');
-
-  feature(gradients, {
-    match: /y\sx/
-  }, function(browsers) {
-    return prefix('linear-gradient', 'repeating-linear-gradient', 'radial-gradient', 'repeating-radial-gradient', {
-      props: ['background', 'background-image', 'border-image', 'mask', 'list-style', 'list-style-image', 'content', 'mask-image'],
-      mistakes: ['-ms-'],
-      browsers: browsers,
-      feature: 'css-gradients'
-    });
-  });
-
-  feature(gradients, {
-    match: /a\sx/
-  }, function(browsers) {
-    browsers = browsers.map(function(i) {
-      if (/op/.test(i)) {
-        return i;
-      } else {
-        return i + " old";
-      }
-    });
-    return add('linear-gradient', 'repeating-linear-gradient', 'radial-gradient', 'repeating-radial-gradient', {
-      browsers: browsers,
-      feature: 'css-gradients'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css3-boxsizing.json'), function(browsers) {
-    return prefix('box-sizing', {
-      browsers: browsers,
-      feature: 'css3-boxsizing'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css-filters.json'), function(browsers) {
-    return prefix('filter', {
-      browsers: browsers,
-      feature: 'css-filters'
-    });
-  });
-
-  filterFunction = require('caniuse-db/features-json/css-filter-function.json');
-
-  feature(filterFunction, function(browsers) {
-    return prefix('filter-function', {
-      props: ['background', 'background-image', 'border-image', 'mask', 'list-style', 'list-style-image', 'content', 'mask-image'],
-      browsers: browsers,
-      feature: 'css-filter-function'
-    });
-  });
-
-  backdropFilter = require('caniuse-db/features-json/css-backdrop-filter.json');
-
-  feature(backdropFilter, function(browsers) {
-    return prefix('backdrop-filter', {
-      browsers: browsers,
-      feature: 'css-backdrop-filter'
-    });
-  });
-
-  elementFunction = require('caniuse-db/features-json/css-element-function.json');
-
-  feature(elementFunction, function(browsers) {
-    return prefix('element', {
-      props: ['background', 'background-image', 'border-image', 'mask', 'list-style', 'list-style-image', 'content', 'mask-image'],
-      browsers: browsers,
-      feature: 'css-element-function'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/multicolumn.json'), function(browsers) {
-    prefix('columns', 'column-width', 'column-gap', 'column-rule', 'column-rule-color', 'column-rule-width', {
-      browsers: browsers,
-      feature: 'multicolumn'
-    });
-    return prefix('column-count', 'column-rule-style', 'column-span', 'column-fill', 'break-before', 'break-after', 'break-inside', {
-      browsers: browsers,
-      feature: 'multicolumn'
-    });
-  });
-
-  userSelectNone = require('caniuse-db/features-json/user-select-none.json');
-
-  feature(userSelectNone, function(browsers) {
-    return prefix('user-select', {
-      mistakes: ['-khtml-'],
-      browsers: browsers,
-      feature: 'user-select-none'
-    });
-  });
-
-  flexbox = require('caniuse-db/features-json/flexbox.json');
-
-  feature(flexbox, {
-    match: /a\sx/
-  }, function(browsers) {
-    browsers = browsers.map(function(i) {
-      if (/ie|firefox/.test(i)) {
-        return i;
-      } else {
-        return i + " 2009";
-      }
-    });
-    prefix('display-flex', 'inline-flex', {
-      props: ['display'],
-      browsers: browsers,
-      feature: 'flexbox'
-    });
-    prefix('flex', 'flex-grow', 'flex-shrink', 'flex-basis', {
-      browsers: browsers,
-      feature: 'flexbox'
-    });
-    return prefix('flex-direction', 'flex-wrap', 'flex-flow', 'justify-content', 'order', 'align-items', 'align-self', 'align-content', {
-      browsers: browsers,
-      feature: 'flexbox'
-    });
-  });
-
-  feature(flexbox, {
-    match: /y\sx/
-  }, function(browsers) {
-    add('display-flex', 'inline-flex', {
-      browsers: browsers,
-      feature: 'flexbox'
-    });
-    add('flex', 'flex-grow', 'flex-shrink', 'flex-basis', {
-      browsers: browsers,
-      feature: 'flexbox'
-    });
-    return add('flex-direction', 'flex-wrap', 'flex-flow', 'justify-content', 'order', 'align-items', 'align-self', 'align-content', {
-      browsers: browsers,
-      feature: 'flexbox'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/calc.json'), function(browsers) {
-    return prefix('calc', {
-      props: ['*'],
-      browsers: browsers,
-      feature: 'calc'
-    });
-  });
-
-  bckgrndImgOpts = require('caniuse-db/features-json/background-img-opts.json');
-
-  feature(bckgrndImgOpts, function(browsers) {
-    return prefix('background-clip', 'background-origin', 'background-size', {
-      browsers: browsers,
-      feature: 'background-img-opts'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/font-feature.json'), function(browsers) {
-    return prefix('font-feature-settings', 'font-variant-ligatures', 'font-language-override', {
-      browsers: browsers,
-      feature: 'font-feature'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/font-kerning.json'), function(browsers) {
-    return prefix('font-kerning', {
-      browsers: browsers,
-      feature: 'font-kerning'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/border-image.json'), function(browsers) {
-    return prefix('border-image', {
-      browsers: browsers,
-      feature: 'border-image'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css-selection.json'), function(browsers) {
-    return prefix('::selection', {
-      selector: true,
-      browsers: browsers,
-      feature: 'css-selection'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css-placeholder.json'), function(browsers) {
-    browsers = browsers.map(function(i) {
-      var name, ref, version;
-      ref = i.split(' '), name = ref[0], version = ref[1];
-      if (name === 'firefox' && parseFloat(version) <= 18) {
-        return i + ' old';
-      } else {
-        return i;
-      }
-    });
-    return prefix('::placeholder', {
-      selector: true,
-      browsers: browsers,
-      feature: 'css-placeholder'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css-hyphens.json'), function(browsers) {
-    return prefix('hyphens', {
-      browsers: browsers,
-      feature: 'css-hyphens'
-    });
-  });
-
-  fullscreen = require('caniuse-db/features-json/fullscreen.json');
-
-  feature(fullscreen, function(browsers) {
-    return prefix(':fullscreen', {
-      selector: true,
-      browsers: browsers,
-      feature: 'fullscreen'
-    });
-  });
-
-  feature(fullscreen, {
-    match: /x(\s#2|$)/
-  }, function(browsers) {
-    return prefix('::backdrop', {
-      selector: true,
-      browsers: browsers,
-      feature: 'fullscreen'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css3-tabsize.json'), function(browsers) {
-    return prefix('tab-size', {
-      browsers: browsers,
-      feature: 'css3-tabsize'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/intrinsic-width.json'), function(browsers) {
-    return prefix('max-content', 'min-content', 'fit-content', 'fill', 'fill-available', 'stretch', {
-      props: ['width', 'min-width', 'max-width', 'height', 'min-height', 'max-height', 'inline-size', 'min-inline-size', 'max-inline-size', 'block-size', 'min-block-size', 'max-block-size'],
-      browsers: browsers,
-      feature: 'intrinsic-width'
-    });
-  });
-
-  cursorsNewer = require('caniuse-db/features-json/css3-cursors-newer.json');
-
-  feature(cursorsNewer, function(browsers) {
-    return prefix('zoom-in', 'zoom-out', {
-      props: ['cursor'],
-      browsers: browsers,
-      feature: 'css3-cursors-newer'
-    });
-  });
-
-  cursorsGrab = require('caniuse-db/features-json/css3-cursors-grab.json');
-
-  feature(cursorsGrab, function(browsers) {
-    return prefix('grab', 'grabbing', {
-      props: ['cursor'],
-      browsers: browsers,
-      feature: 'css3-cursors-grab'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css-sticky.json'), function(browsers) {
-    return prefix('sticky', {
-      props: ['position'],
-      browsers: browsers,
-      feature: 'css-sticky'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/pointer.json'), function(browsers) {
-    return prefix('touch-action', {
-      browsers: browsers,
-      feature: 'pointer'
-    });
-  });
-
-  decoration = require('caniuse-db/features-json/text-decoration.json');
-
-  feature(decoration, function(browsers) {
-    return prefix('text-decoration-style', 'text-decoration-color', 'text-decoration-line', {
-      browsers: browsers,
-      feature: 'text-decoration'
-    });
-  });
-
-  feature(decoration, {
-    match: /x.*#[23]/
-  }, function(browsers) {
-    return prefix('text-decoration-skip', {
-      browsers: browsers,
-      feature: 'text-decoration'
-    });
-  });
-
-  textSizeAdjust = require('caniuse-db/features-json/text-size-adjust.json');
-
-  feature(textSizeAdjust, function(browsers) {
-    return prefix('text-size-adjust', {
-      browsers: browsers,
-      feature: 'text-size-adjust'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css-masks.json'), function(browsers) {
-    prefix('mask-clip', 'mask-composite', 'mask-image', 'mask-origin', 'mask-repeat', 'mask-border-repeat', 'mask-border-source', {
-      browsers: browsers,
-      feature: 'css-masks'
-    });
-    return prefix('mask', 'mask-position', 'mask-size', 'mask-border', 'mask-border-outset', 'mask-border-width', 'mask-border-slice', {
-      browsers: browsers,
-      feature: 'css-masks'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css-clip-path.json'), function(browsers) {
-    return prefix('clip-path', {
-      browsers: browsers,
-      feature: 'css-clip-path'
-    });
-  });
-
-  boxdecorbreak = require('caniuse-db/features-json/css-boxdecorationbreak.json');
-
-  feature(boxdecorbreak, function(browsers) {
-    return prefix('box-decoration-break', {
-      browsers: browsers,
-      feature: 'css-boxdecorationbreak'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/object-fit.json'), function(browsers) {
-    return prefix('object-fit', 'object-position', {
-      browsers: browsers,
-      feature: 'object-fit'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css-shapes.json'), function(browsers) {
-    return prefix('shape-margin', 'shape-outside', 'shape-image-threshold', {
-      browsers: browsers,
-      feature: 'css-shapes'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/text-overflow.json'), function(browsers) {
-    return prefix('text-overflow', {
-      browsers: browsers,
-      feature: 'text-overflow'
-    });
-  });
-
-  devdaptation = require('caniuse-db/features-json/css-deviceadaptation.json');
-
-  feature(devdaptation, function(browsers) {
-    return prefix('@viewport', {
-      browsers: browsers,
-      feature: 'css-deviceadaptation'
-    });
-  });
-
-  resolution = require('caniuse-db/features-json/css-media-resolution.json');
-
-  feature(resolution, {
-    match: /( x($| )|a #3)/
-  }, function(browsers) {
-    return prefix('@resolution', {
-      browsers: browsers,
-      feature: 'css-media-resolution'
-    });
-  });
-
-  textAlignLast = require('caniuse-db/features-json/css-text-align-last.json');
-
-  feature(textAlignLast, function(browsers) {
-    return prefix('text-align-last', {
-      browsers: browsers,
-      feature: 'css-text-align-last'
-    });
-  });
-
-  crispedges = require('caniuse-db/features-json/css-crisp-edges.json');
-
-  feature(crispedges, {
-    match: /y x|a x #1/
-  }, function(browsers) {
-    return prefix('pixelated', {
-      props: ['image-rendering'],
-      browsers: browsers,
-      feature: 'css-crisp-edges'
-    });
-  });
-
-  feature(crispedges, {
-    match: /a x #2/
-  }, function(browsers) {
-    return prefix('image-rendering', {
-      browsers: browsers,
-      feature: 'css-crisp-edges'
-    });
-  });
-
-  logicalProps = require('caniuse-db/features-json/css-logical-props.json');
-
-  feature(logicalProps, function(browsers) {
-    return prefix('border-inline-start', 'border-inline-end', 'margin-inline-start', 'margin-inline-end', 'padding-inline-start', 'padding-inline-end', {
-      browsers: browsers,
-      feature: 'css-logical-props'
-    });
-  });
-
-  feature(logicalProps, {
-    match: /x\s#2/
-  }, function(browsers) {
-    return prefix('border-block-start', 'border-block-end', 'margin-block-start', 'margin-block-end', 'padding-block-start', 'padding-block-end', {
-      browsers: browsers,
-      feature: 'css-logical-props'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css-appearance.json'), function(browsers) {
-    return prefix('appearance', {
-      browsers: browsers,
-      feature: 'css-appearance'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css-snappoints.json'), function(browsers) {
-    return prefix('scroll-snap-type', 'scroll-snap-coordinate', 'scroll-snap-destination', 'scroll-snap-points-x', 'scroll-snap-points-y', {
-      browsers: browsers,
-      feature: 'css-snappoints'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css-regions.json'), function(browsers) {
-    return prefix('flow-into', 'flow-from', 'region-fragment', {
-      browsers: browsers,
-      feature: 'css-regions'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css-image-set.json'), function(browsers) {
-    return prefix('image-set', {
-      props: ['background', 'background-image', 'border-image', 'mask', 'list-style', 'list-style-image', 'content', 'mask-image'],
-      browsers: browsers,
-      feature: 'css-image-set'
-    });
-  });
-
-  writingMode = require('caniuse-db/features-json/css-writing-mode.json');
-
-  feature(writingMode, {
-    match: /a|x/
-  }, function(browsers) {
-    return prefix('writing-mode', {
-      browsers: browsers,
-      feature: 'css-writing-mode'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css-cross-fade.json'), function(browsers) {
-    return prefix('cross-fade', {
-      props: ['background', 'background-image', 'border-image', 'mask', 'list-style', 'list-style-image', 'content', 'mask-image'],
-      browsers: browsers,
-      feature: 'css-cross-fade'
-    });
-  });
-
-  readOnly = require('caniuse-db/features-json/css-read-only-write.json');
-
-  feature(readOnly, function(browsers) {
-    return prefix(':read-only', ':read-write', {
-      selector: true,
-      browsers: browsers,
-      feature: 'css-read-only-write'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/text-emphasis.json'), function(browsers) {
-    return prefix('text-emphasis', 'text-emphasis-position', 'text-emphasis-style', 'text-emphasis-color', {
-      browsers: browsers,
-      feature: 'text-emphasis'
-    });
-  });
-
-  grid = require('caniuse-db/features-json/css-grid.json');
-
-  feature(grid, function(browsers) {
-    prefix('display-grid', 'inline-grid', {
-      props: ['display'],
-      browsers: browsers,
-      feature: 'css-grid'
-    });
-    return prefix('grid-template-columns', 'grid-template-rows', 'grid-row-start', 'grid-column-start', 'grid-row-end', 'grid-column-end', 'grid-row', 'grid-column', {
-      browsers: browsers,
-      feature: 'css-grid'
-    });
-  });
-
-  feature(grid, {
-    match: /a x/
-  }, function(browsers) {
-    return prefix('justify-items', 'grid-row-align', {
-      browsers: browsers,
-      feature: 'css-grid'
-    });
-  });
-
-  textSpacing = require('caniuse-db/features-json/css-text-spacing.json');
-
-  feature(textSpacing, function(browsers) {
-    return prefix('text-spacing', {
-      browsers: browsers,
-      feature: 'css-text-spacing'
-    });
-  });
-
-  feature(require('caniuse-db/features-json/css-any-link.json'), function(browsers) {
-    return prefix(':any-link', {
-      selector: true,
-      browsers: browsers,
-      feature: 'css-any-link'
-    });
-  });
-
-}).call(this);
-
-},{"caniuse-db/features-json/background-img-opts.json":68,"caniuse-db/features-json/border-image.json":69,"caniuse-db/features-json/border-radius.json":70,"caniuse-db/features-json/calc.json":71,"caniuse-db/features-json/css-animation.json":72,"caniuse-db/features-json/css-any-link.json":73,"caniuse-db/features-json/css-appearance.json":74,"caniuse-db/features-json/css-backdrop-filter.json":75,"caniuse-db/features-json/css-boxdecorationbreak.json":76,"caniuse-db/features-json/css-boxshadow.json":77,"caniuse-db/features-json/css-clip-path.json":78,"caniuse-db/features-json/css-crisp-edges.json":79,"caniuse-db/features-json/css-cross-fade.json":80,"caniuse-db/features-json/css-deviceadaptation.json":81,"caniuse-db/features-json/css-element-function.json":82,"caniuse-db/features-json/css-filter-function.json":84,"caniuse-db/features-json/css-filters.json":85,"caniuse-db/features-json/css-gradients.json":86,"caniuse-db/features-json/css-grid.json":87,"caniuse-db/features-json/css-hyphens.json":88,"caniuse-db/features-json/css-image-set.json":89,"caniuse-db/features-json/css-logical-props.json":90,"caniuse-db/features-json/css-masks.json":91,"caniuse-db/features-json/css-media-resolution.json":92,"caniuse-db/features-json/css-placeholder.json":93,"caniuse-db/features-json/css-read-only-write.json":94,"caniuse-db/features-json/css-regions.json":95,"caniuse-db/features-json/css-selection.json":96,"caniuse-db/features-json/css-shapes.json":97,"caniuse-db/features-json/css-snappoints.json":98,"caniuse-db/features-json/css-sticky.json":99,"caniuse-db/features-json/css-text-align-last.json":100,"caniuse-db/features-json/css-text-spacing.json":101,"caniuse-db/features-json/css-transitions.json":102,"caniuse-db/features-json/css-writing-mode.json":103,"caniuse-db/features-json/css3-boxsizing.json":104,"caniuse-db/features-json/css3-cursors-grab.json":105,"caniuse-db/features-json/css3-cursors-newer.json":106,"caniuse-db/features-json/css3-tabsize.json":107,"caniuse-db/features-json/flexbox.json":108,"caniuse-db/features-json/font-feature.json":109,"caniuse-db/features-json/font-kerning.json":110,"caniuse-db/features-json/fullscreen.json":111,"caniuse-db/features-json/intrinsic-width.json":112,"caniuse-db/features-json/multicolumn.json":113,"caniuse-db/features-json/object-fit.json":114,"caniuse-db/features-json/pointer.json":115,"caniuse-db/features-json/text-decoration.json":116,"caniuse-db/features-json/text-emphasis.json":117,"caniuse-db/features-json/text-overflow.json":118,"caniuse-db/features-json/text-size-adjust.json":119,"caniuse-db/features-json/transforms2d.json":120,"caniuse-db/features-json/transforms3d.json":121,"caniuse-db/features-json/user-select-none.json":122}],2:[function(require,module,exports){
-(function() {
-  var AtRule, Prefixer,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Prefixer = require('./prefixer');
-
-  AtRule = (function(superClass) {
-    extend(AtRule, superClass);
-
-    function AtRule() {
-      return AtRule.__super__.constructor.apply(this, arguments);
-    }
-
-    AtRule.prototype.add = function(rule, prefix) {
-      var already, cloned, prefixed;
-      prefixed = prefix + rule.name;
-      already = rule.parent.some(function(i) {
-        return i.name === prefixed && i.params === rule.params;
-      });
-      if (already) {
-        return;
-      }
-      cloned = this.clone(rule, {
-        name: prefixed
-      });
-      return rule.parent.insertBefore(rule, cloned);
-    };
-
-    AtRule.prototype.process = function(node) {
-      var j, len, parent, prefix, ref, results;
-      parent = this.parentPrefix(node);
-      ref = this.prefixes;
-      results = [];
-      for (j = 0, len = ref.length; j < len; j++) {
-        prefix = ref[j];
-        if (parent && parent !== prefix) {
-          continue;
-        }
-        results.push(this.add(node, prefix));
-      }
-      return results;
-    };
-
-    return AtRule;
-
-  })(Prefixer);
-
-  module.exports = AtRule;
-
-}).call(this);
-
-},{"./prefixer":51}],3:[function(require,module,exports){
-(function() {
-  var Browsers, Prefixes, browserslist, cache, isPlainObject, postcss, timeCapsule,
-    slice = [].slice;
-
-  browserslist = require('browserslist');
-
-  postcss = require('postcss');
-
-  Browsers = require('./browsers');
-
-  Prefixes = require('./prefixes');
-
-  isPlainObject = function(obj) {
-    return Object.prototype.toString.apply(obj) === '[object Object]';
-  };
-
-  cache = {};
-
-  timeCapsule = function(result, prefixes) {
-    if (prefixes.browsers.selected.length === 0) {
-      return;
-    }
-    if (prefixes.add.selectors.length > 0) {
-      return;
-    }
-    if (Object.keys(prefixes.add).length > 2) {
-      return;
-    }
-    return result.warn('Greetings, time traveller. ' + 'We are in the golden age of prefix-less CSS, ' + 'where Autoprefixer is no longer needed for your stylesheet.');
-  };
-
-  module.exports = postcss.plugin('autoprefixer', function() {
-    var loadPrefixes, options, plugin, reqs;
-    reqs = 1 <= arguments.length ? slice.call(arguments, 0) : [];
-    if (reqs.length === 1 && isPlainObject(reqs[0])) {
-      options = reqs[0];
-      reqs = void 0;
-    } else if (reqs.length === 0 || (reqs.length === 1 && (reqs[0] == null))) {
-      reqs = void 0;
-    } else if (reqs.length <= 2 && (reqs[0] instanceof Array || (reqs[0] == null))) {
-      options = reqs[1];
-      reqs = reqs[0];
-    } else if (typeof reqs[reqs.length - 1] === 'object') {
-      options = reqs.pop();
-    }
-    options || (options = {});
-    if (options.browser) {
-      throw new Error('Change `browser` option to `browsers` in Autoprefixer');
-    }
-    if (options.browsers != null) {
-      reqs = options.browsers;
-    }
-    loadPrefixes = function(opts) {
-      var browsers, key, stats;
-      stats = options.stats;
-      browsers = new Browsers(module.exports.data.browsers, reqs, opts, stats);
-      key = browsers.selected.join(', ') + JSON.stringify(options);
-      return cache[key] || (cache[key] = new Prefixes(module.exports.data.prefixes, browsers, options));
-    };
-    plugin = function(css, result) {
-      var prefixes, ref;
-      prefixes = loadPrefixes({
-        from: (ref = css.source) != null ? ref.input.file : void 0,
-        env: options.env
-      });
-      timeCapsule(result, prefixes);
-      if (options.remove !== false) {
-        prefixes.processor.remove(css);
-      }
-      if (options.add !== false) {
-        return prefixes.processor.add(css, result);
-      }
-    };
-    plugin.options = options;
-    plugin.info = function(opts) {
-      return require('./info')(loadPrefixes(opts));
-    };
-    return plugin;
-  });
-
-  module.exports.data = {
-    browsers: require('caniuse-db/data.json').agents,
-    prefixes: require('../data/prefixes')
-  };
-
-  module.exports.defaults = browserslist.defaults;
-
-  module.exports.info = function() {
-    return module.exports().info();
-  };
-
-}).call(this);
-
-},{"../data/prefixes":1,"./browsers":5,"./info":48,"./prefixes":52,"browserslist":65,"caniuse-db/data.json":67,"postcss":150}],4:[function(require,module,exports){
-(function() {
-  var brackets, last;
-
-  last = function(array) {
-    return array[array.length - 1];
-  };
-
-  brackets = {
-    parse: function(str) {
-      var current, j, len, stack, sym;
-      current = [''];
-      stack = [current];
-      for (j = 0, len = str.length; j < len; j++) {
-        sym = str[j];
-        if (sym === '(') {
-          current = [''];
-          last(stack).push(current);
-          stack.push(current);
-        } else if (sym === ')') {
-          stack.pop();
-          current = last(stack);
-          current.push('');
-        } else {
-          current[current.length - 1] += sym;
-        }
-      }
-      return stack[0];
-    },
-    stringify: function(ast) {
-      var i, j, len, result;
-      result = '';
-      for (j = 0, len = ast.length; j < len; j++) {
-        i = ast[j];
-        if (typeof i === 'object') {
-          result += '(' + brackets.stringify(i) + ')';
-        } else {
-          result += i;
-        }
-      }
-      return result;
-    }
-  };
-
-  module.exports = brackets;
-
-}).call(this);
-
-},{}],5:[function(require,module,exports){
-(function() {
-  var Browsers, browserslist, utils;
-
-  browserslist = require('browserslist');
-
-  utils = require('./utils');
-
-  Browsers = (function() {
-    Browsers.prefixes = function() {
-      var data, i, name;
-      if (this.prefixesCache) {
-        return this.prefixesCache;
-      }
-      data = require('caniuse-db/data.json').agents;
-      return this.prefixesCache = utils.uniq((function() {
-        var results;
-        results = [];
-        for (name in data) {
-          i = data[name];
-          results.push("-" + i.prefix + "-");
-        }
-        return results;
-      })()).sort(function(a, b) {
-        return b.length - a.length;
-      });
-    };
-
-    Browsers.withPrefix = function(value) {
-      if (!this.prefixesRegexp) {
-        this.prefixesRegexp = RegExp("" + (this.prefixes().join('|')));
-      }
-      return this.prefixesRegexp.test(value);
-    };
-
-    function Browsers(data1, requirements, options, stats) {
-      this.data = data1;
-      this.options = options;
-      this.stats = stats;
-      this.selected = this.parse(requirements);
-    }
-
-    Browsers.prototype.parse = function(requirements) {
-      var ref, ref1;
-      return browserslist(requirements, {
-        stats: this.stats,
-        path: (ref = this.options) != null ? ref.from : void 0,
-        env: (ref1 = this.options) != null ? ref1.env : void 0
-      });
-    };
-
-    Browsers.prototype.browsers = function(criteria) {
-      var browser, data, ref, selected, versions;
-      selected = [];
-      ref = this.data;
-      for (browser in ref) {
-        data = ref[browser];
-        versions = criteria(data).map(function(version) {
-          return browser + " " + version;
-        });
-        selected = selected.concat(versions);
-      }
-      return selected;
-    };
-
-    Browsers.prototype.prefix = function(browser) {
-      var data, name, prefix, ref, version;
-      ref = browser.split(' '), name = ref[0], version = ref[1];
-      data = this.data[name];
-      if (data.prefix_exceptions) {
-        prefix = data.prefix_exceptions[version];
-      }
-      prefix || (prefix = data.prefix);
-      return '-' + prefix + '-';
-    };
-
-    Browsers.prototype.isSelected = function(browser) {
-      return this.selected.indexOf(browser) !== -1;
-    };
-
-    return Browsers;
-
-  })();
-
-  module.exports = Browsers;
-
-}).call(this);
-
-},{"./utils":58,"browserslist":65,"caniuse-db/data.json":67}],6:[function(require,module,exports){
-(function() {
-  var Browsers, Declaration, Prefixer, utils,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Prefixer = require('./prefixer');
-
-  Browsers = require('./browsers');
-
-  utils = require('./utils');
-
-  Declaration = (function(superClass) {
-    extend(Declaration, superClass);
-
-    function Declaration() {
-      return Declaration.__super__.constructor.apply(this, arguments);
-    }
-
-    Declaration.prototype.check = function(decl) {
-      return true;
-    };
-
-    Declaration.prototype.prefixed = function(prop, prefix) {
-      return prefix + prop;
-    };
-
-    Declaration.prototype.normalize = function(prop) {
-      return prop;
-    };
-
-    Declaration.prototype.otherPrefixes = function(value, prefix) {
-      var j, len, other, ref;
-      ref = Browsers.prefixes();
-      for (j = 0, len = ref.length; j < len; j++) {
-        other = ref[j];
-        if (other === prefix) {
-          continue;
-        }
-        if (value.indexOf(other) !== -1) {
-          return true;
-        }
-      }
-      return false;
-    };
-
-    Declaration.prototype.set = function(decl, prefix) {
-      decl.prop = this.prefixed(decl.prop, prefix);
-      return decl;
-    };
-
-    Declaration.prototype.needCascade = function(decl) {
-      return decl._autoprefixerCascade || (decl._autoprefixerCascade = this.all.options.cascade !== false && decl.raw('before').indexOf('\n') !== -1);
-    };
-
-    Declaration.prototype.maxPrefixed = function(prefixes, decl) {
-      var j, len, max, prefix;
-      if (decl._autoprefixerMax) {
-        return decl._autoprefixerMax;
-      }
-      max = 0;
-      for (j = 0, len = prefixes.length; j < len; j++) {
-        prefix = prefixes[j];
-        prefix = utils.removeNote(prefix);
-        if (prefix.length > max) {
-          max = prefix.length;
-        }
-      }
-      return decl._autoprefixerMax = max;
-    };
-
-    Declaration.prototype.calcBefore = function(prefixes, decl, prefix) {
-      var before, diff, i, j, max, ref;
-      if (prefix == null) {
-        prefix = '';
-      }
-      before = decl.raw('before');
-      max = this.maxPrefixed(prefixes, decl);
-      diff = max - utils.removeNote(prefix).length;
-      for (i = j = 0, ref = diff; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {
-        before += ' ';
-      }
-      return before;
-    };
-
-    Declaration.prototype.restoreBefore = function(decl) {
-      var lines, min;
-      lines = decl.raw('before').split("\n");
-      min = lines[lines.length - 1];
-      this.all.group(decl).up(function(prefixed) {
-        var array, last;
-        array = prefixed.raw('before').split("\n");
-        last = array[array.length - 1];
-        if (last.length < min.length) {
-          return min = last;
-        }
-      });
-      lines[lines.length - 1] = min;
-      return decl.raws.before = lines.join("\n");
-    };
-
-    Declaration.prototype.insert = function(decl, prefix, prefixes) {
-      var already, cloned;
-      cloned = this.set(this.clone(decl), prefix);
-      if (!cloned) {
-        return;
-      }
-      already = decl.parent.some(function(i) {
-        return i.prop === cloned.prop && i.value === cloned.value;
-      });
-      if (already) {
-        return;
-      }
-      if (this.needCascade(decl)) {
-        cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
-      }
-      return decl.parent.insertBefore(decl, cloned);
-    };
-
-    Declaration.prototype.isAlready = function(decl, prefixed) {
-      var already;
-      already = this.all.group(decl).up(function(i) {
-        return i.prop === prefixed;
-      });
-      already || (already = this.all.group(decl).down(function(i) {
-        return i.prop === prefixed;
-      }));
-      return already;
-    };
-
-    Declaration.prototype.add = function(decl, prefix, prefixes) {
-      var prefixed;
-      prefixed = this.prefixed(decl.prop, prefix);
-      if (this.isAlready(decl, prefixed) || this.otherPrefixes(decl.value, prefix)) {
-        return;
-      }
-      return this.insert(decl, prefix, prefixes);
-    };
-
-    Declaration.prototype.process = function(decl) {
-      var prefixes;
-      if (this.needCascade(decl)) {
-        prefixes = Declaration.__super__.process.apply(this, arguments);
-        if (prefixes != null ? prefixes.length : void 0) {
-          this.restoreBefore(decl);
-          return decl.raws.before = this.calcBefore(prefixes, decl);
-        }
-      } else {
-        return Declaration.__super__.process.apply(this, arguments);
-      }
-    };
-
-    Declaration.prototype.old = function(prop, prefix) {
-      return [this.prefixed(prop, prefix)];
-    };
-
-    return Declaration;
-
-  })(Prefixer);
-
-  module.exports = Declaration;
-
-}).call(this);
-
-},{"./browsers":5,"./prefixer":51,"./utils":58}],7:[function(require,module,exports){
-(function() {
-  var AlignContent, Declaration, flexSpec,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  flexSpec = require('./flex-spec');
-
-  Declaration = require('../declaration');
-
-  AlignContent = (function(superClass) {
-    extend(AlignContent, superClass);
-
-    function AlignContent() {
-      return AlignContent.__super__.constructor.apply(this, arguments);
-    }
-
-    AlignContent.names = ['align-content', 'flex-line-pack'];
-
-    AlignContent.oldValues = {
-      'flex-end': 'end',
-      'flex-start': 'start',
-      'space-between': 'justify',
-      'space-around': 'distribute'
-    };
-
-    AlignContent.prototype.prefixed = function(prop, prefix) {
-      var ref, spec;
-      ref = flexSpec(prefix), spec = ref[0], prefix = ref[1];
-      if (spec === 2012) {
-        return prefix + 'flex-line-pack';
-      } else {
-        return AlignContent.__super__.prefixed.apply(this, arguments);
-      }
-    };
-
-    AlignContent.prototype.normalize = function(prop) {
-      return 'align-content';
-    };
-
-    AlignContent.prototype.set = function(decl, prefix) {
-      var spec;
-      spec = flexSpec(prefix)[0];
-      if (spec === 2012) {
-        decl.value = AlignContent.oldValues[decl.value] || decl.value;
-        return AlignContent.__super__.set.call(this, decl, prefix);
-      } else if (spec === 'final') {
-        return AlignContent.__super__.set.apply(this, arguments);
-      }
-    };
-
-    return AlignContent;
-
-  })(Declaration);
-
-  module.exports = AlignContent;
-
-}).call(this);
-
-},{"../declaration":6,"./flex-spec":25}],8:[function(require,module,exports){
-(function() {
-  var AlignItems, Declaration, flexSpec,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  flexSpec = require('./flex-spec');
-
-  Declaration = require('../declaration');
-
-  AlignItems = (function(superClass) {
-    extend(AlignItems, superClass);
-
-    function AlignItems() {
-      return AlignItems.__super__.constructor.apply(this, arguments);
-    }
-
-    AlignItems.names = ['align-items', 'flex-align', 'box-align'];
-
-    AlignItems.oldValues = {
-      'flex-end': 'end',
-      'flex-start': 'start'
-    };
-
-    AlignItems.prototype.prefixed = function(prop, prefix) {
-      var ref, spec;
-      ref = flexSpec(prefix), spec = ref[0], prefix = ref[1];
-      if (spec === 2009) {
-        return prefix + 'box-align';
-      } else if (spec === 2012) {
-        return prefix + 'flex-align';
-      } else {
-        return AlignItems.__super__.prefixed.apply(this, arguments);
-      }
-    };
-
-    AlignItems.prototype.normalize = function(prop) {
-      return 'align-items';
-    };
-
-    AlignItems.prototype.set = function(decl, prefix) {
-      var spec;
-      spec = flexSpec(prefix)[0];
-      if (spec === 2009 || spec === 2012) {
-        decl.value = AlignItems.oldValues[decl.value] || decl.value;
-        return AlignItems.__super__.set.call(this, decl, prefix);
-      } else {
-        return AlignItems.__super__.set.apply(this, arguments);
-      }
-    };
-
-    return AlignItems;
-
-  })(Declaration);
-
-  module.exports = AlignItems;
-
-}).call(this);
-
-},{"../declaration":6,"./flex-spec":25}],9:[function(require,module,exports){
-(function() {
-  var AlignSelf, Declaration, flexSpec,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  flexSpec = require('./flex-spec');
-
-  Declaration = require('../declaration');
-
-  AlignSelf = (function(superClass) {
-    extend(AlignSelf, superClass);
-
-    function AlignSelf() {
-      return AlignSelf.__super__.constructor.apply(this, arguments);
-    }
-
-    AlignSelf.names = ['align-self', 'flex-item-align'];
-
-    AlignSelf.oldValues = {
-      'flex-end': 'end',
-      'flex-start': 'start'
-    };
-
-    AlignSelf.prototype.prefixed = function(prop, prefix) {
-      var ref, spec;
-      ref = flexSpec(prefix), spec = ref[0], prefix = ref[1];
-      if (spec === 2012) {
-        return prefix + 'flex-item-align';
-      } else {
-        return AlignSelf.__super__.prefixed.apply(this, arguments);
-      }
-    };
-
-    AlignSelf.prototype.normalize = function(prop) {
-      return 'align-self';
-    };
-
-    AlignSelf.prototype.set = function(decl, prefix) {
-      var spec;
-      spec = flexSpec(prefix)[0];
-      if (spec === 2012) {
-        decl.value = AlignSelf.oldValues[decl.value] || decl.value;
-        return AlignSelf.__super__.set.call(this, decl, prefix);
-      } else if (spec === 'final') {
-        return AlignSelf.__super__.set.apply(this, arguments);
-      }
-    };
-
-    return AlignSelf;
-
-  })(Declaration);
-
-  module.exports = AlignSelf;
-
-}).call(this);
-
-},{"../declaration":6,"./flex-spec":25}],10:[function(require,module,exports){
-(function() {
-  var BackgroundSize, Declaration,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Declaration = require('../declaration');
-
-  BackgroundSize = (function(superClass) {
-    extend(BackgroundSize, superClass);
-
-    function BackgroundSize() {
-      return BackgroundSize.__super__.constructor.apply(this, arguments);
-    }
-
-    BackgroundSize.names = ['background-size'];
-
-    BackgroundSize.prototype.set = function(decl, prefix) {
-      var value;
-      value = decl.value.toLowerCase();
-      if (prefix === '-webkit-' && value.indexOf(' ') === -1 && value !== 'contain' && value !== 'cover') {
-        decl.value = decl.value + ' ' + decl.value;
-      }
-      return BackgroundSize.__super__.set.call(this, decl, prefix);
-    };
-
-    return BackgroundSize;
-
-  })(Declaration);
-
-  module.exports = BackgroundSize;
-
-}).call(this);
-
-},{"../declaration":6}],11:[function(require,module,exports){
-(function() {
-  var BlockLogical, Declaration,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Declaration = require('../declaration');
-
-  BlockLogical = (function(superClass) {
-    extend(BlockLogical, superClass);
-
-    function BlockLogical() {
-      return BlockLogical.__super__.constructor.apply(this, arguments);
-    }
-
-    BlockLogical.names = ['border-block-start', 'border-block-end', 'margin-block-start', 'margin-block-end', 'padding-block-start', 'padding-block-end', 'border-before', 'border-after', 'margin-before', 'margin-after', 'padding-before', 'padding-after'];
-
-    BlockLogical.prototype.prefixed = function(prop, prefix) {
-      return prefix + (prop.indexOf('-start') !== -1 ? prop.replace('-block-start', '-before') : prop.replace('-block-end', '-after'));
-    };
-
-    BlockLogical.prototype.normalize = function(prop) {
-      if (prop.indexOf('-before') !== -1) {
-        return prop.replace('-before', '-block-start');
-      } else {
-        return prop.replace('-after', '-block-end');
-      }
-    };
-
-    return BlockLogical;
-
-  })(Declaration);
-
-  module.exports = BlockLogical;
-
-}).call(this);
-
-},{"../declaration":6}],12:[function(require,module,exports){
-(function() {
-  var BorderImage, Declaration,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Declaration = require('../declaration');
-
-  BorderImage = (function(superClass) {
-    extend(BorderImage, superClass);
-
-    function BorderImage() {
-      return BorderImage.__super__.constructor.apply(this, arguments);
-    }
-
-    BorderImage.names = ['border-image'];
-
-    BorderImage.prototype.set = function(decl, prefix) {
-      decl.value = decl.value.replace(/\s+fill(\s)/, '$1');
-      return BorderImage.__super__.set.call(this, decl, prefix);
-    };
-
-    return BorderImage;
-
-  })(Declaration);
-
-  module.exports = BorderImage;
-
-}).call(this);
-
-},{"../declaration":6}],13:[function(require,module,exports){
-(function() {
-  var BorderRadius, Declaration,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Declaration = require('../declaration');
-
-  BorderRadius = (function(superClass) {
-    var hor, i, j, len, len1, mozilla, normal, ref, ref1, ver;
-
-    extend(BorderRadius, superClass);
-
-    function BorderRadius() {
-      return BorderRadius.__super__.constructor.apply(this, arguments);
-    }
-
-    BorderRadius.names = ['border-radius'];
-
-    BorderRadius.toMozilla = {};
-
-    BorderRadius.toNormal = {};
-
-    ref = ['top', 'bottom'];
-    for (i = 0, len = ref.length; i < len; i++) {
-      ver = ref[i];
-      ref1 = ['left', 'right'];
-      for (j = 0, len1 = ref1.length; j < len1; j++) {
-        hor = ref1[j];
-        normal = "border-" + ver + "-" + hor + "-radius";
-        mozilla = "border-radius-" + ver + hor;
-        BorderRadius.names.push(normal);
-        BorderRadius.names.push(mozilla);
-        BorderRadius.toMozilla[normal] = mozilla;
-        BorderRadius.toNormal[mozilla] = normal;
-      }
-    }
-
-    BorderRadius.prototype.prefixed = function(prop, prefix) {
-      if (prefix === '-moz-') {
-        return prefix + (BorderRadius.toMozilla[prop] || prop);
-      } else {
-        return BorderRadius.__super__.prefixed.apply(this, arguments);
-      }
-    };
-
-    BorderRadius.prototype.normalize = function(prop) {
-      return BorderRadius.toNormal[prop] || prop;
-    };
-
-    return BorderRadius;
-
-  })(Declaration);
-
-  module.exports = BorderRadius;
-
-}).call(this);
-
-},{"../declaration":6}],14:[function(require,module,exports){
-(function() {
-  var BreakProps, Declaration,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Declaration = require('../declaration');
-
-  BreakProps = (function(superClass) {
-    extend(BreakProps, superClass);
-
-    function BreakProps() {
-      return BreakProps.__super__.constructor.apply(this, arguments);
-    }
-
-    BreakProps.names = ['break-inside', 'page-break-inside', 'column-break-inside', 'break-before', 'page-break-before', 'column-break-before', 'break-after', 'page-break-after', 'column-break-after'];
-
-    BreakProps.prototype.prefixed = function(prop, prefix) {
-      if (prefix === '-webkit-') {
-        return '-webkit-column-' + prop;
-      } else if (prefix === '-moz-') {
-        return 'page-' + prop;
-      } else {
-        return BreakProps.__super__.prefixed.apply(this, arguments);
-      }
-    };
-
-    BreakProps.prototype.normalize = function(prop) {
-      if (prop.indexOf('inside') !== -1) {
-        return 'break-inside';
-      } else if (prop.indexOf('before') !== -1) {
-        return 'break-before';
-      } else if (prop.indexOf('after') !== -1) {
-        return 'break-after';
-      }
-    };
-
-    BreakProps.prototype.set = function(decl, prefix) {
-      var v;
-      v = decl.value;
-      if (decl.prop === 'break-inside' && v === 'avoid-column' || v === 'avoid-page') {
-        decl.value = 'avoid';
-      }
-      return BreakProps.__super__.set.apply(this, arguments);
-    };
-
-    BreakProps.prototype.insert = function(decl, prefix, prefixes) {
-      if (decl.prop !== 'break-inside') {
-        return BreakProps.__super__.insert.apply(this, arguments);
-      } else if (decl.value === 'avoid-region') {
-
-      } else if (decl.value === 'avoid-page' && prefix === '-webkit-') {
-
-      } else {
-        return BreakProps.__super__.insert.apply(this, arguments);
-      }
-    };
-
-    return BreakProps;
-
-  })(Declaration);
-
-  module.exports = BreakProps;
-
-}).call(this);
-
-},{"../declaration":6}],15:[function(require,module,exports){
-(function() {
-  var CrossFade, OldValue, Value, list, utils,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  OldValue = require('../old-value');
-
-  Value = require('../value');
-
-  utils = require('../utils');
-
-  list = require('postcss/lib/list');
-
-  CrossFade = (function(superClass) {
-    extend(CrossFade, superClass);
-
-    function CrossFade() {
-      return CrossFade.__super__.constructor.apply(this, arguments);
-    }
-
-    CrossFade.names = ['cross-fade'];
-
-    CrossFade.prototype.replace = function(string, prefix) {
-      return list.space(string).map((function(_this) {
-        return function(value) {
-          var after, args, close, match;
-          if (value.slice(0, +_this.name.length + 1 || 9e9) !== _this.name + '(') {
-            return value;
-          }
-          close = value.lastIndexOf(')');
-          after = value.slice(close + 1);
-          args = value.slice(_this.name.length + 1, +(close - 1) + 1 || 9e9);
-          if (prefix === '-webkit-') {
-            match = args.match(/\d*.?\d+%?/);
-            if (match) {
-              args = args.slice(match[0].length).trim();
-              args += ', ' + match[0];
-            } else {
-              args += ', 0.5';
-            }
-          }
-          return prefix + _this.name + '(' + args + ')' + after;
-        };
-      })(this)).join(' ');
-    };
-
-    return CrossFade;
-
-  })(Value);
-
-  module.exports = CrossFade;
-
-}).call(this);
-
-},{"../old-value":50,"../utils":58,"../value":59,"postcss/lib/list":145}],16:[function(require,module,exports){
-(function() {
-  var DisplayFlex, OldValue, Value, flexSpec,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  flexSpec = require('./flex-spec');
-
-  OldValue = require('../old-value');
-
-  Value = require('../value');
-
-  DisplayFlex = (function(superClass) {
-    extend(DisplayFlex, superClass);
-
-    DisplayFlex.names = ['display-flex', 'inline-flex'];
-
-    function DisplayFlex(name, prefixes) {
-      DisplayFlex.__super__.constructor.apply(this, arguments);
-      if (name === 'display-flex') {
-        this.name = 'flex';
-      }
-    }
-
-    DisplayFlex.prototype.check = function(decl) {
-      return decl.prop === 'display' && decl.value === this.name;
-    };
-
-    DisplayFlex.prototype.prefixed = function(prefix) {
-      var ref, spec;
-      ref = flexSpec(prefix), spec = ref[0], prefix = ref[1];
-      return prefix + (spec === 2009 ? this.name === 'flex' ? 'box' : 'inline-box' : spec === 2012 ? this.name === 'flex' ? 'flexbox' : 'inline-flexbox' : spec === 'final' ? this.name : void 0);
-    };
-
-    DisplayFlex.prototype.replace = function(string, prefix) {
-      return this.prefixed(prefix);
-    };
-
-    DisplayFlex.prototype.old = function(prefix) {
-      var prefixed;
-      prefixed = this.prefixed(prefix);
-      if (prefixed) {
-        return new OldValue(this.name, prefixed);
-      }
-    };
-
-    return DisplayFlex;
-
-  })(Value);
-
-  module.exports = DisplayFlex;
-
-}).call(this);
-
-},{"../old-value":50,"../value":59,"./flex-spec":25}],17:[function(require,module,exports){
-(function() {
-  var DisplayGrid, OldValue, Value, flexSpec,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  flexSpec = require('./flex-spec');
-
-  OldValue = require('../old-value');
-
-  Value = require('../value');
-
-  DisplayGrid = (function(superClass) {
-    extend(DisplayGrid, superClass);
-
-    DisplayGrid.names = ['display-grid', 'inline-grid'];
-
-    function DisplayGrid(name, prefixes) {
-      DisplayGrid.__super__.constructor.apply(this, arguments);
-      if (name === 'display-grid') {
-        this.name = 'grid';
-      }
-    }
-
-    DisplayGrid.prototype.check = function(decl) {
-      return decl.prop === 'display' && decl.value === this.name;
-    };
-
-    return DisplayGrid;
-
-  })(Value);
-
-  module.exports = DisplayGrid;
-
-}).call(this);
-
-},{"../old-value":50,"../value":59,"./flex-spec":25}],18:[function(require,module,exports){
-(function() {
-  var FilterValue, OldFilterValue, OldValue, Value, utils,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  OldValue = require('../old-value');
-
-  Value = require('../value');
-
-  utils = require('../utils');
-
-  OldFilterValue = (function(superClass) {
-    extend(OldFilterValue, superClass);
-
-    function OldFilterValue() {
-      return OldFilterValue.__super__.constructor.apply(this, arguments);
-    }
-
-    OldFilterValue.prototype.clean = function(decl) {
-      return decl.value = utils.editList(decl.value, (function(_this) {
-        return function(props) {
-          if (props.every(function(i) {
-            return i.indexOf(_this.unprefixed) !== 0;
-          })) {
-            return props;
-          }
-          return props.filter(function(i) {
-            return i.indexOf(_this.prefixed) === -1;
-          });
-        };
-      })(this));
-    };
-
-    return OldFilterValue;
-
-  })(OldValue);
-
-  FilterValue = (function(superClass) {
-    extend(FilterValue, superClass);
-
-    FilterValue.names = ['filter', 'filter-function'];
-
-    function FilterValue(name, prefixes) {
-      FilterValue.__super__.constructor.apply(this, arguments);
-      if (name === 'filter-function') {
-        this.name = 'filter';
-      }
-    }
-
-    FilterValue.prototype.replace = function(value, prefix) {
-      if (prefix === '-webkit-' && value.indexOf('filter(') === -1) {
-        if (value.indexOf('-webkit-filter') === -1) {
-          return FilterValue.__super__.replace.apply(this, arguments) + ', ' + value;
-        } else {
-          return value;
-        }
-      } else {
-        return FilterValue.__super__.replace.apply(this, arguments);
-      }
-    };
-
-    FilterValue.prototype.old = function(prefix) {
-      return new OldFilterValue(this.name, prefix + this.name);
-    };
-
-    return FilterValue;
-
-  })(Value);
-
-  module.exports = FilterValue;
-
-}).call(this);
-
-},{"../old-value":50,"../utils":58,"../value":59}],19:[function(require,module,exports){
-(function() {
-  var Declaration, Filter,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Declaration = require('../declaration');
-
-  Filter = (function(superClass) {
-    extend(Filter, superClass);
-
-    function Filter() {
-      return Filter.__super__.constructor.apply(this, arguments);
-    }
-
-    Filter.names = ['filter'];
-
-    Filter.prototype.check = function(decl) {
-      var v;
-      v = decl.value;
-      return v.toLowerCase().indexOf('alpha(') === -1 && v.indexOf('DXImageTransform.Microsoft') === -1 && v.indexOf('data:image/svg+xml') === -1;
-    };
-
-    return Filter;
-
-  })(Declaration);
-
-  module.exports = Filter;
-
-}).call(this);
-
-},{"../declaration":6}],20:[function(require,module,exports){
-(function() {
-  var Declaration, FlexBasis, flexSpec,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  flexSpec = require('./flex-spec');
-
-  Declaration = require('../declaration');
-
-  FlexBasis = (function(superClass) {
-    extend(FlexBasis, superClass);
-
-    function FlexBasis() {
-      return FlexBasis.__super__.constructor.apply(this, arguments);
-    }
-
-    FlexBasis.names = ['flex-basis', 'flex-preferred-size'];
-
-    FlexBasis.prototype.normalize = function() {
-      return 'flex-basis';
-    };
-
-    FlexBasis.prototype.prefixed = function(prop, prefix) {
-      var ref, spec;
-      ref = flexSpec(prefix), spec = ref[0], prefix = ref[1];
-      if (spec === 2012) {
-        return prefix + 'flex-preferred-size';
-      } else {
-        return FlexBasis.__super__.prefixed.apply(this, arguments);
-      }
-    };
-
-    FlexBasis.prototype.set = function(decl, prefix) {
-      var ref, spec;
-      ref = flexSpec(prefix), spec = ref[0], prefix = ref[1];
-      if (spec === 2012 || spec === 'final') {
-        return FlexBasis.__super__.set.apply(this, arguments);
-      }
-    };
-
-    return FlexBasis;
-
-  })(Declaration);
-
-  module.exports = FlexBasis;
-
-}).call(this);
-
-},{"../declaration":6,"./flex-spec":25}],21:[function(require,module,exports){
-(function() {
-  var Declaration, FlexDirection, flexSpec,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  flexSpec = require('./flex-spec');
-
-  Declaration = require('../declaration');
-
-  FlexDirection = (function(superClass) {
-    extend(FlexDirection, superClass);
-
-    function FlexDirection() {
-      return FlexDirection.__super__.constructor.apply(this, arguments);
-    }
-
-    FlexDirection.names = ['flex-direction', 'box-direction', 'box-orient'];
-
-    FlexDirection.prototype.normalize = function(prop) {
-      return 'flex-direction';
-    };
-
-    FlexDirection.prototype.insert = function(decl, prefix, prefixes) {
-      var already, cloned, dir, orient, ref, spec, value;
-      ref = flexSpec(prefix), spec = ref[0], prefix = ref[1];
-      if (spec !== 2009) {
-        return FlexDirection.__super__.insert.apply(this, arguments);
-      } else {
-        already = decl.parent.some(function(i) {
-          return i.prop === prefix + 'box-orient' || i.prop === prefix + 'box-direction';
-        });
-        if (already) {
-          return;
-        }
-        value = decl.value;
-        orient = value.indexOf('row') !== -1 ? 'horizontal' : 'vertical';
-        dir = value.indexOf('reverse') !== -1 ? 'reverse' : 'normal';
-        cloned = this.clone(decl);
-        cloned.prop = prefix + 'box-orient';
-        cloned.value = orient;
-        if (this.needCascade(decl)) {
-          cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
-        }
-        decl.parent.insertBefore(decl, cloned);
-        cloned = this.clone(decl);
-        cloned.prop = prefix + 'box-direction';
-        cloned.value = dir;
-        if (this.needCascade(decl)) {
-          cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
-        }
-        return decl.parent.insertBefore(decl, cloned);
-      }
-    };
-
-    FlexDirection.prototype.old = function(prop, prefix) {
-      var ref, spec;
-      ref = flexSpec(prefix), spec = ref[0], prefix = ref[1];
-      if (spec === 2009) {
-        return [prefix + 'box-orient', prefix + 'box-direction'];
-      } else {
-        return FlexDirection.__super__.old.apply(this, arguments);
-      }
-    };
-
-    return FlexDirection;
-
-  })(Declaration);
-
-  module.exports = FlexDirection;
-
-}).call(this);
-
-},{"../declaration":6,"./flex-spec":25}],22:[function(require,module,exports){
-(function() {
-  var Declaration, FlexFlow, flexSpec,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  flexSpec = require('./flex-spec');
-
-  Declaration = require('../declaration');
-
-  FlexFlow = (function(superClass) {
-    extend(FlexFlow, superClass);
-
-    function FlexFlow() {
-      return FlexFlow.__super__.constructor.apply(this, arguments);
-    }
-
-    FlexFlow.names = ['flex-flow', 'box-direction', 'box-orient'];
-
-    FlexFlow.prototype.insert = function(decl, prefix, prefixes) {
-      var already, cloned, dir, orient, ref, spec, value, values;
-      ref = flexSpec(prefix), spec = ref[0], prefix = ref[1];
-      if (spec !== 2009) {
-        return FlexFlow.__super__.insert.apply(this, arguments);
-      } else {
-        values = decl.value.split(/\s+/).filter(function(i) {
-          return i !== 'wrap' && i !== 'nowrap' && 'wrap-reverse';
-        });
-        if (values.length === 0) {
-          return;
-        }
-        already = decl.parent.some(function(i) {
-          return i.prop === prefix + 'box-orient' || i.prop === prefix + 'box-direction';
-        });
-        if (already) {
-          return;
-        }
-        value = values[0];
-        orient = value.indexOf('row') !== -1 ? 'horizontal' : 'vertical';
-        dir = value.indexOf('reverse') !== -1 ? 'reverse' : 'normal';
-        cloned = this.clone(decl);
-        cloned.prop = prefix + 'box-orient';
-        cloned.value = orient;
-        if (this.needCascade(decl)) {
-          cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
-        }
-        decl.parent.insertBefore(decl, cloned);
-        cloned = this.clone(decl);
-        cloned.prop = prefix + 'box-direction';
-        cloned.value = dir;
-        if (this.needCascade(decl)) {
-          cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
-        }
-        return decl.parent.insertBefore(decl, cloned);
-      }
-    };
-
-    return FlexFlow;
-
-  })(Declaration);
-
-  module.exports = FlexFlow;
-
-}).call(this);
-
-},{"../declaration":6,"./flex-spec":25}],23:[function(require,module,exports){
-(function() {
-  var Declaration, Flex, flexSpec,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  flexSpec = require('./flex-spec');
-
-  Declaration = require('../declaration');
-
-  Flex = (function(superClass) {
-    extend(Flex, superClass);
-
-    function Flex() {
-      return Flex.__super__.constructor.apply(this, arguments);
-    }
-
-    Flex.names = ['flex-grow', 'flex-positive'];
-
-    Flex.prototype.normalize = function() {
-      return 'flex';
-    };
-
-    Flex.prototype.prefixed = function(prop, prefix) {
-      var ref, spec;
-      ref = flexSpec(prefix), spec = ref[0], prefix = ref[1];
-      if (spec === 2009) {
-        return prefix + 'box-flex';
-      } else if (spec === 2012) {
-        return prefix + 'flex-positive';
-      } else {
-        return Flex.__super__.prefixed.apply(this, arguments);
-      }
-    };
-
-    return Flex;
-
-  })(Declaration);
-
-  module.exports = Flex;
-
-}).call(this);
-
-},{"../declaration":6,"./flex-spec":25}],24:[function(require,module,exports){
-(function() {
-  var Declaration, FlexShrink, flexSpec,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  flexSpec = require('./flex-spec');
-
-  Declaration = require('../declaration');
-
-  FlexShrink = (function(superClass) {
-    extend(FlexShrink, superClass);
-
-    function FlexShrink() {
-      return FlexShrink.__super__.constructor.apply(this, arguments);
-    }
-
-    FlexShrink.names = ['flex-shrink', 'flex-negative'];
-
-    FlexShrink.prototype.normalize = function() {
-      return 'flex-shrink';
-    };
-
-    FlexShrink.prototype.prefixed = function(prop, prefix) {
-      var ref, spec;
-      ref = flexSpec(prefix), spec = ref[0], prefix = ref[1];
-      if (spec === 2012) {
-        return prefix + 'flex-negative';
-      } else {
-        return FlexShrink.__super__.prefixed.apply(this, arguments);
-      }
-    };
-
-    FlexShrink.prototype.set = function(decl, prefix) {
-      var ref, spec;
-      ref = flexSpec(prefix), spec = ref[0], prefix = ref[1];
-      if (spec === 2012 || spec === 'final') {
-        return FlexShrink.__super__.set.apply(this, arguments);
-      }
-    };
-
-    return FlexShrink;
-
-  })(Declaration);
-
-  module.exports = FlexShrink;
-
-}).call(this);
-
-},{"../declaration":6,"./flex-spec":25}],25:[function(require,module,exports){
-(function() {
-  module.exports = function(prefix) {
-    var spec;
-    spec = prefix === '-webkit- 2009' || prefix === '-moz-' ? 2009 : prefix === '-ms-' ? 2012 : prefix === '-webkit-' ? 'final' : void 0;
-    if (prefix === '-webkit- 2009') {
-      prefix = '-webkit-';
-    }
-    return [spec, prefix];
-  };
-
-}).call(this);
-
-},{}],26:[function(require,module,exports){
-(function() {
-  var FlexValues, OldValue, Value,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  OldValue = require('../old-value');
-
-  Value = require('../value');
-
-  FlexValues = (function(superClass) {
-    extend(FlexValues, superClass);
-
-    function FlexValues() {
-      return FlexValues.__super__.constructor.apply(this, arguments);
-    }
-
-    FlexValues.names = ['flex', 'flex-grow', 'flex-shrink', 'flex-basis'];
-
-    FlexValues.prototype.prefixed = function(prefix) {
-      return this.all.prefixed(this.name, prefix);
-    };
-
-    FlexValues.prototype.replace = function(string, prefix) {
-      return string.replace(this.regexp(), '$1' + this.prefixed(prefix) + '$3');
-    };
-
-    FlexValues.prototype.old = function(prefix) {
-      return new OldValue(this.name, this.prefixed(prefix));
-    };
-
-    return FlexValues;
-
-  })(Value);
-
-  module.exports = FlexValues;
-
-}).call(this);
-
-},{"../old-value":50,"../value":59}],27:[function(require,module,exports){
-(function() {
-  var Declaration, FlexWrap, flexSpec,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  flexSpec = require('./flex-spec');
-
-  Declaration = require('../declaration');
-
-  FlexWrap = (function(superClass) {
-    extend(FlexWrap, superClass);
-
-    function FlexWrap() {
-      return FlexWrap.__super__.constructor.apply(this, arguments);
-    }
-
-    FlexWrap.names = ['flex-wrap'];
-
-    FlexWrap.prototype.set = function(decl, prefix) {
-      var spec;
-      spec = flexSpec(prefix)[0];
-      if (spec !== 2009) {
-        return FlexWrap.__super__.set.apply(this, arguments);
-      }
-    };
-
-    return FlexWrap;
-
-  })(Declaration);
-
-  module.exports = FlexWrap;
-
-}).call(this);
-
-},{"../declaration":6,"./flex-spec":25}],28:[function(require,module,exports){
-(function() {
-  var Declaration, Flex, flexSpec, list,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  flexSpec = require('./flex-spec');
-
-  Declaration = require('../declaration');
-
-  list = require('postcss/lib/list');
-
-  Flex = (function(superClass) {
-    extend(Flex, superClass);
-
-    function Flex() {
-      return Flex.__super__.constructor.apply(this, arguments);
-    }
-
-    Flex.names = ['flex', 'box-flex'];
-
-    Flex.oldValues = {
-      'auto': '1',
-      'none': '0'
-    };
-
-    Flex.prototype.prefixed = function(prop, prefix) {
-      var ref, spec;
-      ref = flexSpec(prefix), spec = ref[0], prefix = ref[1];
-      if (spec === 2009) {
-        return prefix + 'box-flex';
-      } else {
-        return Flex.__super__.prefixed.apply(this, arguments);
-      }
-    };
-
-    Flex.prototype.normalize = function() {
-      return 'flex';
-    };
-
-    Flex.prototype.set = function(decl, prefix) {
-      var components, spec;
-      spec = flexSpec(prefix)[0];
-      if (spec === 2009) {
-        decl.value = list.space(decl.value)[0];
-        decl.value = Flex.oldValues[decl.value] || decl.value;
-        return Flex.__super__.set.call(this, decl, prefix);
-      } else if (spec === 2012) {
-        components = list.space(decl.value);
-        if (components.length === 3 && components[2] === '0') {
-          decl.value = components.slice(0, 2).concat('0px').join(' ');
-        }
-        return Flex.__super__.set.call(this, decl, prefix);
-      } else {
-        return Flex.__super__.set.apply(this, arguments);
-      }
-    };
-
-    return Flex;
-
-  })(Declaration);
-
-  module.exports = Flex;
-
-}).call(this);
-
-},{"../declaration":6,"./flex-spec":25,"postcss/lib/list":145}],29:[function(require,module,exports){
-(function() {
-  var Fullscreen, Selector,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Selector = require('../selector');
-
-  Fullscreen = (function(superClass) {
-    extend(Fullscreen, superClass);
-
-    function Fullscreen() {
-      return Fullscreen.__super__.constructor.apply(this, arguments);
-    }
-
-    Fullscreen.names = [':fullscreen'];
-
-    Fullscreen.prototype.prefixed = function(prefix) {
-      if ('-webkit-' === prefix) {
-        return ':-webkit-full-screen';
-      } else if ('-moz-' === prefix) {
-        return ':-moz-full-screen';
-      } else {
-        return ":" + prefix + "fullscreen";
-      }
-    };
-
-    return Fullscreen;
-
-  })(Selector);
-
-  module.exports = Fullscreen;
-
-}).call(this);
-
-},{"../selector":55}],30:[function(require,module,exports){
-(function() {
-  var Gradient, OldValue, Value, isDirection, list, parser, range, utils,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty,
-    slice = [].slice;
-
-  OldValue = require('../old-value');
-
-  Value = require('../value');
-
-  utils = require('../utils');
-
-  parser = require('postcss-value-parser');
-
-  range = require('normalize-range');
-
-  list = require('postcss/lib/list');
-
-  isDirection = /top|left|right|bottom/gi;
-
-  Gradient = (function(superClass) {
-    extend(Gradient, superClass);
-
-    function Gradient() {
-      return Gradient.__super__.constructor.apply(this, arguments);
-    }
-
-    Gradient.names = ['linear-gradient', 'repeating-linear-gradient', 'radial-gradient', 'repeating-radial-gradient'];
-
-    Gradient.prototype.replace = function(string, prefix) {
-      var ast, changes, j, len, node, ref;
-      ast = parser(string);
-      ref = ast.nodes;
-      for (j = 0, len = ref.length; j < len; j++) {
-        node = ref[j];
-        if (node.type === 'function' && node.value === this.name) {
-          node.nodes = this.newDirection(node.nodes);
-          node.nodes = this.normalize(node.nodes);
-          if (prefix === '-webkit- old') {
-            changes = this.oldWebkit(node);
-            if (!changes) {
-              return;
-            }
-          } else {
-            node.nodes = this.convertDirection(node.nodes);
-            node.value = prefix + node.value;
-          }
-        }
-      }
-      return ast.toString();
-    };
-
-    Gradient.prototype.directions = {
-      top: 'bottom',
-      left: 'right',
-      bottom: 'top',
-      right: 'left'
-    };
-
-    Gradient.prototype.oldDirections = {
-      'top': 'left bottom, left top',
-      'left': 'right top, left top',
-      'bottom': 'left top, left bottom',
-      'right': 'left top, right top',
-      'top right': 'left bottom, right top',
-      'top left': 'right bottom, left top',
-      'right top': 'left bottom, right top',
-      'right bottom': 'left top, right bottom',
-      'bottom right': 'left top, right bottom',
-      'bottom left': 'right top, left bottom',
-      'left top': 'right bottom, left top',
-      'left bottom': 'right top, left bottom'
-    };
-
-    Gradient.prototype.replaceFirst = function() {
-      var params, prefix, words;
-      params = arguments[0], words = 2 <= arguments.length ? slice.call(arguments, 1) : [];
-      prefix = words.map(function(i) {
-        if (i === ' ') {
-          return {
-            type: 'space',
-            value: i
-          };
-        } else {
-          return {
-            type: 'word',
-            value: i
-          };
-        }
-      });
-      return prefix.concat(params.slice(1));
-    };
-
-    Gradient.prototype.normalizeUnit = function(str, full) {
-      var deg, num;
-      num = parseFloat(str);
-      deg = (num / full) * 360;
-      return deg + "deg";
-    };
-
-    Gradient.prototype.normalize = function(nodes) {
-      var num;
-      if (!nodes[0]) {
-        return nodes;
-      }
-      if (/-?\d+(.\d+)?grad/.test(nodes[0].value)) {
-        nodes[0].value = this.normalizeUnit(nodes[0].value, 400);
-      } else if (/-?\d+(.\d+)?rad/.test(nodes[0].value)) {
-        nodes[0].value = this.normalizeUnit(nodes[0].value, 2 * Math.PI);
-      } else if (/-?\d+(.\d+)?turn/.test(nodes[0].value)) {
-        nodes[0].value = this.normalizeUnit(nodes[0].value, 1);
-      } else if (nodes[0].value.indexOf('deg') !== -1) {
-        num = parseFloat(nodes[0].value);
-        num = range.wrap(0, 360, num);
-        nodes[0].value = num + "deg";
-      }
-      if (nodes[0].value === '0deg') {
-        nodes = this.replaceFirst(nodes, 'to', ' ', 'top');
-      } else if (nodes[0].value === '90deg') {
-        nodes = this.replaceFirst(nodes, 'to', ' ', 'right');
-      } else if (nodes[0].value === '180deg') {
-        nodes = this.replaceFirst(nodes, 'to', ' ', 'bottom');
-      } else if (nodes[0].value === '270deg') {
-        nodes = this.replaceFirst(nodes, 'to', ' ', 'left');
-      }
-      return nodes;
-    };
-
-    Gradient.prototype.newDirection = function(params) {
-      var i, j, ref;
-      if (params[0].value === 'to') {
-        return params;
-      }
-      if (!isDirection.test(params[0].value)) {
-        return params;
-      }
-      params.unshift({
-        type: 'word',
-        value: 'to'
-      }, {
-        type: 'space',
-        value: ' '
-      });
-      for (i = j = 2, ref = params.length; 2 <= ref ? j < ref : j > ref; i = 2 <= ref ? ++j : --j) {
-        if (params[i].type === 'div') {
-          break;
-        }
-        if (params[i].type === 'word') {
-          params[i].value = this.revertDirection(params[i].value);
-        }
-      }
-      return params;
-    };
-
-    Gradient.prototype.convertDirection = function(params) {
-      if (params.length > 0) {
-        if (params[0].value === 'to') {
-          this.fixDirection(params);
-        } else if (params[0].value.indexOf('deg') !== -1) {
-          this.fixAngle(params);
-        } else if (params[2].value === 'at') {
-          this.fixRadial(params);
-        }
-      }
-      return params;
-    };
-
-    Gradient.prototype.fixDirection = function(params) {
-      var i, j, ref, results;
-      params.splice(0, 2);
-      results = [];
-      for (i = j = 0, ref = params.length; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {
-        if (params[i].type === 'div') {
-          break;
-        }
-        if (params[i].type === 'word') {
-          results.push(params[i].value = this.revertDirection(params[i].value));
-        } else {
-          results.push(void 0);
-        }
-      }
-      return results;
-    };
-
-    Gradient.prototype.fixAngle = function(params) {
-      var first;
-      first = params[0].value;
-      first = parseFloat(first);
-      first = Math.abs(450 - first) % 360;
-      first = this.roundFloat(first, 3);
-      return params[0].value = first + "deg";
-    };
-
-    Gradient.prototype.fixRadial = function(params) {
-      var first, i, j, ref, second;
-      first = params[0];
-      second = [];
-      for (i = j = 4, ref = params.length; 4 <= ref ? j < ref : j > ref; i = 4 <= ref ? ++j : --j) {
-        if (params[i].type === 'div') {
-          break;
-        } else {
-          second.push(params[i]);
-        }
-      }
-      return params.splice.apply(params, [0, i].concat(slice.call(second), [params[i + 2]], [first]));
-    };
-
-    Gradient.prototype.revertDirection = function(word) {
-      return this.directions[word.toLowerCase()] || word;
-    };
-
-    Gradient.prototype.roundFloat = function(float, digits) {
-      return parseFloat(float.toFixed(digits));
-    };
-
-    Gradient.prototype.oldWebkit = function(node) {
-      var i, j, k, len, len1, nodes, param, params, string;
-      nodes = node.nodes;
-      string = parser.stringify(node.nodes);
-      if (this.name !== 'linear-gradient') {
-        return false;
-      }
-      if (nodes[0] && nodes[0].value.indexOf('deg') !== -1) {
-        return false;
-      }
-      if (string.indexOf('px') !== -1) {
-        return false;
-      }
-      if (string.indexOf('-corner') !== -1) {
-        return false;
-      }
-      if (string.indexOf('-side') !== -1) {
-        return false;
-      }
-      params = [[]];
-      for (j = 0, len = nodes.length; j < len; j++) {
-        i = nodes[j];
-        params[params.length - 1].push(i);
-        if (i.type === 'div' && i.value === ',') {
-          params.push([]);
-        }
-      }
-      this.oldDirection(params);
-      this.colorStops(params);
-      node.nodes = [];
-      for (k = 0, len1 = params.length; k < len1; k++) {
-        param = params[k];
-        node.nodes = node.nodes.concat(param);
-      }
-      node.nodes.unshift({
-        type: 'word',
-        value: 'linear'
-      }, this.cloneDiv(node.nodes));
-      node.value = '-webkit-gradient';
-      return true;
-    };
-
-    Gradient.prototype.oldDirection = function(params) {
-      var div, j, len, node, old, ref, words;
-      div = this.cloneDiv(params[0]);
-      if (params[0][0].value !== 'to') {
-        return params.unshift([
-          {
-            type: 'word',
-            value: this.oldDirections.bottom
-          }, div
-        ]);
-      } else {
-        words = [];
-        ref = params[0].slice(2);
-        for (j = 0, len = ref.length; j < len; j++) {
-          node = ref[j];
-          if (node.type === 'word') {
-            words.push(node.value.toLowerCase());
-          }
-        }
-        words = words.join(' ');
-        old = this.oldDirections[words] || words;
-        return params[0] = [
-          {
-            type: 'word',
-            value: old
-          }, div
-        ];
-      }
-    };
-
-    Gradient.prototype.cloneDiv = function(params) {
-      var i, j, len;
-      for (j = 0, len = params.length; j < len; j++) {
-        i = params[j];
-        if (i.type === 'div' && i.value === ',') {
-          return i;
-        }
-      }
-      return {
-        type: 'div',
-        value: ',',
-        after: ' '
-      };
-    };
-
-    Gradient.prototype.colorStops = function(params) {
-      var color, div, i, j, len, param, pos, results, stop;
-      results = [];
-      for (i = j = 0, len = params.length; j < len; i = ++j) {
-        param = params[i];
-        if (i === 0) {
-          continue;
-        }
-        color = parser.stringify(param[0]);
-        if (param[1] && param[1].type === 'word') {
-          pos = param[1].value;
-        } else if (param[2] && param[2].type === 'word') {
-          pos = param[2].value;
-        }
-        stop = i === 1 && (!pos || pos === '0%') ? "from(" + color + ")" : i === params.length - 1 && (!pos || pos === '100%') ? "to(" + color + ")" : pos ? "color-stop(" + pos + ", " + color + ")" : "color-stop(" + color + ")";
-        div = param[param.length - 1];
-        params[i] = [
-          {
-            type: 'word',
-            value: stop
-          }
-        ];
-        if (div.type === 'div' && div.value === ',') {
-          results.push(params[i].push(div));
-        } else {
-          results.push(void 0);
-        }
-      }
-      return results;
-    };
-
-    Gradient.prototype.old = function(prefix) {
-      var regexp, string, type;
-      if (prefix === '-webkit-') {
-        type = this.name === 'linear-gradient' ? 'linear' : 'radial';
-        string = '-gradient';
-        regexp = utils.regexp("-webkit-(" + type + "-gradient|gradient\\(\\s*" + type + ")", false);
-        return new OldValue(this.name, prefix + this.name, string, regexp);
-      } else {
-        return Gradient.__super__.old.apply(this, arguments);
-      }
-    };
-
-    Gradient.prototype.add = function(decl, prefix) {
-      var p;
-      p = decl.prop;
-      if (p.indexOf('mask') !== -1) {
-        if (prefix === '-webkit-' || prefix === '-webkit- old') {
-          return Gradient.__super__.add.apply(this, arguments);
-        }
-      } else if (p === 'list-style' || p === 'list-style-image' || p === 'content') {
-        if (prefix === '-webkit-' || prefix === '-webkit- old') {
-          return Gradient.__super__.add.apply(this, arguments);
-        }
-      } else {
-        return Gradient.__super__.add.apply(this, arguments);
-      }
-    };
-
-    return Gradient;
-
-  })(Value);
-
-  module.exports = Gradient;
-
-}).call(this);
-
-},{"../old-value":50,"../utils":58,"../value":59,"normalize-range":130,"postcss-value-parser":133,"postcss/lib/list":145}],31:[function(require,module,exports){
-(function() {
-  var Declaration, GridEnd,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Declaration = require('../declaration');
-
-  GridEnd = (function(superClass) {
-    extend(GridEnd, superClass);
-
-    function GridEnd() {
-      return GridEnd.__super__.constructor.apply(this, arguments);
-    }
-
-    GridEnd.names = ['grid-row-end', 'grid-column-end', 'grid-row-span', 'grid-column-span'];
-
-    GridEnd.prototype.check = function(decl) {
-      return decl.value.indexOf('span') !== -1;
-    };
-
-    GridEnd.prototype.normalize = function(prop) {
-      return prop.replace(/(-span|-end)/, '');
-    };
-
-    GridEnd.prototype.prefixed = function(prop, prefix) {
-      if (prefix === '-ms-') {
-        return prefix + prop.replace('-end', '-span');
-      } else {
-        return GridEnd.__super__.prefixed.call(this, prop, prefix);
-      }
-    };
-
-    GridEnd.prototype.set = function(decl, prefix) {
-      if (prefix === '-ms-') {
-        decl.value = decl.value.replace(/span\s/i, '');
-      }
-      return GridEnd.__super__.set.call(this, decl, prefix);
-    };
-
-    return GridEnd;
-
-  })(Declaration);
-
-  module.exports = GridEnd;
-
-}).call(this);
-
-},{"../declaration":6}],32:[function(require,module,exports){
-(function() {
-  var Declaration, GridRowAlign,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Declaration = require('../declaration');
-
-  GridRowAlign = (function(superClass) {
-    extend(GridRowAlign, superClass);
-
-    function GridRowAlign() {
-      return GridRowAlign.__super__.constructor.apply(this, arguments);
-    }
-
-    GridRowAlign.names = ['grid-row-align'];
-
-    GridRowAlign.prototype.check = function(decl) {
-      return decl.value.indexOf('flex-') === -1 && decl.value !== 'baseline';
-    };
-
-    GridRowAlign.prototype.prefixed = function(prop, prefix) {
-      return prefix + 'grid-row-align';
-    };
-
-    GridRowAlign.prototype.normalize = function(prop) {
-      return 'align-self';
-    };
-
-    return GridRowAlign;
-
-  })(Declaration);
-
-  module.exports = GridRowAlign;
-
-}).call(this);
-
-},{"../declaration":6}],33:[function(require,module,exports){
-(function() {
-  var Declaration, GridStart,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Declaration = require('../declaration');
-
-  GridStart = (function(superClass) {
-    extend(GridStart, superClass);
-
-    function GridStart() {
-      return GridStart.__super__.constructor.apply(this, arguments);
-    }
-
-    GridStart.names = ['grid-row-start', 'grid-column-start', 'grid-row', 'grid-column'];
-
-    GridStart.prototype.check = function(decl) {
-      return decl.value.indexOf('/') === -1 || decl.value.indexOf('span') !== -1;
-    };
-
-    GridStart.prototype.normalize = function(prop) {
-      return prop.replace('-start', '');
-    };
-
-    GridStart.prototype.prefixed = function(prop, prefix) {
-      if (prefix === '-ms-') {
-        return prefix + prop.replace('-start', '');
-      } else {
-        return GridStart.__super__.prefixed.call(this, prop, prefix);
-      }
-    };
-
-    GridStart.prototype.insert = function(decl, prefix, prefixes) {
-      var parts;
-      parts = this.splitValue(decl, prefix);
-      if (parts.length === 2) {
-        decl.cloneBefore({
-          prop: '-ms-' + decl.prop + '-span',
-          value: parts[1]
-        });
-      }
-      return GridStart.__super__.insert.call(this, decl, prefix, prefixes);
-    };
-
-    GridStart.prototype.set = function(decl, prefix) {
-      var parts;
-      parts = this.splitValue(decl, prefix);
-      if (parts.length === 2) {
-        decl.value = parts[0];
-      }
-      return GridStart.__super__.set.call(this, decl, prefix);
-    };
-
-    GridStart.prototype.splitValue = function(decl, prefix) {
-      var parts;
-      if (prefix === '-ms-' && decl.prop.indexOf('-start') === -1) {
-        parts = decl.value.split(/\s*\/\s*span\s+/);
-        if (parts.length === 2) {
-          return parts;
-        }
-      }
-      return false;
-    };
-
-    return GridStart;
-
-  })(Declaration);
-
-  module.exports = GridStart;
-
-}).call(this);
-
-},{"../declaration":6}],34:[function(require,module,exports){
-(function() {
-  var Declaration, GridTemplate, parser,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  parser = require('postcss-value-parser');
-
-  Declaration = require('../declaration');
-
-  GridTemplate = (function(superClass) {
-    extend(GridTemplate, superClass);
-
-    function GridTemplate() {
-      return GridTemplate.__super__.constructor.apply(this, arguments);
-    }
-
-    GridTemplate.names = ['grid-template-rows', 'grid-template-columns', 'grid-rows', 'grid-columns'];
-
-    GridTemplate.prototype.prefixed = function(prop, prefix) {
-      if (prefix === '-ms-') {
-        return prefix + prop.replace('template-', '');
-      } else {
-        return GridTemplate.__super__.prefixed.call(this, prop, prefix);
-      }
-    };
-
-    GridTemplate.prototype.normalize = function(prop) {
-      return prop.replace(/^grid-(rows|columns)/, 'grid-template-$1');
-    };
-
-    GridTemplate.prototype.walkRepeat = function(node) {
-      var count, first, fixed, i, j, len, ref;
-      fixed = [];
-      ref = node.nodes;
-      for (j = 0, len = ref.length; j < len; j++) {
-        i = ref[j];
-        if (i.nodes) {
-          this.walkRepeat(i);
-        }
-        fixed.push(i);
-        if (i.type === 'function' && i.value === 'repeat') {
-          first = i.nodes.shift();
-          if (first) {
-            count = first.value;
-            i.nodes.shift();
-            i.value = '';
-            fixed.push({
-              type: 'word',
-              value: "[" + count + "]"
-            });
-          }
-        }
-      }
-      return node.nodes = fixed;
-    };
-
-    GridTemplate.prototype.changeRepeat = function(value) {
-      var ast;
-      ast = parser(value);
-      this.walkRepeat(ast);
-      return ast.toString();
-    };
-
-    GridTemplate.prototype.set = function(decl, prefix) {
-      if (prefix === '-ms-' && decl.value.indexOf('repeat(') !== -1) {
-        decl.value = this.changeRepeat(decl.value);
-      }
-      return GridTemplate.__super__.set.call(this, decl, prefix);
-    };
-
-    return GridTemplate;
-
-  })(Declaration);
-
-  module.exports = GridTemplate;
-
-}).call(this);
-
-},{"../declaration":6,"postcss-value-parser":133}],35:[function(require,module,exports){
-(function() {
-  var Declaration, ImageRendering,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Declaration = require('../declaration');
-
-  ImageRendering = (function(superClass) {
-    extend(ImageRendering, superClass);
-
-    function ImageRendering() {
-      return ImageRendering.__super__.constructor.apply(this, arguments);
-    }
-
-    ImageRendering.names = ['image-rendering', 'interpolation-mode'];
-
-    ImageRendering.prototype.check = function(decl) {
-      return decl.value === 'pixelated';
-    };
-
-    ImageRendering.prototype.prefixed = function(prop, prefix) {
-      if (prefix === '-ms-') {
-        return '-ms-interpolation-mode';
-      } else {
-        return ImageRendering.__super__.prefixed.apply(this, arguments);
-      }
-    };
-
-    ImageRendering.prototype.set = function(decl, prefix) {
-      if (prefix === '-ms-') {
-        decl.prop = '-ms-interpolation-mode';
-        decl.value = 'nearest-neighbor';
-        return decl;
-      } else {
-        return ImageRendering.__super__.set.apply(this, arguments);
-      }
-    };
-
-    ImageRendering.prototype.normalize = function(prop) {
-      return 'image-rendering';
-    };
-
-    ImageRendering.prototype.process = function(node, result) {
-      return ImageRendering.__super__.process.apply(this, arguments);
-    };
-
-    return ImageRendering;
-
-  })(Declaration);
-
-  module.exports = ImageRendering;
-
-}).call(this);
-
-},{"../declaration":6}],36:[function(require,module,exports){
-(function() {
-  var ImageSet, Value, list,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  list = require('postcss/lib/list');
-
-  Value = require('../value');
-
-  ImageSet = (function(superClass) {
-    extend(ImageSet, superClass);
-
-    function ImageSet() {
-      return ImageSet.__super__.constructor.apply(this, arguments);
-    }
-
-    ImageSet.names = ['image-set'];
-
-    ImageSet.prototype.replace = function(string, prefix) {
-      if (prefix === '-webkit-') {
-        return ImageSet.__super__.replace.apply(this, arguments).replace(/("[^"]+"|'[^']+')(\s+\d+\w)/gi, 'url($1)$2');
-      } else {
-        return ImageSet.__super__.replace.apply(this, arguments);
-      }
-    };
-
-    return ImageSet;
-
-  })(Value);
-
-  module.exports = ImageSet;
-
-}).call(this);
-
-},{"../value":59,"postcss/lib/list":145}],37:[function(require,module,exports){
-(function() {
-  var Declaration, InlineLogical,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Declaration = require('../declaration');
-
-  InlineLogical = (function(superClass) {
-    extend(InlineLogical, superClass);
-
-    function InlineLogical() {
-      return InlineLogical.__super__.constructor.apply(this, arguments);
-    }
-
-    InlineLogical.names = ['border-inline-start', 'border-inline-end', 'margin-inline-start', 'margin-inline-end', 'padding-inline-start', 'padding-inline-end', 'border-start', 'border-end', 'margin-start', 'margin-end', 'padding-start', 'padding-end'];
-
-    InlineLogical.prototype.prefixed = function(prop, prefix) {
-      return prefix + prop.replace('-inline', '');
-    };
-
-    InlineLogical.prototype.normalize = function(prop) {
-      return prop.replace(/(margin|padding|border)-(start|end)/, '$1-inline-$2');
-    };
-
-    return InlineLogical;
-
-  })(Declaration);
-
-  module.exports = InlineLogical;
-
-}).call(this);
-
-},{"../declaration":6}],38:[function(require,module,exports){
-(function() {
-  var Declaration, JustifyContent, flexSpec,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  flexSpec = require('./flex-spec');
-
-  Declaration = require('../declaration');
-
-  JustifyContent = (function(superClass) {
-    extend(JustifyContent, superClass);
-
-    function JustifyContent() {
-      return JustifyContent.__super__.constructor.apply(this, arguments);
-    }
-
-    JustifyContent.names = ['justify-content', 'flex-pack', 'box-pack'];
-
-    JustifyContent.oldValues = {
-      'flex-end': 'end',
-      'flex-start': 'start',
-      'space-between': 'justify',
-      'space-around': 'distribute'
-    };
-
-    JustifyContent.prototype.prefixed = function(prop, prefix) {
-      var ref, spec;
-      ref = flexSpec(prefix), spec = ref[0], prefix = ref[1];
-      if (spec === 2009) {
-        return prefix + 'box-pack';
-      } else if (spec === 2012) {
-        return prefix + 'flex-pack';
-      } else {
-        return JustifyContent.__super__.prefixed.apply(this, arguments);
-      }
-    };
-
-    JustifyContent.prototype.normalize = function(prop) {
-      return 'justify-content';
-    };
-
-    JustifyContent.prototype.set = function(decl, prefix) {
-      var spec, value;
-      spec = flexSpec(prefix)[0];
-      if (spec === 2009 || spec === 2012) {
-        value = JustifyContent.oldValues[decl.value] || decl.value;
-        decl.value = value;
-        if (spec !== 2009 || value !== 'distribute') {
-          return JustifyContent.__super__.set.call(this, decl, prefix);
-        }
-      } else if (spec === 'final') {
-        return JustifyContent.__super__.set.apply(this, arguments);
-      }
-    };
-
-    return JustifyContent;
-
-  })(Declaration);
-
-  module.exports = JustifyContent;
-
-}).call(this);
-
-},{"../declaration":6,"./flex-spec":25}],39:[function(require,module,exports){
-(function() {
-  var Declaration, JustifyItems,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Declaration = require('../declaration');
-
-  JustifyItems = (function(superClass) {
-    extend(JustifyItems, superClass);
-
-    function JustifyItems() {
-      return JustifyItems.__super__.constructor.apply(this, arguments);
-    }
-
-    JustifyItems.names = ['justify-items', 'grid-column-align'];
-
-    JustifyItems.prototype.prefixed = function(prop, prefix) {
-      return prefix + (prefix === '-ms-' ? 'grid-column-align' : prop);
-    };
-
-    JustifyItems.prototype.normalize = function(prop) {
-      return 'justify-items';
-    };
-
-    return JustifyItems;
-
-  })(Declaration);
-
-  module.exports = JustifyItems;
-
-}).call(this);
-
-},{"../declaration":6}],40:[function(require,module,exports){
-(function() {
-  var Declaration, MaskBorder,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Declaration = require('../declaration');
-
-  MaskBorder = (function(superClass) {
-    extend(MaskBorder, superClass);
-
-    function MaskBorder() {
-      return MaskBorder.__super__.constructor.apply(this, arguments);
-    }
-
-    MaskBorder.names = ['mask-border', 'mask-border-source', 'mask-border-slice', 'mask-border-width', 'mask-border-outset', 'mask-border-repeat', 'mask-box-image', 'mask-box-image-source', 'mask-box-image-slice', 'mask-box-image-width', 'mask-box-image-outset', 'mask-box-image-repeat'];
-
-    MaskBorder.prototype.normalize = function() {
-      return this.name.replace('box-image', 'border');
-    };
-
-    MaskBorder.prototype.prefixed = function(prop, prefix) {
-      if (prefix === '-webkit-') {
-        return MaskBorder.__super__.prefixed.apply(this, arguments).replace('border', 'box-image');
-      } else {
-        return MaskBorder.__super__.prefixed.apply(this, arguments);
-      }
-    };
-
-    return MaskBorder;
-
-  })(Declaration);
-
-  module.exports = MaskBorder;
-
-}).call(this);
-
-},{"../declaration":6}],41:[function(require,module,exports){
-(function() {
-  var Declaration, Order, flexSpec,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  flexSpec = require('./flex-spec');
-
-  Declaration = require('../declaration');
-
-  Order = (function(superClass) {
-    extend(Order, superClass);
-
-    function Order() {
-      return Order.__super__.constructor.apply(this, arguments);
-    }
-
-    Order.names = ['order', 'flex-order', 'box-ordinal-group'];
-
-    Order.prototype.prefixed = function(prop, prefix) {
-      var ref, spec;
-      ref = flexSpec(prefix), spec = ref[0], prefix = ref[1];
-      if (spec === 2009) {
-        return prefix + 'box-ordinal-group';
-      } else if (spec === 2012) {
-        return prefix + 'flex-order';
-      } else {
-        return Order.__super__.prefixed.apply(this, arguments);
-      }
-    };
-
-    Order.prototype.normalize = function(prop) {
-      return 'order';
-    };
-
-    Order.prototype.set = function(decl, prefix) {
-      var spec;
-      spec = flexSpec(prefix)[0];
-      if (spec === 2009) {
-        decl.value = (parseInt(decl.value) + 1).toString();
-        return Order.__super__.set.call(this, decl, prefix);
-      } else {
-        return Order.__super__.set.apply(this, arguments);
-      }
-    };
-
-    return Order;
-
-  })(Declaration);
-
-  module.exports = Order;
-
-}).call(this);
-
-},{"../declaration":6,"./flex-spec":25}],42:[function(require,module,exports){
-(function() {
-  var OldValue, Pixelated, Value,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  OldValue = require('../old-value');
-
-  Value = require('../value');
-
-  Pixelated = (function(superClass) {
-    extend(Pixelated, superClass);
-
-    function Pixelated() {
-      return Pixelated.__super__.constructor.apply(this, arguments);
-    }
-
-    Pixelated.names = ['pixelated'];
-
-    Pixelated.prototype.replace = function(string, prefix) {
-      if (prefix === '-webkit-') {
-        return string.replace(this.regexp(), '$1-webkit-optimize-contrast');
-      } else if (prefix === '-moz-') {
-        return string.replace(this.regexp(), '$1-moz-crisp-edges');
-      } else {
-        return Pixelated.__super__.replace.apply(this, arguments);
-      }
-    };
-
-    Pixelated.prototype.old = function(prefix) {
-      if (prefix === '-webkit-') {
-        return new OldValue(this.name, '-webkit-optimize-contrast');
-      } else if (prefix === '-moz-') {
-        return new OldValue(this.name, '-moz-crisp-edges');
-      } else {
-        return Pixelated.__super__.old.apply(this, arguments);
-      }
-    };
-
-    return Pixelated;
-
-  })(Value);
-
-  module.exports = Pixelated;
-
-}).call(this);
-
-},{"../old-value":50,"../value":59}],43:[function(require,module,exports){
-(function() {
-  var Placeholder, Selector,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Selector = require('../selector');
-
-  Placeholder = (function(superClass) {
-    extend(Placeholder, superClass);
-
-    function Placeholder() {
-      return Placeholder.__super__.constructor.apply(this, arguments);
-    }
-
-    Placeholder.names = [':placeholder-shown', '::placeholder'];
-
-    Placeholder.prototype.possible = function() {
-      return Placeholder.__super__.possible.apply(this, arguments).concat('-moz- old');
-    };
-
-    Placeholder.prototype.prefixed = function(prefix) {
-      if ('-webkit-' === prefix) {
-        return '::-webkit-input-placeholder';
-      } else if ('-ms-' === prefix) {
-        return ':-ms-input-placeholder';
-      } else if ('-moz- old' === prefix) {
-        return ':-moz-placeholder';
-      } else {
-        return "::" + prefix + "placeholder";
-      }
-    };
-
-    return Placeholder;
-
-  })(Selector);
-
-  module.exports = Placeholder;
-
-}).call(this);
-
-},{"../selector":55}],44:[function(require,module,exports){
-(function() {
-  var OldValue, Stretch, Value,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  OldValue = require('../old-value');
-
-  Value = require('../value');
-
-  Stretch = (function(superClass) {
-    extend(Stretch, superClass);
-
-    function Stretch() {
-      return Stretch.__super__.constructor.apply(this, arguments);
-    }
-
-    Stretch.names = ['stretch', 'fill', 'fill-available'];
-
-    Stretch.prototype.replace = function(string, prefix) {
-      if (prefix === '-moz-') {
-        return string.replace(this.regexp(), '$1-moz-available$3');
-      } else if (prefix === '-webkit-') {
-        return string.replace(this.regexp(), '$1-webkit-fill-available$3');
-      } else {
-        return Stretch.__super__.replace.apply(this, arguments);
-      }
-    };
-
-    Stretch.prototype.old = function(prefix) {
-      if (prefix === '-moz-') {
-        return new OldValue(this.name, '-moz-available');
-      } else if (prefix === '-webkit-') {
-        return new OldValue(this.name, '-webkit-fill-available');
-      } else {
-        return Stretch.__super__.old.apply(this, arguments);
-      }
-    };
-
-    return Stretch;
-
-  })(Value);
-
-  module.exports = Stretch;
-
-}).call(this);
-
-},{"../old-value":50,"../value":59}],45:[function(require,module,exports){
-(function() {
-  var Declaration, TextEmphasisPosition,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Declaration = require('../declaration');
-
-  TextEmphasisPosition = (function(superClass) {
-    extend(TextEmphasisPosition, superClass);
-
-    function TextEmphasisPosition() {
-      return TextEmphasisPosition.__super__.constructor.apply(this, arguments);
-    }
-
-    TextEmphasisPosition.names = ['text-emphasis-position'];
-
-    TextEmphasisPosition.prototype.set = function(decl, prefix) {
-      if (prefix === '-webkit-') {
-        decl.value = decl.value.replace(/\s*(right|left)\s*/i, '');
-        return TextEmphasisPosition.__super__.set.call(this, decl, prefix);
-      } else {
-        return TextEmphasisPosition.__super__.set.apply(this, arguments);
-      }
-    };
-
-    return TextEmphasisPosition;
-
-  })(Declaration);
-
-  module.exports = TextEmphasisPosition;
-
-}).call(this);
-
-},{"../declaration":6}],46:[function(require,module,exports){
-(function() {
-  var Declaration, TransformDecl,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Declaration = require('../declaration');
-
-  TransformDecl = (function(superClass) {
-    extend(TransformDecl, superClass);
-
-    function TransformDecl() {
-      return TransformDecl.__super__.constructor.apply(this, arguments);
-    }
-
-    TransformDecl.names = ['transform', 'transform-origin'];
-
-    TransformDecl.functions3d = ['matrix3d', 'translate3d', 'translateZ', 'scale3d', 'scaleZ', 'rotate3d', 'rotateX', 'rotateY', 'perspective'];
-
-    TransformDecl.prototype.keyframeParents = function(decl) {
-      var parent;
-      parent = decl.parent;
-      while (parent) {
-        if (parent.type === 'atrule' && parent.name === 'keyframes') {
-          return true;
-        }
-        parent = parent.parent;
-      }
-      return false;
-    };
-
-    TransformDecl.prototype.contain3d = function(decl) {
-      var func, i, len, ref;
-      if (decl.prop === 'transform-origin') {
-        return false;
-      }
-      ref = TransformDecl.functions3d;
-      for (i = 0, len = ref.length; i < len; i++) {
-        func = ref[i];
-        if (decl.value.indexOf(func + "(") !== -1) {
-          return true;
-        }
-      }
-      return false;
-    };
-
-    TransformDecl.prototype.set = function(decl, prefix) {
-      decl = TransformDecl.__super__.set.apply(this, arguments);
-      if (prefix === '-ms-') {
-        decl.value = decl.value.replace(/rotateZ/gi, 'rotate');
-      }
-      return decl;
-    };
-
-    TransformDecl.prototype.insert = function(decl, prefix, prefixes) {
-      if (prefix === '-ms-') {
-        if (!this.contain3d(decl) && !this.keyframeParents(decl)) {
-          return TransformDecl.__super__.insert.apply(this, arguments);
-        }
-      } else if (prefix === '-o-') {
-        if (!this.contain3d(decl)) {
-          return TransformDecl.__super__.insert.apply(this, arguments);
-        }
-      } else {
-        return TransformDecl.__super__.insert.apply(this, arguments);
-      }
-    };
-
-    return TransformDecl;
-
-  })(Declaration);
-
-  module.exports = TransformDecl;
-
-}).call(this);
-
-},{"../declaration":6}],47:[function(require,module,exports){
-(function() {
-  var Declaration, WritingMode,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Declaration = require('../declaration');
-
-  WritingMode = (function(superClass) {
-    extend(WritingMode, superClass);
-
-    function WritingMode() {
-      return WritingMode.__super__.constructor.apply(this, arguments);
-    }
-
-    WritingMode.names = ['writing-mode'];
-
-    WritingMode.msValues = {
-      'horizontal-tb': 'lr-tb',
-      'vertical-rl': 'tb-rl',
-      'vertical-lr': 'tb-lr'
-    };
-
-    WritingMode.prototype.set = function(decl, prefix) {
-      if (prefix === '-ms-') {
-        decl.value = WritingMode.msValues[decl.value] || decl.value;
-        return WritingMode.__super__.set.call(this, decl, prefix);
-      } else {
-        return WritingMode.__super__.set.apply(this, arguments);
-      }
-    };
-
-    return WritingMode;
-
-  })(Declaration);
-
-  module.exports = WritingMode;
-
-}).call(this);
-
-},{"../declaration":6}],48:[function(require,module,exports){
-(function() {
-  var browserslist, capitalize, names, prefix;
-
-  browserslist = require('browserslist');
-
-  capitalize = function(str) {
-    return str.slice(0, 1).toUpperCase() + str.slice(1);
-  };
-
-  names = {
-    ie: 'IE',
-    ie_mob: 'IE Mobile',
-    ios_saf: 'iOS',
-    op_mini: 'Opera Mini',
-    op_mob: 'Opera Mobile',
-    and_chr: 'Chrome for Android',
-    and_ff: 'Firefox for Android',
-    and_uc: 'UC for Android'
-  };
-
-  prefix = function(name, prefixes) {
-    var out;
-    out = '  ' + name + ': ';
-    out += prefixes.map(function(i) {
-      return i.replace(/^-(.*)-$/g, '$1');
-    }).join(', ');
-    out += "\n";
-    return out;
-  };
-
-  module.exports = function(prefixes) {
-    var atrules, browser, coverage, data, j, k, l, len, len1, len2, list, name, out, props, ref, ref1, ref2, ref3, ref4, ref5, round, selector, selectors, string, value, values, version, versions;
-    if (prefixes.browsers.selected.length === 0) {
-      return "No browsers selected";
-    }
-    versions = [];
-    ref = prefixes.browsers.selected;
-    for (j = 0, len = ref.length; j < len; j++) {
-      browser = ref[j];
-      ref1 = browser.split(' '), name = ref1[0], version = ref1[1];
-      name = names[name] || capitalize(name);
-      if (versions[name]) {
-        versions[name].push(version);
-      } else {
-        versions[name] = [version];
-      }
-    }
-    out = "Browsers:\n";
-    for (browser in versions) {
-      list = versions[browser];
-      list = list.sort(function(a, b) {
-        return parseFloat(b) - parseFloat(a);
-      });
-      out += '  ' + browser + ': ' + list.join(', ') + "\n";
-    }
-    coverage = browserslist.coverage(prefixes.browsers.selected);
-    round = Math.round(coverage * 100) / 100.0;
-    out += "\nThese browsers account for " + round + "% of all users globally\n";
-    atrules = '';
-    ref2 = prefixes.add;
-    for (name in ref2) {
-      data = ref2[name];
-      if (name[0] === '@' && data.prefixes) {
-        atrules += prefix(name, data.prefixes);
-      }
-    }
-    if (atrules !== '') {
-      out += "\nAt-Rules:\n" + atrules;
-    }
-    selectors = '';
-    ref3 = prefixes.add.selectors;
-    for (k = 0, len1 = ref3.length; k < len1; k++) {
-      selector = ref3[k];
-      if (selector.prefixes) {
-        selectors += prefix(selector.name, selector.prefixes);
-      }
-    }
-    if (selectors !== '') {
-      out += "\nSelectors:\n" + selectors;
-    }
-    values = '';
-    props = '';
-    ref4 = prefixes.add;
-    for (name in ref4) {
-      data = ref4[name];
-      if (name[0] !== '@' && data.prefixes) {
-        props += prefix(name, data.prefixes);
-      }
-      if (!data.values) {
-        continue;
-      }
-      ref5 = data.values;
-      for (l = 0, len2 = ref5.length; l < len2; l++) {
-        value = ref5[l];
-        string = prefix(value.name, value.prefixes);
-        if (values.indexOf(string) === -1) {
-          values += string;
-        }
-      }
-    }
-    if (props !== '') {
-      out += "\nProperties:\n" + props;
-    }
-    if (values !== '') {
-      out += "\nValues:\n" + values;
-    }
-    if (atrules === '' && selectors === '' && props === '' && values === '') {
-      out += '\nAwesome! Your browsers don\'t require any vendor prefixes.' + '\nNow you can remove Autoprefixer from build steps.';
-    }
-    return out;
-  };
-
-}).call(this);
-
-},{"browserslist":65}],49:[function(require,module,exports){
-(function() {
-  var OldSelector;
-
-  OldSelector = (function() {
-    function OldSelector(selector, prefix1) {
-      var i, len, prefix, ref;
-      this.prefix = prefix1;
-      this.prefixed = selector.prefixed(this.prefix);
-      this.regexp = selector.regexp(this.prefix);
-      this.prefixeds = [];
-      ref = selector.possible();
-      for (i = 0, len = ref.length; i < len; i++) {
-        prefix = ref[i];
-        this.prefixeds.push([selector.prefixed(prefix), selector.regexp(prefix)]);
-      }
-      this.unprefixed = selector.name;
-      this.nameRegexp = selector.regexp();
-    }
-
-    OldSelector.prototype.isHack = function(rule) {
-      var before, i, index, len, ref, ref1, regexp, rules, some, string;
-      index = rule.parent.index(rule) + 1;
-      rules = rule.parent.nodes;
-      while (index < rules.length) {
-        before = rules[index].selector;
-        if (!before) {
-          return true;
-        }
-        if (before.indexOf(this.unprefixed) !== -1 && before.match(this.nameRegexp)) {
-          return false;
-        }
-        some = false;
-        ref = this.prefixeds;
-        for (i = 0, len = ref.length; i < len; i++) {
-          ref1 = ref[i], string = ref1[0], regexp = ref1[1];
-          if (before.indexOf(string) !== -1 && before.match(regexp)) {
-            some = true;
-            break;
-          }
-        }
-        if (!some) {
-          return true;
-        }
-        index += 1;
-      }
-      return true;
-    };
-
-    OldSelector.prototype.check = function(rule) {
-      if (rule.selector.indexOf(this.prefixed) === -1) {
-        return false;
-      }
-      if (!rule.selector.match(this.regexp)) {
-        return false;
-      }
-      if (this.isHack(rule)) {
-        return false;
-      }
-      return true;
-    };
-
-    return OldSelector;
-
-  })();
-
-  module.exports = OldSelector;
-
-}).call(this);
-
-},{}],50:[function(require,module,exports){
-(function() {
-  var OldValue, utils;
-
-  utils = require('./utils');
-
-  OldValue = (function() {
-    function OldValue(unprefixed, prefixed, string, regexp) {
-      this.unprefixed = unprefixed;
-      this.prefixed = prefixed;
-      this.string = string;
-      this.regexp = regexp;
-      this.regexp || (this.regexp = utils.regexp(this.prefixed));
-      this.string || (this.string = this.prefixed);
-    }
-
-    OldValue.prototype.check = function(value) {
-      if (value.indexOf(this.string) !== -1) {
-        return !!value.match(this.regexp);
-      } else {
-        return false;
-      }
-    };
-
-    return OldValue;
-
-  })();
-
-  module.exports = OldValue;
-
-}).call(this);
-
-},{"./utils":58}],51:[function(require,module,exports){
-(function() {
-  var Browsers, Prefixer, clone, utils, vendor,
-    hasProp = {}.hasOwnProperty;
-
-  Browsers = require('./browsers');
-
-  utils = require('./utils');
-
-  vendor = require('postcss/lib/vendor');
-
-  clone = function(obj, parent) {
-    var cloned, i, value;
-    cloned = new obj.constructor();
-    for (i in obj) {
-      if (!hasProp.call(obj, i)) continue;
-      value = obj[i];
-      if (i === 'parent' && typeof value === 'object') {
-        if (parent) {
-          cloned[i] = parent;
-        }
-      } else if (i === 'source') {
-        cloned[i] = value;
-      } else if (i === null) {
-        cloned[i] = value;
-      } else if (value instanceof Array) {
-        cloned[i] = value.map(function(i) {
-          return clone(i, cloned);
-        });
-      } else if (i !== '_autoprefixerPrefix' && i !== '_autoprefixerValues') {
-        if (typeof value === 'object' && value !== null) {
-          value = clone(value, cloned);
-        }
-        cloned[i] = value;
-      }
-    }
-    return cloned;
-  };
-
-  Prefixer = (function() {
-    Prefixer.hack = function(klass) {
-      var j, len, name, ref, results;
-      this.hacks || (this.hacks = {});
-      ref = klass.names;
-      results = [];
-      for (j = 0, len = ref.length; j < len; j++) {
-        name = ref[j];
-        results.push(this.hacks[name] = klass);
-      }
-      return results;
-    };
-
-    Prefixer.load = function(name, prefixes, all) {
-      var klass, ref;
-      klass = (ref = this.hacks) != null ? ref[name] : void 0;
-      if (klass) {
-        return new klass(name, prefixes, all);
-      } else {
-        return new this(name, prefixes, all);
-      }
-    };
-
-    Prefixer.clone = function(node, overrides) {
-      var cloned, name;
-      cloned = clone(node);
-      for (name in overrides) {
-        cloned[name] = overrides[name];
-      }
-      return cloned;
-    };
-
-    function Prefixer(name1, prefixes1, all1) {
-      this.name = name1;
-      this.prefixes = prefixes1;
-      this.all = all1;
-    }
-
-    Prefixer.prototype.parentPrefix = function(node) {
-      var prefix;
-      prefix = node._autoprefixerPrefix != null ? node._autoprefixerPrefix : node.type === 'decl' && node.prop[0] === '-' ? vendor.prefix(node.prop) : node.type === 'root' ? false : node.type === 'rule' && node.selector.indexOf(':-') !== -1 && /:(-\w+-)/.test(node.selector) ? node.selector.match(/:(-\w+-)/)[1] : node.type === 'atrule' && node.name[0] === '-' ? vendor.prefix(node.name) : this.parentPrefix(node.parent);
-      if (Browsers.prefixes().indexOf(prefix) === -1) {
-        prefix = false;
-      }
-      return node._autoprefixerPrefix = prefix;
-    };
-
-    Prefixer.prototype.process = function(node) {
-      var added, j, k, len, len1, parent, prefix, prefixes, ref;
-      if (!this.check(node)) {
-        return;
-      }
-      parent = this.parentPrefix(node);
-      prefixes = [];
-      ref = this.prefixes;
-      for (j = 0, len = ref.length; j < len; j++) {
-        prefix = ref[j];
-        if (parent && parent !== utils.removeNote(prefix)) {
-          continue;
-        }
-        prefixes.push(prefix);
-      }
-      added = [];
-      for (k = 0, len1 = prefixes.length; k < len1; k++) {
-        prefix = prefixes[k];
-        if (this.add(node, prefix, added.concat([prefix]))) {
-          added.push(prefix);
-        }
-      }
-      return added;
-    };
-
-    Prefixer.prototype.clone = function(node, overrides) {
-      return Prefixer.clone(node, overrides);
-    };
-
-    return Prefixer;
-
-  })();
-
-  module.exports = Prefixer;
-
-}).call(this);
-
-},{"./browsers":5,"./utils":58,"postcss/lib/vendor":160}],52:[function(require,module,exports){
-(function() {
-  var AtRule, Browsers, Declaration, Prefixes, Processor, Resolution, Selector, Supports, Transition, Value, declsCache, utils, vendor;
-
-  Declaration = require('./declaration');
-
-  Resolution = require('./resolution');
-
-  Transition = require('./transition');
-
-  Processor = require('./processor');
-
-  Supports = require('./supports');
-
-  Browsers = require('./browsers');
-
-  Selector = require('./selector');
-
-  AtRule = require('./at-rule');
-
-  Value = require('./value');
-
-  utils = require('./utils');
-
-  vendor = require('postcss/lib/vendor');
-
-  Selector.hack(require('./hacks/fullscreen'));
-
-  Selector.hack(require('./hacks/placeholder'));
-
-  Declaration.hack(require('./hacks/flex'));
-
-  Declaration.hack(require('./hacks/order'));
-
-  Declaration.hack(require('./hacks/filter'));
-
-  Declaration.hack(require('./hacks/grid-end'));
-
-  Declaration.hack(require('./hacks/flex-flow'));
-
-  Declaration.hack(require('./hacks/flex-grow'));
-
-  Declaration.hack(require('./hacks/flex-wrap'));
-
-  Declaration.hack(require('./hacks/grid-start'));
-
-  Declaration.hack(require('./hacks/align-self'));
-
-  Declaration.hack(require('./hacks/flex-basis'));
-
-  Declaration.hack(require('./hacks/mask-border'));
-
-  Declaration.hack(require('./hacks/align-items'));
-
-  Declaration.hack(require('./hacks/flex-shrink'));
-
-  Declaration.hack(require('./hacks/break-props'));
-
-  Declaration.hack(require('./hacks/writing-mode'));
-
-  Declaration.hack(require('./hacks/border-image'));
-
-  Declaration.hack(require('./hacks/justify-items'));
-
-  Declaration.hack(require('./hacks/align-content'));
-
-  Declaration.hack(require('./hacks/border-radius'));
-
-  Declaration.hack(require('./hacks/block-logical'));
-
-  Declaration.hack(require('./hacks/grid-template'));
-
-  Declaration.hack(require('./hacks/inline-logical'));
-
-  Declaration.hack(require('./hacks/grid-row-align'));
-
-  Declaration.hack(require('./hacks/transform-decl'));
-
-  Declaration.hack(require('./hacks/flex-direction'));
-
-  Declaration.hack(require('./hacks/image-rendering'));
-
-  Declaration.hack(require('./hacks/justify-content'));
-
-  Declaration.hack(require('./hacks/background-size'));
-
-  Declaration.hack(require('./hacks/text-emphasis-position'));
-
-  Value.hack(require('./hacks/stretch'));
-
-  Value.hack(require('./hacks/gradient'));
-
-  Value.hack(require('./hacks/pixelated'));
-
-  Value.hack(require('./hacks/image-set'));
-
-  Value.hack(require('./hacks/cross-fade'));
-
-  Value.hack(require('./hacks/flex-values'));
-
-  Value.hack(require('./hacks/display-flex'));
-
-  Value.hack(require('./hacks/display-grid'));
-
-  Value.hack(require('./hacks/filter-value'));
-
-  declsCache = {};
-
-  Prefixes = (function() {
-    function Prefixes(data1, browsers, options) {
-      var ref;
-      this.data = data1;
-      this.browsers = browsers;
-      this.options = options != null ? options : {};
-      ref = this.preprocess(this.select(this.data)), this.add = ref[0], this.remove = ref[1];
-      this.transition = new Transition(this);
-      this.processor = new Processor(this);
-    }
-
-    Prefixes.prototype.cleaner = function() {
-      var empty;
-      if (!this.cleanerCache) {
-        if (this.browsers.selected.length) {
-          empty = new Browsers(this.browsers.data, []);
-          this.cleanerCache = new Prefixes(this.data, empty, this.options);
-        } else {
-          return this;
-        }
-      }
-      return this.cleanerCache;
-    };
-
-    Prefixes.prototype.select = function(list) {
-      var add, all, data, name, notes, selected;
-      selected = {
-        add: {},
-        remove: {}
-      };
-      for (name in list) {
-        data = list[name];
-        add = data.browsers.map(function(i) {
-          var params;
-          params = i.split(' ');
-          return {
-            browser: params[0] + ' ' + params[1],
-            note: params[2]
-          };
-        });
-        notes = add.filter(function(i) {
-          return i.note;
-        }).map((function(_this) {
-          return function(i) {
-            return _this.browsers.prefix(i.browser) + ' ' + i.note;
-          };
-        })(this));
-        notes = utils.uniq(notes);
-        add = add.filter((function(_this) {
-          return function(i) {
-            return _this.browsers.isSelected(i.browser);
-          };
-        })(this)).map((function(_this) {
-          return function(i) {
-            var prefix;
-            prefix = _this.browsers.prefix(i.browser);
-            if (i.note) {
-              return prefix + ' ' + i.note;
-            } else {
-              return prefix;
-            }
-          };
-        })(this));
-        add = this.sort(utils.uniq(add));
-        if (this.options.flexbox === 'no-2009') {
-          add = add.filter(function(i) {
-            return i.indexOf('2009') === -1;
-          });
-        }
-        all = data.browsers.map((function(_this) {
-          return function(i) {
-            return _this.browsers.prefix(i);
-          };
-        })(this));
-        if (data.mistakes) {
-          all = all.concat(data.mistakes);
-        }
-        all = all.concat(notes);
-        all = utils.uniq(all);
-        if (add.length) {
-          selected.add[name] = add;
-          if (add.length < all.length) {
-            selected.remove[name] = all.filter(function(i) {
-              return add.indexOf(i) === -1;
-            });
-          }
-        } else {
-          selected.remove[name] = all;
-        }
-      }
-      return selected;
-    };
-
-    Prefixes.prototype.sort = function(prefixes) {
-      return prefixes.sort(function(a, b) {
-        var aLength, bLength;
-        aLength = utils.removeNote(a).length;
-        bLength = utils.removeNote(b).length;
-        if (aLength === bLength) {
-          return b.length - a.length;
-        } else {
-          return bLength - aLength;
-        }
-      });
-    };
-
-    Prefixes.prototype.preprocess = function(selected) {
-      var a, add, j, k, l, len, len1, len2, len3, len4, len5, len6, m, n, name, o, old, olds, p, prefix, prefixed, prefixes, prop, props, ref, ref1, ref2, ref3, remove, selector, value, values;
-      add = {
-        selectors: [],
-        '@supports': new Supports(Prefixes, this)
-      };
-      ref = selected.add;
-      for (name in ref) {
-        prefixes = ref[name];
-        if (name === '@keyframes' || name === '@viewport') {
-          add[name] = new AtRule(name, prefixes, this);
-        } else if (name === '@resolution') {
-          add[name] = new Resolution(name, prefixes, this);
-        } else if (this.data[name].selector) {
-          add.selectors.push(Selector.load(name, prefixes, this));
-        } else {
-          props = this.data[name].props;
-          if (props) {
-            value = Value.load(name, prefixes, this);
-            for (j = 0, len = props.length; j < len; j++) {
-              prop = props[j];
-              if (!add[prop]) {
-                add[prop] = {
-                  values: []
-                };
-              }
-              add[prop].values.push(value);
-            }
-          } else {
-            values = ((ref1 = add[name]) != null ? ref1.values : void 0) || [];
-            add[name] = Declaration.load(name, prefixes, this);
-            add[name].values = values;
-          }
-        }
-      }
-      remove = {
-        selectors: []
-      };
-      ref2 = selected.remove;
-      for (name in ref2) {
-        prefixes = ref2[name];
-        if (this.data[name].selector) {
-          selector = Selector.load(name, prefixes);
-          for (k = 0, len1 = prefixes.length; k < len1; k++) {
-            prefix = prefixes[k];
-            remove.selectors.push(selector.old(prefix));
-          }
-        } else if (name === '@keyframes' || name === '@viewport') {
-          for (l = 0, len2 = prefixes.length; l < len2; l++) {
-            prefix = prefixes[l];
-            prefixed = '@' + prefix + name.slice(1);
-            remove[prefixed] = {
-              remove: true
-            };
-          }
-        } else if (name === '@resolution') {
-          remove[name] = new Resolution(name, prefixes, this);
-        } else {
-          props = this.data[name].props;
-          if (props) {
-            value = Value.load(name, [], this);
-            for (m = 0, len3 = prefixes.length; m < len3; m++) {
-              prefix = prefixes[m];
-              old = value.old(prefix);
-              if (old) {
-                for (n = 0, len4 = props.length; n < len4; n++) {
-                  prop = props[n];
-                  if (!remove[prop]) {
-                    remove[prop] = {};
-                  }
-                  if (!remove[prop].values) {
-                    remove[prop].values = [];
-                  }
-                  remove[prop].values.push(old);
-                }
-              }
-            }
-          } else {
-            for (o = 0, len5 = prefixes.length; o < len5; o++) {
-              prefix = prefixes[o];
-              prop = vendor.unprefixed(name);
-              olds = this.decl(name).old(name, prefix);
-              if (name === 'align-self') {
-                a = (ref3 = add[name]) != null ? ref3.prefixes : void 0;
-                if (a) {
-                  if (prefix === '-webkit- 2009' && a.indexOf('-webkit-') !== -1) {
-                    continue;
-                  } else if (prefix === '-webkit-' && a.indexOf('-webkit- 2009') !== -1) {
-                    continue;
-                  }
-                }
-              }
-              for (p = 0, len6 = olds.length; p < len6; p++) {
-                prefixed = olds[p];
-                if (!remove[prefixed]) {
-                  remove[prefixed] = {};
-                }
-                remove[prefixed].remove = true;
-              }
-            }
-          }
-        }
-      }
-      return [add, remove];
-    };
-
-    Prefixes.prototype.decl = function(prop) {
-      var decl;
-      decl = declsCache[prop];
-      if (decl) {
-        return decl;
-      } else {
-        return declsCache[prop] = Declaration.load(prop);
-      }
-    };
-
-    Prefixes.prototype.unprefixed = function(prop) {
-      var value;
-      value = this.normalize(vendor.unprefixed(prop));
-      if (value === 'flex-direction') {
-        value = 'flex-flow';
-      }
-      return value;
-    };
-
-    Prefixes.prototype.normalize = function(prop) {
-      return this.decl(prop).normalize(prop);
-    };
-
-    Prefixes.prototype.prefixed = function(prop, prefix) {
-      prop = vendor.unprefixed(prop);
-      return this.decl(prop).prefixed(prop, prefix);
-    };
-
-    Prefixes.prototype.values = function(type, prop) {
-      var data, global, ref, ref1, values;
-      data = this[type];
-      global = (ref = data['*']) != null ? ref.values : void 0;
-      values = (ref1 = data[prop]) != null ? ref1.values : void 0;
-      if (global && values) {
-        return utils.uniq(global.concat(values));
-      } else {
-        return global || values || [];
-      }
-    };
-
-    Prefixes.prototype.group = function(decl) {
-      var checker, index, length, rule, unprefixed;
-      rule = decl.parent;
-      index = rule.index(decl);
-      length = rule.nodes.length;
-      unprefixed = this.unprefixed(decl.prop);
-      checker = (function(_this) {
-        return function(step, callback) {
-          var other;
-          index += step;
-          while (index >= 0 && index < length) {
-            other = rule.nodes[index];
-            if (other.type === 'decl') {
-              if (step === -1 && other.prop === unprefixed) {
-                if (!Browsers.withPrefix(other.value)) {
-                  break;
-                }
-              }
-              if (_this.unprefixed(other.prop) !== unprefixed) {
-                break;
-              } else if (callback(other) === true) {
-                return true;
-              }
-              if (step === +1 && other.prop === unprefixed) {
-                if (!Browsers.withPrefix(other.value)) {
-                  break;
-                }
-              }
-            }
-            index += step;
-          }
-          return false;
-        };
-      })(this);
-      return {
-        up: function(callback) {
-          return checker(-1, callback);
-        },
-        down: function(callback) {
-          return checker(+1, callback);
-        }
-      };
-    };
-
-    return Prefixes;
-
-  })();
-
-  module.exports = Prefixes;
-
-}).call(this);
-
-},{"./at-rule":2,"./browsers":5,"./declaration":6,"./hacks/align-content":7,"./hacks/align-items":8,"./hacks/align-self":9,"./hacks/background-size":10,"./hacks/block-logical":11,"./hacks/border-image":12,"./hacks/border-radius":13,"./hacks/break-props":14,"./hacks/cross-fade":15,"./hacks/display-flex":16,"./hacks/display-grid":17,"./hacks/filter":19,"./hacks/filter-value":18,"./hacks/flex":28,"./hacks/flex-basis":20,"./hacks/flex-direction":21,"./hacks/flex-flow":22,"./hacks/flex-grow":23,"./hacks/flex-shrink":24,"./hacks/flex-values":26,"./hacks/flex-wrap":27,"./hacks/fullscreen":29,"./hacks/gradient":30,"./hacks/grid-end":31,"./hacks/grid-row-align":32,"./hacks/grid-start":33,"./hacks/grid-template":34,"./hacks/image-rendering":35,"./hacks/image-set":36,"./hacks/inline-logical":37,"./hacks/justify-content":38,"./hacks/justify-items":39,"./hacks/mask-border":40,"./hacks/order":41,"./hacks/pixelated":42,"./hacks/placeholder":43,"./hacks/stretch":44,"./hacks/text-emphasis-position":45,"./hacks/transform-decl":46,"./hacks/writing-mode":47,"./processor":53,"./resolution":54,"./selector":55,"./supports":56,"./transition":57,"./utils":58,"./value":59,"postcss/lib/vendor":160}],53:[function(require,module,exports){
-(function() {
-  var OLD_DIRECTION, Processor, SIZES, Value, utils, vendor;
-
-  vendor = require('postcss/lib/vendor');
-
-  Value = require('./value');
-
-  utils = require('./utils');
-
-  OLD_DIRECTION = /(^|[^-])(linear|radial)-gradient\(\s*(top|left|right|bottom)/i;
-
-  SIZES = ['width', 'height', 'min-width', 'max-width', 'min-height', 'max-height', 'inline-size', 'min-inline-size', 'max-inline-size', 'block-size', 'min-block-size', 'max-block-size'];
-
-  Processor = (function() {
-    function Processor(prefixes) {
-      this.prefixes = prefixes;
-    }
-
-    Processor.prototype.add = function(css, result) {
-      var keyframes, resolution, supports, viewport;
-      resolution = this.prefixes.add['@resolution'];
-      keyframes = this.prefixes.add['@keyframes'];
-      viewport = this.prefixes.add['@viewport'];
-      supports = this.prefixes.add['@supports'];
-      css.walkAtRules((function(_this) {
-        return function(rule) {
-          if (rule.name === 'keyframes') {
-            if (!_this.disabled(rule)) {
-              return keyframes != null ? keyframes.process(rule) : void 0;
-            }
-          } else if (rule.name === 'viewport') {
-            if (!_this.disabled(rule)) {
-              return viewport != null ? viewport.process(rule) : void 0;
-            }
-          } else if (rule.name === 'supports') {
-            if (_this.prefixes.options.supports !== false && !_this.disabled(rule)) {
-              return supports.process(rule);
-            }
-          } else if (rule.name === 'media' && rule.params.indexOf('-resolution') !== -1) {
-            if (!_this.disabled(rule)) {
-              return resolution != null ? resolution.process(rule) : void 0;
-            }
-          }
-        };
-      })(this));
-      css.walkRules((function(_this) {
-        return function(rule) {
-          var j, len, ref, results, selector;
-          if (_this.disabled(rule)) {
-            return;
-          }
-          ref = _this.prefixes.add.selectors;
-          results = [];
-          for (j = 0, len = ref.length; j < len; j++) {
-            selector = ref[j];
-            results.push(selector.process(rule, result));
-          }
-          return results;
-        };
-      })(this));
-      css.walkDecls((function(_this) {
-        return function(decl) {
-          var display, prefixer;
-          if (_this.disabled(decl)) {
-            return;
-          }
-          if (decl.prop === 'display' && decl.value === 'box') {
-            result.warn('You should write display: flex by final spec ' + 'instead of display: box', {
-              node: decl
-            });
-            return;
-          }
-          if (decl.value.indexOf('linear-gradient') !== -1) {
-            if (OLD_DIRECTION.test(decl.value)) {
-              result.warn('Gradient has outdated direction syntax. ' + 'New syntax is like `to left` instead of `right`.', {
-                node: decl
-              });
-            }
-          }
-          if (decl.prop === 'text-emphasis-position') {
-            if (decl.value === 'under' || decl.value === 'over') {
-              result.warn('You should use 2 values for text-emphasis-position ' + 'For example, `under left` instead of just `under`.', {
-                node: decl
-              });
-            }
-          }
-          if (SIZES.indexOf(decl.prop) !== -1) {
-            if (decl.value.indexOf('fill-available') !== -1) {
-              result.warn('Replace fill-available to stretch, ' + 'because spec had been changed', {
-                node: decl
-              });
-            } else if (decl.value.indexOf('fill') !== -1) {
-              result.warn('Replace fill to stretch, because spec had been changed', {
-                node: decl
-              });
-            }
-          }
-          if (_this.prefixes.options.flexbox !== false) {
-            if (decl.prop === 'grid-row-end' && decl.value.indexOf('span') === -1) {
-              result.warn('IE supports only grid-row-end with span. ' + 'You should add grid: false option to Autoprefixer ' + 'and use some JS grid polyfill for full spec support', {
-                node: decl
-              });
-            }
-            if (decl.prop === 'grid-row') {
-              if (decl.value.indexOf('/') !== -1 && decl.value.indexOf('span') === -1) {
-                result.warn('IE supports only grid-row with / and span. ' + 'You should add grid: false option to Autoprefixer ' + 'and use some JS grid polyfill for full spec support', {
-                  node: decl
-                });
-              }
-            }
-          }
-          if (decl.prop === 'transition' || decl.prop === 'transition-property') {
-            return _this.prefixes.transition.add(decl, result);
-          } else if (decl.prop === 'align-self') {
-            display = _this.displayType(decl);
-            if (display !== 'grid' && _this.prefixes.options.flexbox !== false) {
-              prefixer = _this.prefixes.add['align-self'];
-              if (prefixer && prefixer.prefixes) {
-                prefixer.process(decl);
-              }
-            }
-            if (display !== 'flex' && _this.prefixes.options.grid !== false) {
-              prefixer = _this.prefixes.add['grid-row-align'];
-              if (prefixer && prefixer.prefixes) {
-                return prefixer.process(decl);
-              }
-            }
-          } else {
-            prefixer = _this.prefixes.add[decl.prop];
-            if (prefixer && prefixer.prefixes) {
-              return prefixer.process(decl);
-            }
-          }
-        };
-      })(this));
-      return css.walkDecls((function(_this) {
-        return function(decl) {
-          var j, len, ref, unprefixed, value;
-          if (_this.disabled(decl)) {
-            return;
-          }
-          unprefixed = _this.prefixes.unprefixed(decl.prop);
-          ref = _this.prefixes.values('add', unprefixed);
-          for (j = 0, len = ref.length; j < len; j++) {
-            value = ref[j];
-            value.process(decl, result);
-          }
-          return Value.save(_this.prefixes, decl);
-        };
-      })(this));
-    };
-
-    Processor.prototype.remove = function(css) {
-      var checker, j, len, ref, resolution;
-      resolution = this.prefixes.remove['@resolution'];
-      css.walkAtRules((function(_this) {
-        return function(rule, i) {
-          if (_this.prefixes.remove['@' + rule.name]) {
-            if (!_this.disabled(rule)) {
-              return rule.parent.removeChild(i);
-            }
-          } else if (rule.name === 'media' && rule.params.indexOf('-resolution') !== -1) {
-            return resolution != null ? resolution.clean(rule) : void 0;
-          }
-        };
-      })(this));
-      ref = this.prefixes.remove.selectors;
-      for (j = 0, len = ref.length; j < len; j++) {
-        checker = ref[j];
-        css.walkRules((function(_this) {
-          return function(rule, i) {
-            if (checker.check(rule)) {
-              if (!_this.disabled(rule)) {
-                return rule.parent.removeChild(i);
-              }
-            }
-          };
-        })(this));
-      }
-      return css.walkDecls((function(_this) {
-        return function(decl, i) {
-          var k, len1, notHack, ref1, ref2, rule, unprefixed;
-          if (_this.disabled(decl)) {
-            return;
-          }
-          rule = decl.parent;
-          unprefixed = _this.prefixes.unprefixed(decl.prop);
-          if (decl.prop === 'transition' || decl.prop === 'transition-property') {
-            _this.prefixes.transition.remove(decl);
-          }
-          if ((ref1 = _this.prefixes.remove[decl.prop]) != null ? ref1.remove : void 0) {
-            notHack = _this.prefixes.group(decl).down(function(other) {
-              return _this.prefixes.normalize(other.prop) === unprefixed;
-            });
-            if (unprefixed === 'flex-flow') {
-              notHack = true;
-            }
-            if (notHack && !_this.withHackValue(decl)) {
-              if (decl.raw('before').indexOf("\n") > -1) {
-                _this.reduceSpaces(decl);
-              }
-              rule.removeChild(i);
-              return;
-            }
-          }
-          ref2 = _this.prefixes.values('remove', unprefixed);
-          for (k = 0, len1 = ref2.length; k < len1; k++) {
-            checker = ref2[k];
-            if (checker.check(decl.value)) {
-              unprefixed = checker.unprefixed;
-              notHack = _this.prefixes.group(decl).down(function(other) {
-                return other.value.indexOf(unprefixed) !== -1;
-              });
-              if (notHack) {
-                rule.removeChild(i);
-                return;
-              } else if (checker.clean) {
-                checker.clean(decl);
-                return;
-              }
-            }
-          }
-        };
-      })(this));
-    };
-
-    Processor.prototype.withHackValue = function(decl) {
-      return decl.prop === '-webkit-background-clip' && decl.value === 'text';
-    };
-
-    Processor.prototype.disabled = function(node) {
-      var other, status;
-      if (this.prefixes.options.grid === false && node.type === 'decl') {
-        if (node.prop === 'display' && node.value.indexOf('grid') !== -1) {
-          return true;
-        }
-        if (node.prop.indexOf('grid') !== -1 || node.prop === 'justify-items') {
-          return true;
-        }
-      }
-      if (this.prefixes.options.flexbox === false && node.type === 'decl') {
-        if (node.prop === 'display' && node.value.indexOf('flex') !== -1) {
-          return true;
-        }
-        other = ['order', 'justify-content', 'align-items', 'align-content'];
-        if (node.prop.indexOf('flex') !== -1 || other.indexOf(node.prop) !== -1) {
-          return true;
-        }
-      }
-      if (node._autoprefixerDisabled != null) {
-        return node._autoprefixerDisabled;
-      } else if (node.nodes) {
-        status = void 0;
-        node.each(function(i) {
-          if (i.type !== 'comment') {
-            return;
-          }
-          if (/(!\s*)?autoprefixer:\s*off/i.test(i.text)) {
-            status = false;
-            return false;
-          } else if (/(!\s*)?autoprefixer:\s*on/i.test(i.text)) {
-            status = true;
-            return false;
-          }
-        });
-        return node._autoprefixerDisabled = status != null ? !status : node.parent ? this.disabled(node.parent) : false;
-      } else if (node.parent) {
-        return node._autoprefixerDisabled = this.disabled(node.parent);
-      } else {
-        return false;
-      }
-    };
-
-    Processor.prototype.reduceSpaces = function(decl) {
-      var diff, parts, prevMin, stop;
-      stop = false;
-      this.prefixes.group(decl).up(function(other) {
-        return stop = true;
-      });
-      if (stop) {
-        return;
-      }
-      parts = decl.raw('before').split("\n");
-      prevMin = parts[parts.length - 1].length;
-      diff = false;
-      return this.prefixes.group(decl).down(function(other) {
-        var last;
-        parts = other.raw('before').split("\n");
-        last = parts.length - 1;
-        if (parts[last].length > prevMin) {
-          if (diff === false) {
-            diff = parts[last].length - prevMin;
-          }
-          parts[last] = parts[last].slice(0, -diff);
-          return other.raws.before = parts.join("\n");
-        }
-      });
-    };
-
-    Processor.prototype.displayType = function(decl) {
-      var i, j, len, ref;
-      ref = decl.parent.nodes;
-      for (j = 0, len = ref.length; j < len; j++) {
-        i = ref[j];
-        if (i.prop === 'display') {
-          if (i.value.indexOf('flex') !== -1) {
-            return 'flex';
-          } else if (i.value.indexOf('grid') !== -1) {
-            return 'grid';
-          }
-        }
-      }
-      return false;
-    };
-
-    return Processor;
-
-  })();
-
-  module.exports = Processor;
-
-}).call(this);
-
-},{"./utils":58,"./value":59,"postcss/lib/vendor":160}],54:[function(require,module,exports){
-(function() {
-  var Prefixer, Resolution, n2f, regexp, split, utils,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Prefixer = require('./prefixer');
-
-  utils = require('./utils');
-
-  n2f = require('num2fraction');
-
-  regexp = /(min|max)-resolution\s*:\s*\d*\.?\d+(dppx|dpi)/gi;
-
-  split = /(min|max)-resolution(\s*:\s*)(\d*\.?\d+)(dppx|dpi)/i;
-
-  Resolution = (function(superClass) {
-    extend(Resolution, superClass);
-
-    function Resolution() {
-      return Resolution.__super__.constructor.apply(this, arguments);
-    }
-
-    Resolution.prototype.prefixName = function(prefix, name) {
-      return name = prefix === '-moz-' ? name + '--moz-device-pixel-ratio' : prefix + name + '-device-pixel-ratio';
-    };
-
-    Resolution.prototype.prefixQuery = function(prefix, name, colon, value, units) {
-      if (units === 'dpi') {
-        value = Number(value / 96);
-      }
-      if (prefix === '-o-') {
-        value = n2f(value);
-      }
-      return this.prefixName(prefix, name) + colon + value;
-    };
-
-    Resolution.prototype.clean = function(rule) {
-      var j, len, prefix, ref;
-      if (!this.bad) {
-        this.bad = [];
-        ref = this.prefixes;
-        for (j = 0, len = ref.length; j < len; j++) {
-          prefix = ref[j];
-          this.bad.push(this.prefixName(prefix, 'min'));
-          this.bad.push(this.prefixName(prefix, 'max'));
-        }
-      }
-      return rule.params = utils.editList(rule.params, (function(_this) {
-        return function(queries) {
-          return queries.filter(function(query) {
-            return _this.bad.every(function(i) {
-              return query.indexOf(i) === -1;
-            });
-          });
-        };
-      })(this));
-    };
-
-    Resolution.prototype.process = function(rule) {
-      var parent, prefixes;
-      parent = this.parentPrefix(rule);
-      prefixes = parent ? [parent] : this.prefixes;
-      return rule.params = utils.editList(rule.params, (function(_this) {
-        return function(origin, prefixed) {
-          var j, k, len, len1, prefix, processed, query;
-          for (j = 0, len = origin.length; j < len; j++) {
-            query = origin[j];
-            if (query.indexOf('min-resolution') === -1 && query.indexOf('max-resolution') === -1) {
-              prefixed.push(query);
-              continue;
-            }
-            for (k = 0, len1 = prefixes.length; k < len1; k++) {
-              prefix = prefixes[k];
-              if (prefix === '-moz-' && rule.params.indexOf('dpi') !== -1) {
-                continue;
-              } else {
-                processed = query.replace(regexp, function(str) {
-                  var parts;
-                  parts = str.match(split);
-                  return _this.prefixQuery(prefix, parts[1], parts[2], parts[3], parts[4]);
-                });
-                prefixed.push(processed);
-              }
-            }
-            prefixed.push(query);
-          }
-          return utils.uniq(prefixed);
-        };
-      })(this));
-    };
-
-    return Resolution;
-
-  })(Prefixer);
-
-  module.exports = Resolution;
-
-}).call(this);
-
-},{"./prefixer":51,"./utils":58,"num2fraction":131}],55:[function(require,module,exports){
-(function() {
-  var Browsers, OldSelector, Prefixer, Selector, utils,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  OldSelector = require('./old-selector');
-
-  Prefixer = require('./prefixer');
-
-  Browsers = require('./browsers');
-
-  utils = require('./utils');
-
-  Selector = (function(superClass) {
-    extend(Selector, superClass);
-
-    function Selector(name1, prefixes, all) {
-      this.name = name1;
-      this.prefixes = prefixes;
-      this.all = all;
-      this.regexpCache = {};
-    }
-
-    Selector.prototype.check = function(rule) {
-      if (rule.selector.indexOf(this.name) !== -1) {
-        return !!rule.selector.match(this.regexp());
-      } else {
-        return false;
-      }
-    };
-
-    Selector.prototype.prefixed = function(prefix) {
-      return this.name.replace(/^([^\w]*)/, '$1' + prefix);
-    };
-
-    Selector.prototype.regexp = function(prefix) {
-      var name;
-      if (this.regexpCache[prefix]) {
-        return this.regexpCache[prefix];
-      }
-      name = prefix ? this.prefixed(prefix) : this.name;
-      return this.regexpCache[prefix] = RegExp("(^|[^:\"'=])" + (utils.escapeRegexp(name)), "gi");
-    };
-
-    Selector.prototype.possible = function() {
-      return Browsers.prefixes();
-    };
-
-    Selector.prototype.prefixeds = function(rule) {
-      var i, len, prefix, prefixeds, ref;
-      if (rule._autoprefixerPrefixeds) {
-        return rule._autoprefixerPrefixeds;
-      }
-      prefixeds = {};
-      ref = this.possible();
-      for (i = 0, len = ref.length; i < len; i++) {
-        prefix = ref[i];
-        prefixeds[prefix] = this.replace(rule.selector, prefix);
-      }
-      return rule._autoprefixerPrefixeds = prefixeds;
-    };
-
-    Selector.prototype.already = function(rule, prefixeds, prefix) {
-      var before, index, key, prefixed, some;
-      index = rule.parent.index(rule) - 1;
-      while (index >= 0) {
-        before = rule.parent.nodes[index];
-        if (before.type !== 'rule') {
-          return false;
-        }
-        some = false;
-        for (key in prefixeds) {
-          prefixed = prefixeds[key];
-          if (before.selector === prefixed) {
-            if (prefix === key) {
-              return true;
-            } else {
-              some = true;
-              break;
-            }
-          }
-        }
-        if (!some) {
-          return false;
-        }
-        index -= 1;
-      }
-      return false;
-    };
-
-    Selector.prototype.replace = function(selector, prefix) {
-      return selector.replace(this.regexp(), '$1' + this.prefixed(prefix));
-    };
-
-    Selector.prototype.add = function(rule, prefix) {
-      var cloned, prefixeds;
-      prefixeds = this.prefixeds(rule);
-      if (this.already(rule, prefixeds, prefix)) {
-        return;
-      }
-      cloned = this.clone(rule, {
-        selector: prefixeds[prefix]
-      });
-      return rule.parent.insertBefore(rule, cloned);
-    };
-
-    Selector.prototype.old = function(prefix) {
-      return new OldSelector(this, prefix);
-    };
-
-    return Selector;
-
-  })(Prefixer);
-
-  module.exports = Selector;
-
-}).call(this);
-
-},{"./browsers":5,"./old-selector":49,"./prefixer":51,"./utils":58}],56:[function(require,module,exports){
-(function() {
-  var Browsers, Supports, Value, brackets, browser, data, postcss, ref, support, supported, utils, version, versions;
-
-  Browsers = require('./browsers');
-
-  brackets = require('./brackets');
-
-  Value = require('./value');
-
-  utils = require('./utils');
-
-  postcss = require('postcss');
-
-  supported = [];
-
-  data = require('caniuse-db/features-json/css-featurequeries.json');
-
-  ref = data.stats;
-  for (browser in ref) {
-    versions = ref[browser];
-    for (version in versions) {
-      support = versions[version];
-      if (/y/.test(support)) {
-        supported.push(browser + ' ' + version);
-      }
-    }
-  }
-
-  Supports = (function() {
-    function Supports(Prefixes, all1) {
-      this.Prefixes = Prefixes;
-      this.all = all1;
-    }
-
-    Supports.prototype.prefixer = function() {
-      var browsers, filtered;
-      if (this.prefixerCache) {
-        return this.prefixerCache;
-      }
-      filtered = this.all.browsers.selected.filter((function(_this) {
-        return function(i) {
-          return supported.indexOf(i) !== -1;
-        };
-      })(this));
-      browsers = new Browsers(this.all.browsers.data, filtered, this.all.options);
-      return this.prefixerCache = new this.Prefixes(this.all.data, browsers, this.all.options);
-    };
-
-    Supports.prototype.parse = function(str) {
-      var prop, ref1, value;
-      ref1 = str.split(':'), prop = ref1[0], value = ref1[1];
-      value || (value = '');
-      return [prop.trim(), value.trim()];
-    };
-
-    Supports.prototype.virtual = function(str) {
-      var prop, ref1, rule, value;
-      ref1 = this.parse(str), prop = ref1[0], value = ref1[1];
-      rule = postcss.parse('a{}').first;
-      rule.append({
-        prop: prop,
-        value: value,
-        raws: {
-          before: ''
-        }
-      });
-      return rule;
-    };
-
-    Supports.prototype.prefixed = function(str) {
-      var decl, j, k, len, len1, prefixer, ref1, ref2, rule, value;
-      rule = this.virtual(str);
-      if (this.disabled(rule.first)) {
-        return rule.nodes;
-      }
-      prefixer = this.prefixer().add[rule.first.prop];
-      if (prefixer != null) {
-        if (typeof prefixer.process === "function") {
-          prefixer.process(rule.first);
-        }
-      }
-      ref1 = rule.nodes;
-      for (j = 0, len = ref1.length; j < len; j++) {
-        decl = ref1[j];
-        ref2 = this.prefixer().values('add', rule.first.prop);
-        for (k = 0, len1 = ref2.length; k < len1; k++) {
-          value = ref2[k];
-          value.process(decl);
-        }
-        Value.save(this.all, decl);
-      }
-      return rule.nodes;
-    };
-
-    Supports.prototype.isNot = function(node) {
-      return typeof node === 'string' && /not\s*/i.test(node);
-    };
-
-    Supports.prototype.isOr = function(node) {
-      return typeof node === 'string' && /\s*or\s*/i.test(node);
-    };
-
-    Supports.prototype.isProp = function(node) {
-      return typeof node === 'object' && node.length === 1 && typeof node[0] === 'string';
-    };
-
-    Supports.prototype.isHack = function(all, unprefixed) {
-      var check;
-      check = new RegExp('(\\(|\\s)' + utils.escapeRegexp(unprefixed) + ':');
-      return !check.test(all);
-    };
-
-    Supports.prototype.toRemove = function(str, all) {
-      var checker, j, len, prop, ref1, ref2, ref3, unprefixed, value;
-      ref1 = this.parse(str), prop = ref1[0], value = ref1[1];
-      unprefixed = this.all.unprefixed(prop);
-      if (((ref2 = this.all.cleaner().remove[prop]) != null ? ref2.remove : void 0) && !this.isHack(all, unprefixed)) {
-        return true;
-      }
-      ref3 = this.all.cleaner().values('remove', unprefixed);
-      for (j = 0, len = ref3.length; j < len; j++) {
-        checker = ref3[j];
-        if (checker.check(value)) {
-          return true;
-        }
-      }
-      return false;
-    };
-
-    Supports.prototype.remove = function(nodes, all) {
-      var i;
-      i = 0;
-      while (i < nodes.length) {
-        if (!this.isNot(nodes[i - 1]) && this.isProp(nodes[i]) && this.isOr(nodes[i + 1])) {
-          if (this.toRemove(nodes[i][0], all)) {
-            nodes.splice(i, 2);
-          } else {
-            i += 2;
-          }
-        } else {
-          if (typeof nodes[i] === 'object') {
-            nodes[i] = this.remove(nodes[i], all);
-          }
-          i += 1;
-        }
-      }
-      return nodes;
-    };
-
-    Supports.prototype.cleanBrackets = function(nodes) {
-      return nodes.map((function(_this) {
-        return function(i) {
-          if (typeof i === 'object') {
-            if (i.length === 1 && typeof i[0] === 'object') {
-              return _this.cleanBrackets(i[0]);
-            } else {
-              return _this.cleanBrackets(i);
-            }
-          } else {
-            return i;
-          }
-        };
-      })(this));
-    };
-
-    Supports.prototype.convert = function(progress) {
-      var i, j, len, result;
-      result = [''];
-      for (j = 0, len = progress.length; j < len; j++) {
-        i = progress[j];
-        result.push([i.prop + ": " + i.value]);
-        result.push(' or ');
-      }
-      result[result.length - 1] = '';
-      return result;
-    };
-
-    Supports.prototype.normalize = function(nodes) {
-      if (typeof nodes === 'object') {
-        nodes = nodes.filter(function(i) {
-          return i !== '';
-        });
-        if (typeof nodes[0] === 'string' && nodes[0].indexOf(':') !== -1) {
-          return [brackets.stringify(nodes)];
-        } else {
-          return nodes.map((function(_this) {
-            return function(i) {
-              return _this.normalize(i);
-            };
-          })(this));
-        }
-      } else {
-        return nodes;
-      }
-    };
-
-    Supports.prototype.add = function(nodes, all) {
-      return nodes.map((function(_this) {
-        return function(i) {
-          var prefixed;
-          if (_this.isProp(i)) {
-            prefixed = _this.prefixed(i[0]);
-            if (prefixed.length > 1) {
-              return _this.convert(prefixed);
-            } else {
-              return i;
-            }
-          } else if (typeof i === 'object') {
-            return _this.add(i, all);
-          } else {
-            return i;
-          }
-        };
-      })(this));
-    };
-
-    Supports.prototype.process = function(rule) {
-      var ast;
-      ast = brackets.parse(rule.params);
-      ast = this.normalize(ast);
-      ast = this.remove(ast, rule.params);
-      ast = this.add(ast, rule.params);
-      ast = this.cleanBrackets(ast);
-      return rule.params = brackets.stringify(ast);
-    };
-
-    Supports.prototype.disabled = function(node) {
-      var other;
-      if (this.all.options.grid === false) {
-        if (node.prop === 'display' && node.value.indexOf('grid') !== -1) {
-          return true;
-        }
-        if (node.prop.indexOf('grid') !== -1 || node.prop === 'justify-items') {
-          return true;
-        }
-      }
-      if (this.all.options.flexbox === false) {
-        if (node.prop === 'display' && node.value.indexOf('flex') !== -1) {
-          return true;
-        }
-        other = ['order', 'justify-content', 'align-items', 'align-content'];
-        if (node.prop.indexOf('flex') !== -1 || other.indexOf(node.prop) !== -1) {
-          return true;
-        }
-      }
-      return false;
-    };
-
-    return Supports;
-
-  })();
-
-  module.exports = Supports;
-
-}).call(this);
-
-},{"./brackets":4,"./browsers":5,"./utils":58,"./value":59,"caniuse-db/features-json/css-featurequeries.json":83,"postcss":150}],57:[function(require,module,exports){
-(function() {
-  var Transition, list, parser, vendor;
-
-  parser = require('postcss-value-parser');
-
-  vendor = require('postcss/lib/vendor');
-
-  list = require('postcss/lib/list');
-
-  Transition = (function() {
-    function Transition(prefixes) {
-      this.prefixes = prefixes;
-    }
-
-    Transition.prototype.props = ['transition', 'transition-property'];
-
-    Transition.prototype.add = function(decl, result) {
-      var added, declPrefixes, j, k, l, len, len1, len2, names, operaClean, param, params, prefix, prefixValue, prefixed, prefixer, prop, ref, ref1, value, webkitClean;
-      declPrefixes = ((ref = this.prefixes.add[decl.prop]) != null ? ref.prefixes : void 0) || [];
-      params = this.parse(decl.value);
-      names = params.map((function(_this) {
-        return function(i) {
-          return _this.findProp(i);
-        };
-      })(this));
-      added = [];
-      if (names.some(function(i) {
-        return i[0] === '-';
-      })) {
-        return;
-      }
-      for (j = 0, len = params.length; j < len; j++) {
-        param = params[j];
-        prop = this.findProp(param);
-        if (prop[0] === '-') {
-          continue;
-        }
-        prefixer = this.prefixes.add[prop];
-        if (!(prefixer != null ? prefixer.prefixes : void 0)) {
-          continue;
-        }
-        ref1 = prefixer.prefixes;
-        for (k = 0, len1 = ref1.length; k < len1; k++) {
-          prefix = ref1[k];
-          prefixed = this.prefixes.prefixed(prop, prefix);
-          if (prefixed !== '-ms-transform' && names.indexOf(prefixed) === -1) {
-            if (!this.disabled(prop, prefix)) {
-              added.push(this.clone(prop, prefixed, param));
-            }
-          }
-        }
-      }
-      params = params.concat(added);
-      value = this.stringify(params);
-      webkitClean = this.stringify(this.cleanFromUnprefixed(params, '-webkit-'));
-      if (declPrefixes.indexOf('-webkit-') !== -1) {
-        this.cloneBefore(decl, '-webkit-' + decl.prop, webkitClean);
-      }
-      this.cloneBefore(decl, decl.prop, webkitClean);
-      if (declPrefixes.indexOf('-o-') !== -1) {
-        operaClean = this.stringify(this.cleanFromUnprefixed(params, '-o-'));
-        this.cloneBefore(decl, '-o-' + decl.prop, operaClean);
-      }
-      for (l = 0, len2 = declPrefixes.length; l < len2; l++) {
-        prefix = declPrefixes[l];
-        if (prefix !== '-webkit-' && prefix !== '-o-') {
-          prefixValue = this.stringify(this.cleanOtherPrefixes(params, prefix));
-          this.cloneBefore(decl, prefix + decl.prop, prefixValue);
-        }
-      }
-      if (value !== decl.value && !this.already(decl, decl.prop, value)) {
-        this.checkForWarning(result, decl);
-        decl.cloneBefore();
-        return decl.value = value;
-      }
-    };
-
-    Transition.prototype.findProp = function(param) {
-      var i, j, len, prop, token;
-      prop = param[0].value;
-      if (/^\d/.test(prop)) {
-        for (i = j = 0, len = param.length; j < len; i = ++j) {
-          token = param[i];
-          if (i !== 0 && token.type === 'word') {
-            return token.value;
-          }
-        }
-      }
-      return prop;
-    };
-
-    Transition.prototype.already = function(decl, prop, value) {
-      return decl.parent.some(function(i) {
-        return i.prop === prop && i.value === value;
-      });
-    };
-
-    Transition.prototype.cloneBefore = function(decl, prop, value) {
-      if (!this.already(decl, prop, value)) {
-        return decl.cloneBefore({
-          prop: prop,
-          value: value
-        });
-      }
-    };
-
-    Transition.prototype.checkForWarning = function(result, decl) {
-      if (decl.prop === 'transition-property') {
-        return decl.parent.each(function(i) {
-          if (i.type !== 'decl') {
-            return;
-          }
-          if (i.prop.indexOf('transition-') !== 0) {
-            return;
-          }
-          if (i.prop === 'transition-property') {
-            return;
-          }
-          if (list.comma(i.value).length > 1) {
-            decl.warn(result, 'Replace transition-property to transition, ' + 'because Autoprefixer could not support ' + 'any cases of transition-property ' + 'and other transition-*');
-          }
-          return false;
-        });
-      }
-    };
-
-    Transition.prototype.remove = function(decl) {
-      var double, params, smaller, value;
-      params = this.parse(decl.value);
-      params = params.filter((function(_this) {
-        return function(i) {
-          var ref;
-          return !((ref = _this.prefixes.remove[_this.findProp(i)]) != null ? ref.remove : void 0);
-        };
-      })(this));
-      value = this.stringify(params);
-      if (decl.value === value) {
-        return;
-      }
-      if (params.length === 0) {
-        decl.remove();
-        return;
-      }
-      double = decl.parent.some(function(i) {
-        return i.prop === decl.prop && i.value === value;
-      });
-      smaller = decl.parent.some(function(i) {
-        return i !== decl && i.prop === decl.prop && i.value.length > value.length;
-      });
-      if (double || smaller) {
-        return decl.remove();
-      } else {
-        return decl.value = value;
-      }
-    };
-
-    Transition.prototype.parse = function(value) {
-      var ast, j, len, node, param, ref, result;
-      ast = parser(value);
-      result = [];
-      param = [];
-      ref = ast.nodes;
-      for (j = 0, len = ref.length; j < len; j++) {
-        node = ref[j];
-        param.push(node);
-        if (node.type === 'div' && node.value === ',') {
-          result.push(param);
-          param = [];
-        }
-      }
-      result.push(param);
-      return result.filter(function(i) {
-        return i.length > 0;
-      });
-    };
-
-    Transition.prototype.stringify = function(params) {
-      var j, len, nodes, param;
-      if (params.length === 0) {
-        return '';
-      }
-      nodes = [];
-      for (j = 0, len = params.length; j < len; j++) {
-        param = params[j];
-        if (param[param.length - 1].type !== 'div') {
-          param.push(this.div(params));
-        }
-        nodes = nodes.concat(param);
-      }
-      if (nodes[0].type === 'div') {
-        nodes = nodes.slice(1);
-      }
-      if (nodes[nodes.length - 1].type === 'div') {
-        nodes = nodes.slice(0, -1);
-      }
-      return parser.stringify({
-        nodes: nodes
-      });
-    };
-
-    Transition.prototype.clone = function(origin, name, param) {
-      var changed, i, j, len, result;
-      result = [];
-      changed = false;
-      for (j = 0, len = param.length; j < len; j++) {
-        i = param[j];
-        if (!changed && i.type === 'word' && i.value === origin) {
-          result.push({
-            type: 'word',
-            value: name
-          });
-          changed = true;
-        } else {
-          result.push(i);
-        }
-      }
-      return result;
-    };
-
-    Transition.prototype.div = function(params) {
-      var j, k, len, len1, node, param;
-      for (j = 0, len = params.length; j < len; j++) {
-        param = params[j];
-        for (k = 0, len1 = param.length; k < len1; k++) {
-          node = param[k];
-          if (node.type === 'div' && node.value === ',') {
-            return node;
-          }
-        }
-      }
-      return {
-        type: 'div',
-        value: ',',
-        after: ' '
-      };
-    };
-
-    Transition.prototype.cleanOtherPrefixes = function(params, prefix) {
-      return params.filter((function(_this) {
-        return function(param) {
-          var current;
-          current = vendor.prefix(_this.findProp(param));
-          return current === '' || current === prefix;
-        };
-      })(this));
-    };
-
-    Transition.prototype.cleanFromUnprefixed = function(params, prefix) {
-      var j, len, p, param, prop, remove, result;
-      result = [];
-      remove = params.map((function(_this) {
-        return function(i) {
-          return _this.findProp(i);
-        };
-      })(this)).filter(function(i) {
-        return i.slice(0, prefix.length) === prefix;
-      }).map((function(_this) {
-        return function(i) {
-          return _this.prefixes.unprefixed(i);
-        };
-      })(this));
-      for (j = 0, len = params.length; j < len; j++) {
-        param = params[j];
-        prop = this.findProp(param);
-        p = vendor.prefix(prop);
-        if (remove.indexOf(prop) === -1 && (p === prefix || p === '')) {
-          result.push(param);
-        }
-      }
-      return result;
-    };
-
-    Transition.prototype.disabled = function(prop, prefix) {
-      var other;
-      other = ['order', 'justify-content', 'align-self', 'align-content'];
-      if (prop.indexOf('flex') !== -1 || other.indexOf(prop) !== -1) {
-        if (this.prefixes.options.flexbox === false) {
-          return true;
-        } else if (this.prefixes.options.flexbox === 'no-2009') {
-          return prefix.indexOf('2009') !== -1;
-        }
-      }
-    };
-
-    return Transition;
-
-  })();
-
-  module.exports = Transition;
-
-}).call(this);
-
-},{"postcss-value-parser":133,"postcss/lib/list":145,"postcss/lib/vendor":160}],58:[function(require,module,exports){
-(function() {
-  var list;
-
-  list = require('postcss/lib/list');
-
-  module.exports = {
-    error: function(text) {
-      var err;
-      err = new Error(text);
-      err.autoprefixer = true;
-      throw err;
-    },
-    uniq: function(array) {
-      var filtered, i, j, len;
-      filtered = [];
-      for (j = 0, len = array.length; j < len; j++) {
-        i = array[j];
-        if (filtered.indexOf(i) === -1) {
-          filtered.push(i);
-        }
-      }
-      return filtered;
-    },
-    removeNote: function(string) {
-      if (string.indexOf(' ') === -1) {
-        return string;
-      } else {
-        return string.split(' ')[0];
-      }
-    },
-    escapeRegexp: function(string) {
-      return string.replace(/[.?*+\^\$\[\]\\(){}|\-]/g, '\\$&');
-    },
-    regexp: function(word, escape) {
-      if (escape == null) {
-        escape = true;
-      }
-      if (escape) {
-        word = this.escapeRegexp(word);
-      }
-      return RegExp("(^|[\\s,(])(" + word + "($|[\\s(,]))", "gi");
-    },
-    editList: function(value, callback) {
-      var changed, join, origin;
-      origin = list.comma(value);
-      changed = callback(origin, []);
-      if (origin === changed) {
-        return value;
-      } else {
-        join = value.match(/,\s*/);
-        join = join ? join[0] : ', ';
-        return changed.join(join);
-      }
-    }
-  };
-
-}).call(this);
-
-},{"postcss/lib/list":145}],59:[function(require,module,exports){
-(function() {
-  var OldValue, Prefixer, Value, utils, vendor,
-    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
-    hasProp = {}.hasOwnProperty;
-
-  Prefixer = require('./prefixer');
-
-  OldValue = require('./old-value');
-
-  utils = require('./utils');
-
-  vendor = require('postcss/lib/vendor');
-
-  Value = (function(superClass) {
-    extend(Value, superClass);
-
-    function Value() {
-      return Value.__super__.constructor.apply(this, arguments);
-    }
-
-    Value.save = function(prefixes, decl) {
-      var already, cloned, prefix, prefixed, prop, propPrefix, ref, results, rule, trimmed, value;
-      prop = decl.prop;
-      ref = decl._autoprefixerValues;
-      results = [];
-      for (prefix in ref) {
-        value = ref[prefix];
-        if (value === decl.value) {
-          continue;
-        }
-        propPrefix = vendor.prefix(prop);
-        if (propPrefix === prefix) {
-          results.push(decl.value = value);
-        } else if (propPrefix === '-pie-') {
-          continue;
-        } else {
-          prefixed = prefixes.prefixed(prop, prefix);
-          rule = decl.parent;
-          if (rule.every(function(i) {
-            return i.prop !== prefixed;
-          })) {
-            trimmed = value.replace(/\s+/, ' ');
-            already = rule.some(function(i) {
-              return i.prop === decl.prop && i.value.replace(/\s+/, ' ') === trimmed;
-            });
-            if (!already) {
-              cloned = this.clone(decl, {
-                value: value
-              });
-              results.push(decl.parent.insertBefore(decl, cloned));
-            } else {
-              results.push(void 0);
-            }
-          } else {
-            results.push(void 0);
-          }
-        }
-      }
-      return results;
-    };
-
-    Value.prototype.check = function(decl) {
-      var value;
-      value = decl.value;
-      if (value.indexOf(this.name) !== -1) {
-        return !!value.match(this.regexp());
-      } else {
-        return false;
-      }
-    };
-
-    Value.prototype.regexp = function() {
-      return this.regexpCache || (this.regexpCache = utils.regexp(this.name));
-    };
-
-    Value.prototype.replace = function(string, prefix) {
-      return string.replace(this.regexp(), '$1' + prefix + '$2');
-    };
-
-    Value.prototype.value = function(decl) {
-      if (decl.raws.value && decl.raws.value.value === decl.value) {
-        return decl.raws.value.raw;
-      } else {
-        return decl.value;
-      }
-    };
-
-    Value.prototype.add = function(decl, prefix) {
-      var value;
-      decl._autoprefixerValues || (decl._autoprefixerValues = {});
-      value = decl._autoprefixerValues[prefix] || this.value(decl);
-      value = this.replace(value, prefix);
-      if (value) {
-        return decl._autoprefixerValues[prefix] = value;
-      }
-    };
-
-    Value.prototype.old = function(prefix) {
-      return new OldValue(this.name, prefix + this.name);
-    };
-
-    return Value;
-
-  })(Prefixer);
-
-  module.exports = Value;
-
-}).call(this);
-
-},{"./old-value":50,"./prefixer":51,"./utils":58,"postcss/lib/vendor":160}],60:[function(require,module,exports){
-'use strict';
-module.exports = function () {
-	return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]/g;
-};
-
-},{}],61:[function(require,module,exports){
-'use strict';
-
-function assembleStyles () {
-	var styles = {
-		modifiers: {
-			reset: [0, 0],
-			bold: [1, 22], // 21 isn't widely supported and 22 does the same thing
-			dim: [2, 22],
-			italic: [3, 23],
-			underline: [4, 24],
-			inverse: [7, 27],
-			hidden: [8, 28],
-			strikethrough: [9, 29]
-		},
-		colors: {
-			black: [30, 39],
-			red: [31, 39],
-			green: [32, 39],
-			yellow: [33, 39],
-			blue: [34, 39],
-			magenta: [35, 39],
-			cyan: [36, 39],
-			white: [37, 39],
-			gray: [90, 39]
-		},
-		bgColors: {
-			bgBlack: [40, 49],
-			bgRed: [41, 49],
-			bgGreen: [42, 49],
-			bgYellow: [43, 49],
-			bgBlue: [44, 49],
-			bgMagenta: [45, 49],
-			bgCyan: [46, 49],
-			bgWhite: [47, 49]
-		}
-	};
-
-	// fix humans
-	styles.colors.grey = styles.colors.gray;
-
-	Object.keys(styles).forEach(function (groupName) {
-		var group = styles[groupName];
-
-		Object.keys(group).forEach(function (styleName) {
-			var style = group[styleName];
-
-			styles[styleName] = group[styleName] = {
-				open: '\u001b[' + style[0] + 'm',
-				close: '\u001b[' + style[1] + 'm'
-			};
-		});
-
-		Object.defineProperty(styles, groupName, {
-			value: group,
-			enumerable: false
-		});
-	});
-
-	return styles;
-}
-
-Object.defineProperty(module, 'exports', {
-	enumerable: true,
-	get: assembleStyles
-});
-
-},{}],62:[function(require,module,exports){
-'use strict'
-
-exports.byteLength = byteLength
-exports.toByteArray = toByteArray
-exports.fromByteArray = fromByteArray
-
-var lookup = []
-var revLookup = []
-var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
-
-var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
-for (var i = 0, len = code.length; i < len; ++i) {
-  lookup[i] = code[i]
-  revLookup[code.charCodeAt(i)] = i
-}
-
-revLookup['-'.charCodeAt(0)] = 62
-revLookup['_'.charCodeAt(0)] = 63
-
-function placeHoldersCount (b64) {
-  var len = b64.length
-  if (len % 4 > 0) {
-    throw new Error('Invalid string. Length must be a multiple of 4')
-  }
-
-  // the number of equal signs (place holders)
-  // if there are two placeholders, than the two characters before it
-  // represent one byte
-  // if there is only one, then the three characters before it represent 2 bytes
-  // this is just a cheap hack to not do indexOf twice
-  return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
-}
-
-function byteLength (b64) {
-  // base64 is 4/3 + up to two characters of the original data
-  return b64.length * 3 / 4 - placeHoldersCount(b64)
-}
-
-function toByteArray (b64) {
-  var i, j, l, tmp, placeHolders, arr
-  var len = b64.length
-  placeHolders = placeHoldersCount(b64)
-
-  arr = new Arr(len * 3 / 4 - placeHolders)
-
-  // if there are placeholders, only get up to the last complete 4 chars
-  l = placeHolders > 0 ? len - 4 : len
-
-  var L = 0
-
-  for (i = 0, j = 0; i < l; i += 4, j += 3) {
-    tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
-    arr[L++] = (tmp >> 16) & 0xFF
-    arr[L++] = (tmp >> 8) & 0xFF
-    arr[L++] = tmp & 0xFF
-  }
-
-  if (placeHolders === 2) {
-    tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
-    arr[L++] = tmp & 0xFF
-  } else if (placeHolders === 1) {
-    tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
-    arr[L++] = (tmp >> 8) & 0xFF
-    arr[L++] = tmp & 0xFF
-  }
-
-  return arr
-}
-
-function tripletToBase64 (num) {
-  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
-}
-
-function encodeChunk (uint8, start, end) {
-  var tmp
-  var output = []
-  for (var i = start; i < end; i += 3) {
-    tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
-    output.push(tripletToBase64(tmp))
-  }
-  return output.join('')
-}
-
-function fromByteArray (uint8) {
-  var tmp
-  var len = uint8.length
-  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
-  var output = ''
-  var parts = []
-  var maxChunkLength = 16383 // must be multiple of 3
-
-  // go through the array every three bytes, we'll deal with trailing stuff later
-  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
-    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
-  }
-
-  // pad the end with zeros, but make sure to not forget the extra bytes
-  if (extraBytes === 1) {
-    tmp = uint8[len - 1]
-    output += lookup[tmp >> 2]
-    output += lookup[(tmp << 4) & 0x3F]
-    output += '=='
-  } else if (extraBytes === 2) {
-    tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
-    output += lookup[tmp >> 10]
-    output += lookup[(tmp >> 4) & 0x3F]
-    output += lookup[(tmp << 2) & 0x3F]
-    output += '='
-  }
-
-  parts.push(output)
-
-  return parts.join('')
-}
-
-},{}],63:[function(require,module,exports){
-
-},{}],64:[function(require,module,exports){
-arguments[4][63][0].apply(exports,arguments)
-},{"dup":63}],65:[function(require,module,exports){
-(function (process){
-var path = require('path');
-var e2c  = require('electron-to-chromium/versions');
-var fs   = require('fs');
-
-var caniuse = require('caniuse-db/data.json').agents;
-
-function normalize(versions) {
-    return versions.filter(function (version) {
-        return typeof version === 'string';
-    });
-}
-
-var FLOAT_RANGE = /^\d+(\.\d+)?(-\d+(\.\d+)?)*$/;
-var IS_SECTION = /^\s*\[(.+)\]\s*$/;
-
-function uniq(array) {
-    var filtered = [];
-    for ( var i = 0; i < array.length; i++ ) {
-        if ( filtered.indexOf(array[i]) === -1 ) filtered.push(array[i]);
-    }
-    return filtered;
-}
-
-function BrowserslistError(message) {
-    this.name = 'BrowserslistError';
-    this.message = message || '';
-    this.browserslist = true;
-    if ( Error.captureStackTrace ) {
-        Error.captureStackTrace(this, BrowserslistError);
-    }
-}
-BrowserslistError.prototype = Error.prototype;
-
-// Helpers
-
-function error(name) {
-    throw new BrowserslistError(name);
-}
-
-function fillUsage(result, name, data) {
-    for ( var i in data ) {
-        result[name + ' ' + i] = data[i];
-    }
-}
-
-function isFile(file) {
-    return fs.existsSync(file) && fs.statSync(file).isFile();
-}
-
-function eachParent(file, callback) {
-    if ( !fs.readFileSync || !fs.existsSync || !fs.statSync ) {
-        /* istanbul ignore next */
-        return undefined;
-    }
-
-    if ( file === false ) return undefined;
-    if ( typeof file === 'undefined' ) file = '.';
-    var loc = path.resolve(file);
-    do {
-        var result = callback(loc);
-        if (typeof result !== 'undefined') return result;
-    } while (loc !== (loc = path.dirname(loc)));
-    return undefined;
-}
-
-function getStat(opts) {
-    if ( opts.stats ) {
-        return opts.stats;
-    } else if ( process.env.BROWSERSLIST_STATS ) {
-        return process.env.BROWSERSLIST_STATS;
-    } else {
-        return eachParent(opts.path, function (dir) {
-            var file = path.join(dir, 'browserslist-stats.json');
-            if ( isFile(file) ) {
-                return file;
-            }
-        });
-    }
-}
-
-function parsePackage(file) {
-    var config = JSON.parse(fs.readFileSync(file)).browserslist;
-    if ( typeof config === 'object' && config.length ) {
-        config = { defaults: config };
-    }
-    return config;
-}
-
-function pickEnv(config, opts) {
-    if ( typeof config !== 'object' ) return config;
-
-    var env;
-    if ( typeof opts.env === 'string' ) {
-        env = opts.env;
-    } else if ( typeof process.env.BROWSERSLIST_ENV === 'string' ) {
-        env = process.env.BROWSERSLIST_ENV;
-    } else if ( typeof process.env.NODE_ENV === 'string' ) {
-        env = process.env.NODE_ENV;
-    } else {
-        env = 'development';
-    }
-
-    return config[env] || config.defaults;
-}
-
-function generateFilter(sign, version) {
-    version = parseFloat(version);
-    if ( sign === '>' ) {
-        return function (v) {
-            return parseFloat(v) > version;
-        };
-    } else if ( sign === '>=' ) {
-        return function (v) {
-            return parseFloat(v) >= version;
-        };
-    } else if ( sign === '<' ) {
-        return function (v) {
-            return parseFloat(v) < version;
-        };
-    } else if ( sign === '<=' ) {
-        return function (v) {
-            return parseFloat(v) <= version;
-        };
-    }
-}
-
-function compareStrings(a, b) {
-    if (a < b) return -1;
-    if (a > b) return +1;
-    return 0;
-}
-
-/**
- * Return array of browsers by selection queries.
- *
- * @param {string[]} queries Browser queries.
- * @param {object} opts Options.
- * @param {string} [opts.path="."] Path to processed file.
- *                                 It will be used to find config files.
- * @param {string} [opts.env="development"] Processing environment.
- *                                          It will be used to take right
- *                                          queries from config file.
- * @param {string} [opts.config] Path to config file with queries.
- * @param {object} [opts.stats] Custom browser usage statistics
- *                              for "> 1% in my stats" query.
- * @return {string[]} Array with browser names in Can I Use.
- *
- * @example
- * browserslist('IE >= 10, IE 8') //=> ['ie 11', 'ie 10', 'ie 8']
- */
-var browserslist = function (queries, opts) {
-    if ( typeof opts === 'undefined' ) opts = { };
-
-    if ( typeof queries === 'undefined' || queries === null ) {
-        if ( process.env.BROWSERSLIST ) {
-            queries = process.env.BROWSERSLIST;
-        } else if ( opts.config || process.env.BROWSERSLIST_CONFIG ) {
-            var file = opts.config || process.env.BROWSERSLIST_CONFIG;
-            queries = pickEnv(browserslist.readConfig(file), opts);
-        } else {
-            queries = pickEnv(browserslist.findConfig(opts.path), opts);
-        }
-    }
-
-    if ( typeof queries === 'undefined' || queries === null ) {
-        queries = browserslist.defaults;
-    }
-
-    if ( typeof queries === 'string' ) {
-        queries = queries.split(/,\s*/);
-    }
-
-    var context = { };
-
-    var stats = getStat(opts);
-    if ( stats ) {
-        if ( typeof stats === 'string' ) {
-            try {
-                stats = JSON.parse(fs.readFileSync(stats));
-            } catch (e) {
-                error('Can\'t read ' + stats);
-            }
-        }
-        if ( 'dataByBrowser' in stats ) {
-            stats = stats.dataByBrowser;
-        }
-
-        context.customUsage = { };
-        for ( var browser in stats ) {
-            fillUsage(context.customUsage, browser, stats[browser]);
-        }
-    }
-
-    var result = [];
-
-    queries.forEach(function (selection) {
-        if ( selection.trim() === '' ) return;
-
-        var exclude = selection.indexOf('not ') === 0;
-        if ( exclude ) selection = selection.slice(4);
-
-        for ( var i in browserslist.queries ) {
-            var type  = browserslist.queries[i];
-            var match = selection.match(type.regexp);
-            if ( match ) {
-                var args = [context].concat(match.slice(1));
-                var array = type.select.apply(browserslist, args);
-                if ( exclude ) {
-                    array = array.concat(array.map(function (j) {
-                        return j.replace(/\s\d+/, ' 0');
-                    }));
-                    result = result.filter(function (j) {
-                        return array.indexOf(j) === -1;
-                    });
-                } else {
-                    result = result.concat(array);
-                }
-                return;
-            }
-        }
-
-        error('Unknown browser query `' + selection + '`');
-    });
-    result = result.map(function (i) {
-        var parts = i.split(' ');
-        var name = parts[0];
-        var version = parts[1];
-        if ( version === '0' ) {
-            return name + ' ' + browserslist.byName(name).versions[0];
-        } else {
-            return i;
-        }
-    }).sort(function (name1, name2) {
-        name1 = name1.split(' ');
-        name2 = name2.split(' ');
-        if ( name1[0] === name2[0] ) {
-            if ( FLOAT_RANGE.test(name1[1]) && FLOAT_RANGE.test(name2[1]) ) {
-                return parseFloat(name2[1]) - parseFloat(name1[1]);
-            } else {
-                return compareStrings(name2[1], name1[1]);
-            }
-        } else {
-            return compareStrings(name1[0], name2[0]);
-        }
-    });
-
-    return uniq(result);
-};
-
-var normalizeVersion = function (data, version) {
-    if ( data.versions.indexOf(version) !== -1 ) {
-        return version;
-    } else {
-        return browserslist.versionAliases[data.name][version];
-    }
-};
-
-var loadCountryStatistics = function (country) {
-    if ( !browserslist.usage[country] ) {
-        var usage = { };
-        var data = require(
-            'caniuse-db/region-usage-json/' + country + '.json');
-        for ( var i in data.data ) {
-            fillUsage(usage, i, data.data[i]);
-        }
-        browserslist.usage[country] = usage;
-    }
-};
-
-// Will be filled by Can I Use data below
-browserslist.data  = { };
-browserslist.usage = {
-    global: { },
-    custom: null
-};
-
-// Default browsers query
-browserslist.defaults = [
-    '> 1%',
-    'last 2 versions',
-    'Firefox ESR'
-];
-
-// What browsers will be used in `last n version` query
-browserslist.major = [
-    'safari', 'opera', 'ios_saf', 'ie_mob', 'ie', 'edge', 'firefox', 'chrome'
-];
-
-// Browser names aliases
-browserslist.aliases = {
-    fx:             'firefox',
-    ff:             'firefox',
-    ios:            'ios_saf',
-    explorer:       'ie',
-    blackberry:     'bb',
-    explorermobile: 'ie_mob',
-    operamini:      'op_mini',
-    operamobile:    'op_mob',
-    chromeandroid:  'and_chr',
-    firefoxandroid: 'and_ff',
-    ucandroid:      'and_uc'
-};
-
-// Aliases to work with joined versions like `ios_saf 7.0-7.1`
-browserslist.versionAliases = { };
-
-// Get browser data by alias or case insensitive name
-browserslist.byName = function (name) {
-    name = name.toLowerCase();
-    name = browserslist.aliases[name] || name;
-    return browserslist.data[name];
-};
-
-// Get browser data by alias or case insensitive name and throw error
-// on unknown browser
-browserslist.checkName = function (name) {
-    var data = browserslist.byName(name);
-    if ( !data ) error('Unknown browser ' + name);
-    return data;
-};
-
-// Read and parse config
-browserslist.readConfig = function (file) {
-    if ( !fs.existsSync(file) || !fs.statSync(file).isFile() ) {
-        error('Can\'t read ' + file + ' config');
-    }
-    return browserslist.parseConfig(fs.readFileSync(file));
-};
-
-// Find config, read file and parse it
-browserslist.findConfig = function (from) {
-    return eachParent(from, function (dir) {
-        var config = path.join(dir, 'browserslist');
-        var pkg = path.join(dir, 'package.json');
-
-        var pkgBrowserslist;
-        if ( isFile(pkg) ) {
-            try {
-                pkgBrowserslist = parsePackage(pkg);
-            } catch (e) {
-                console.warn(
-                    '[Browserslist] Could not parse ' + pkg + '. ' +
-                    'Ignoring it.');
-            }
-        }
-
-        if ( isFile(config) && pkgBrowserslist ) {
-            error(
-                dir + ' contains both browserslist ' +
-                'and package.json with browsers');
-        } else if ( isFile(config) ) {
-            return browserslist.readConfig(config);
-        } else if ( pkgBrowserslist ) {
-            return pkgBrowserslist;
-        }
-    });
-};
-
-/**
- * Return browsers market coverage.
- *
- * @param {string[]} browsers Browsers names in Can I Use.
- * @param {string} [country="global"] Which country statistics should be used.
- *
- * @return {number} Total market coverage for all selected browsers.
- *
- * @example
- * browserslist.coverage(browserslist('> 1% in US'), 'US') //=> 83.1
- */
-browserslist.coverage = function (browsers, country) {
-    if ( country && country !== 'global') {
-        country = country.toUpperCase();
-        loadCountryStatistics(country);
-    } else {
-        country = 'global';
-    }
-
-    return browsers.reduce(function (all, i) {
-        var usage = browserslist.usage[country][i];
-        if ( usage === undefined ) {
-            usage = browserslist.usage[country][i.replace(/ [\d.]+$/, ' 0')];
-        }
-        return all + (usage || 0);
-    }, 0);
-};
-
-// Return array of queries from config content
-browserslist.parseConfig = function (string) {
-    var result = { defaults: [] };
-    var section = 'defaults';
-
-    string.toString()
-        .replace(/#[^\n]*/g, '')
-        .split(/\n/)
-        .map(function (line) {
-            return line.trim();
-        })
-        .filter(function (line) {
-            return line !== '';
-        })
-        .forEach(function (line) {
-            if ( IS_SECTION.test(line) ) {
-                section = line.match(IS_SECTION)[1].trim();
-                result[section] = result[section] || [];
-            } else {
-                result[section].push(line);
-            }
-        });
-
-    return result;
-};
-
-browserslist.queries = {
-
-    lastVersions: {
-        regexp: /^last\s+(\d+)\s+versions?$/i,
-        select: function (context, versions) {
-            var selected = [];
-            browserslist.major.forEach(function (name) {
-                var data  = browserslist.byName(name);
-                if ( !data ) return;
-                var array = data.released.slice(-versions);
-
-                array = array.map(function (v) {
-                    return data.name + ' ' + v;
-                });
-                selected = selected.concat(array);
-            });
-            return selected;
-        }
-    },
-
-    lastByBrowser: {
-        regexp: /^last\s+(\d+)\s+(\w+)\s+versions?$/i,
-        select: function (context, versions, name) {
-            var data = browserslist.checkName(name);
-            return data.released.slice(-versions).map(function (v) {
-                return data.name + ' ' + v;
-            });
-        }
-    },
-
-    globalStatistics: {
-        regexp: /^>\s*(\d*\.?\d+)%$/,
-        select: function (context, popularity) {
-            popularity = parseFloat(popularity);
-            var result = [];
-
-            for ( var version in browserslist.usage.global ) {
-                if ( browserslist.usage.global[version] > popularity ) {
-                    result.push(version);
-                }
-            }
-
-            return result;
-        }
-    },
-
-    customStatistics: {
-        regexp: /^>\s*(\d*\.?\d+)%\s+in\s+my\s+stats$/,
-        select: function (context, popularity) {
-            popularity = parseFloat(popularity);
-            var result = [];
-
-            if ( !context.customUsage ) {
-                error('Custom usage statistics was not provided');
-            }
-
-            for ( var version in context.customUsage ) {
-                if ( context.customUsage[version] > popularity ) {
-                    result.push(version);
-                }
-            }
-
-            return result;
-        }
-    },
-
-    countryStatistics: {
-        regexp: /^>\s*(\d*\.?\d+)%\s+in\s+(\w\w)$/,
-        select: function (context, popularity, country) {
-            popularity = parseFloat(popularity);
-            country    = country.toUpperCase();
-            var result = [];
-
-            loadCountryStatistics(country);
-            var usage = browserslist.usage[country];
-
-            for ( var version in usage ) {
-                if ( usage[version] > popularity ) {
-                    result.push(version);
-                }
-            }
-
-            return result;
-        }
-    },
-
-    electronRange: {
-        regexp: /^electron\s+([\d\.]+)\s*-\s*([\d\.]+)$/i,
-        select: function (context, from, to) {
-            if ( !e2c[from] ) error('Unknown version ' + from + ' of electron');
-            if ( !e2c[to] ) error('Unknown version ' + to   + ' of electron');
-
-            from = parseFloat(from);
-            to = parseFloat(to);
-
-            return Object.keys(e2c).filter(function (i) {
-                var parsed = parseFloat(i);
-                return parsed >= from && parsed <= to;
-            }).map(function (i) {
-                return 'chrome ' + e2c[i];
-            });
-        }
-    },
-
-    range: {
-        regexp: /^(\w+)\s+([\d\.]+)\s*-\s*([\d\.]+)$/i,
-        select: function (context, name, from, to) {
-            var data = browserslist.checkName(name);
-            from = parseFloat(normalizeVersion(data, from) || from);
-            to = parseFloat(normalizeVersion(data, to) || to);
-
-            var filter = function (v) {
-                var parsed = parseFloat(v);
-                return parsed >= from && parsed <= to;
-            };
-
-            return data.released.filter(filter).map(function (v) {
-                return data.name + ' ' + v;
-            });
-        }
-    },
-
-    electronVersions: {
-        regexp: /^electron\s*(>=?|<=?)\s*([\d\.]+)$/i,
-        select: function (context, sign, version) {
-            return Object.keys(e2c)
-                .filter(generateFilter(sign, version))
-                .map(function (i) {
-                    return 'chrome ' + e2c[i];
-                });
-        }
-    },
-
-    versions: {
-        regexp: /^(\w+)\s*(>=?|<=?)\s*([\d\.]+)$/,
-        select: function (context, name, sign, version) {
-            var data = browserslist.checkName(name);
-            var alias = normalizeVersion(data, version);
-            if ( alias ) {
-                version = alias;
-            }
-            return data.released
-                .filter(generateFilter(sign, version))
-                .map(function (v) {
-                    return data.name + ' ' + v;
-                });
-        }
-    },
-
-    esr: {
-        regexp: /^(firefox|ff|fx)\s+esr$/i,
-        select: function () {
-            return ['firefox 45'];
-        }
-    },
-
-    opMini: {
-        regexp: /(operamini|op_mini)\s+all/i,
-        select: function () {
-            return ['op_mini all'];
-        }
-    },
-
-    electron: {
-        regexp: /^electron\s+([\d\.]+)$/i,
-        select: function (context, version) {
-            var chrome = e2c[version];
-            if ( !chrome ) error('Unknown version ' + version + ' of electron');
-            return ['chrome ' + chrome];
-        }
-    },
-
-    direct: {
-        regexp: /^(\w+)\s+(tp|[\d\.]+)$/i,
-        select: function (context, name, version) {
-            if ( /tp/i.test(version) ) version = 'TP';
-            var data  = browserslist.checkName(name);
-            var alias = normalizeVersion(data, version);
-            if ( alias ) {
-                version = alias;
-            } else {
-                if ( version.indexOf('.') === -1 ) {
-                    alias = version + '.0';
-                } else if ( /\.0$/.test(version) ) {
-                    alias = version.replace(/\.0$/, '');
-                }
-                alias = normalizeVersion(data, alias);
-                if ( alias ) {
-                    version = alias;
-                } else {
-                    error('Unknown version ' + version + ' of ' + name);
-                }
-            }
-            return [data.name + ' ' + version];
-        }
-    },
-
-    defaults: {
-        regexp: /^defaults$/i,
-        select: function () {
-            return browserslist(browserslist.defaults);
-        }
-    }
-
-};
-
-// Get and convert Can I Use data
-
-(function () {
-    for ( var name in caniuse ) {
-        var browser = caniuse[name];
-        browserslist.data[name] = {
-            name:     name,
-            versions: normalize(caniuse[name].versions),
-            released: normalize(caniuse[name].versions.slice(0, -3))
-        };
-        fillUsage(browserslist.usage.global, name, browser.usage_global);
-
-        browserslist.versionAliases[name] = { };
-        for ( var i = 0; i < browser.versions.length; i++ ) {
-            var full = browser.versions[i];
-            if (!full) continue;
-
-            if ( full.indexOf('-') !== -1 ) {
-                var interval = full.split('-');
-                for ( var j = 0; j < interval.length; j++ ) {
-                    browserslist.versionAliases[name][interval[j]] = full;
-                }
-            }
-        }
-    }
-}());
-
-module.exports = browserslist;
-
-}).call(this,require('_process'))
-},{"_process":164,"caniuse-db/data.json":67,"electron-to-chromium/versions":125,"fs":64,"path":132}],66:[function(require,module,exports){
-/*!
- * The buffer module from node.js, for the browser.
- *
- * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
- * @license  MIT
- */
-/* eslint-disable no-proto */
-
-'use strict'
-
-var base64 = require('base64-js')
-var ieee754 = require('ieee754')
-
-exports.Buffer = Buffer
-exports.SlowBuffer = SlowBuffer
-exports.INSPECT_MAX_BYTES = 50
-
-var K_MAX_LENGTH = 0x7fffffff
-exports.kMaxLength = K_MAX_LENGTH
-
-/**
- * If `Buffer.TYPED_ARRAY_SUPPORT`:
- *   === true    Use Uint8Array implementation (fastest)
- *   === false   Print warning and recommend using `buffer` v4.x which has an Object
- *               implementation (most compatible, even IE6)
- *
- * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
- * Opera 11.6+, iOS 4.2+.
- *
- * We report that the browser does not support typed arrays if the are not subclassable
- * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
- * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
- * for __proto__ and has a buggy typed array implementation.
- */
-Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
-
-if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
-    typeof console.error === 'function') {
-  console.error(
-    'This browser lacks typed array (Uint8Array) support which is required by ' +
-    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
-  )
-}
-
-function typedArraySupport () {
-  // Can typed array instances can be augmented?
-  try {
-    var arr = new Uint8Array(1)
-    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
-    return arr.foo() === 42
-  } catch (e) {
-    return false
-  }
-}
-
-function createBuffer (length) {
-  if (length > K_MAX_LENGTH) {
-    throw new RangeError('Invalid typed array length')
-  }
-  // Return an augmented `Uint8Array` instance
-  var buf = new Uint8Array(length)
-  buf.__proto__ = Buffer.prototype
-  return buf
-}
-
-/**
- * The Buffer constructor returns instances of `Uint8Array` that have their
- * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
- * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
- * and the `Uint8Array` methods. Square bracket notation works as expected -- it
- * returns a single octet.
- *
- * The `Uint8Array` prototype remains unmodified.
- */
-
-function Buffer (arg, encodingOrOffset, length) {
-  // Common case.
-  if (typeof arg === 'number') {
-    if (typeof encodingOrOffset === 'string') {
-      throw new Error(
-        'If encoding is specified then the first argument must be a string'
-      )
-    }
-    return allocUnsafe(arg)
-  }
-  return from(arg, encodingOrOffset, length)
-}
-
-// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
-if (typeof Symbol !== 'undefined' && Symbol.species &&
-    Buffer[Symbol.species] === Buffer) {
-  Object.defineProperty(Buffer, Symbol.species, {
-    value: null,
-    configurable: true,
-    enumerable: false,
-    writable: false
-  })
-}
-
-Buffer.poolSize = 8192 // not used by this implementation
-
-function from (value, encodingOrOffset, length) {
-  if (typeof value === 'number') {
-    throw new TypeError('"value" argument must not be a number')
-  }
-
-  if (value instanceof ArrayBuffer) {
-    return fromArrayBuffer(value, encodingOrOffset, length)
-  }
-
-  if (typeof value === 'string') {
-    return fromString(value, encodingOrOffset)
-  }
-
-  return fromObject(value)
-}
-
-/**
- * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
- * if value is a number.
- * Buffer.from(str[, encoding])
- * Buffer.from(array)
- * Buffer.from(buffer)
- * Buffer.from(arrayBuffer[, byteOffset[, length]])
- **/
-Buffer.from = function (value, encodingOrOffset, length) {
-  return from(value, encodingOrOffset, length)
-}
-
-// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
-// https://github.com/feross/buffer/pull/148
-Buffer.prototype.__proto__ = Uint8Array.prototype
-Buffer.__proto__ = Uint8Array
-
-function assertSize (size) {
-  if (typeof size !== 'number') {
-    throw new TypeError('"size" argument must be a number')
-  } else if (size < 0) {
-    throw new RangeError('"size" argument must not be negative')
-  }
-}
-
-function alloc (size, fill, encoding) {
-  assertSize(size)
-  if (size <= 0) {
-    return createBuffer(size)
-  }
-  if (fill !== undefined) {
-    // Only pay attention to encoding if it's a string. This
-    // prevents accidentally sending in a number that would
-    // be interpretted as a start offset.
-    return typeof encoding === 'string'
-      ? createBuffer(size).fill(fill, encoding)
-      : createBuffer(size).fill(fill)
-  }
-  return createBuffer(size)
-}
-
-/**
- * Creates a new filled Buffer instance.
- * alloc(size[, fill[, encoding]])
- **/
-Buffer.alloc = function (size, fill, encoding) {
-  return alloc(size, fill, encoding)
-}
-
-function allocUnsafe (size) {
-  assertSize(size)
-  return createBuffer(size < 0 ? 0 : checked(size) | 0)
-}
-
-/**
- * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
- * */
-Buffer.allocUnsafe = function (size) {
-  return allocUnsafe(size)
-}
-/**
- * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
- */
-Buffer.allocUnsafeSlow = function (size) {
-  return allocUnsafe(size)
-}
-
-function fromString (string, encoding) {
-  if (typeof encoding !== 'string' || encoding === '') {
-    encoding = 'utf8'
-  }
-
-  if (!Buffer.isEncoding(encoding)) {
-    throw new TypeError('"encoding" must be a valid string encoding')
-  }
-
-  var length = byteLength(string, encoding) | 0
-  var buf = createBuffer(length)
-
-  var actual = buf.write(string, encoding)
-
-  if (actual !== length) {
-    // Writing a hex string, for example, that contains invalid characters will
-    // cause everything after the first invalid character to be ignored. (e.g.
-    // 'abxxcd' will be treated as 'ab')
-    buf = buf.slice(0, actual)
-  }
-
-  return buf
-}
-
-function fromArrayLike (array) {
-  var length = array.length < 0 ? 0 : checked(array.length) | 0
-  var buf = createBuffer(length)
-  for (var i = 0; i < length; i += 1) {
-    buf[i] = array[i] & 255
-  }
-  return buf
-}
-
-function fromArrayBuffer (array, byteOffset, length) {
-  if (byteOffset < 0 || array.byteLength < byteOffset) {
-    throw new RangeError('\'offset\' is out of bounds')
-  }
-
-  if (array.byteLength < byteOffset + (length || 0)) {
-    throw new RangeError('\'length\' is out of bounds')
-  }
-
-  var buf
-  if (byteOffset === undefined && length === undefined) {
-    buf = new Uint8Array(array)
-  } else if (length === undefined) {
-    buf = new Uint8Array(array, byteOffset)
-  } else {
-    buf = new Uint8Array(array, byteOffset, length)
-  }
-
-  // Return an augmented `Uint8Array` instance
-  buf.__proto__ = Buffer.prototype
-  return buf
-}
-
-function fromObject (obj) {
-  if (Buffer.isBuffer(obj)) {
-    var len = checked(obj.length) | 0
-    var buf = createBuffer(len)
-
-    if (buf.length === 0) {
-      return buf
-    }
-
-    obj.copy(buf, 0, 0, len)
-    return buf
-  }
-
-  if (obj) {
-    if (ArrayBuffer.isView(obj) || 'length' in obj) {
-      if (typeof obj.length !== 'number' || isnan(obj.length)) {
-        return createBuffer(0)
-      }
-      return fromArrayLike(obj)
-    }
-
-    if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
-      return fromArrayLike(obj.data)
-    }
-  }
-
-  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
-}
-
-function checked (length) {
-  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
-  // length is NaN (which is otherwise coerced to zero.)
-  if (length >= K_MAX_LENGTH) {
-    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
-                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
-  }
-  return length | 0
-}
-
-function SlowBuffer (length) {
-  if (+length != length) { // eslint-disable-line eqeqeq
-    length = 0
-  }
-  return Buffer.alloc(+length)
-}
-
-Buffer.isBuffer = function isBuffer (b) {
-  return b != null && b._isBuffer === true
-}
-
-Buffer.compare = function compare (a, b) {
-  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
-    throw new TypeError('Arguments must be Buffers')
-  }
-
-  if (a === b) return 0
-
-  var x = a.length
-  var y = b.length
-
-  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
-    if (a[i] !== b[i]) {
-      x = a[i]
-      y = b[i]
-      break
-    }
-  }
-
-  if (x < y) return -1
-  if (y < x) return 1
-  return 0
-}
-
-Buffer.isEncoding = function isEncoding (encoding) {
-  switch (String(encoding).toLowerCase()) {
-    case 'hex':
-    case 'utf8':
-    case 'utf-8':
-    case 'ascii':
-    case 'latin1':
-    case 'binary':
-    case 'base64':
-    case 'ucs2':
-    case 'ucs-2':
-    case 'utf16le':
-    case 'utf-16le':
-      return true
-    default:
-      return false
-  }
-}
-
-Buffer.concat = function concat (list, length) {
-  if (!Array.isArray(list)) {
-    throw new TypeError('"list" argument must be an Array of Buffers')
-  }
-
-  if (list.length === 0) {
-    return Buffer.alloc(0)
-  }
-
-  var i
-  if (length === undefined) {
-    length = 0
-    for (i = 0; i < list.length; ++i) {
-      length += list[i].length
-    }
-  }
-
-  var buffer = Buffer.allocUnsafe(length)
-  var pos = 0
-  for (i = 0; i < list.length; ++i) {
-    var buf = list[i]
-    if (!Buffer.isBuffer(buf)) {
-      throw new TypeError('"list" argument must be an Array of Buffers')
-    }
-    buf.copy(buffer, pos)
-    pos += buf.length
-  }
-  return buffer
-}
-
-function byteLength (string, encoding) {
-  if (Buffer.isBuffer(string)) {
-    return string.length
-  }
-  if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) {
-    return string.byteLength
-  }
-  if (typeof string !== 'string') {
-    string = '' + string
-  }
-
-  var len = string.length
-  if (len === 0) return 0
-
-  // Use a for loop to avoid recursion
-  var loweredCase = false
-  for (;;) {
-    switch (encoding) {
-      case 'ascii':
-      case 'latin1':
-      case 'binary':
-        return len
-      case 'utf8':
-      case 'utf-8':
-      case undefined:
-        return utf8ToBytes(string).length
-      case 'ucs2':
-      case 'ucs-2':
-      case 'utf16le':
-      case 'utf-16le':
-        return len * 2
-      case 'hex':
-        return len >>> 1
-      case 'base64':
-        return base64ToBytes(string).length
-      default:
-        if (loweredCase) return utf8ToBytes(string).length // assume utf8
-        encoding = ('' + encoding).toLowerCase()
-        loweredCase = true
-    }
-  }
-}
-Buffer.byteLength = byteLength
-
-function slowToString (encoding, start, end) {
-  var loweredCase = false
-
-  // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
-  // property of a typed array.
-
-  // This behaves neither like String nor Uint8Array in that we set start/end
-  // to their upper/lower bounds if the value passed is out of range.
-  // undefined is handled specially as per ECMA-262 6th Edition,
-  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
-  if (start === undefined || start < 0) {
-    start = 0
-  }
-  // Return early if start > this.length. Done here to prevent potential uint32
-  // coercion fail below.
-  if (start > this.length) {
-    return ''
-  }
-
-  if (end === undefined || end > this.length) {
-    end = this.length
-  }
-
-  if (end <= 0) {
-    return ''
-  }
-
-  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
-  end >>>= 0
-  start >>>= 0
-
-  if (end <= start) {
-    return ''
-  }
-
-  if (!encoding) encoding = 'utf8'
-
-  while (true) {
-    switch (encoding) {
-      case 'hex':
-        return hexSlice(this, start, end)
-
-      case 'utf8':
-      case 'utf-8':
-        return utf8Slice(this, start, end)
-
-      case 'ascii':
-        return asciiSlice(this, start, end)
-
-      case 'latin1':
-      case 'binary':
-        return latin1Slice(this, start, end)
-
-      case 'base64':
-        return base64Slice(this, start, end)
-
-      case 'ucs2':
-      case 'ucs-2':
-      case 'utf16le':
-      case 'utf-16le':
-        return utf16leSlice(this, start, end)
-
-      default:
-        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
-        encoding = (encoding + '').toLowerCase()
-        loweredCase = true
-    }
-  }
-}
-
-// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
-// to detect a Buffer instance. It's not possible to use `instanceof Buffer`
-// reliably in a browserify context because there could be multiple different
-// copies of the 'buffer' package in use. This method works even for Buffer
-// instances that were created from another copy of the `buffer` package.
-// See: https://github.com/feross/buffer/issues/154
-Buffer.prototype._isBuffer = true
-
-function swap (b, n, m) {
-  var i = b[n]
-  b[n] = b[m]
-  b[m] = i
-}
-
-Buffer.prototype.swap16 = function swap16 () {
-  var len = this.length
-  if (len % 2 !== 0) {
-    throw new RangeError('Buffer size must be a multiple of 16-bits')
-  }
-  for (var i = 0; i < len; i += 2) {
-    swap(this, i, i + 1)
-  }
-  return this
-}
-
-Buffer.prototype.swap32 = function swap32 () {
-  var len = this.length
-  if (len % 4 !== 0) {
-    throw new RangeError('Buffer size must be a multiple of 32-bits')
-  }
-  for (var i = 0; i < len; i += 4) {
-    swap(this, i, i + 3)
-    swap(this, i + 1, i + 2)
-  }
-  return this
-}
-
-Buffer.prototype.swap64 = function swap64 () {
-  var len = this.length
-  if (len % 8 !== 0) {
-    throw new RangeError('Buffer size must be a multiple of 64-bits')
-  }
-  for (var i = 0; i < len; i += 8) {
-    swap(this, i, i + 7)
-    swap(this, i + 1, i + 6)
-    swap(this, i + 2, i + 5)
-    swap(this, i + 3, i + 4)
-  }
-  return this
-}
-
-Buffer.prototype.toString = function toString () {
-  var length = this.length
-  if (length === 0) return ''
-  if (arguments.length === 0) return utf8Slice(this, 0, length)
-  return slowToString.apply(this, arguments)
-}
-
-Buffer.prototype.equals = function equals (b) {
-  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
-  if (this === b) return true
-  return Buffer.compare(this, b) === 0
-}
-
-Buffer.prototype.inspect = function inspect () {
-  var str = ''
-  var max = exports.INSPECT_MAX_BYTES
-  if (this.length > 0) {
-    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
-    if (this.length > max) str += ' ... '
-  }
-  return '<Buffer ' + str + '>'
-}
-
-Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
-  if (!Buffer.isBuffer(target)) {
-    throw new TypeError('Argument must be a Buffer')
-  }
-
-  if (start === undefined) {
-    start = 0
-  }
-  if (end === undefined) {
-    end = target ? target.length : 0
-  }
-  if (thisStart === undefined) {
-    thisStart = 0
-  }
-  if (thisEnd === undefined) {
-    thisEnd = this.length
-  }
-
-  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
-    throw new RangeError('out of range index')
-  }
-
-  if (thisStart >= thisEnd && start >= end) {
-    return 0
-  }
-  if (thisStart >= thisEnd) {
-    return -1
-  }
-  if (start >= end) {
-    return 1
-  }
-
-  start >>>= 0
-  end >>>= 0
-  thisStart >>>= 0
-  thisEnd >>>= 0
-
-  if (this === target) return 0
-
-  var x = thisEnd - thisStart
-  var y = end - start
-  var len = Math.min(x, y)
-
-  var thisCopy = this.slice(thisStart, thisEnd)
-  var targetCopy = target.slice(start, end)
-
-  for (var i = 0; i < len; ++i) {
-    if (thisCopy[i] !== targetCopy[i]) {
-      x = thisCopy[i]
-      y = targetCopy[i]
-      break
-    }
-  }
-
-  if (x < y) return -1
-  if (y < x) return 1
-  return 0
-}
-
-// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
-// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
-//
-// Arguments:
-// - buffer - a Buffer to search
-// - val - a string, Buffer, or number
-// - byteOffset - an index into `buffer`; will be clamped to an int32
-// - encoding - an optional encoding, relevant is val is a string
-// - dir - true for indexOf, false for lastIndexOf
-function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
-  // Empty buffer means no match
-  if (buffer.length === 0) return -1
-
-  // Normalize byteOffset
-  if (typeof byteOffset === 'string') {
-    encoding = byteOffset
-    byteOffset = 0
-  } else if (byteOffset > 0x7fffffff) {
-    byteOffset = 0x7fffffff
-  } else if (byteOffset < -0x80000000) {
-    byteOffset = -0x80000000
-  }
-  byteOffset = +byteOffset  // Coerce to Number.
-  if (isNaN(byteOffset)) {
-    // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
-    byteOffset = dir ? 0 : (buffer.length - 1)
-  }
-
-  // Normalize byteOffset: negative offsets start from the end of the buffer
-  if (byteOffset < 0) byteOffset = buffer.length + byteOffset
-  if (byteOffset >= buffer.length) {
-    if (dir) return -1
-    else byteOffset = buffer.length - 1
-  } else if (byteOffset < 0) {
-    if (dir) byteOffset = 0
-    else return -1
-  }
-
-  // Normalize val
-  if (typeof val === 'string') {
-    val = Buffer.from(val, encoding)
-  }
-
-  // Finally, search either indexOf (if dir is true) or lastIndexOf
-  if (Buffer.isBuffer(val)) {
-    // Special case: looking for empty string/buffer always fails
-    if (val.length === 0) {
-      return -1
-    }
-    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
-  } else if (typeof val === 'number') {
-    val = val & 0xFF // Search for a byte value [0-255]
-    if (typeof Uint8Array.prototype.indexOf === 'function') {
-      if (dir) {
-        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
-      } else {
-        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
-      }
-    }
-    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
-  }
-
-  throw new TypeError('val must be string, number or Buffer')
-}
-
-function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
-  var indexSize = 1
-  var arrLength = arr.length
-  var valLength = val.length
-
-  if (encoding !== undefined) {
-    encoding = String(encoding).toLowerCase()
-    if (encoding === 'ucs2' || encoding === 'ucs-2' ||
-        encoding === 'utf16le' || encoding === 'utf-16le') {
-      if (arr.length < 2 || val.length < 2) {
-        return -1
-      }
-      indexSize = 2
-      arrLength /= 2
-      valLength /= 2
-      byteOffset /= 2
-    }
-  }
-
-  function read (buf, i) {
-    if (indexSize === 1) {
-      return buf[i]
-    } else {
-      return buf.readUInt16BE(i * indexSize)
-    }
-  }
-
-  var i
-  if (dir) {
-    var foundIndex = -1
-    for (i = byteOffset; i < arrLength; i++) {
-      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
-        if (foundIndex === -1) foundIndex = i
-        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
-      } else {
-        if (foundIndex !== -1) i -= i - foundIndex
-        foundIndex = -1
-      }
-    }
-  } else {
-    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
-    for (i = byteOffset; i >= 0; i--) {
-      var found = true
-      for (var j = 0; j < valLength; j++) {
-        if (read(arr, i + j) !== read(val, j)) {
-          found = false
-          break
-        }
-      }
-      if (found) return i
-    }
-  }
-
-  return -1
-}
-
-Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
-  return this.indexOf(val, byteOffset, encoding) !== -1
-}
-
-Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
-  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
-}
-
-Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
-  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
-}
-
-function hexWrite (buf, string, offset, length) {
-  offset = Number(offset) || 0
-  var remaining = buf.length - offset
-  if (!length) {
-    length = remaining
-  } else {
-    length = Number(length)
-    if (length > remaining) {
-      length = remaining
-    }
-  }
-
-  // must be an even number of digits
-  var strLen = string.length
-  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
-
-  if (length > strLen / 2) {
-    length = strLen / 2
-  }
-  for (var i = 0; i < length; ++i) {
-    var parsed = parseInt(string.substr(i * 2, 2), 16)
-    if (isNaN(parsed)) return i
-    buf[offset + i] = parsed
-  }
-  return i
-}
-
-function utf8Write (buf, string, offset, length) {
-  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
-}
-
-function asciiWrite (buf, string, offset, length) {
-  return blitBuffer(asciiToBytes(string), buf, offset, length)
-}
-
-function latin1Write (buf, string, offset, length) {
-  return asciiWrite(buf, string, offset, length)
-}
-
-function base64Write (buf, string, offset, length) {
-  return blitBuffer(base64ToBytes(string), buf, offset, length)
-}
-
-function ucs2Write (buf, string, offset, length) {
-  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
-}
-
-Buffer.prototype.write = function write (string, offset, length, encoding) {
-  // Buffer#write(string)
-  if (offset === undefined) {
-    encoding = 'utf8'
-    length = this.length
-    offset = 0
-  // Buffer#write(string, encoding)
-  } else if (length === undefined && typeof offset === 'string') {
-    encoding = offset
-    length = this.length
-    offset = 0
-  // Buffer#write(string, offset[, length][, encoding])
-  } else if (isFinite(offset)) {
-    offset = offset >>> 0
-    if (isFinite(length)) {
-      length = length >>> 0
-      if (encoding === undefined) encoding = 'utf8'
-    } else {
-      encoding = length
-      length = undefined
-    }
-  } else {
-    throw new Error(
-      'Buffer.write(string, encoding, offset[, length]) is no longer supported'
-    )
-  }
-
-  var remaining = this.length - offset
-  if (length === undefined || length > remaining) length = remaining
-
-  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
-    throw new RangeError('Attempt to write outside buffer bounds')
-  }
-
-  if (!encoding) encoding = 'utf8'
-
-  var loweredCase = false
-  for (;;) {
-    switch (encoding) {
-      case 'hex':
-        return hexWrite(this, string, offset, length)
-
-      case 'utf8':
-      case 'utf-8':
-        return utf8Write(this, string, offset, length)
-
-      case 'ascii':
-        return asciiWrite(this, string, offset, length)
-
-      case 'latin1':
-      case 'binary':
-        return latin1Write(this, string, offset, length)
-
-      case 'base64':
-        // Warning: maxLength not taken into account in base64Write
-        return base64Write(this, string, offset, length)
-
-      case 'ucs2':
-      case 'ucs-2':
-      case 'utf16le':
-      case 'utf-16le':
-        return ucs2Write(this, string, offset, length)
-
-      default:
-        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
-        encoding = ('' + encoding).toLowerCase()
-        loweredCase = true
-    }
-  }
-}
-
-Buffer.prototype.toJSON = function toJSON () {
-  return {
-    type: 'Buffer',
-    data: Array.prototype.slice.call(this._arr || this, 0)
-  }
-}
-
-function base64Slice (buf, start, end) {
-  if (start === 0 && end === buf.length) {
-    return base64.fromByteArray(buf)
-  } else {
-    return base64.fromByteArray(buf.slice(start, end))
-  }
-}
-
-function utf8Slice (buf, start, end) {
-  end = Math.min(buf.length, end)
-  var res = []
-
-  var i = start
-  while (i < end) {
-    var firstByte = buf[i]
-    var codePoint = null
-    var bytesPerSequence = (firstByte > 0xEF) ? 4
-      : (firstByte > 0xDF) ? 3
-      : (firstByte > 0xBF) ? 2
-      : 1
-
-    if (i + bytesPerSequence <= end) {
-      var secondByte, thirdByte, fourthByte, tempCodePoint
-
-      switch (bytesPerSequence) {
-        case 1:
-          if (firstByte < 0x80) {
-            codePoint = firstByte
-          }
-          break
-        case 2:
-          secondByte = buf[i + 1]
-          if ((secondByte & 0xC0) === 0x80) {
-            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
-            if (tempCodePoint > 0x7F) {
-              codePoint = tempCodePoint
-            }
-          }
-          break
-        case 3:
-          secondByte = buf[i + 1]
-          thirdByte = buf[i + 2]
-          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
-            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
-            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
-              codePoint = tempCodePoint
-            }
-          }
-          break
-        case 4:
-          secondByte = buf[i + 1]
-          thirdByte = buf[i + 2]
-          fourthByte = buf[i + 3]
-          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
-            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
-            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
-              codePoint = tempCodePoint
-            }
-          }
-      }
-    }
-
-    if (codePoint === null) {
-      // we did not generate a valid codePoint so insert a
-      // replacement char (U+FFFD) and advance only 1 byte
-      codePoint = 0xFFFD
-      bytesPerSequence = 1
-    } else if (codePoint > 0xFFFF) {
-      // encode to utf16 (surrogate pair dance)
-      codePoint -= 0x10000
-      res.push(codePoint >>> 10 & 0x3FF | 0xD800)
-      codePoint = 0xDC00 | codePoint & 0x3FF
-    }
-
-    res.push(codePoint)
-    i += bytesPerSequence
-  }
-
-  return decodeCodePointsArray(res)
-}
-
-// Based on http://stackoverflow.com/a/22747272/680742, the browser with
-// the lowest limit is Chrome, with 0x10000 args.
-// We go 1 magnitude less, for safety
-var MAX_ARGUMENTS_LENGTH = 0x1000
-
-function decodeCodePointsArray (codePoints) {
-  var len = codePoints.length
-  if (len <= MAX_ARGUMENTS_LENGTH) {
-    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
-  }
-
-  // Decode in chunks to avoid "call stack size exceeded".
-  var res = ''
-  var i = 0
-  while (i < len) {
-    res += String.fromCharCode.apply(
-      String,
-      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
-    )
-  }
-  return res
-}
-
-function asciiSlice (buf, start, end) {
-  var ret = ''
-  end = Math.min(buf.length, end)
-
-  for (var i = start; i < end; ++i) {
-    ret += String.fromCharCode(buf[i] & 0x7F)
-  }
-  return ret
-}
-
-function latin1Slice (buf, start, end) {
-  var ret = ''
-  end = Math.min(buf.length, end)
-
-  for (var i = start; i < end; ++i) {
-    ret += String.fromCharCode(buf[i])
-  }
-  return ret
-}
-
-function hexSlice (buf, start, end) {
-  var len = buf.length
-
-  if (!start || start < 0) start = 0
-  if (!end || end < 0 || end > len) end = len
-
-  var out = ''
-  for (var i = start; i < end; ++i) {
-    out += toHex(buf[i])
-  }
-  return out
-}
-
-function utf16leSlice (buf, start, end) {
-  var bytes = buf.slice(start, end)
-  var res = ''
-  for (var i = 0; i < bytes.length; i += 2) {
-    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
-  }
-  return res
-}
-
-Buffer.prototype.slice = function slice (start, end) {
-  var len = this.length
-  start = ~~start
-  end = end === undefined ? len : ~~end
-
-  if (start < 0) {
-    start += len
-    if (start < 0) start = 0
-  } else if (start > len) {
-    start = len
-  }
-
-  if (end < 0) {
-    end += len
-    if (end < 0) end = 0
-  } else if (end > len) {
-    end = len
-  }
-
-  if (end < start) end = start
-
-  var newBuf = this.subarray(start, end)
-  // Return an augmented `Uint8Array` instance
-  newBuf.__proto__ = Buffer.prototype
-  return newBuf
-}
-
-/*
- * Need to make sure that buffer isn't trying to write out of bounds.
- */
-function checkOffset (offset, ext, length) {
-  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
-  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
-}
-
-Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) checkOffset(offset, byteLength, this.length)
-
-  var val = this[offset]
-  var mul = 1
-  var i = 0
-  while (++i < byteLength && (mul *= 0x100)) {
-    val += this[offset + i] * mul
-  }
-
-  return val
-}
-
-Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) {
-    checkOffset(offset, byteLength, this.length)
-  }
-
-  var val = this[offset + --byteLength]
-  var mul = 1
-  while (byteLength > 0 && (mul *= 0x100)) {
-    val += this[offset + --byteLength] * mul
-  }
-
-  return val
-}
-
-Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 1, this.length)
-  return this[offset]
-}
-
-Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 2, this.length)
-  return this[offset] | (this[offset + 1] << 8)
-}
-
-Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 2, this.length)
-  return (this[offset] << 8) | this[offset + 1]
-}
-
-Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
-
-  return ((this[offset]) |
-      (this[offset + 1] << 8) |
-      (this[offset + 2] << 16)) +
-      (this[offset + 3] * 0x1000000)
-}
-
-Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
-
-  return (this[offset] * 0x1000000) +
-    ((this[offset + 1] << 16) |
-    (this[offset + 2] << 8) |
-    this[offset + 3])
-}
-
-Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) checkOffset(offset, byteLength, this.length)
-
-  var val = this[offset]
-  var mul = 1
-  var i = 0
-  while (++i < byteLength && (mul *= 0x100)) {
-    val += this[offset + i] * mul
-  }
-  mul *= 0x80
-
-  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
-
-  return val
-}
-
-Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) checkOffset(offset, byteLength, this.length)
-
-  var i = byteLength
-  var mul = 1
-  var val = this[offset + --i]
-  while (i > 0 && (mul *= 0x100)) {
-    val += this[offset + --i] * mul
-  }
-  mul *= 0x80
-
-  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
-
-  return val
-}
-
-Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 1, this.length)
-  if (!(this[offset] & 0x80)) return (this[offset])
-  return ((0xff - this[offset] + 1) * -1)
-}
-
-Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 2, this.length)
-  var val = this[offset] | (this[offset + 1] << 8)
-  return (val & 0x8000) ? val | 0xFFFF0000 : val
-}
-
-Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 2, this.length)
-  var val = this[offset + 1] | (this[offset] << 8)
-  return (val & 0x8000) ? val | 0xFFFF0000 : val
-}
-
-Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
-
-  return (this[offset]) |
-    (this[offset + 1] << 8) |
-    (this[offset + 2] << 16) |
-    (this[offset + 3] << 24)
-}
-
-Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
-
-  return (this[offset] << 24) |
-    (this[offset + 1] << 16) |
-    (this[offset + 2] << 8) |
-    (this[offset + 3])
-}
-
-Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
-  return ieee754.read(this, offset, true, 23, 4)
-}
-
-Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
-  return ieee754.read(this, offset, false, 23, 4)
-}
-
-Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 8, this.length)
-  return ieee754.read(this, offset, true, 52, 8)
-}
-
-Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 8, this.length)
-  return ieee754.read(this, offset, false, 52, 8)
-}
-
-function checkInt (buf, value, offset, ext, max, min) {
-  if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
-  if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
-  if (offset + ext > buf.length) throw new RangeError('Index out of range')
-}
-
-Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) {
-    var maxBytes = Math.pow(2, 8 * byteLength) - 1
-    checkInt(this, value, offset, byteLength, maxBytes, 0)
-  }
-
-  var mul = 1
-  var i = 0
-  this[offset] = value & 0xFF
-  while (++i < byteLength && (mul *= 0x100)) {
-    this[offset + i] = (value / mul) & 0xFF
-  }
-
-  return offset + byteLength
-}
-
-Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) {
-    var maxBytes = Math.pow(2, 8 * byteLength) - 1
-    checkInt(this, value, offset, byteLength, maxBytes, 0)
-  }
-
-  var i = byteLength - 1
-  var mul = 1
-  this[offset + i] = value & 0xFF
-  while (--i >= 0 && (mul *= 0x100)) {
-    this[offset + i] = (value / mul) & 0xFF
-  }
-
-  return offset + byteLength
-}
-
-Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
-  this[offset] = (value & 0xff)
-  return offset + 1
-}
-
-Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
-  this[offset] = (value & 0xff)
-  this[offset + 1] = (value >>> 8)
-  return offset + 2
-}
-
-Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
-  this[offset] = (value >>> 8)
-  this[offset + 1] = (value & 0xff)
-  return offset + 2
-}
-
-Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
-  this[offset + 3] = (value >>> 24)
-  this[offset + 2] = (value >>> 16)
-  this[offset + 1] = (value >>> 8)
-  this[offset] = (value & 0xff)
-  return offset + 4
-}
-
-Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
-  this[offset] = (value >>> 24)
-  this[offset + 1] = (value >>> 16)
-  this[offset + 2] = (value >>> 8)
-  this[offset + 3] = (value & 0xff)
-  return offset + 4
-}
-
-Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) {
-    var limit = Math.pow(2, (8 * byteLength) - 1)
-
-    checkInt(this, value, offset, byteLength, limit - 1, -limit)
-  }
-
-  var i = 0
-  var mul = 1
-  var sub = 0
-  this[offset] = value & 0xFF
-  while (++i < byteLength && (mul *= 0x100)) {
-    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
-      sub = 1
-    }
-    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
-  }
-
-  return offset + byteLength
-}
-
-Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) {
-    var limit = Math.pow(2, (8 * byteLength) - 1)
-
-    checkInt(this, value, offset, byteLength, limit - 1, -limit)
-  }
-
-  var i = byteLength - 1
-  var mul = 1
-  var sub = 0
-  this[offset + i] = value & 0xFF
-  while (--i >= 0 && (mul *= 0x100)) {
-    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
-      sub = 1
-    }
-    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
-  }
-
-  return offset + byteLength
-}
-
-Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
-  if (value < 0) value = 0xff + value + 1
-  this[offset] = (value & 0xff)
-  return offset + 1
-}
-
-Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
-  this[offset] = (value & 0xff)
-  this[offset + 1] = (value >>> 8)
-  return offset + 2
-}
-
-Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
-  this[offset] = (value >>> 8)
-  this[offset + 1] = (value & 0xff)
-  return offset + 2
-}
-
-Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
-  this[offset] = (value & 0xff)
-  this[offset + 1] = (value >>> 8)
-  this[offset + 2] = (value >>> 16)
-  this[offset + 3] = (value >>> 24)
-  return offset + 4
-}
-
-Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
-  if (value < 0) value = 0xffffffff + value + 1
-  this[offset] = (value >>> 24)
-  this[offset + 1] = (value >>> 16)
-  this[offset + 2] = (value >>> 8)
-  this[offset + 3] = (value & 0xff)
-  return offset + 4
-}
-
-function checkIEEE754 (buf, value, offset, ext, max, min) {
-  if (offset + ext > buf.length) throw new RangeError('Index out of range')
-  if (offset < 0) throw new RangeError('Index out of range')
-}
-
-function writeFloat (buf, value, offset, littleEndian, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) {
-    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
-  }
-  ieee754.write(buf, value, offset, littleEndian, 23, 4)
-  return offset + 4
-}
-
-Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
-  return writeFloat(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
-  return writeFloat(this, value, offset, false, noAssert)
-}
-
-function writeDouble (buf, value, offset, littleEndian, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) {
-    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
-  }
-  ieee754.write(buf, value, offset, littleEndian, 52, 8)
-  return offset + 8
-}
-
-Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
-  return writeDouble(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
-  return writeDouble(this, value, offset, false, noAssert)
-}
-
-// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
-Buffer.prototype.copy = function copy (target, targetStart, start, end) {
-  if (!start) start = 0
-  if (!end && end !== 0) end = this.length
-  if (targetStart >= target.length) targetStart = target.length
-  if (!targetStart) targetStart = 0
-  if (end > 0 && end < start) end = start
-
-  // Copy 0 bytes; we're done
-  if (end === start) return 0
-  if (target.length === 0 || this.length === 0) return 0
-
-  // Fatal error conditions
-  if (targetStart < 0) {
-    throw new RangeError('targetStart out of bounds')
-  }
-  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
-  if (end < 0) throw new RangeError('sourceEnd out of bounds')
-
-  // Are we oob?
-  if (end > this.length) end = this.length
-  if (target.length - targetStart < end - start) {
-    end = target.length - targetStart + start
-  }
-
-  var len = end - start
-  var i
-
-  if (this === target && start < targetStart && targetStart < end) {
-    // descending copy from end
-    for (i = len - 1; i >= 0; --i) {
-      target[i + targetStart] = this[i + start]
-    }
-  } else if (len < 1000) {
-    // ascending copy from start
-    for (i = 0; i < len; ++i) {
-      target[i + targetStart] = this[i + start]
-    }
-  } else {
-    Uint8Array.prototype.set.call(
-      target,
-      this.subarray(start, start + len),
-      targetStart
-    )
-  }
-
-  return len
-}
-
-// Usage:
-//    buffer.fill(number[, offset[, end]])
-//    buffer.fill(buffer[, offset[, end]])
-//    buffer.fill(string[, offset[, end]][, encoding])
-Buffer.prototype.fill = function fill (val, start, end, encoding) {
-  // Handle string cases:
-  if (typeof val === 'string') {
-    if (typeof start === 'string') {
-      encoding = start
-      start = 0
-      end = this.length
-    } else if (typeof end === 'string') {
-      encoding = end
-      end = this.length
-    }
-    if (val.length === 1) {
-      var code = val.charCodeAt(0)
-      if (code < 256) {
-        val = code
-      }
-    }
-    if (encoding !== undefined && typeof encoding !== 'string') {
-      throw new TypeError('encoding must be a string')
-    }
-    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
-      throw new TypeError('Unknown encoding: ' + encoding)
-    }
-  } else if (typeof val === 'number') {
-    val = val & 255
-  }
-
-  // Invalid ranges are not set to a default, so can range check early.
-  if (start < 0 || this.length < start || this.length < end) {
-    throw new RangeError('Out of range index')
-  }
-
-  if (end <= start) {
-    return this
-  }
-
-  start = start >>> 0
-  end = end === undefined ? this.length : end >>> 0
-
-  if (!val) val = 0
-
-  var i
-  if (typeof val === 'number') {
-    for (i = start; i < end; ++i) {
-      this[i] = val
-    }
-  } else {
-    var bytes = Buffer.isBuffer(val)
-      ? val
-      : new Buffer(val, encoding)
-    var len = bytes.length
-    for (i = 0; i < end - start; ++i) {
-      this[i + start] = bytes[i % len]
-    }
-  }
-
-  return this
-}
-
-// HELPER FUNCTIONS
-// ================
-
-var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
-
-function base64clean (str) {
-  // Node strips out invalid characters like \n and \t from the string, base64-js does not
-  str = stringtrim(str).replace(INVALID_BASE64_RE, '')
-  // Node converts strings with length < 2 to ''
-  if (str.length < 2) return ''
-  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
-  while (str.length % 4 !== 0) {
-    str = str + '='
-  }
-  return str
-}
-
-function stringtrim (str) {
-  if (str.trim) return str.trim()
-  return str.replace(/^\s+|\s+$/g, '')
-}
-
-function toHex (n) {
-  if (n < 16) return '0' + n.toString(16)
-  return n.toString(16)
-}
-
-function utf8ToBytes (string, units) {
-  units = units || Infinity
-  var codePoint
-  var length = string.length
-  var leadSurrogate = null
-  var bytes = []
-
-  for (var i = 0; i < length; ++i) {
-    codePoint = string.charCodeAt(i)
-
-    // is surrogate component
-    if (codePoint > 0xD7FF && codePoint < 0xE000) {
-      // last char was a lead
-      if (!leadSurrogate) {
-        // no lead yet
-        if (codePoint > 0xDBFF) {
-          // unexpected trail
-          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-          continue
-        } else if (i + 1 === length) {
-          // unpaired lead
-          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-          continue
-        }
-
-        // valid lead
-        leadSurrogate = codePoint
-
-        continue
-      }
-
-      // 2 leads in a row
-      if (codePoint < 0xDC00) {
-        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-        leadSurrogate = codePoint
-        continue
-      }
-
-      // valid surrogate pair
-      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
-    } else if (leadSurrogate) {
-      // valid bmp char, but last char was a lead
-      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-    }
-
-    leadSurrogate = null
-
-    // encode utf8
-    if (codePoint < 0x80) {
-      if ((units -= 1) < 0) break
-      bytes.push(codePoint)
-    } else if (codePoint < 0x800) {
-      if ((units -= 2) < 0) break
-      bytes.push(
-        codePoint >> 0x6 | 0xC0,
-        codePoint & 0x3F | 0x80
-      )
-    } else if (codePoint < 0x10000) {
-      if ((units -= 3) < 0) break
-      bytes.push(
-        codePoint >> 0xC | 0xE0,
-        codePoint >> 0x6 & 0x3F | 0x80,
-        codePoint & 0x3F | 0x80
-      )
-    } else if (codePoint < 0x110000) {
-      if ((units -= 4) < 0) break
-      bytes.push(
-        codePoint >> 0x12 | 0xF0,
-        codePoint >> 0xC & 0x3F | 0x80,
-        codePoint >> 0x6 & 0x3F | 0x80,
-        codePoint & 0x3F | 0x80
-      )
-    } else {
-      throw new Error('Invalid code point')
-    }
-  }
-
-  return bytes
-}
-
-function asciiToBytes (str) {
-  var byteArray = []
-  for (var i = 0; i < str.length; ++i) {
-    // Node's code seems to be doing this and not & 0x7F..
-    byteArray.push(str.charCodeAt(i) & 0xFF)
-  }
-  return byteArray
-}
-
-function utf16leToBytes (str, units) {
-  var c, hi, lo
-  var byteArray = []
-  for (var i = 0; i < str.length; ++i) {
-    if ((units -= 2) < 0) break
-
-    c = str.charCodeAt(i)
-    hi = c >> 8
-    lo = c % 256
-    byteArray.push(lo)
-    byteArray.push(hi)
-  }
-
-  return byteArray
-}
-
-function base64ToBytes (str) {
-  return base64.toByteArray(base64clean(str))
-}
-
-function blitBuffer (src, dst, offset, length) {
-  for (var i = 0; i < length; ++i) {
-    if ((i + offset >= dst.length) || (i >= src.length)) break
-    dst[i + offset] = src[i]
-  }
-  return i
-}
-
-function isnan (val) {
-  return val !== val // eslint-disable-line no-self-compare
-}
-
-},{"base64-js":62,"ieee754":128}],67:[function(require,module,exports){
-module.exports={"eras":{"e-52":"52 versions back","e-51":"51 versions back","e-50":"50 versions back","e-49":"49 versions back","e-48":"48 versions back","e-47":"47 versions back","e-46":"46 versions back","e-45":"45 versions back","e-44":"44 versions back","e-43":"43 versions back","e-42":"42 versions back","e-41":"41 versions back","e-40":"40 versions back","e-39":"39 versions back","e-38":"38 versions back","e-37":"37 versions back","e-36":"36 versions back","e-35":"35 versions back","e-34":"34 versions back","e-33":"33 versions back","e-32":"32 versions back","e-31":"31 versions back","e-30":"30 versions back","e-29":"29 versions back","e-28":"28 versions back","e-27":"27 versions back","e-26":"26 versions back","e-25":"25 versions back","e-24":"24 versions back","e-23":"23 versions back","e-22":"22 versions back","e-21":"21 versions back","e-20":"20 versions back","e-19":"19 versions back","e-18":"18 versions back","e-17":"17 versions back","e-16":"16 versions back","e-15":"15 versions back","e-14":"14 versions back","e-13":"13 versions back","e-12":"12 versions back","e-11":"11 versions back","e-10":"10 versions back","e-9":"9 versions back","e-8":"8 versions back","e-7":"7 versions back","e-6":"6 versions back","e-5":"5 versions back","e-4":"4 versions back","e-3":"3 versions back","e-2":"2 versions back","e-1":"Previous version","e0":"Current","e1":"Near future","e2":"Farther future","e3":"3 versions ahead"},"agents":{"ie":{"browser":"IE","abbr":"IE","prefix":"ms","type":"desktop","usage_global":{"5.5":0.009298,"6":0.0232973,"7":0.0232973,"8":0.424011,"9":0.265589,"10":0.265589,"11":3.87201},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"5.5","6","7","8","9","10","11",null,null,null]},"edge":{"browser":"Edge","abbr":"Edge","prefix":"ms","type":"desktop","usage_global":{"12":0.054408,"13":0.18136,"14":1.40554,"15":0},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"12","13","14","15",null,null]},"firefox":{"browser":"Firefox","abbr":"FF","prefix":"moz","type":"desktop","usage_global":{"2":0.018136,"3":0.027204,"3.5":0.004534,"3.6":0.02267,"4":0.009068,"5":0.004879,"6":0.020136,"7":0.005725,"8":0.009068,"9":0.00533,"10":0.004534,"11":0.009068,"12":0.013602,"13":0.004486,"14":0.004534,"15":0.02267,"16":0.009068,"17":0.004534,"18":0.02267,"19":0.004534,"20":0.004534,"21":0.027204,"22":0.004534,"23":0.02267,"24":0.009068,"25":0.040806,"26":0.009068,"27":0.009068,"28":0.009068,"29":0.013602,"30":0.013602,"31":0.031738,"32":0.009068,"33":0.013602,"34":0.018136,"35":0.018136,"36":0.02267,"37":0.02267,"38":0.063476,"39":0.027204,"40":0.02267,"41":0.031738,"42":0.027204,"43":0.104282,"44":0.063476,"45":0.172292,"46":0.09068,"47":0.258438,"48":0.240302,"49":0.185894,"50":4.28916,"51":0.603022,"52":0.027204,"53":0,"54":0},"versions":[null,"2","3","3.5","3.6","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54"]},"chrome":{"browser":"Chrome","abbr":"Chr.","prefix":"webkit","type":"desktop","usage_global":{"4":0.004706,"5":0.004879,"6":0.004879,"7":0.005591,"8":0.005591,"9":0.005591,"10":0.004534,"11":0.02267,"12":0.004534,"13":0.004879,"14":0.004706,"15":0.004706,"16":0.004534,"17":0.004534,"18":0.013602,"19":0.02267,"20":0.009068,"21":0.013602,"22":0.036272,"23":0.009068,"24":0.054408,"25":0.013602,"26":0.02267,"27":0.013602,"28":0.013602,"29":0.018136,"30":0.027204,"31":0.086146,"32":0.04534,"33":0.036272,"34":0.036272,"35":0.077078,"36":0.172292,"37":0.027204,"38":0.040806,"39":0.04534,"40":0.031738,"41":0.054408,"42":0.049874,"43":0.235768,"44":0.063476,"45":0.303778,"46":0.058942,"47":0.172292,"48":0.104282,"49":1.43728,"50":0.172292,"51":0.435264,"52":0.190428,"53":0.276574,"54":0.584886,"55":21.8675,"56":0.344584,"57":0.063476,"58":0.004534,"59":0},"versions":["4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59"]},"safari":{"browser":"Safari","abbr":"Saf.","prefix":"webkit","type":"desktop","usage_global":{"3.1":0,"3.2":0.008692,"4":0.009068,"5":0.040806,"5.1":0.058942,"6":0.009068,"6.1":0.036272,"7":0.02267,"7.1":0.009068,"8":0.099748,"9":0.108816,"9.1":0.471536,"10":1.45995,"10.1":0,"TP":0},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"3.1","3.2","4","5","5.1","6","6.1","7","7.1","8","9","9.1","10","10.1","TP",null]},"opera":{"browser":"Opera","abbr":"Op.","prefix":"webkit","type":"desktop","usage_global":{"9":0.0082,"9.5-9.6":0.00685,"10.0-10.1":0.018136,"10.5":0.008392,"10.6":0.004706,"11":0.016581,"11.1":0.006229,"11.5":0.004879,"11.6":0.004534,"12":0.009068,"12.1":0.077078,"15":0.00685,"16":0.00685,"17":0.00685,"18":0.005014,"19":0.006015,"20":0.004879,"21":0.006597,"22":0.006597,"23":0.013434,"24":0.006702,"25":0.006015,"26":0.005595,"27":0.004706,"28":0.013602,"29":0.004879,"30":0.004879,"31":0.00533,"32":0.005152,"33":0.005014,"34":0.009758,"35":0.004879,"36":0.036272,"37":0.009068,"38":0.04534,"39":0.004534,"40":0.004534,"41":0.013602,"42":0.426196,"43":0.004534,"44":0,"45":0},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,"9","9.5-9.6","10.0-10.1","10.5","10.6","11","11.1","11.5","11.6","12","12.1","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45",null],"prefix_exceptions":{"9":"o","9.5-9.6":"o","10.0-10.1":"o","10.5":"o","10.6":"o","11":"o","11.1":"o","11.5":"o","11.6":"o","12":"o","12.1":"o"}},"ios_saf":{"browser":"iOS Safari","abbr":"iOS","prefix":"webkit","type":"mobile","usage_global":{"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.0425282,"7.0-7.1":0.199883,"8":0,"8.1-8.4":0.240285,"9.0-9.2":0.108447,"9.3":0.933495,"10.0-10.2":8.43441},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"3.2","4.0-4.1","4.2-4.3","5.0-5.1","6.0-6.1","7.0-7.1","8","8.1-8.4","9.0-9.2","9.3","10.0-10.2",null,null,null]},"op_mini":{"browser":"Opera Mini","abbr":"O.Mini","prefix":"o","type":"mobile","usage_global":{"all":3.43606},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"all",null,null,null]},"android":{"browser":"Android Browser","abbr":"And.","prefix":"webkit","type":"mobile","usage_global":{"2.1":0,"2.2":0,"2.3":0,"3":0,"4":0.0522077,"4.1":0.168842,"4.2-4.3":0.514301,"4.4":1.16523,"4.4.3-4.4.4":0.652041,"53":0},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"2.1","2.2","2.3","3","4","4.1","4.2-4.3","4.4","4.4.3-4.4.4","53",null,null,null]},"bb":{"browser":"Blackberry Browser","abbr":"BB","prefix":"webkit","type":"mobile","usage_global":{"7":0.046461,"10":0},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"7","10",null,null,null]},"op_mob":{"browser":"Opera Mobile","abbr":"O.Mob","prefix":"o","type":"mobile","usage_global":{"10":0,"11":0,"11.1":0,"11.5":0,"12":0,"12.1":0,"37":0.00751873},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"10","11","11.1","11.5","12","12.1","37",null,null,null],"prefix_exceptions":{"37":"webkit"}},"and_chr":{"browser":"Chrome for Android","abbr":"Chr/And.","prefix":"webkit","type":"mobile","usage_global":{"56":25.4544},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"56",null,null,null]},"and_ff":{"browser":"Firefox for Android","abbr":"FF/And.","prefix":"moz","type":"mobile","usage_global":{"51":0.032796},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"51",null,null,null]},"ie_mob":{"browser":"IE Mobile","abbr":"IE.Mob","prefix":"ms","type":"mobile","usage_global":{"10":0.0821492,"11":0.387927},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"10","11",null,null,null]},"and_uc":{"browser":"UC Browser for Android","abbr":"UC","prefix":"webkit","type":"mobile","usage_global":{"11":8.94238},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"11",null,null,null],"prefix_exceptions":{"11":"webkit"}},"samsung":{"browser":"Samsung Internet","abbr":"SS","prefix":"webkit","type":"mobile","usage_global":{"4":3.62396},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"4",null,null,null]},"and_qq":{"browser":"QQ Browser","abbr":"QQ","prefix":"webkit","type":"mobile","usage_global":{"1.2":0},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"1.2",null,null,null]}},"statuses":{"rec":"W3C Recommendation","pr":"W3C Proposed Recommendation","cr":"W3C Candidate Recommendation","wd":"W3C Working Draft","ls":"WHATWG Living Standard","other":"Other","unoff":"Unofficial / Note"},"cats":{"CSS":["CSS3","CSS","CSS2"],"HTML5":["Canvas","HTML5"],"JS API":["JS API"],"Other":["PNG","Other","DOM"],"SVG":["SVG"]},"updated":1488093934,"data":{"png-alpha":{"title":"PNG alpha transparency","description":"Semi-transparent areas in PNG files","spec":"http://www.w3.org/TR/PNG/","status":"rec","links":[{"url":"http://en.wikipedia.org/wiki/Portable_Network_Graphics","title":"Wikipedia"},{"url":"http://dillerdesign.com/experiment/DD_belatedPNG/","title":"Workaround for IE6"}],"categories":["PNG"],"stats":{"ie":{"5.5":"n","6":"p","7":"y","8":"y","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"y","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"IE6 does support full transparency in 8-bit PNGs, which can sometimes be an alternative to 24-bit PNGs.","notes_by_num":{},"usage_perc_y":98.3,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"apng":{"title":"Animated PNG (APNG)","description":"Like animated GIFs, but allowing 24-bit colors and alpha transparency","spec":"https://wiki.mozilla.org/APNG_Specification","status":"unoff","links":[{"url":"http://en.wikipedia.org/wiki/APNG","title":"Wikipedia"},{"url":"https://github.com/davidmz/apng-canvas","title":"Polyfill using canvas"},{"url":"https://chrome.google.com/webstore/detail/ehkepjiconegkhpodgoaeamnpckdbblp","title":"Chrome extension providing support"},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6513393-apng-animated-png-images-support-firefox-and-sa","title":"Microsoft Edge feature request on UserVoice"},{"url":"https://addons.opera.com/en/extensions/details/apng/?display=en","title":"Opera extension providing support"},{"url":"https://code.google.com/p/chromium/issues/detail?id=437662","title":"Chromium issue"}],"categories":["PNG"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n","55":"n","56":"n","57":"n","58":"n","59":"n"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"Where support for APNG is missing, only the first frame is displayed","notes_by_num":{},"usage_perc_y":18.76,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"6691520493125632","firefox_id":"","webkit_id":""},"video":{"title":"Video element","description":"Method of playing videos on webpages (without requiring a plug-in).","spec":"https://html.spec.whatwg.org/multipage/embedded-content.html#the-video-element","status":"ls","links":[{"url":"https://dev.opera.com/articles/view/everything-you-need-to-know-about-html5-video-and-audio/","title":"Detailed article on video/audio elements"},{"url":"http://webmproject.org","title":"WebM format information"},{"url":"http://camendesign.co.uk/code/video_for_everybody","title":"Video for Everybody"},{"url":"http://diveintohtml5.info/video.html","title":"Video on the Web - includes info on Android support"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/video.js#video","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/html/elements/video","title":"WebPlatform Docs"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"a #1","2.2":"a #1","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Different browsers have support for different video formats, see sub-features for details.\r\n\r\n","notes_by_num":{"1":"The Android browser (before 2.3) requires [specific handling](http://www.broken-links.com/2010/07/08/making-html5-video-work-on-android-phones/) to run the video element."},"usage_perc_y":94.33,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"<video>","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"audio":{"title":"Audio element","description":"Method of playing sound on webpages (without requiring a plug-in).","spec":"https://html.spec.whatwg.org/multipage/embedded-content.html#the-audio-element","status":"ls","links":[{"url":"http://html5doctor.com/native-audio-in-the-browser/","title":"HTML5 Doctor article"},{"url":"https://dev.opera.com/articles/view/everything-you-need-to-know-about-html5-video-and-audio/","title":"Detailed article on video/audio elements"},{"url":"http://www.jplayer.org/latest/demos/","title":"Demos of audio player that uses the audio element"},{"url":"http://24ways.org/2010/the-state-of-html5-audio","title":"Detailed article on support"},{"url":"http://textopia.org/androidsoundformats.html","title":"File format test page"},{"url":"http://www.phoboslab.org/log/2011/03/the-state-of-html5-audio","title":"The State of HTML5 Audio"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/audio.js#audio","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/html/elements/audio","title":"WebPlatform Docs"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"a","10.0-10.1":"a","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":94.33,"usage_perc_a":0.02,"ucprefix":false,"parent":"","keywords":"<audio>","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"contenteditable":{"title":"contenteditable attribute (basic support)","description":"Method of making any HTML element editable.","spec":"https://html.spec.whatwg.org/multipage/interaction.html#contenteditable","status":"ls","links":[{"url":"http://html5demos.com/contenteditable","title":"Demo page"},{"url":"https://blog.whatwg.org/the-road-to-html-5-contenteditable","title":"WHATWG blog post"},{"url":"http://accessgarage.wordpress.com/2009/05/08/how-to-hack-your-app-to-make-contenteditable-work/","title":"Blog post on usage problems"},{"url":"http://docs.webplatform.org/wiki/html/attributes/contentEditable","title":"WebPlatform Docs"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"a","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"This support only refers to very basic editing capability, implementations vary significantly on how certain elements can be edited.","notes_by_num":{},"usage_perc_y":94.86,"usage_perc_a":0.03,"ucprefix":false,"parent":"","keywords":"iscontenteditable","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"dragndrop":{"title":"Drag and Drop","description":"Method of easily dragging and dropping elements on a page, requiring minimal JavaScript.","spec":"https://html.spec.whatwg.org/multipage/interaction.html#dnd","status":"ls","links":[{"url":"http://html5doctor.com/native-drag-and-drop/","title":"HTML5 Doctor article"},{"url":"http://nettutsplus.s3.amazonaws.com/64_html5dragdrop/demo/index.html","title":"Shopping cart demo"},{"url":"http://html5demos.com/drag","title":"Demo with link blocks"},{"url":"http://docs.webplatform.org/wiki/dom/DragEvent","title":"WebPlatform Docs"},{"url":"https://github.com/MihaiValentin/setDragImage-IE","title":"Polyfill for setDragImage in IE"},{"url":"http://blog.teamtreehouse.com/implementing-native-drag-and-drop","title":"Implementing Native Drag and Drop"},{"url":"https://github.com/timruffles/ios-html5-drag-drop-shim","title":"iOS/Android shim for HTML 5 drag'n'drop"},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6542268-setdragimage-on-datatransfer-of-dragevent","title":"Microsoft Edge setDragImage feature request on UserVoice"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"a #1 #3","6":"a #1 #3","7":"a #1 #3","8":"a #1 #3","9":"a #1 #3","10":"a #2 #3","11":"a #2 #3"},"edge":{"12":"a #2","13":"a #2","14":"a #2","15":"a #2"},"firefox":{"2":"p","3":"p","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"p","9.5-9.6":"p","10.0-10.1":"p","10.5":"p","10.6":"p","11":"p","11.1":"p","11.5":"p","11.6":"p","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"p","11":"p","11.1":"p","11.5":"p","12":"p","12.1":"y","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"n"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"`dataTransfer.items` only supported by Chrome.\r\n\r\nCurrently no browser supports the `dropzone` attribute.\r\n\r\nFirefox supports any kind of DOM elements for `.setDragImage`. Chrome must have either an `HTMLImageElement` or any kind of DOM elements attached to the DOM and within the viewport of the browser for `.setDragImage`.","notes_by_num":{"1":"Partial support refers to no support for the `dataTransfer.files` or `.types` objects","2":"Partial support refers to not supporting `.setDragImage`","3":"Partial support refers to limited supported formats for `dataTransfer.setData`/`getData`."},"usage_perc_y":37.63,"usage_perc_a":6.52,"ucprefix":false,"parent":"","keywords":"draganddrop, draggable","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"internationalization":{"title":"Internationalization API","description":"Locale-sensitive collation (string comparison), number formatting, and date and time formatting.","spec":"http://www.ecma-international.org/ecma-402/1.0/","status":"other","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl","title":"MDN reference"},{"url":"http://norbertlindenberg.com/2012/12/ecmascript-internationalization-api/","title":"The ECMAScript Internationalization API"},{"url":"http://code.tutsplus.com/tutorials/working-with-intl--cms-21082","title":"Working With Intl"},{"url":"https://bugs.webkit.org/show_bug.cgi?id=90906","title":"WebKit tracking bug"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=1215247","title":"Firefox for Android tracking bug"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"y"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{},"usage_perc_y":80.93,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"Intl,Collator,NumberFormat,DateTimeFormat","ie_id":"ecmascriptinternationalizationapi","chrome_id":"","firefox_id":"","webkit_id":"specification-internationalization-api"},"queryselector":{"title":"querySelector/querySelectorAll","description":"Method of accessing DOM elements using CSS selectors","spec":"https://dom.spec.whatwg.org/#dom-parentnode-queryselector","status":"ls","links":[{"url":"https://developer.mozilla.org/en/DOM/element.querySelector","title":"MDN article on querySelector"},{"url":"https://developer.mozilla.org/En/DOM/Element.querySelectorAll","title":"MDN article on querySelectorAll"},{"url":"http://cjihrig.com/blog/javascripts-selectors-api/","title":"Blog post"},{"url":"http://docs.webplatform.org/wiki/css/selectors_api/querySelector","title":"WebPlatform Docs"}],"categories":["DOM"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"a #1","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"p","3":"p","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"p","9.5-9.6":"p","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support in IE8 is due to being limited to [CSS 2.1 selectors](/#feat=css-sel2) and a small subset of [CSS 3 selectors](/#feat=css-sel3) (see notes there). Additionally, it will have trouble with selectors including unrecognized tags (for example HTML5 ones)."},"usage_perc_y":97.8,"usage_perc_a":0.42,"ucprefix":false,"parent":"","keywords":"query,selectors,selectors api,document.queryselector","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"getelementsbyclassname":{"title":"getElementsByClassName","description":"Method of accessing DOM elements by class name","spec":"https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname","status":"ls","links":[{"url":"http://www.quirksmode.org/dom/tests/basics.html#getElementsByClassName","title":"Test page"},{"url":"http://docs.webplatform.org/wiki/dom/HTMLElement/getElementsByClassName","title":"WebPlatform Docs"}],"categories":["DOM","HTML5"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"p","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":97.83,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"byclassname","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"forms":{"title":"HTML5 form features","description":"Expanded form options, including things like date pickers, sliders, validation, placeholders and multiple file uploads. Previously known as \"Web forms 2.0\".","spec":"https://html.spec.whatwg.org/multipage/forms.html#forms","status":"ls","links":[{"url":"https://miketaylr.com/code/input-type-attr.html","title":"HTML5 inputs and attribute support page"},{"url":"https://github.com/westonruter/webforms2","title":"Cross-browser JS implementation (based on original spec)"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"p","10":"a","11":"a"},"edge":{"12":"a","13":"a","14":"a","15":"a"},"firefox":{"2":"p","3":"p","3.5":"p","3.6":"p","4":"a","5":"a","6":"a","7":"a","8":"a","9":"a","10":"a","11":"a","12":"a","13":"a","14":"a","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a","46":"a","47":"a","48":"a","49":"a","50":"a","51":"a","52":"a","53":"a","54":"a"},"chrome":{"4":"a","5":"a","6":"a","7":"a","8":"a","9":"a","10":"a","11":"a","12":"a","13":"a","14":"a","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a","46":"a","47":"a","48":"a","49":"a","50":"a","51":"a","52":"a","53":"a","54":"a","55":"a","56":"a","57":"a","58":"a","59":"a"},"safari":{"3.1":"p","3.2":"p","4":"a","5":"a","5.1":"a","6":"a","6.1":"a","7":"a","7.1":"a","8":"a","9":"a","9.1":"a","10":"a","10.1":"a","TP":"a"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a"},"ios_saf":{"3.2":"n","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a","8":"a","8.1-8.4":"a","9.0-9.2":"a","9.3":"a","10.0-10.2":"a"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"a","4.4.3-4.4.4":"a","53":"a"},"bb":{"7":"n","10":"a"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"a"},"and_chr":{"56":"a"},"and_ff":{"51":"a"},"ie_mob":{"10":"a","11":"a"},"and_uc":{"11":"y"},"samsung":{"4":"a"},"and_qq":{"1.2":"a"}},"notes":"","notes_by_num":{},"usage_perc_y":9.11,"usage_perc_a":84.19,"ucprefix":false,"parent":"","keywords":"input,datepicker","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"html5semantic":{"title":"New semantic elements","description":"HTML5 offers some new elements, primarily for semantic purposes. The elements include: `section`, `article`, `aside`, `header`, `footer`, `nav`, `figure`, `figcaption`, `time`, `mark` & `main`.","spec":"https://html.spec.whatwg.org/multipage/semantics.html#sections","status":"ls","links":[{"url":"https://blog.whatwg.org/supporting-new-elements-in-ie","title":"Workaround for IE"},{"url":"https://blog.whatwg.org/styling-ie-noscript","title":"Alternate workaround"},{"url":"http://oli.jp/2009/html5-structure3/","title":"Article on structural elements"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/dom.js#dom-html5-elements","title":"has.js test"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"a #2","10":"a #2","11":"a #2"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"a #1","3.5":"a #1","3.6":"a #1","4":"a #2","5":"a #2","6":"a #2","7":"a #2","8":"a #2","9":"a #2","10":"a #2","11":"a #2","12":"a #2","13":"a #2","14":"a #2","15":"a #2","16":"a #2","17":"a #2","18":"a #2","19":"a #2","20":"a #2","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a #1","5":"a #1","6":"a #2","7":"a #2","8":"a #2","9":"a #2","10":"a #2","11":"a #2","12":"a #2","13":"a #2","14":"a #2","15":"a #2","16":"a #2","17":"a #2","18":"a #2","19":"a #2","20":"a #2","21":"a #2","22":"a #2","23":"a #2","24":"a #2","25":"a #2","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"a #1","3.2":"a #1","4":"a #1","5":"a #2","5.1":"a #2","6":"a #2","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"a #1","9.5-9.6":"a #1","10.0-10.1":"a #1","10.5":"a #1","10.6":"a #1","11":"a #1","11.1":"a #2","11.5":"a #2","11.6":"a #2","12":"a #2","12.1":"a #2","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"a #1","4.0-4.1":"a #2","4.2-4.3":"a #2","5.0-5.1":"a #2","6.0-6.1":"a #2","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"a #1"},"android":{"2.1":"a #1","2.2":"a #2","2.3":"a #2","3":"a #2","4":"a #2","4.1":"a #2","4.2-4.3":"a #2","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"a #2","10":"a #2"},"op_mob":{"10":"a #1","11":"a #2","11.1":"a #2","11.5":"a #2","12":"a #2","12.1":"a #2","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"a #2","11":"a #2"},"and_uc":{"11":"a #2"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support refers to missing the default styling, as technically the elements are considered \"[unknown](https://developer.mozilla.org/en-US/docs/Web/API/HTMLUnknownElement)\". This is easily taken care of by manually setting the default `display` value for each tag.","2":"Partial support refers to only the `<main>` element (added later to the spec) being \"unknown\", though it can still be used and styled."},"usage_perc_y":79,"usage_perc_a":18.84,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-line-clamp":{"title":"CSS line-clamp","description":"Proprietary and undocumented CSS property that will contain text to a given amount of lines when used in combination with `display: -webkit-box`. It will end with ellipsis when `text-overflow: ellipsis` is included.","spec":"https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariCSSRef/Articles/StandardCSSProperties.html#//apple_ref/doc/uid/TP30001266-WebKit_SpecificUnsupportedProperties","status":"unoff","links":[{"url":"http://guerillalabs.co/blog/css-line-clamping.html","title":"Article on cross-browser CSS line clamping"},{"url":"https://css-tricks.com/line-clampin/","title":"CSS Tricks article"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n"},"chrome":{"4":"u","5":"u","6":"u","7":"u","8":"u","9":"u","10":"u","11":"u","12":"u","13":"u","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x","46":"y x","47":"y x","48":"y x","49":"y x","50":"y x","51":"y x","52":"y x","53":"y x","54":"y x","55":"y x","56":"y x","57":"y x","58":"y x","59":"y x"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"y x","5.1":"y x","6":"y x","6.1":"y x","7":"y x","7.1":"y x","8":"y x","9":"y x","9.1":"y x","10":"y x","10.1":"y x","TP":"y x"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x","8":"y x","8.1-8.4":"y x","9.0-9.2":"y x","9.3":"y x","10.0-10.2":"y x"},"op_mini":{"all":"n"},"android":{"2.1":"u","2.2":"u","2.3":"y x","3":"y x","4":"y x","4.1":"y x","4.2-4.3":"y x","4.4":"y x","4.4.3-4.4.4":"y x","53":"y x"},"bb":{"7":"y x","10":"y x"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y x"},"and_chr":{"56":"y x"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y x"},"samsung":{"4":"y x"},"and_qq":{"1.2":"y x"}},"notes":"As there is no specification and the property is dependent on an outdated implementation of flexbox (hence `display: -webkit-box`) it is unlikely that other browsers will support the property as-is, although an alternative solution may at some point replace it.\r\n\r\nOlder (presto-based) versions of the Opera browser have also supported the same effect using the proprietary `-o-ellipsis-lastline;` value for `text-overflow`.","notes_by_num":{},"usage_perc_y":80.89,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"offline-apps":{"title":"Offline web applications","description":"Now deprecated method of defining web page files to be cached using a cache manifest file, allowing them to work offline on subsequent visits to the page. ","spec":"https://html.spec.whatwg.org/multipage/browsers.html#offline","status":"unoff","links":[{"url":"http://www.sitepoint.com/offline-web-application-tutorial/","title":"Sitepoint tutorial"},{"url":"http://diveintohtml5.info/offline.html","title":"Dive Into HTML5 article"},{"url":"http://hacks.mozilla.org/2010/01/offline-web-applications/","title":"Mozilla Hacks article/demo"},{"url":"http://docs.webplatform.org/wiki/apis/appcache/ApplicationCache","title":"WebPlatform Docs"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"p","3":"a","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"p","3.2":"p","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"p","10.5":"p","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"This technology is being deprecated in favor of [Service Workers](http://caniuse.com/#feat=serviceworkers)","notes_by_num":{},"usage_perc_y":94.06,"usage_perc_a":0.03,"ucprefix":false,"parent":"","keywords":"appcache,applicationcache,app cache,application cache,online","ie_id":"applicationcache","chrome_id":"6192449487634432","firefox_id":"","webkit_id":""},"webworkers":{"title":"Web Workers","description":"Method of running scripts in the background, isolated from the web page","spec":"https://html.spec.whatwg.org/multipage/workers.html","status":"ls","links":[{"url":"https://developer.mozilla.org/En/Using_web_workers","title":"MDN article"},{"url":"http://nerget.com/rayjs-mt/rayjs.html","title":"Web Worker demo"},{"url":"http://code.google.com/p/ie-web-worker/","title":"Polyfill for IE (single threaded)"},{"url":"http://net.tutsplus.com/tutorials/javascript-ajax/getting-started-with-web-workers/","title":"Tutorial"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"p","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"p","3":"p","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"p","3.2":"p","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"p","10.5":"p","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"y","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"p","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":93.32,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"fontface":{"title":"@font-face Web fonts","description":"Method of displaying fonts downloaded from websites","spec":"http://www.w3.org/TR/css3-webfonts/","status":"cr","links":[{"url":"http://webfonts.info","title":"News and information site"},{"url":"http://en.wikipedia.org/wiki/Web_typography","title":"Wikipedia"},{"url":"http://www.css3files.com/font/","title":"Information page"},{"url":"http://docs.webplatform.org/wiki/css/atrules/@font-face","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"a #1","6":"a #1","7":"a #1","8":"a #1","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"a #2","4.0-4.1":"a #2","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"a","2.3":"a","3":"a","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"a","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Not supported by IE Mobile 9 and below.","notes_by_num":{"1":"Partial support refers to only supporting EOT fonts.","2":"Partial support refers to only supporting SVG fonts."},"usage_perc_y":94.31,"usage_perc_a":0.53,"ucprefix":false,"parent":"","keywords":"font face","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"eot":{"title":"EOT - Embedded OpenType fonts","description":"Type of font that can be derived from a regular font, allowing small files and legal use of high-quality fonts. Usage is restricted by the file being tied to the website","spec":"http://www.w3.org/Submission/EOT/","status":"unoff","links":[{"url":"http://en.wikipedia.org/wiki/Embedded_OpenType","title":"Wikipedia"},{"url":"http://www.microsoft.com/typography/web/embedding/default.aspx","title":"Example pages"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n","55":"n","56":"n","57":"n","58":"n","59":"n"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"Proposal by Microsoft, being considered for W3C standardization.","notes_by_num":{},"usage_perc_y":4.87,"usage_perc_a":0,"ucprefix":false,"parent":"fontface","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"woff":{"title":"WOFF - Web Open Font Format","description":"Compressed TrueType/OpenType font that contains information about the font's source.","spec":"http://www.w3.org/TR/WOFF/","status":"rec","links":[{"url":"http://hacks.mozilla.org/2009/10/woff/","title":"Mozilla hacks blog post"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n #1","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Reported to be supported in some modified versions of the Android 4.0 browser."},"usage_perc_y":93.51,"usage_perc_a":0,"ucprefix":false,"parent":"fontface","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"multibackgrounds":{"title":"CSS3 Multiple backgrounds","description":"Method of using multiple images as a background","spec":"http://www.w3.org/TR/css3-background/","status":"cr","links":[{"url":"http://www.css3.info/preview/multiple-backgrounds/","title":"Demo & information page"},{"url":"http://www.css3files.com/background/","title":"Information page"},{"url":"http://docs.webplatform.org/wiki/css/properties/background-image","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":97.77,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"border-image":{"title":"CSS3 Border images","description":"Method of using images for borders","spec":"https://www.w3.org/TR/css3-background/#border-images","status":"cr","links":[{"url":"http://www.css3files.com/border/","title":"Information page"},{"url":"http://docs.webplatform.org/wiki/css/properties/border-image","title":"WebPlatform Docs"},{"url":"https://developer.mozilla.org//docs/Web/CSS/border-image","title":"Border image on MDN"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"y"},"edge":{"12":"y #1","13":"y #1","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"a x #2 #3","3.6":"a x #2 #3","4":"a x #2 #3","5":"a x #2 #3","6":"a x #2 #3","7":"a x #2 #3","8":"a x #2 #3","9":"a x #2 #3","10":"a x #2 #3","11":"a x #2 #3","12":"a x #2 #3","13":"a x #2 #3","14":"a x #2 #3","15":"a #2","16":"a #2","17":"a #2","18":"a #2","19":"a #2","20":"a #2","21":"a #2","22":"a #2","23":"a #2","24":"a #2","25":"a #2","26":"a #2","27":"a #2","28":"a #2","29":"a #2","30":"a #2","31":"a #2","32":"a #2","33":"a #2","34":"a #2","35":"a #2","36":"a #2","37":"a #2","38":"a #2","39":"a #2","40":"a #2","41":"a #2","42":"a #2","43":"a #2","44":"a #2","45":"a #2","46":"a #2","47":"a #2","48":"a #2","49":"a #2","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a x #1 #2 #3 #4","5":"a x #1 #2 #3 #4","6":"a x #1 #2 #3 #4","7":"a x #1 #2 #3 #4","8":"a x #1 #2 #3 #4","9":"a x #1 #2 #3 #4","10":"a x #1 #2 #3 #4","11":"a x #1 #2 #3 #4","12":"a x #1 #2 #3 #4","13":"a x #1 #2 #3 #4","14":"a x #1 #2 #3 #4","15":"a #1 #2 #4","16":"a #1 #2 #4","17":"a #1 #2 #4","18":"a #1 #2 #4","19":"a #1 #2 #4","20":"a #1 #2 #4","21":"a #1 #2 #4","22":"a #1 #2 #4","23":"a #1 #2 #4","24":"a #1 #2 #4","25":"a #1 #2 #4","26":"a #1 #2 #4","27":"a #1 #2 #4","28":"a #1 #2 #4","29":"a #1 #2 #4","30":"a #1 #2","31":"a #1 #2","32":"a #1 #2","33":"a #1 #2","34":"a #1 #2","35":"a #1 #2","36":"a #1 #2","37":"a #1 #2","38":"a #1 #2","39":"a #1 #2","40":"a #1 #2","41":"a #1 #2","42":"a #1 #2","43":"a #1 #2","44":"a #1 #2","45":"a #1 #2","46":"a #1 #2","47":"a #1 #2","48":"a #1 #2","49":"a #1 #2","50":"a #1 #2","51":"a #2","52":"a #2","53":"a #2","54":"a #2","55":"a #2","56":"a #2","57":"a #2","58":"a #2","59":"a #2"},"safari":{"3.1":"a x #1 #2 #3 #4","3.2":"a x #1 #2 #3 #4","4":"a x #1 #2 #3 #4","5":"a x #1 #2 #3 #4","5.1":"a x #1 #2 #3 #4","6":"a #1 #2 #4","6.1":"a #1 #2 #4","7":"a #1 #2 #4","7.1":"a #1 #2 #4","8":"a #1 #2 #4","9":"a #1 #2 #4","9.1":"y #1","10":"y #1","10.1":"y #1","TP":"y #1"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"a #2 #3 #4","10.6":"a #2 #3 #4","11":"a x #2 #3 #4","11.1":"a x #2 #3 #4","11.5":"a x #2 #3 #4","11.6":"a x #2 #3 #4","12":"a x #2 #3 #4","12.1":"a x #2 #3 #4","15":"a #1 #2","16":"a #1 #2","17":"a #1 #2","18":"a #1 #2","19":"a #1 #2","20":"a #1 #2","21":"a #1 #2","22":"a #1 #2","23":"a #1 #2","24":"a #1 #2","25":"a #1 #2","26":"a #1 #2","27":"a #1 #2","28":"a #1 #2","29":"a #1 #2","30":"a #1 #2","31":"a #1 #2","32":"a #1 #2","33":"a #1 #2","34":"a #1 #2","35":"a #1 #2","36":"a #1 #2","37":"a #1 #2","38":"a #2","39":"a #2","40":"a #2","41":"a #2","42":"a #2","43":"a #2","44":"a #2","45":"a #2"},"ios_saf":{"3.2":"a x #1 #2 #3 #4","4.0-4.1":"a x #1 #2 #3 #4","4.2-4.3":"a x #1 #2 #3 #4","5.0-5.1":"a x #1 #2 #3 #4","6.0-6.1":"a #1 #2 #4","7.0-7.1":"a #1 #2 #4","8":"a #1 #2 #4","8.1-8.4":"a #1 #2 #4","9.0-9.2":"a #1 #2 #4","9.3":"y #1","10.0-10.2":"y #1"},"op_mini":{"all":"a x #2 #3 #4"},"android":{"2.1":"a #1 #2 #3 #4","2.2":"a #1 #2 #3 #4","2.3":"a #1 #2 #3 #4","3":"a #1 #2 #3 #4","4":"a #1 #2 #3 #4","4.1":"a #1 #2 #3 #4","4.2-4.3":"a #1 #2 #3 #4","4.4":"a #1 #2","4.4.3-4.4.4":"a #1 #2","53":"a #1 #2"},"bb":{"7":"a #1 #2 #3 #4","10":"a #1 #2 #4"},"op_mob":{"10":"n","11":"a x #2 #3 #4","11.1":"a x #2 #3 #4","11.5":"a x #2 #3 #4","12":"a x #2 #3 #4","12.1":"a x #2 #3 #4","37":"a #1 #2"},"and_chr":{"56":"a #2"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"y"},"and_uc":{"11":"a #1 #2"},"samsung":{"4":"a #1 #2"},"and_qq":{"1.2":"a #2"}},"notes":"Note that both the `border-style` and `border-width` must be specified (not set to `none` or 0) for border-images to work.","notes_by_num":{"1":"Has a bug where `border-image` incorrectly overrides `border-style`. See [test case](http://codepen.io/Savago/pen/yYrgyK), [WebKit bug](https://bugs.webkit.org/show_bug.cgi?id=99922), [discussion](https://github.com/whatwg/compat/issues/17)","2":"Partial support refers to not supporting `border-image-repeat: space`","3":"Partial support refers to supporting the shorthand syntax, but not the individual properties (`border-image-source`, `border-image-slice`, etc). ","4":"Partial support refers to not supporting `border-image-repeat: round`"},"usage_perc_y":22.15,"usage_perc_a":75.01,"ucprefix":false,"parent":"","keywords":"border-image-source,border-image-slice,border-image-repeat,border-image-width,,border-image-outset","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"background-img-opts":{"title":"CSS3 Background-image options","description":"New properties to affect background images, including background-clip, background-origin and background-size","spec":"http://www.w3.org/TR/css3-background/#backgrounds","status":"cr","links":[{"url":"http://www.standardista.com/css3/css3-background-properties","title":"Detailed compatibility tables and demos"},{"url":"http://www.css3files.com/background/","title":"Information page"},{"url":"https://github.com/louisremi/background-size-polyfill","title":"Polyfill for IE7-8"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"a x","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a #3","5":"a #3","6":"a #3","7":"a #3","8":"a #3","9":"a #3","10":"a #3","11":"a #3","12":"a #3","13":"a #3","14":"a #3","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"a #2 #3","3.2":"a #2 #3","4":"a #2 #3","5":"a #2 #3","5.1":"a #2 #3","6":"a #2 #3","6.1":"a #2 #3","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"a x","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a #3","6.0-6.1":"a","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"a #1"},"android":{"2.1":"a x","2.2":"a x #3","2.3":"a x #3","3":"a #3","4":"a #3","4.1":"a #3","4.2-4.3":"a #3","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Safari also supports the unofficial `-webkit-background-clip: text` (only with prefix)","notes_by_num":{"1":"Partial support in Opera Mini refers to not supporting background sizing or background attachments. However Opera Mini 7.5 supports background sizing (including cover and contain values).","2":"Partial support in Safari 6 refers to not supporting background sizing offset from edges syntax.","3":"Does not support `background-size` values in the `background` shorthand"},"usage_perc_y":93.3,"usage_perc_a":4.49,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-table":{"title":"CSS Table display","description":"Method of displaying elements as tables, rows, and cells. Includes support for all `display: table-*` properties as well as `display: inline-table`","spec":"http://www.w3.org/TR/CSS21/tables.html","status":"rec","links":[{"url":"http://www.onenaught.com/posts/201/use-css-displaytable-for-layout","title":"Blog post on usage"}],"categories":["CSS2"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"y","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"a #1","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Firefox 2 does not support `inline-table`"},"usage_perc_y":98.26,"usage_perc_a":0.02,"ucprefix":false,"parent":"","keywords":"display:table,table-cell,table-row,table-layout","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-gencontent":{"title":"CSS Generated content for pseudo-elements","description":"Method of displaying text or images before or after the given element's contents using the ::before and ::after pseudo-elements. All browsers with support also support the `attr()` notation in the `content` property. ","spec":"http://www.w3.org/TR/CSS21/generate.html","status":"rec","links":[{"url":"http://www.westciv.com/style_master/academy/css_tutorial/advanced/generated_content.html","title":"Guide on usage"},{"url":"https://dev.opera.com/articles/view/css-generated-content-techniques/","title":"Dev.Opera article"},{"url":"http://docs.webplatform.org/wiki/css/generated_and_replaced_content","title":"WebPlatform Docs"}],"categories":["CSS2","CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"a #1","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"y","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"For content to appear in pseudo-elements, the `content` property must be set (but may be an empty string).","notes_by_num":{"1":"IE8 only supports the single-colon CSS 2.1 syntax (i.e. :pseudo-class). It does not support the double-colon CSS3 syntax (i.e. ::pseudo-element)."},"usage_perc_y":97.86,"usage_perc_a":0.42,"ucprefix":false,"parent":"","keywords":"before,after","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-fixed":{"title":"CSS position:fixed","description":"Method of keeping an element in a fixed location regardless of scroll position","spec":"http://www.w3.org/TR/CSS21/visuren.html#fixed-positioning","status":"rec","links":[{"url":"http://www.css-101.org/fixed-positioning/05.php","title":"Workaround for IE6"},{"url":"http://bradfrostweb.com/blog/mobile/fixed-position/","title":"Article on mobile support"},{"url":"http://docs.webplatform.org/wiki/css/properties/position","title":"WebPlatform Docs"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"p","7":"y","8":"y","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"y","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"a #1","6.0-6.1":"a #1","7.0-7.1":"a #1","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"a #2","2.2":"a #2","2.3":"a #2","3":"y","4":"y #3","4.1":"y #3","4.2-4.3":"y #3","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support in older iOS Safari refers to [buggy behavior](http://remysharp.com/2012/05/24/issues-with-position-fixed-scrolling-on-ios/).","2":"Only works in Android 2.1 thru 2.3 by using the following meta tag: <meta name=\"viewport\" content=\"width=device-width, user-scalable=no\">.","3":"Android 4.0-4.3 [ignore transforms and margin:auto on position:fixed elements](https://codepen.io/mattiacci/pen/mPRKZY)."},"usage_perc_y":94.63,"usage_perc_a":0.24,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"beacon":{"title":"Beacon API","description":"Allows data to be sent asynchronously to a server with `navigator.sendBeacon`, even after a page was closed. Useful for posting analytics data the moment a user was finished using the page.","spec":"http://www.w3.org/TR/beacon/","status":"wd","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon","title":"MDN article"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":72.91,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"beacon","chrome_id":"5517433905348608","firefox_id":"","webkit_id":""},"hashchange":{"title":"Hashchange event","description":"Event triggered in JavaScript when the URL's hash has changed (for example: page.html#foo to page.html#bar) ","spec":"https://html.spec.whatwg.org/multipage/browsers.html#the-hashchangeevent-interface","status":"ls","links":[{"url":"https://developer.mozilla.org/en/DOM/window.onhashchange","title":"MDN article"},{"url":"http://msdn.microsoft.com/en-us/library/cc288209(VS.85).aspx","title":"MSDN article"},{"url":"http://www.quirksmode.org/dom/events/tests/hashchange.html","title":"Simple demo"},{"url":"http://github.com/3nr1c/jUri.js","title":"Polyfill"},{"url":"http://docs.webplatform.org/wiki/dom/Element/hashchange","title":"WebPlatform Docs"}],"categories":["HTML5","JS API"],"stats":{"ie":{"5.5":"p","6":"p","7":"p","8":"y","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"p","3":"p","3.5":"p","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"p","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"p","3.2":"p","4":"p","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"p","9.5-9.6":"p","10.0-10.1":"p","10.5":"p","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"p","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":94.73,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"onhashchange,HashChangeEvent","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-sel2":{"title":"CSS 2.1 selectors","description":"Basic CSS selectors including: `*` (universal selector), `>` (child selector), `:first-child`, `:link`, `:visited`, `:active`, `:hover`, `:focus`, `:lang()`, `+` (adjacent sibling selector), `[attr]`, `[attr=\"val\"]`, `[attr~=\"val\"]`, `[attr|=\"bar\"]`, `.foo` (class selector), `#foo` (id selector)","spec":"http://www.w3.org/TR/CSS21/selector.html","status":"rec","links":[{"url":"http://www.quirksmode.org/css/contents.html","title":"Detailed support information"},{"url":"http://www.yourhtmlsource.com/stylesheets/advancedselectors.html","title":"Examples of advanced selectors"},{"url":"http://selectivizr.com","title":"Selectivizr: Polyfill for IE6-8"},{"url":"http://docs.webplatform.org/wiki/css/selectors","title":"WebPlatform Docs"}],"categories":["CSS2"],"stats":{"ie":{"5.5":"n","6":"p","7":"y","8":"y","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"y","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Support for `:visited` styling [varies across browsers](http://sixrevisions.com/css/visited-pseudo-class-strange/) due to security concerns.","notes_by_num":{},"usage_perc_y":98.3,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"attribute selector","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-sel3":{"title":"CSS3 selectors","description":"Advanced element selection using selectors including: `[foo^=\"bar\"]`, `[foo$=\"bar\"]`, `[foo*=\"bar\"]`, `:root`, `:nth-child()`,  `:nth-last-child()`, `nth-of-type`, `nth-last-of-type()`, `:last-child`, `:first-of-type`, `:last-of-type`, `:only-child`, `:only-of-type`, `:empty`, `:target`, `:enabled`, `:disabled`, `:checked`, `:not()`, `~` (general sibling)","spec":"http://www.w3.org/TR/css3-selectors/","status":"rec","links":[{"url":"http://www.quirksmode.org/css/selectors/","title":"Detailed support information"},{"url":"http://www.css3.info/selectors-test/","title":"Automated CSS3 selector test"},{"url":"http://selectivizr.com","title":"Selectivizr: Polyfill for IE6-8"},{"url":"http://docs.webplatform.org/wiki/css/selectors","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"p","7":"a #1","8":"a #1","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"IE7 and IE8 support only these CSS3 selectors: General siblings (`element1~element2`) and Attribute selectors `[attr^=val]`, `[attr$=val]`, and `[attr*=val]`"},"usage_perc_y":97.8,"usage_perc_a":0.45,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-textshadow":{"title":"CSS3 Text-shadow","description":"Method of applying one or more shadow or blur effects to text","spec":"http://www.w3.org/TR/css-text-decor-3/#text-shadow-property","status":"cr","links":[{"url":"http://hacks.mozilla.org/2009/06/text-shadow/","title":"Mozilla hacks article"},{"url":"https://testdrive-archive.azurewebsites.net/Graphics/hands-on-css3/hands-on_text-shadow.htm","title":"Live editor"},{"url":"http://www.css3files.com/shadow/#textshadow","title":"Information page"},{"url":"http://docs.webplatform.org/wiki/css/properties/text-shadow","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y #1","11":"y #1"},"edge":{"12":"y #1","13":"y #1","14":"y #1","15":"y #1"},"firefox":{"2":"n","3":"n","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"a #2","3.2":"a #2","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"a"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"a","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y #1","11":"y #1"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Opera Mini ignores the blur-radius set, so no blur effect is visible. Text-shadow behavior can be somewhat emulated in older IE versions using the non-standard \"dropshadow\" or \"glow\" filters.","notes_by_num":{"1":"IE 10+ supports a fourth length value for the shadow's \"spread\". This is not (yet) part of the specification.","2":"Partial support in Safari 3.* refers to not supporting multiple shadows."},"usage_perc_y":94.05,"usage_perc_a":3.49,"ucprefix":false,"parent":"","keywords":"text shadow","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-boxshadow":{"title":"CSS3 Box-shadow","description":"Method of displaying an inner or outer shadow effect to elements","spec":"http://www.w3.org/TR/css3-background/#box-shadow","status":"cr","links":[{"url":"https://developer.mozilla.org/En/CSS/-moz-box-shadow","title":"MDN article"},{"url":"http://westciv.com/tools/boxshadows/index.html","title":"Live editor"},{"url":"http://tests.themasta.com/blogstuff/boxshadowdemo.html","title":"Demo of various effects"},{"url":"http://www.css3files.com/shadow/","title":"Information page"},{"url":"http://docs.webplatform.org/wiki/css/properties/box-shadow","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"y x","3.6":"y x","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"a x #1","3.2":"a x #1","4":"a x #1","5":"y x","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"a x #1","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"a x #1","2.2":"a x #1","2.3":"a x #1","3":"a x #1","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y x","10":"y"},"op_mob":{"10":"n","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Can be partially emulated in older IE versions using the non-standard \"shadow\" filter.","notes_by_num":{"1":"Partial support in Safari, iOS Safari and Android Browser refers to missing \"inset\", blur radius value, and multiple shadow support."},"usage_perc_y":94.33,"usage_perc_a":0.02,"ucprefix":false,"parent":"","keywords":"box-shadows,boxshadows,box shadow,shaow","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css3-colors":{"title":"CSS3 Colors","description":"Method of describing colors using Hue, Saturation and Lightness (hsl()) rather than just RGB, as well as allowing alpha-transparency with rgba() and hsla().","spec":"http://www.w3.org/TR/css3-color/","status":"rec","links":[{"url":"https://dev.opera.com/articles/view/color-in-opera-10-hsl-rgb-and-alpha-transparency/","title":"Dev.Opera article"},{"url":"http://www.css3files.com/color/","title":"Information page"},{"url":"http://docs.webplatform.org/wiki/css/color#RGBA_Notation","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"a","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"a","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":97.82,"usage_perc_a":0.02,"ucprefix":false,"parent":"","keywords":"rgb,hsl,rgba,hsla","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css3-boxsizing":{"title":"CSS3 Box-sizing","description":"Method of specifying whether or not an element's borders and padding should be included in size units","spec":"http://www.w3.org/TR/css3-ui/#box-sizing","status":"cr","links":[{"url":"https://developer.mozilla.org/En/CSS/Box-sizing","title":"MDN article"},{"url":"http://www.456bereastreet.com/archive/201104/controlling_width_with_css3_box-sizing/","title":"Blog post"},{"url":"https://github.com/Schepp/box-sizing-polyfill","title":"Polyfill for IE"},{"url":"http://css-tricks.com/box-sizing/","title":"CSS Tricks"},{"url":"http://docs.webplatform.org/wiki/css/properties/box-sizing","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"p","6":"p","7":"p","8":"y","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"y x","3":"y x","3.5":"y x","3.6":"y x","4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y x","3.2":"y x","4":"y x","5":"y x","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y x","2.2":"y x","2.3":"y x","3":"y x","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y x","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Firefox currently also supports the `padding-box` in addition to `content-box` and `border-box`, though this value has been removed from the specification.","notes_by_num":{},"usage_perc_y":98.27,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"border-box,content-box","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-mediaqueries":{"title":"CSS3 Media Queries","description":"Method of applying styles based on media information. Includes things like page and device dimensions","spec":"http://www.w3.org/TR/css3-mediaqueries/","status":"rec","links":[{"url":"http://ie.microsoft.com/testdrive/HTML5/85CSS3_MediaQueries/","title":"IE demo page with information"},{"url":"http://webdesignerwall.com/tutorials/responsive-design-with-css3-media-queries","title":"Media Queries tutorial"},{"url":"https://github.com/scottjehl/Respond","title":"Polyfill for IE"},{"url":"http://docs.webplatform.org/wiki/css/atrules/@media","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"p","6":"p","7":"p","8":"p","9":"y #1","10":"y #1","11":"y #1"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y #1","5":"y #1","6":"y #1","7":"y #1","8":"y #1","9":"y #1","10":"y #1","11":"y #1","12":"y #1","13":"y #1","14":"y #1","15":"y #1","16":"y #1","17":"y #1","18":"y #1","19":"y #1","20":"y #1","21":"y #1","22":"y #1","23":"y #1","24":"y #1","25":"y #1","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"a #1 #2","3.2":"a #1 #2","4":"y #1","5":"y #1","5.1":"y #1","6":"y #1","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y #1","4.0-4.1":"y #1","4.2-4.3":"y #1","5.0-5.1":"y #1","6.0-6.1":"y #1","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y #1","2.2":"y #1","2.3":"y #1","3":"y #1","4":"y #1","4.1":"y #1","4.2-4.3":"y #1","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y #1","11":"y #1"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Does not support nested media queries","2":"Partial support refers to only acknowledging different media rules on page reload"},"usage_perc_y":97.8,"usage_perc_a":0.01,"ucprefix":false,"parent":"","keywords":"@media","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"multicolumn":{"title":"CSS3 Multiple column layout","description":"Method of flowing information in multiple columns","spec":"http://www.w3.org/TR/css3-multicol/","status":"cr","links":[{"url":"https://dev.opera.com/articles/view/css3-multi-column-layout/","title":"Dev.Opera article"},{"url":"http://webdesign.tutsplus.com/tutorials/htmlcss-tutorials/an-introduction-to-the-css3-multiple-column-layout-module/","title":"Introduction page"},{"url":"http://docs.webplatform.org/wiki/css/properties/column-width","title":"WebPlatform Docs"},{"url":"https://github.com/hamsterbacke23/multicolumn-polyfill","title":"Polyfill"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"a x","3":"a x","3.5":"a x","3.6":"a x","4":"a x","5":"a x","6":"a x","7":"a x","8":"a x","9":"a x","10":"a x","11":"a x","12":"a x","13":"a x","14":"a x","15":"a x","16":"a x","17":"a x","18":"a x","19":"a x","20":"a x","21":"a x","22":"a x","23":"a x","24":"a x","25":"a x","26":"a x","27":"a x","28":"a x","29":"a x","30":"a x","31":"a x","32":"a x","33":"a x","34":"a x","35":"a x","36":"a x","37":"a x","38":"a x","39":"a x","40":"a x","41":"a x","42":"a x","43":"a x","44":"a x","45":"a x","46":"a x","47":"a x","48":"a x","49":"a x","50":"a x","51":"a x","52":"a","53":"a","54":"a"},"chrome":{"4":"a x","5":"a x","6":"a x","7":"a x","8":"a x","9":"a x","10":"a x","11":"a x","12":"a x","13":"a x","14":"a x","15":"a x","16":"a x","17":"a x","18":"a x","19":"a x","20":"a x","21":"a x","22":"a x","23":"a x","24":"a x","25":"a x","26":"a x","27":"a x","28":"a x","29":"a x","30":"a x","31":"a x","32":"a x","33":"a x","34":"a x","35":"a x","36":"a x","37":"a x","38":"a x","39":"a x","40":"a x","41":"a x","42":"a x","43":"a x","44":"a x","45":"a x","46":"a x","47":"a x","48":"a x","49":"a x","50":"a","51":"a","52":"a","53":"a","54":"a","55":"a","56":"a","57":"a","58":"a","59":"a"},"safari":{"3.1":"a x","3.2":"a x","4":"a x","5":"a x","5.1":"a x","6":"a x","6.1":"a x","7":"a x","7.1":"a x","8":"a x","9":"a","9.1":"a","10":"a","10.1":"a","TP":"a"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"a x","16":"a x","17":"a x","18":"a x","19":"a x","20":"a x","21":"a x","22":"a x","23":"a x","24":"a x","25":"a x","26":"a x","27":"a x","28":"a x","29":"a x","30":"a x","31":"a x","32":"a x","33":"a x","34":"a x","35":"a x","36":"a x","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a"},"ios_saf":{"3.2":"a x","4.0-4.1":"a x","4.2-4.3":"a x","5.0-5.1":"a x","6.0-6.1":"a x","7.0-7.1":"a x","8":"a x","8.1-8.4":"a x","9.0-9.2":"a","9.3":"a","10.0-10.2":"a"},"op_mini":{"all":"y"},"android":{"2.1":"a x","2.2":"a x","2.3":"a x","3":"a x","4":"a x","4.1":"a x","4.2-4.3":"a x","4.4":"a x","4.4.3-4.4.4":"a x","53":"a x"},"bb":{"7":"a x","10":"a x"},"op_mob":{"10":"n","11":"n","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"a x"},"and_chr":{"56":"a"},"and_ff":{"51":"a x"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"a x"},"samsung":{"4":"a x"},"and_qq":{"1.2":"a"}},"notes":"Partial support refers to not supporting the `break-before`, `break-after`, `break-inside` properties. WebKit- and Blink-based browsers do have equivalent support for the non-standard `-webkit-column-break-*` properties to accomplish the same result (but only the `auto` and `always` values). Firefox does not support `break-*`.","notes_by_num":{},"usage_perc_y":9.79,"usage_perc_a":87.74,"ucprefix":false,"parent":"","keywords":"column-count,column-width,column-gap,column-rule,column-span,column-fill","ie_id":"multicolumnfullsupport","chrome_id":"6526151266664448,5630943616303104","firefox_id":"","webkit_id":""},"border-radius":{"title":"CSS3 Border-radius (rounded corners)","description":"Method of making the border corners round. Covers support for the shorthand `border-radius` as well as the long-hand properties (e.g. `border-top-left-radius`)","spec":"http://www.w3.org/TR/css3-background/#the-border-radius","status":"cr","links":[{"url":"http://border-radius.com","title":"Border-radius CSS Generator"},{"url":"http://muddledramblings.com/table-of-css3-border-radius-compliance","title":"Detailed compliance table"},{"url":"http://www.css3files.com/border/#borderradius","title":"Information page"},{"url":"http://css3pie.com/","title":"Polyfill which includes border-radius"},{"url":"http://docs.webplatform.org/wiki/css/properties/border-radius","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"a x #2","3":"y x #2","3.5":"y x #2","3.6":"y x #2","4":"y #2","5":"y #2","6":"y #2","7":"y #2","8":"y #2","9":"y #2","10":"y #2","11":"y #2","12":"y #2","13":"y #2","14":"y #2","15":"y #2","16":"y #2","17":"y #2","18":"y #2","19":"y #2","20":"y #2","21":"y #2","22":"y #2","23":"y #2","24":"y #2","25":"y #2","26":"y #2","27":"y #2","28":"y #2","29":"y #2","30":"y #2","31":"y #2","32":"y #2","33":"y #2","34":"y #2","35":"y #2","36":"y #2","37":"y #2","38":"y #2","39":"y #2","40":"y #2","41":"y #2","42":"y #2","43":"y #2","44":"y #2","45":"y #2","46":"y #2","47":"y #2","48":"y #2","49":"y #2","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y x","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y x","3.2":"y x","4":"y x","5":"y","5.1":"y #1","6":"y #1","6.1":"y #1","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y x","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"y x","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Safari 6.1 and earlier did not apply `border-radius` correctly to image borders: http://stackoverflow.com/q/17202128","2":"Dotted and dashed rounded border corners are rendered as solid in Firefox. [see bug](https://bugzilla.mozilla.org/show_bug.cgi?id=382721)"},"usage_perc_y":94.37,"usage_perc_a":0.02,"ucprefix":false,"parent":"","keywords":"roundedcorners, border radius,-moz-border-radius","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"transforms2d":{"title":"CSS3 2D Transforms","description":"Method of transforming an element including rotating, scaling, etc. Includes support for `transform` as well as `transform-origin` properties.","spec":"http://www.w3.org/TR/css3-2d-transforms/","status":"wd","links":[{"url":"http://www.westciv.com/tools/transforms/","title":"Live editor"},{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/transform","title":"MDN article"},{"url":"http://www.webresourcesdepot.com/cross-browser-css-transforms-csssandpaper/","title":"Workaround script for IE"},{"url":"http://www.css3files.com/transform/","title":"Information page"},{"url":"http://www.useragentman.com/IETransformsTranslator/","title":"Converter for IE"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/css.js#css-transform","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/css/transforms/transform","title":"WebPlatform Docs"},{"url":"https://developer.microsoft.com/en-us/microsoft-edge/platform/status/supportcsstransformsonsvg/","title":"IE platform status (SVG)"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"y x #1","10":"y #1","11":"y #1"},"edge":{"12":"y #1","13":"y #1","14":"y #1","15":"y #1"},"firefox":{"2":"n","3":"n","3.5":"y x","3.6":"y x","4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y x","3.2":"y x","4":"y x","5":"y x","5.1":"y x","6":"y x","6.1":"y x","7":"y x","7.1":"y x","8":"y x","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"y x","10.6":"y x","11":"y x","11.1":"y x","11.5":"y x","11.6":"y x","12":"y x","12.1":"y","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x","8":"y x","8.1-8.4":"y x","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"y x","2.2":"y x","2.3":"y x","3":"y x","4":"y x","4.1":"y x","4.2-4.3":"y x","4.4":"y x","4.4.3-4.4.4":"y x","53":"y"},"bb":{"7":"y x","10":"y x"},"op_mob":{"10":"n","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y x"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"The scale transform can be emulated in IE < 9 using Microsoft's \"zoom\" extension, others are (not easily) possible using the MS Matrix filter","notes_by_num":{"1":"Does not support CSS transforms on SVG elements (transform attribute can be used instead)"},"usage_perc_y":94.34,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"transformation,translate,translatex,translatey,translatez,transform3d,rotation,rotate,scale,skew,css-transforms,transform-origin,transform:rotate,transform:scale,transform:skew","ie_id":"transforms","chrome_id":"6437640580628480","firefox_id":"","webkit_id":""},"use-strict":{"title":"ECMAScript 5 Strict Mode","description":"Method of placing code in a \"strict\" operating context.","spec":"http://www.ecma-international.org/ecma-262/5.1/#sec-14.1","status":"other","links":[{"url":"http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/","title":"Information page"},{"url":"http://javascriptweblog.wordpress.com/2011/05/03/javascript-strict-mode/","title":"Article with test suite"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"a #1","5.1":"a #1","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support in older Safari refers to strict mode still accepting a lot of JS that should be considered invalid."},"usage_perc_y":97.26,"usage_perc_a":0.1,"ucprefix":false,"parent":"es5","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"devicepixelratio":{"title":"Window.devicePixelRatio","description":"Read-only property that returns the ratio of the (vertical) size of one physical pixel on the current display device to the size of one CSS pixel.","spec":"http://dev.w3.org/csswg/cssom-view/#dom-window-devicepixelratio","status":"wd","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio","title":"MDN"}],"categories":["CSS","DOM"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"As the page is zoomed in the number of device pixels that one CSS pixel covers increases, and therefore the value of devicePixelRatio will also increase.","notes_by_num":{},"usage_perc_y":96.97,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"device,pixel,ratio,size","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"transforms3d":{"title":"CSS3 3D Transforms","description":"Method of transforming an element in the third dimension using the `transform` property. Includes support for the `perspective` property to set the perspective in z-space and the `backface-visibility` property to toggle display of the reverse side of a 3D-transformed element.","spec":"http://www.w3.org/TR/css3-3d-transforms/","status":"wd","links":[{"url":"http://css3.bradshawenterprises.com/flip/","title":"Multi-browser demo"},{"url":"http://hacks.mozilla.org/2011/10/css-3d-transformations-in-firefox-nightly/","title":"Mozilla hacks article"},{"url":"http://thewebrocks.com/demos/3D-css-tester/","title":"3D CSS Tester"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/css.js#css-transform","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/css/transforms/transform","title":"WebPlatform Docs"},{"url":"http://desandro.github.io/3dtransforms/","title":"Intro to CSS 3D transforms"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"a #1","11":"a #1"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"y x","5":"y x","5.1":"y x","6":"y x","6.1":"y x","7":"y x","7.1":"y x","8":"y x","9":"y #2","9.1":"y #2","10":"y #2","10.1":"y #2","TP":"y #2"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x","8":"y x","8.1-8.4":"y x","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"y x","4":"y x","4.1":"y x","4.2-4.3":"y x","4.4":"y x","4.4.3-4.4.4":"y x","53":"y"},"bb":{"7":"y x","10":"y x"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"a #1","11":"a #1"},"and_uc":{"11":"y x"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support in IE refers to not supporting [the transform-style: preserve-3d property](http://msdn.microsoft.com/en-us/library/ie/hh673529%28v=vs.85%29.aspx#the_ms_transform_style_property). This prevents nesting 3D transformed elements.","2":"Safari 9 is reported to still require a prefix for the related `backface-visibility` property."},"usage_perc_y":89.19,"usage_perc_a":4.61,"ucprefix":false,"parent":"","keywords":"css 3d,3dtransforms,translate3d,backface visibility,perspective,transform-origin,transform-style","ie_id":"transforms,csstransformspreserve3d","chrome_id":"6437640580628480","firefox_id":"","webkit_id":""},"sharedworkers":{"title":"Shared Web Workers","description":"Method of allowing multiple scripts to communicate with a single web worker.","spec":"https://html.spec.whatwg.org/multipage/workers.html#shared-workers-introduction","status":"ls","links":[{"url":"http://www.sitepoint.com/javascript-shared-web-workers-html5/","title":"Sitepoint article"},{"url":"http://greenido.wordpress.com/2011/11/03/web-workers-part-3-out-of-3-shared-wrokers/","title":"Blog post"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"y","5.1":"y","6":"y","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"u","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{},"usage_perc_y":47.35,"usage_perc_a":0,"ucprefix":false,"parent":"webworkers","keywords":"shared worker","ie_id":"sharedwebworkers","chrome_id":"","firefox_id":"shared-worker","webkit_id":"feature-shared-web-workers"},"css-hyphens":{"title":"CSS Hyphenation","description":"Method of controlling when words at the end of lines should be hyphenated using the \"hyphens\" property.","spec":"http://www.w3.org/TR/css3-text/#hyphenation","status":"wd","links":[{"url":"https://developer.mozilla.org/en/CSS/hyphens","title":"MDN article"},{"url":"http://blog.fontdeck.com/post/9037028497/hyphens","title":"Blog post"},{"url":"http://docs.webplatform.org/wiki/css/properties/hyphens","title":"WebPlatform Docs"},{"url":"https://crbug.com/605840","title":"Chrome bug for implementing hyphenation"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y x","11":"y x"},"edge":{"12":"y x","13":"y x","14":"y x","15":"y x"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n","55":"a #1","56":"a #1","57":"a #1","58":"a #1","59":"a #1"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"y x","6":"y x","6.1":"y x","7":"y x","7.1":"y x","8":"y x","9":"y x","9.1":"y x","10":"y x","10.1":"y x","TP":"y x"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"a #1","43":"a #1","44":"a #1","45":"a #1"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x","8":"y x","8.1-8.4":"y x","9.0-9.2":"y x","9.3":"y x","10.0-10.2":"y x"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"a #1"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"a x"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"Chrome < 55 and Android 4.0 Browser support \"-webkit-hyphens: none\", but not the \"auto\" property. It is [advisable to set the @lang attribute](http://blog.adrianroselli.com/2015/01/on-use-of-lang-attribute.html) on the HTML element to enable hyphenation support and improve accessibility.","notes_by_num":{"1":"Only supports the \"auto\" value [on Mac for now](https://crrev.com/ed7e106e0e48b3afb160a5bdbb37649e307d2b05)."},"usage_perc_y":24.69,"usage_perc_a":57.11,"ucprefix":false,"parent":"","keywords":"hyphen,shy","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-transitions":{"title":"CSS3 Transitions","description":"Simple method of animating certain properties of an element, with ability to define property, duration, delay and timing function. ","spec":"http://www.w3.org/TR/css3-transitions/","status":"wd","links":[{"url":"http://www.webdesignerdepot.com/2010/01/css-transitions-101/","title":"Article on usage"},{"url":"http://www.css3files.com/transition/","title":"Information page"},{"url":"http://www.the-art-of-web.com/css/timing-function/","title":"Examples on timing functions"},{"url":"http://www.opera.com/docs/specs/presto2.12/css/transitions/","title":"Animation of property types support in Opera"},{"url":"http://docs.webplatform.org/wiki/css/properties/transition","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y x","3.2":"y x","4":"y x","5":"y x","5.1":"y x","6":"y x","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"y x","10.6":"y x","11":"y x","11.1":"y x","11.5":"y x","11.6":"y x","12":"y x","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"y x","2.2":"y x","2.3":"y x","3":"y x","4":"y x","4.1":"y x","4.2-4.3":"y x","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y x","10":"y"},"op_mob":{"10":"y x","11":"y x","11.1":"y x","11.5":"y x","12":"y x","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y x"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Support listed is for `transition` properties as well as the `transitionend` event. The prefixed name in WebKit browsers is `webkitTransitionEnd`","notes_by_num":{},"usage_perc_y":94.05,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"css transition,transitionend,transition-property,transition-duration,transition-timing-function,transition-delay","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"font-feature":{"title":"CSS font-feature-settings","description":"Method of applying advanced typographic and language-specific font features to supported OpenType fonts.","spec":"http://w3.org/TR/css3-fonts/#font-rend-props","status":"cr","links":[{"url":"http://ie.microsoft.com/testdrive/Graphics/opentype/","title":"Demo pages (IE/Firefox only)"},{"url":"http://hacks.mozilla.org/2010/11/firefox-4-font-feature-support/","title":"Mozilla hacks article"},{"url":"http://html5accessibility.com/","title":"Detailed tables on accessability support"},{"url":"http://docs.webplatform.org/wiki/css/properties/font-feature-settings","title":"WebPlatform Docs"},{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/font-feature-settings","title":"Mozilla Developer Network"},{"url":"https://www.microsoft.com/typography/otspec/featuretags.htm","title":"OpenType layout feature tag registry"},{"url":"http://help.typekit.com/customer/portal/articles/1789736-syntax-for-opentype-features-in-css#salt","title":"Syntax for OpenType features in CSS (Adobe Typekit Help)"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"a x #1","5":"a x #1","6":"a x #1","7":"a x #1","8":"a x #1","9":"a x #1","10":"a x #1","11":"a x #1","12":"a x #1","13":"a x #1","14":"a x #1","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"a x #2","17":"a x #2","18":"a x #2","19":"a x #2","20":"a x #2","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x","46":"y x","47":"y x","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"a","5":"a","5.1":"a","6":"a","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y x","4.4.3-4.4.4":"y x","53":"y"},"bb":{"7":"n","10":"y x"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y x"},"samsung":{"4":"y x"},"and_qq":{"1.2":"y"}},"notes":"Whenever possible, font-variant shorthand property or an associated longhand property, font-variant-ligatures, font-variant-caps, font-variant-east-asian, font-variant-alternates, font-variant-numeric or font-variant-position should be used. This property is a low-level feature designed to handle special cases where no other way to enable or access an OpenType font feature exists. In particular, this CSS property shouldn't be used to enable small caps.","notes_by_num":{"1":"From Gecko 2.0 (Firefox 4.0) to Gecko 14.0 (Firefox 14.0) included, Gecko supported an older syntax, slightly different from the modern one: http://hacks.mozilla.org/2010/11/firefox-4-font-feature-support/","2":"Partial support in older Chrome versions refers to lacking support in Mac OS X."},"usage_perc_y":91.45,"usage_perc_a":0.31,"ucprefix":false,"parent":"","keywords":"font-feature,font-feature-settings,kern,kerning,font-variant-alternates,ligatures,font-variant-ligatures","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-animation":{"title":"CSS Animation","description":"Complex method of animating certain properties of an element","spec":"http://www.w3.org/TR/css3-animations/","status":"wd","links":[{"url":"http://robertnyman.com/2010/05/06/css3-animations/","title":"Blog post on usage"},{"url":"http://www.css3files.com/animation/","title":"Information page"},{"url":"http://docs.webplatform.org/wiki/css/properties/animations","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"y x","5":"y x","5.1":"y x","6":"y x","6.1":"y x","7":"y x","7.1":"y x","8":"y x","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"y x","12.1":"y","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x","8":"y x","8.1-8.4":"y x","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"a x #1","2.2":"a x #1","2.3":"a x #1","3":"a x #1","4":"y x","4.1":"y x","4.2-4.3":"y x","4.4":"y x","4.4.3-4.4.4":"y x","53":"y"},"bb":{"7":"y x","10":"y x"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y x"},"samsung":{"4":"y"},"and_qq":{"1.2":"y x"}},"notes":"","notes_by_num":{"1":"Partial support in Android browser refers to buggy behavior in different scenarios."},"usage_perc_y":93.99,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"animations,css-animations,animation-name,animation-duration,animation-delay,animation-timing-function,@keyframes,animationstart,animationend,animationiteration,css3 animation","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-gradients":{"title":"CSS Gradients","description":"Method of defining a linear or radial color gradient as a CSS image.","spec":"http://www.w3.org/TR/css3-images/","status":"cr","links":[{"url":"http://www.colorzilla.com/gradient-editor/","title":"Cross-browser editor"},{"url":"http://www.css3files.com/gradient/","title":"Information page"},{"url":"http://css3pie.com/","title":"Tool to emulate support in IE"},{"url":"http://docs.webplatform.org/wiki/css/functions/linear-gradient","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"y x","4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a x","5":"a x","6":"a x","7":"a x","8":"a x","9":"a x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"a x","5":"a x","5.1":"y x","6":"y x","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"a x #1","11.5":"a x #1","11.6":"y x","12":"y x","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"a x","4.0-4.1":"a x","4.2-4.3":"a x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"a x","2.2":"a x","2.3":"a x","3":"a x","4":"y x","4.1":"y x","4.2-4.3":"y x","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"a x","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"a x #1","11.5":"a x #1","12":"y x","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y x"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Syntax used by browsers with prefixed support may be incompatible with that for proper support.\r\n\r\nSupport can be somewhat emulated in older IE versions using the non-standard \"gradient\" filter. \r\n\r\nFirefox 10+, Opera 11.6+, Chrome 26+ and IE10+ also support the new \"to (side)\" syntax.","notes_by_num":{"1":"Partial support in Opera 11.10 and 11.50 also refers to only having support for linear gradients."},"usage_perc_y":93.9,"usage_perc_a":0.14,"ucprefix":false,"parent":"","keywords":"linear,linear-gradient,gradiant","ie_id":"gradients","chrome_id":"5785905063264256","firefox_id":"","webkit_id":""},"css-canvas":{"title":"CSS Canvas Drawings","description":"Method of using HTML5 Canvas as a background image. Not currently part of any specification.","spec":"http://webkit.org/blog/176/css-canvas-drawing/","status":"unoff","links":[{"url":"http://webkit.org/blog/176/css-canvas-drawing/","title":"Webkit blog post"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"u","53":"u","54":"u"},"chrome":{"4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x","46":"y x","47":"y x","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n","55":"n","56":"n","57":"n","58":"n","59":"n"},"safari":{"3.1":"n","3.2":"n","4":"y x","5":"y x","5.1":"y x","6":"y x","6.1":"y x","7":"y x","7.1":"y x","8":"y x","9":"y x","9.1":"y x","10":"y x","10.1":"y x","TP":"y x"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n"},"ios_saf":{"3.2":"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x","8":"y x","8.1-8.4":"y x","9.0-9.2":"y x","9.3":"y x","10.0-10.2":"y x"},"op_mini":{"all":"n"},"android":{"2.1":"y x","2.2":"y x","2.3":"y x","3":"y x","4":"y x","4.1":"y x","4.2-4.3":"y x","4.4":"y x","4.4.3-4.4.4":"y x","53":"n"},"bb":{"7":"y x","10":"y x"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y x"},"samsung":{"4":"y x"},"and_qq":{"1.2":"y x"}},"notes":"A similar effect can be achieved in Firefox 4+ using the -moz-element() background property","notes_by_num":{},"usage_perc_y":29.48,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-reflections":{"title":"CSS Reflections","description":"Method of displaying a reflection of an element","spec":"http://webkit.org/blog/182/css-reflections/","status":"unoff","links":[{"url":"http://webkit.org/blog/182/css-reflections/","title":"Webkit blog post"},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/7930470-support-css-reflections","title":"Microsoft Edge feature request on UserVoice"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n"},"chrome":{"4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x","46":"y x","47":"y x","48":"y x","49":"y x","50":"y x","51":"y x","52":"y x","53":"y x","54":"y x","55":"y x","56":"y x","57":"y x","58":"y x","59":"y x"},"safari":{"3.1":"n","3.2":"n","4":"y x","5":"y x","5.1":"y x","6":"y x","6.1":"y x","7":"y x","7.1":"y x","8":"y x","9":"y x","9.1":"y x","10":"y x","10.1":"y x","TP":"y x"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x"},"ios_saf":{"3.2":"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x","8":"y x","8.1-8.4":"y x","9.0-9.2":"y x","9.3":"y x","10.0-10.2":"y x"},"op_mini":{"all":"n"},"android":{"2.1":"y x","2.2":"y x","2.3":"y x","3":"y x","4":"y x","4.1":"y x","4.2-4.3":"y x","4.4":"y x","4.4.3-4.4.4":"y x","53":"y x"},"bb":{"7":"y x","10":"y x"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y x"},"and_chr":{"56":"y x"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y x"},"and_qq":{"1.2":"y x"}},"notes":"Similar effect can be achieved in Firefox 4+ using the -moz-element() background property","notes_by_num":{},"usage_perc_y":72.03,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"box-reflect","ie_id":"","chrome_id":"5627300510957568","firefox_id":"","webkit_id":""},"css-masks":{"title":"CSS Masks","description":"Method of displaying part of an element, using a selected image as a mask","spec":"http://www.w3.org/TR/css-masking-1/","status":"cr","links":[{"url":"http://docs.webplatform.org/wiki/css/properties/mask","title":"WebPlatform Docs"},{"url":"http://www.html5rocks.com/en/tutorials/masking/adobe/","title":"HTML5 Rocks article"},{"url":"http://thenittygritty.co/css-masking","title":"Detailed blog post"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=1224422","title":"Firefox implementation bug"},{"url":"http://lab.iamvdo.me/css-svg-masks","title":"Visual test cases"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"a #2","3.6":"a #2","4":"a #2","5":"a #2","6":"a #2","7":"a #2","8":"a #2","9":"a #2","10":"a #2","11":"a #2","12":"a #2","13":"a #2","14":"a #2","15":"a #2","16":"a #2","17":"a #2","18":"a #2","19":"a #2","20":"a #2","21":"a #2","22":"a #2","23":"a #2","24":"a #2","25":"a #2","26":"a #2","27":"a #2","28":"a #2","29":"a #2","30":"a #2","31":"a #2","32":"a #2","33":"a #2","34":"a #2","35":"a #2","36":"a #2","37":"a #2","38":"a #2","39":"a #2","40":"a #2","41":"a #2","42":"a #2","43":"a #2","44":"a #2","45":"a #2","46":"a #2","47":"a #2","48":"a #2","49":"a #2","50":"a #2","51":"a #2","52":"a #2","53":"y","54":"y"},"chrome":{"4":"a x #1","5":"a x #1","6":"a x #1","7":"a x #1","8":"a x #1","9":"a x #1","10":"a x #1","11":"a x #1","12":"a x #1","13":"a x #1","14":"a x #1","15":"a x #1","16":"a x #1","17":"a x #1","18":"a x #1","19":"a x #1","20":"a x #1","21":"a x #1","22":"a x #1","23":"a x #1","24":"a x #1","25":"a x #1","26":"a x #1","27":"a x #1","28":"a x #1","29":"a x #1","30":"a x #1","31":"a x #1","32":"a x #1","33":"a x #1","34":"a x #1","35":"a x #1","36":"a x #1","37":"a x #1","38":"a x #1","39":"a x #1","40":"a x #1","41":"a x #1","42":"a x #1","43":"a x #1","44":"a x #1","45":"a x #1","46":"a x #1","47":"a x #1","48":"a x #1","49":"a x #1","50":"a x #1","51":"a x #1","52":"a x #1","53":"a x #1","54":"a x #1","55":"a x #1","56":"a x #1","57":"a x #1","58":"a x #1","59":"a x #1"},"safari":{"3.1":"n","3.2":"n","4":"a x #1","5":"a x #1","5.1":"a x #1","6":"a x #1","6.1":"a x #1","7":"a x #1","7.1":"a x #1","8":"a x #1","9":"a x #1","9.1":"a x #1","10":"a x #1","10.1":"a x #1","TP":"a x #1"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"a x #1","16":"a x #1","17":"a x #1","18":"a x #1","19":"a x #1","20":"a x #1","21":"a x #1","22":"a x #1","23":"a x #1","24":"a x #1","25":"a x #1","26":"a x #1","27":"a x #1","28":"a x #1","29":"a x #1","30":"a x #1","31":"a x #1","32":"a x #1","33":"a x #1","34":"a x #1","35":"a x #1","36":"a x #1","37":"a x #1","38":"a x #1","39":"a x #1","40":"a x #1","41":"a x #1","42":"a x #1","43":"a x #1","44":"a x #1","45":"a x #1"},"ios_saf":{"3.2":"a x #1","4.0-4.1":"a x #1","4.2-4.3":"a x #1","5.0-5.1":"a x #1","6.0-6.1":"a x #1","7.0-7.1":"a x #1","8":"a x #1","8.1-8.4":"a x #1","9.0-9.2":"a x #1","9.3":"a x #1","10.0-10.2":"a x #1"},"op_mini":{"all":"n"},"android":{"2.1":"a x #1","2.2":"a x #1","2.3":"a x #1","3":"a x #1","4":"a x #1","4.1":"a x #1","4.2-4.3":"a x #1","4.4":"a x #1","4.4.3-4.4.4":"a x #1","53":"a x #1"},"bb":{"7":"a x #1","10":"a x #1"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"a x #1"},"and_chr":{"56":"a x #1"},"and_ff":{"51":"a #2"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"a x #1"},"samsung":{"4":"a x #1"},"and_qq":{"1.2":"a x #1"}},"notes":"","notes_by_num":{"1":"Partial support in WebKit/Blink browsers refers to supporting the mask-image and mask-box-image properties, but lacking support for other parts of the spec.","2":"Partial support in Firefox refers to only support for inline SVG mask elements i.e. mask: url(#foo)."},"usage_perc_y":0,"usage_perc_a":87.69,"ucprefix":false,"parent":"","keywords":"clip,clip-path,clip-rule,mask,mask-border,mask-clip,mask-image,mask-mode,mask-type","ie_id":"masks","chrome_id":"5381559662149632","firefox_id":"","webkit_id":""},"console-basic":{"title":"Basic console logging functions","description":"Method of outputting data to the browser's console, intended for development purposes.","spec":"https://console.spec.whatwg.org/","status":"ls","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Console","title":"MDN article"},{"url":"https://developer.chrome.com/devtools/docs/console-api","title":"Chrome console reference"},{"url":"https://developer.apple.com/library/mac/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/Console/Console.html","title":"Safari console reference"},{"url":"https://msdn.microsoft.com/en-us/library/hh772169","title":"Edge/Internet Explorer console reference"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"a #1","9":"a #1","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y #3","7.0-7.1":"y #3","8":"y #3","8.1-8.4":"y #3","9.0-9.2":"y #3","9.3":"y #3","10.0-10.2":"y #3"},"op_mini":{"all":"y #6"},"android":{"2.1":"y #4","2.2":"y #4","2.3":"y #4","3":"y #4","4":"y #4","4.1":"y #4","4.2-4.3":"y #4","4.4":"y #4","4.4.3-4.4.4":"y #4","53":"y #4"},"bb":{"7":"n #2","10":"n #2"},"op_mob":{"10":"n","11":"n #2","11.1":"n #2","11.5":"n #2","12":"n #2","12.1":"n #2","37":"n #2"},"and_chr":{"56":"y #4"},"and_ff":{"51":"y #5"},"ie_mob":{"10":"n #2","11":"n #2"},"and_uc":{"11":"n #2"},"samsung":{"4":"y #4"},"and_qq":{"1.2":"y"}},"notes":"The basic functions that this information refers to include `console.log`, `console.info`, `console.warn`, `console.error`.","notes_by_num":{"1":"Only supports console functions when developer tools are open, otherwise the `console` object is undefined and any calls will throw errors.","2":"Allows `console` functions to be used without throwing errors, but does not appear to output the data anywhere.","3":"Log output on iOS 6+ Safari can only be seen by connecting to a Mac and using the [Safari debugger](https://developer.apple.com/safari/tools/).","4":"Log output on older Android browsers can be retrieved via Android's `logcat` command or using Chrome Developer Tools in Android 4.4+/Chrome for Android [see details](http://developer.android.com/guide/webapps/debugging.html)","5":"Log output on Firefox for Android can be [accessed using WebIDE](https://developer.mozilla.org/en-US/docs/Tools/Remote_Debugging/Debugging_Firefox_for_Android_with_WebIDE)","6":"See [this article](https://dev.opera.com/articles/opera-mini-and-javascript/) for details on how to see console logging in Opera Mini"},"usage_perc_y":88.01,"usage_perc_a":0.69,"ucprefix":false,"parent":"","keywords":"console.log,console.info,console.warn,console.error,window.console","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"svg":{"title":"SVG (basic support)","description":"Method of displaying basic Vector Graphics features using the embed or object elements. Refers to the SVG 1.1 spec.","spec":"http://www.w3.org/TR/SVG/","status":"rec","links":[{"url":"http://en.wikipedia.org/wiki/Scalable_Vector_Graphics","title":"Wikipedia"},{"url":"http://www.alistapart.com/articles/using-svg-for-flexible-scalable-and-fun-backgrounds-part-i","title":"A List Apart article"},{"url":"http://svg-wow.org/","title":"SVG showcase site"},{"url":"http://code.google.com/p/svgweb/","title":"SVG Web: Flash-based polyfill"},{"url":"https://github.com/SVG-Edit/svgedit","title":"Web-based SVG editor"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/graphics.js#svg","title":"has.js test"}],"categories":["SVG"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"y #2","10":"y #2","11":"y #2"},"edge":{"12":"y #2","13":"y #2","14":"y #2","15":"y #2"},"firefox":{"2":"a","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"a","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"a #1","4":"a #1","4.1":"a #1","4.2-4.3":"a #1","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y #2","11":"y #2"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support in Android 3 & 4 refers to not supporting masking.","2":"IE9-11 desktop & mobile don't properly scale SVG files.  [Adding height, width, viewBox, and CSS rules](http://codepen.io/tomByrer/pen/qEBbzw?editors=110) seem to be the best workaround."},"usage_perc_y":97.1,"usage_perc_a":0.75,"ucprefix":false,"parent":"","keywords":"rect,circle,ellipse,line,polyline,polygon,defs,symbol,use,tspan,tref,textpath,stroke-dasharray,stroke-dashoffset","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"svg-css":{"title":"SVG in CSS backgrounds","description":"Method of using SVG images as CSS backgrounds","spec":"http://www.w3.org/TR/css3-background/#background-image","status":"cr","links":[{"url":"http://www.sitepoint.com/a-farewell-to-css3-gradients/","title":"Tutorial for advanced effects"}],"categories":["CSS3","SVG"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"a #2","5":"a #2","6":"a #2","7":"a #2","8":"a #2","9":"a #2","10":"a #2","11":"a #2","12":"a #2","13":"a #2","14":"a #2","15":"a #2","16":"a #2","17":"a #2","18":"a #2","19":"a #2","20":"a #2","21":"a #2","22":"a #2","23":"a #2","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"a #1","4":"a #1","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"a #1","4.0-4.1":"a #1","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"a #2"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"a #2","11":"a #2","11.1":"a #2","11.5":"a #2","12":"a #2","12.1":"a #2","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support in iOS Safari and older Safari versions refers to failing to support tiling or the background-position property.","2":"Partial support in older Firefox and Opera Mini/Mobile refers to SVG images being blurry when scaled."},"usage_perc_y":94.11,"usage_perc_a":3.67,"ucprefix":false,"parent":"","keywords":"svg-in-css,svgincss,css-svg","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"svg-smil":{"title":"SVG SMIL animation","description":"Method of using animation elements to animate SVG images","spec":"http://www.w3.org/TR/SVG/animate.html","status":"rec","links":[{"url":"http://svg-wow.org/blog/category/animation/","title":"Examples on SVG WOW"},{"url":"https://developer.mozilla.org/en/SVG/SVG_animation_with_SMIL","title":"MDN article"},{"url":"http://leunen.me/fakesmile/","title":"JS library to support SMIL in SVG"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/graphics.js#svg-smil","title":"has.js test"},{"url":"https://github.com/madsgraphics/SVGEventListener","title":"Polyfill for SMIL animate events on SVG"}],"categories":["SVG"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"p","10":"p","11":"p"},"edge":{"12":"p","13":"p","14":"p","15":"p"},"firefox":{"2":"p","3":"p","3.5":"p","3.6":"p","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y #2","46":"y #2","47":"y #2","48":"y #2","49":"y #2","50":"y #2","51":"y #2","52":"y #2","53":"y #2","54":"y #2","55":"y #2","56":"y #2","57":"y #2","58":"y #2","59":"y #2"},"safari":{"3.1":"p","3.2":"p","4":"a #1","5":"a #1","5.1":"a #1","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y #2","33":"y #2","34":"y #2","35":"y #2","36":"y #2","37":"y #2","38":"y #2","39":"y #2","40":"y #2","41":"y #2","42":"y #2","43":"y #2","44":"y #2","45":"y #2"},"ios_saf":{"3.2":"a #1","4.0-4.1":"a #1","4.2-4.3":"a #1","5.0-5.1":"a #1","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"p","11":"p"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y #2"}},"notes":"","notes_by_num":{"1":"Partial support in older Safari versions refers to not working in HTML files or CSS background images.","2":"As of Chrome 45 & Opera 32 SMIL is deprecated and usage will result in a warning in the console. Support is expected to be dropped in some future version."},"usage_perc_y":87.71,"usage_perc_a":0.11,"ucprefix":false,"parent":"","keywords":"svg animation","ie_id":"svgsmilanimation","chrome_id":"","firefox_id":"","webkit_id":""},"svg-fonts":{"title":"SVG fonts","description":"Method of using fonts defined as SVG shapes. Removed from [SVG 2.0](http://www.w3.org/TR/SVG2/changes.html#fonts) and considered as a deprecated feature with support being removed from browsers.","spec":"http://www.w3.org/TR/SVG/fonts.html","status":"unoff","links":[{"url":"http://jeremie.patonnier.net/post/2011/02/07/Why-are-SVG-Fonts-so-different","title":"Blog post"},{"url":"http://opentype.info/blog/2010/04/13/the-ipad-and-svg-fonts-in-mobile-safari/","title":"Blog post on usage for iPad"}],"categories":["SVG"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"n #1","39":"n #1","40":"n #1","41":"n #1","42":"n #1","43":"n #1","44":"n #1","45":"n #1","46":"n #1","47":"n #1","48":"n #1","49":"n #1","50":"n #1","51":"n","52":"n","53":"n","54":"n","55":"n","56":"n","57":"n","58":"n","59":"n"},"safari":{"3.1":"n","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"n #1","26":"n #1","27":"n #1","28":"n #1","29":"n #1","30":"n #1","31":"n #1","32":"n #1","33":"n #1","34":"n #1","35":"n #1","36":"n #1","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n #2"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"n"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"n #1"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Chrome 38 and newer support SVG fonts only on Windows Vista and XP.","2":"Supported in Opera Mini in SVG images only, not in HTML."},"usage_perc_y":28.54,"usage_perc_a":0,"ucprefix":false,"parent":"fontface","keywords":"","ie_id":"","chrome_id":"5930075908210688","firefox_id":"","webkit_id":""},"svg-filters":{"title":"SVG filters","description":"Method of using photoshop-like effects on SVG objects including blurring and color manipulation.","spec":"http://www.w3.org/TR/SVG/filters.html","status":"rec","links":[{"url":"http://electricbeach.org/?p=950","title":"Experiments with filter effects"},{"url":"http://svg-wow.org/blog/category/filters/","title":"SVG filter demos"},{"url":"http://docs.webplatform.org/wiki/svg/elements/filter","title":"WebPlatform Docs"},{"url":"http://jorgeatgu.github.io/svg-filters/","title":"SVG Filter effects"}],"categories":["SVG"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"a","6":"a","7":"a","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":96.65,"usage_perc_a":0.02,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"svg-html":{"title":"SVG effects for HTML","description":"Method of using SVG transforms, filters, etc on HTML elements using either CSS or the foreignObject element","spec":"http://www.w3.org/TR/SVG11/extend.html#ForeignObjectElement","status":"rec","links":[{"url":"https://developer.mozilla.org/en/SVG/Tutorial/Other_content_in_SVG","title":"MDN Tutorial"},{"url":"https://developer.mozilla.org/En/Applying_SVG_effects_to_HTML_content","title":"MDN Reference page"},{"url":"http://www.w3.org/TR/filter-effects/","title":"Filter Effects draft"}],"categories":["SVG"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"a #1 #2","10":"a #1 #2","11":"a #1 #2"},"edge":{"12":"a #2","13":"a #2","14":"a #2","15":"a #2"},"firefox":{"2":"n","3":"a","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a","5":"a","6":"a","7":"a","8":"a","9":"a","10":"a","11":"a","12":"a","13":"a","14":"a","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a","46":"a","47":"a","48":"a","49":"a","50":"a","51":"a","52":"a","53":"a","54":"a","55":"a","56":"a","57":"a","58":"a","59":"a"},"safari":{"3.1":"n","3.2":"n","4":"a","5":"a","5.1":"a","6":"a","6.1":"a","7":"a","7.1":"a","8":"a","9":"a","9.1":"a","10":"a","10.1":"a","TP":"a"},"opera":{"9":"a","9.5-9.6":"a","10.0-10.1":"a","10.5":"a","10.6":"a","11":"a","11.1":"a","11.5":"a","11.6":"a","12":"a","12.1":"a","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a"},"ios_saf":{"3.2":"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a","8":"a","8.1-8.4":"a","9.0-9.2":"a","9.3":"a","10.0-10.2":"a"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"a","4.4.3-4.4.4":"a","53":"a"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"a","11":"a","11.1":"a","11.5":"a","12":"a","12.1":"a","37":"a"},"and_chr":{"56":"a"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"a"},"and_qq":{"1.2":"a"}},"notes":"Partial support refers to lack of filter support or buggy result from effects. A [CSS Filter Effects](http://www.w3.org/TR/filter-effects/) specification is in the works that would replace this method.","notes_by_num":{"1":"IE11 and below do not support `<foreignObject>`.","2":"IE and Edge do not support applying SVG filter effects to HTML elements using CSS. [Bug Report](https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/6618695/)"},"usage_perc_y":6.72,"usage_perc_a":77.48,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"svg-html5":{"title":"Inline SVG in HTML5","description":"Method of using SVG tags directly in HTML documents. Requires HTML5 parser.","spec":"https://html.spec.whatwg.org/multipage/embedded-content.html#svg-0","status":"ls","links":[{"url":"http://hacks.mozilla.org/2010/05/firefox-4-the-html5-parser-inline-svg-speed-and-more/","title":"Mozilla Hacks blog post"},{"url":"http://samples.msdn.microsoft.com/ietestcenter/html5/svghtml_harness.htm?url=SVG_HTML_Elements_001","title":"Test suite"}],"categories":["HTML5","SVG"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"y #1","10":"y #1","11":"y #1"},"edge":{"12":"y #1","13":"y #1","14":"y #1","15":"y #1"},"firefox":{"2":"p","3":"p","3.5":"p","3.6":"p","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"p","5":"p","6":"p","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"p","3.2":"p","4":"p","5":"p","5.1":"y #1","6":"y #1","6.1":"y #1","7":"y #1","7.1":"y #1","8":"y #1","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"p","9.5-9.6":"p","10.0-10.1":"p","10.5":"p","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"y #1","6.0-6.1":"y #1","7.0-7.1":"y #1","8":"y #1","8.1-8.4":"y #1","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"y #1","4":"y #1","4.1":"y #1","4.2-4.3":"y #1","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y #1","10":"y"},"op_mob":{"10":"p","11":"p","11.1":"p","11.5":"p","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y #1","11":"y #1"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Does not support CSS transforms on SVG elements (transform attribute can be used instead)"},"usage_perc_y":97.64,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"canvas":{"title":"Canvas (basic support)","description":"Method of generating fast, dynamic graphics using JavaScript.","spec":"https://html.spec.whatwg.org/multipage/scripting.html#the-canvas-element","status":"ls","links":[{"url":"https://developer.mozilla.org/en/Canvas_tutorial","title":"Tutorial by Mozilla"},{"url":"http://glimr.rubyforge.org/cake/canvas.html","title":"Animation kit"},{"url":"http://diveintohtml5.info/canvas.html","title":"Another tutorial"},{"url":"http://explorercanvas.googlecode.com/","title":"Implementation for Internet Explorer"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/graphics.js#canvas","title":"has.js test"},{"url":"https://skilled.co/html-canvas/","title":"Canvas Tutorial & Cheat Sheet"}],"categories":["Canvas","HTML5"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"a #1","3":"a #1","3.5":"a #1","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"a #1","3.2":"a #1","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"a #2"},"android":{"2.1":"a #1","2.2":"a #1","2.3":"a #1","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"For screen readers, IE, Chrome & Firefox support the [accessible canvas element sub-DOM](http://www.paciellogroup.com/blog/2012/06/html5-canvas-accessibility-in-firefox-13/).\r\nFirefox & Chrome also support the drawfocus ring.","notes_by_num":{"1":"Does not support `toDataURL()`","2":"Opera Mini supports the canvas element, but is unable to play animations or run other more complex applications."},"usage_perc_y":94.36,"usage_perc_a":3.49,"ucprefix":false,"parent":"","keywords":"toDataURL()","ie_id":"canvas","chrome_id":"5100084685438976","firefox_id":"","webkit_id":""},"canvas-text":{"title":"Text API for Canvas","description":"Method of displaying text on Canvas elements","spec":"https://html.spec.whatwg.org/multipage/scripting.html#drawing-text-to-the-bitmap","status":"ls","links":[{"url":"https://developer.mozilla.org/en/Drawing_text_using_a_canvas#Additional_examples","title":"Examples by Mozilla"},{"url":"http://code.google.com/p/canvas-text/","title":"Support library"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/graphics.js#canvas-text","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/apis/canvas/CanvasRenderingContext2D/fillText","title":"WebPlatform Docs"}],"categories":["Canvas","HTML5"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"p","3":"p","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"p","3.2":"p","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"p","9.5-9.6":"p","10.0-10.1":"p","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"p","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":94.33,"usage_perc_a":0,"ucprefix":false,"parent":"canvas","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"namevalue-storage":{"title":"Web Storage - name/value pairs","description":"Method of storing data locally like cookies, but for larger amounts of data (sessionStorage and localStorage, used to fall under HTML5).","spec":"https://html.spec.whatwg.org/multipage/webstorage.html#storage","status":"ls","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API","title":"MDN article"},{"url":"http://code.google.com/p/sessionstorage/","title":"Support library"},{"url":"http://html5demos.com/storage","title":"Simple demo"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-localstorage;native-sessionstorage","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/apis/web-storage/Storage/localStorage","title":"WebPlatform Docs"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"y","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"a","3":"a","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":94.76,"usage_perc_a":0.05,"ucprefix":false,"parent":"","keywords":"webstorage,local storage","ie_id":"webstorage","chrome_id":"5345825534246912","firefox_id":"","webkit_id":""},"sql-storage":{"title":"Web SQL Database","description":"Method of storing data client-side, allows Sqlite database queries for access and manipulation","spec":"http://www.w3.org/TR/webdatabase/","status":"unoff","links":[{"url":"http://html5doctor.com/introducing-web-sql-databases/","title":"HTML5 Doctor article"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-sql-db","title":"has.js test"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"The Web SQL Database specification is no longer being maintained and support may be dropped in future versions.","notes_by_num":{},"usage_perc_y":81.11,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"db-storage,websql","ie_id":"websqldatabase","chrome_id":"6330987952734208","firefox_id":"","webkit_id":""},"indexeddb":{"title":"IndexedDB","description":"Method of storing data client-side, allows indexed database queries.","spec":"http://www.w3.org/TR/IndexedDB/","status":"rec","links":[{"url":"http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/","title":"Mozilla Hacks article"},{"url":"https://github.com/axemclion/IndexedDBShim","title":"Polyfill for browsers supporting WebSQL"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-indexeddb","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/apis/indexedDB","title":"WebPlatform Docs"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"a #1","11":"a #1"},"edge":{"12":"a #1","13":"a #1","14":"a #1","15":"a #1"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"a x","5":"a x","6":"a x","7":"a x","8":"a x","9":"a x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"p","5":"p","6":"p","7":"p","8":"p","9":"p","10":"n","11":"a x","12":"a x","13":"a x","14":"a x","15":"a x","16":"a x","17":"a x","18":"a x","19":"a x","20":"a x","21":"a x","22":"a x","23":"y x","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"p","3.2":"p","4":"p","5":"p","5.1":"p","6":"p","6.1":"p","7":"p","7.1":"a #2","8":"a #2","9":"a #2","9.1":"a #2","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"p","10.6":"p","11":"p","11.1":"p","11.5":"p","11.6":"p","12":"p","12.1":"p","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"p","7.0-7.1":"p","8":"a #2","8.1-8.4":"a #2","9.0-9.2":"a #2","9.3":"a #2","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"p","2.2":"p","2.3":"p","3":"p","4":"p","4.1":"p","4.2-4.3":"p","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"p","10":"y"},"op_mob":{"10":"n","11":"p","11.1":"p","11.5":"p","12":"p","12.1":"p","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"a #1","11":"a #1"},"and_uc":{"11":"p"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support in IE 10 & 11 refers to a number of subfeatures [not being supported](http://codepen.io/cemerick/pen/Itymi).","2":"Partial support in Safari & iOS 8 & 9 refers to [seriously buggy behavior](http://www.raymondcamden.com/2014/09/25/IndexedDB-on-iOS-8-Broken-Bad/) as well as complete lack of support in WebViews."},"usage_perc_y":75.31,"usage_perc_a":8.42,"ucprefix":false,"parent":"","keywords":"indexdb","ie_id":"indexeddb","chrome_id":"6507459568992256","firefox_id":"indexeddb","webkit_id":"specification-indexed-database"},"online-status":{"title":"Online/offline status","description":"Events to indicate when the user's connected (`online` and `offline` events) and the `navigator.onLine` property to see current status.","spec":"https://html.spec.whatwg.org/multipage/browsers.html#browser-state","status":"ls","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine.onLine#Specification","title":"MDN article"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"a #2","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"y","3.6":"y","4":"a #3","5":"a #3","6":"a #3","7":"a #3","8":"a #3","9":"a #3","10":"a #3","11":"a #3","12":"a #3","13":"a #3","14":"a #3","15":"a #3","16":"a #3","17":"a #3","18":"a #3","19":"a #3","20":"a #3","21":"a #3","22":"a #3","23":"a #3","24":"a #3","25":"a #3","26":"a #3","27":"a #3","28":"a #3","29":"a #3","30":"a #3","31":"a #3","32":"a #3","33":"a #3","34":"a #3","35":"a #3","36":"a #3","37":"a #3","38":"a #3","39":"a #3","40":"a #3","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"a","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"u","4.0-4.1":"u","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"u","2.2":"u","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"a #1","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"a #1"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"\"online\" does not always mean connection to the internet, it can also just mean connection to some network.\r\n\r\nEarly versions of Chrome and Safari always reported \"true\" for `navigator.onLine`","notes_by_num":{"0":"Safari 7.0 supports only the event listener on `window`, and not on `document.body`","1":"Seems to support `navigator.onLine` but not `online`/`offline` events.","2":"IE8 only supports the `online`/`offline` events on `document.body`, rather than `window`.","3":"Desktop Firefox responds to the status of its \"Work Offline\" mode. If not in that mode, `navigator.onLine` is always `true`, regardless of the actual network connectivity status. [See bug](https://bugzilla.mozilla.org/show_bug.cgi?id=654579) for details."},"usage_perc_y":84.57,"usage_perc_a":10.06,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"eventsource":{"title":"Server-sent events","description":"Method of continuously sending data from a server to the browser, rather than repeatedly requesting it (EventSource interface, used to fall under HTML5)","spec":"https://html.spec.whatwg.org/multipage/comms.html#server-sent-events","status":"ls","links":[{"url":"http://www.html5rocks.com/tutorials/eventsource/basics/","title":"HTML5 Rocks tutorial"},{"url":"http://samshull.blogspot.com/2010/10/ajax-push-in-ios-safari-and-chrome-with.html","title":"Blog post with demo"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-eventsource","title":"has.js test"},{"url":"https://github.com/Yaffle/EventSource","title":"Polyfill"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"a","9.5-9.6":"a","10.0-10.1":"a","10.5":"a","10.6":"a","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"a","11":"a","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":87.01,"usage_perc_a":0.05,"ucprefix":false,"parent":"","keywords":"serversent,s-sent-events","ie_id":"serversenteventseventsource","chrome_id":"5311740673785856","firefox_id":"","webkit_id":""},"x-doc-messaging":{"title":"Cross-document messaging","description":"Method of sending information from a page on one domain to a page on a different one (using postMessage)","spec":"https://html.spec.whatwg.org/multipage/comms.html#crossDocumentMessages","status":"ls","links":[{"url":"https://developer.mozilla.org/en/DOM/window.postMessage","title":"MDN article"},{"url":"http://html5demos.com/postmessage2","title":"Simple demo"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-crosswindowmessaging","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/apis/web-messaging/MessagePort/postMessage","title":"WebPlatform Docs"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"a #1","9":"a #1","10":"a #2","11":"a #2"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"a","11":"a"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support refers to only working in frames/iframes (not other tabs/windows). Also, objects cannot be sent using postMessage.","2":"Partial support refers to [limitations in certain conditions](http://stackoverflow.com/questions/16226924/is-cross-origin-postmessage-broken-in-ie10)."},"usage_perc_y":92.95,"usage_perc_a":5.3,"ucprefix":false,"parent":"","keywords":"","ie_id":"postmessage","chrome_id":"4786174115708928","firefox_id":"","webkit_id":""},"sni":{"title":"Server Name Indication","description":"An extension to the TLS computer networking protocol by which a client indicates which hostname it is attempting to connect to at the start of the handshaking process.","spec":"https://tools.ietf.org/html/rfc6066","status":"other","links":[{"url":"http://en.wikipedia.org/wiki/Server_Name_Indication","title":"Wikipedia"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"a #1","8":"a #1","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"y","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Only supported on Windows Vista or above (not Windows XP)"},"usage_perc_y":97.8,"usage_perc_a":0.45,"ucprefix":false,"parent":"","keywords":"sni","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"datauri":{"title":"Data URIs","description":"Method of embedding images and other files in webpages as a string of text, generally using base64 encoding.","spec":"https://tools.ietf.org/html/rfc2397","status":"other","links":[{"url":"http://css-tricks.com/data-uris/","title":"Information page"},{"url":"http://en.wikipedia.org/wiki/data_URI_scheme","title":"Wikipedia"},{"url":"http://www.websiteoptimization.com/speed/tweak/inline-images/","title":"Data URL converter"},{"url":"http://klevjers.com/papers/phishing.pdf","title":"Information on security issues"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"a #1","9":"a #2","10":"a #2","11":"a #2"},"edge":{"12":"a #2","13":"a #2","14":"a #2","15":"a #2"},"firefox":{"2":"y","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"a #2","11":"a #2"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Support is limited to images and linked resources like CSS files, not HTML or JS files. Max URI length is 32KB.","2":"Support is limited to images and linked resources like CSS or JS, not HTML files. Maximum size limit is 4GB."},"usage_perc_y":91.34,"usage_perc_a":6.94,"ucprefix":false,"parent":"","keywords":"data url,datauris,data uri,dataurl,dataurls,base64","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"wav":{"title":"Wav audio format","description":"Waveform Audio File Format, aka WAV or WAVE, a typically uncompressed audio format. ","spec":"http://www-mmsp.ece.mcgill.ca/documents/AudioFormats/WAVE/WAVE.html","status":"other","links":[{"url":"https://en.wikipedia.org/wiki/WAV","title":"Wikipedia article"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"u","2.2":"u","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"u","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Support refers to use using the `audio` element, not other conditions.","notes_by_num":{},"usage_perc_y":89.44,"usage_perc_a":0,"ucprefix":false,"parent":"audio","keywords":"","ie_id":"wavaudiosupport","chrome_id":"","firefox_id":"","webkit_id":""},"mathml":{"title":"MathML","description":"Special tags that allow mathematical formulas and notations to be written on web pages.","spec":"http://www.w3.org/TR/MathML/","status":"rec","links":[{"url":"http://en.wikipedia.org/wiki/MathML","title":"Wikipedia"},{"url":"http://www.mozilla.org/projects/mathml/demo/","title":"MathML demos"},{"url":"http://www.mathjax.org","title":"Cross-browser support script"},{"url":"https://developer.mozilla.org/en/MathML/Element","title":"MDN element reference"},{"url":"https://developer.mozilla.org/en-US/docs/Mozilla/MathML_Project/MathML_Torture_Test","title":"MathML torture test"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"y #1","3":"y #1","3.5":"y #1","3.6":"y #1","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"p","5":"p","6":"p","7":"p","8":"p","9":"p","10":"p","11":"p","12":"p","13":"p","14":"p","15":"p","16":"p","17":"p","18":"p","19":"p","20":"p","21":"p","22":"p","23":"p","24":"y","25":"p","26":"p","27":"p","28":"p","29":"p","30":"p","31":"p","32":"p","33":"p","34":"p","35":"p","36":"p","37":"p","38":"p","39":"p","40":"p","41":"p","42":"p","43":"p","44":"p","45":"p","46":"p","47":"p","48":"p","49":"p","50":"p","51":"p","52":"p","53":"p","54":"p","55":"p","56":"p","57":"p","58":"p","59":"p"},"safari":{"3.1":"a #2","3.2":"a #2","4":"a #2","5":"a #2","5.1":"a #2","6":"a #2","6.1":"a #2","7":"a #2","7.1":"a #2","8":"a #2","9":"a #2","9.1":"a #2","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"a","10.0-10.1":"a","10.5":"a","10.6":"a","11":"a","11.1":"a","11.5":"a","11.6":"a","12":"a","12.1":"a","15":"p","16":"p","17":"p","18":"p","19":"p","20":"p","21":"p","22":"p","23":"p","24":"p","25":"p","26":"p","27":"p","28":"p","29":"p","30":"p","31":"p","32":"p","33":"p","34":"p","35":"p","36":"p","37":"p","38":"p","39":"p","40":"p","41":"p","42":"p","43":"p","44":"p","45":"p"},"ios_saf":{"3.2":"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"p"},"android":{"2.1":"p","2.2":"p","2.3":"p","3":"p","4":"p","4.1":"p","4.2-4.3":"p","4.4":"p","4.4.3-4.4.4":"p","53":"p"},"bb":{"7":"p","10":"y"},"op_mob":{"10":"p","11":"p","11.1":"p","11.5":"p","12":"p","12.1":"p","37":"p"},"and_chr":{"56":"p"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"a"},"samsung":{"4":"p"},"and_qq":{"1.2":"p"}},"notes":"Opera's support is limited to a CSS profile of MathML. Support was added in Chrome 24, but removed afterwards due to instability.","notes_by_num":{"1":"Before version 4, Firefox only supports the XHTML notation","2":"Before version 10, Safari had issues rendering significant portions of the MathML torture test"},"usage_perc_y":18.24,"usage_perc_a":9.97,"ucprefix":false,"parent":"","keywords":"","ie_id":"mathml","chrome_id":"5240822173794304","firefox_id":"","webkit_id":""},"css-featurequeries":{"title":"CSS Feature Queries","description":"CSS Feature Queries allow authors to condition rules based on whether particular property declarations are supported in CSS using the @supports at rule.","spec":"http://www.w3.org/TR/css3-conditional/#at-supports","status":"cr","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/@supports","title":"MDN Article"},{"url":"http://mcc.id.au/blog/2012/08/supports","title":"@supports in Firefox"},{"url":"http://dabblet.com/gist/3895764","title":"Test case"},{"url":"http://docs.webplatform.org/wiki/css/atrules/@supports","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"See also the [CSS.supports() DOM API](#feat=css-supports-api)","notes_by_num":{},"usage_perc_y":81.84,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"supports,conditional","ie_id":"conditionalrules","chrome_id":"4993981813358592","firefox_id":"","webkit_id":""},"xhtml":{"title":"XHTML served as application/xhtml+xml","description":"A strict form of HTML, and allows embedding of other XML languages","spec":"https://html.spec.whatwg.org/multipage/xhtml.html#parsing-xhtml-documents","status":"ls","links":[{"url":"http://en.wikipedia.org/wiki/XHTML","title":"Wikipedia"},{"url":"http://www.xmlplease.com/xhtml/xhtml5polyglot/","title":"Information on XHTML5"},{"url":"http://docs.webplatform.org/wiki/concepts/internet_and_web/the_web_standards_model#What_is_XHTML.3F","title":"WebPlatform Docs"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"y","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"The XHTML syntax is very close to HTML, and thus is almost always ([incorrectly](https://developer.mozilla.org/en-US/docs/XHTML#MIME_type_versus_DOCTYPE)) served as text/html on the web.","notes_by_num":{},"usage_perc_y":97.86,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"xhtml+xml","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"xhtmlsmil":{"title":"XHTML+SMIL animation","description":"Method of using SMIL animation in web pages","spec":"http://www.w3.org/TR/XHTMLplusSMIL/","status":"unoff","links":[{"url":"http://en.wikipedia.org/wiki/XHTML%2BSMIL","title":"Wikipedia"},{"url":"http://leunen.me/fakesmile/","title":"JS library to support XHTML+SMIL"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"a","7":"a","8":"a","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"p","3":"p","3.5":"p","3.6":"p","4":"p","5":"p","6":"p","7":"p","8":"p","9":"p","10":"p","11":"p","12":"p","13":"p","14":"p","15":"p","16":"p","17":"p","18":"p","19":"p","20":"p","21":"p","22":"p","23":"p","24":"p","25":"p","26":"p","27":"p","28":"p","29":"p","30":"p","31":"p","32":"p","33":"p","34":"p","35":"p","36":"p","37":"p","38":"p","39":"p","40":"p","41":"p","42":"p","43":"p","44":"p","45":"p","46":"p","47":"p","48":"p","49":"p","50":"p","51":"p","52":"p","53":"p","54":"p"},"chrome":{"4":"p","5":"p","6":"p","7":"p","8":"p","9":"p","10":"p","11":"p","12":"p","13":"p","14":"p","15":"p","16":"p","17":"p","18":"p","19":"p","20":"p","21":"p","22":"p","23":"p","24":"p","25":"p","26":"p","27":"p","28":"p","29":"p","30":"p","31":"p","32":"p","33":"p","34":"p","35":"p","36":"p","37":"p","38":"p","39":"p","40":"p","41":"p","42":"p","43":"p","44":"p","45":"p","46":"p","47":"p","48":"p","49":"p","50":"p","51":"p","52":"p","53":"p","54":"p","55":"p","56":"p","57":"p","58":"p","59":"p"},"safari":{"3.1":"p","3.2":"p","4":"p","5":"p","5.1":"p","6":"p","6.1":"p","7":"p","7.1":"p","8":"p","9":"p","9.1":"p","10":"p","10.1":"p","TP":"p"},"opera":{"9":"p","9.5-9.6":"p","10.0-10.1":"p","10.5":"p","10.6":"p","11":"p","11.1":"p","11.5":"p","11.6":"p","12":"p","12.1":"p","15":"p","16":"p","17":"p","18":"p","19":"p","20":"p","21":"p","22":"p","23":"p","24":"p","25":"p","26":"p","27":"p","28":"p","29":"p","30":"p","31":"p","32":"p","33":"p","34":"p","35":"p","36":"p","37":"p","38":"p","39":"p","40":"p","41":"p","42":"p","43":"p","44":"p","45":"p"},"ios_saf":{"3.2":"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"p","7.0-7.1":"p","8":"p","8.1-8.4":"p","9.0-9.2":"p","9.3":"p","10.0-10.2":"p"},"op_mini":{"all":"p"},"android":{"2.1":"p","2.2":"p","2.3":"p","3":"p","4":"p","4.1":"p","4.2-4.3":"p","4.4":"p","4.4.3-4.4.4":"p","53":"p"},"bb":{"7":"p","10":"p"},"op_mob":{"10":"p","11":"p","11.1":"p","11.5":"p","12":"p","12.1":"p","37":"p"},"and_chr":{"56":"p"},"and_ff":{"51":"p"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"p"},"samsung":{"4":"p"},"and_qq":{"1.2":"p"}},"notes":"Internet Explorer supports the W3C proposal HTML+TIME, which is largely the same as XHTML+SMIL","notes_by_num":{},"usage_perc_y":0,"usage_perc_a":0.47,"ucprefix":false,"parent":"xhtml","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"wai-aria":{"title":"WAI-ARIA Accessibility features","description":"Method of providing ways for people with disabilities to use dynamic web content and web applications.","spec":"http://www.w3.org/TR/wai-aria/","status":"rec","links":[{"url":"http://www.w3.org/WAI/intro/aria","title":"Information page"},{"url":"http://www.paciellogroup.com/blog/2011/10/browser-assistive-technology-tests-redux/","title":"Links to various test results"},{"url":"http://en.wikipedia.org/wiki/WAI-ARIA","title":"Wikipedia"},{"url":"http://www.alistapart.com/articles/the-accessibility-of-wai-aria/","title":"ALA Article"},{"url":"http://zufelt.ca/blog/are-you-confused-html5-and-wai-aria-yet","title":"HTML5/WAI-ARIA information"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"a","9":"a","10":"a","11":"a"},"edge":{"12":"a","13":"a","14":"a","15":"a"},"firefox":{"2":"a","3":"a","3.5":"a","3.6":"a","4":"a","5":"a","6":"a","7":"a","8":"a","9":"a","10":"a","11":"a","12":"a","13":"a","14":"a","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a","46":"a","47":"a","48":"a","49":"a","50":"a","51":"a","52":"a","53":"a","54":"a"},"chrome":{"4":"a","5":"a","6":"a","7":"a","8":"a","9":"a","10":"a","11":"a","12":"a","13":"a","14":"a","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a","46":"a","47":"a","48":"a","49":"a","50":"a","51":"a","52":"a","53":"a","54":"a","55":"a","56":"a","57":"a","58":"a","59":"a"},"safari":{"3.1":"n","3.2":"n","4":"a","5":"a","5.1":"a","6":"a","6.1":"a","7":"a","7.1":"a","8":"a","9":"a","9.1":"a","10":"a","10.1":"a","TP":"a"},"opera":{"9":"n","9.5-9.6":"a","10.0-10.1":"a","10.5":"a","10.6":"a","11":"a","11.1":"a","11.5":"a","11.6":"a","12":"a","12.1":"a","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a"},"ios_saf":{"3.2":"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a","8":"a","8.1-8.4":"a","9.0-9.2":"a","9.3":"a","10.0-10.2":"a"},"op_mini":{"all":"a"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"a","4.4.3-4.4.4":"a","53":"a"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"a","11":"a","11.1":"a","11.5":"a","12":"a","12.1":"a","37":"a"},"and_chr":{"56":"a"},"and_ff":{"51":"a"},"ie_mob":{"10":"a","11":"a"},"and_uc":{"11":"n"},"samsung":{"4":"a"},"and_qq":{"1.2":"a"}},"notes":"Support for ARIA is rather complex and currently is not fully supported in any browser. For detailed information on partial support see the [ARIA 1.0 Implementation Report](http://www.w3.org/WAI/ARIA/1.0/CR/implementation-report)\r\n","notes_by_num":{},"usage_perc_y":0,"usage_perc_a":88.54,"ucprefix":false,"parent":"","keywords":"wai,aria","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"geolocation":{"title":"Geolocation","description":"Method of informing a website of the user's geographical location","spec":"http://www.w3.org/TR/geolocation-API/","status":"rec","links":[{"url":"http://html5demos.com/geo","title":"Simple demo"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-geolocation","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/apis/geolocation","title":"WebPlatform Docs"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"p","3":"p","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y #1","51":"y #1","52":"y #1","53":"y #1","54":"y #1","55":"y #1","56":"y #1","57":"y #1","58":"y #1","59":"y #1"},"safari":{"3.1":"p","3.2":"p","4":"p","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y #1","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"p","10.5":"p","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"n","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y #1","40":"y #1","41":"y #1","42":"y #1","43":"y #1","44":"y #1","45":"y #1"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y #1"},"op_mini":{"all":"n"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y #1"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"p","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y #1"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y #1"}},"notes":"","notes_by_num":{"1":"Only works on secure (https) servers"},"usage_perc_y":94.31,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"geolocation","chrome_id":"6348855016685568","firefox_id":"","webkit_id":""},"flexbox":{"title":"Flexible Box Layout Module","description":"Method of positioning elements in horizontal or vertical stacks. Support includes the support for the all properties prefixed with `flex` as well as `display: flex`, `display: inline-flex`, `align-content`, `align-items`, `align-self`, `justify-content` and `order`.","spec":"http://www.w3.org/TR/css3-flexbox/","status":"cr","links":[{"url":"http://bennettfeely.com/flexplorer/","title":"Flexbox CSS generator"},{"url":"http://www.adobe.com/devnet/html5/articles/working-with-flexbox-the-new-spec.html","title":"Article on using the latest spec"},{"url":"https://dev.opera.com/articles/view/advanced-cross-browser-flexbox/","title":"Tutorial on cross-browser support"},{"url":"http://philipwalton.github.io/solved-by-flexbox/","title":"Examples on how to solve common layout problems with flexbox"},{"url":"http://css-tricks.com/snippets/css/a-guide-to-flexbox/","title":"A Complete Guide to Flexbox"},{"url":"http://the-echoplex.net/flexyboxes/","title":"Flexbox playground and code generator"},{"url":"https://github.com/philipwalton/flexbugs","title":"Flexbugs: Repo for flexbox bugs"},{"url":"https://github.com/10up/flexibility/","title":"10up Open Sources IE 8 and 9 Support for Flexbox"},{"url":"https://github.com/vadimyer/ecligrid","title":"Ecligrid - Mobile first flexbox grid system"},{"url":"http://gedd.ski/post/the-difference-between-width-and-flex-basis/","title":"The Difference Between Width and Flex-Basis"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"a x #2 #4","11":"a #4"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"a x #1","3":"a x #1","3.5":"a x #1","3.6":"a x #1","4":"a x #1","5":"a x #1","6":"a x #1","7":"a x #1","8":"a x #1","9":"a x #1","10":"a x #1","11":"a x #1","12":"a x #1","13":"a x #1","14":"a x #1","15":"a x #1","16":"a x #1","17":"a x #1","18":"a x #1","19":"a x #1","20":"a x #1","21":"a x #1","22":"a #3","23":"a #3","24":"a #3","25":"a #3","26":"a #3","27":"a #3","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a x #1","5":"a x #1","6":"a x #1","7":"a x #1","8":"a x #1","9":"a x #1","10":"a x #1","11":"a x #1","12":"a x #1","13":"a x #1","14":"a x #1","15":"a x #1","16":"a x #1","17":"a x #1","18":"a x #1","19":"a x #1","20":"a x #1","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"a x #1","3.2":"a x #1","4":"a x #1","5":"a x #1","5.1":"a x #1","6":"a x #1","6.1":"y x","7":"y x","7.1":"y x","8":"y x","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"y","15":"y x","16":"y x","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"a x #1","4.0-4.1":"a x #1","4.2-4.3":"a x #1","5.0-5.1":"a x #1","6.0-6.1":"a x #1","7.0-7.1":"y x","8":"y x","8.1-8.4":"y x","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"a x #1","2.2":"a x #1","2.3":"a x #1","3":"a x #1","4":"a x #1","4.1":"a x #1","4.2-4.3":"a x #1","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"a x #1","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"a x #2","11":"y"},"and_uc":{"11":"a x #1"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Most partial support refers to supporting an [older version](http://www.w3.org/TR/2009/WD-css3-flexbox-20090723/) of the specification or an [older syntax](http://www.w3.org/TR/2012/WD-css3-flexbox-20120322/).","notes_by_num":{"1":"Only supports the [old flexbox](http://www.w3.org/TR/2009/WD-css3-flexbox-20090723) specification and does not support wrapping.","2":"Only supports the [2012 syntax](http://www.w3.org/TR/2012/WD-css3-flexbox-20120322/)","3":"Does not support flex-wrap or flex-flow properties","4":"Partial support is due to large amount of bugs present (see known issues)"},"usage_perc_y":82.91,"usage_perc_a":14.6,"ucprefix":false,"parent":"","keywords":"flex-box,flex-direction,flex-wrap,flex-flow,flex-grow,flex-basis,display:flex,flex box","ie_id":"flexbox","chrome_id":"4837301406400512","firefox_id":"","webkit_id":""},"webgl":{"title":"WebGL - 3D Canvas graphics","description":"Method of generating dynamic 3D graphics using JavaScript, accelerated through hardware","spec":"https://www.khronos.org/registry/webgl/specs/1.0/","status":"other","links":[{"url":"http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation","title":"Instructions on enabling WebGL"},{"url":"http://www.khronos.org/webgl/wiki/Tutorial","title":"Tutorial"},{"url":"http://hacks.mozilla.org/2009/12/webgl-draft-released-today/","title":"Firefox blog post"},{"url":"http://webkit.org/blog/603/webgl-now-available-in-webkit-nightlies/","title":"Webkit blog post"},{"url":"https://github.com/iewebgl/iewebgl","title":"Polyfill for IE"}],"categories":["Canvas"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"p","10":"p","11":"y #1"},"edge":{"12":"y #1","13":"y #1","14":"y #1","15":"y #1"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"a #1","5":"a #1","6":"a #1","7":"a #1","8":"a #1","9":"a #1","10":"a #1","11":"a #1","12":"a #1","13":"a #1","14":"a #1","15":"a #1","16":"a #1","17":"a #1","18":"a #1","19":"a #1","20":"a #1","21":"a #1","22":"a #1","23":"a #1","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a","46":"a","47":"a","48":"a","49":"a","50":"a","51":"a","52":"a","53":"a","54":"a"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"a #1","9":"a #1","10":"a #1","11":"a #1","12":"a #1","13":"a #1","14":"a #1","15":"a #1","16":"a #1","17":"a #1","18":"y #1","19":"y #1","20":"y #1","21":"y #1","22":"y #1","23":"y #1","24":"y #1","25":"y #1","26":"y #1","27":"y #1","28":"y #1","29":"y #1","30":"y #1","31":"y #1","32":"y #1","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"a #1","6":"a #1","6.1":"a #1","7":"a #1","7.1":"a #1","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"a #1","12.1":"a #1","15":"a #1","16":"a #1","17":"a #1","18":"a #1","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"a"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"a","12.1":"a","37":"y"},"and_chr":{"56":"a"},"and_ff":{"51":"a"},"ie_mob":{"10":"p","11":"y #1"},"and_uc":{"11":"y #1"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Support listed as \"partial\" refers to the fact that not all users with these browsers have WebGL access. This is due to the additional requirement for users to have [up to date video drivers](http://www.khronos.org/webgl/wiki/BlacklistsAndWhitelists). This problem was [solved in Chrome on Windows](http://blog.chromium.org/2012/02/gpu-accelerating-2d-canvas-and-enabling.html) as of version 18.\r\n\r\nNote that WebGL is part of the [Khronos Group](http://www.khronos.org/webgl/), not the W3C.","notes_by_num":{"1":"WebGL context is accessed from \"experimental-webgl\" rather than \"webgl\""},"usage_perc_y":57.62,"usage_perc_a":33.12,"ucprefix":false,"parent":"canvas","keywords":"web gl","ie_id":"webglcanvas3d,webglinstancingextension","chrome_id":"6049512976023552","firefox_id":"webgl-1","webkit_id":"specification-webgl-1"},"fileapi":{"title":"File API","description":"Method of manipulating file objects in web applications client-side, as well as programmatically selecting them and accessing their data.","spec":"http://www.w3.org/TR/FileAPI/","status":"wd","links":[{"url":"https://developer.mozilla.org/en/Using_files_from_web_applications","title":"MDN article"},{"url":"http://docs.webplatform.org/wiki/apis/file","title":"WebPlatform Docs"},{"url":"https://github.com/moxiecode/moxie","title":"Polyfill"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"a #2","11":"a #2"},"edge":{"12":"a #2","13":"a #2","14":"a #2","15":"a #2"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"a #2","4":"a #2","5":"a #2","6":"a #2","7":"a #2","8":"a #2","9":"a #2","10":"a #2","11":"a #2","12":"a #2","13":"a #2","14":"a #2","15":"a #2","16":"a #2","17":"a #2","18":"a #2","19":"a #2","20":"a #2","21":"a #2","22":"a #2","23":"a #2","24":"a #2","25":"a #2","26":"a #2","27":"a #2","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"a #1 #2","7":"a #1 #2","8":"a #1 #2","9":"a #1 #2","10":"a #1 #2","11":"a #1 #2","12":"a #1 #2","13":"a #2","14":"a #2","15":"a #2","16":"a #2","17":"a #2","18":"a #2","19":"a #2","20":"a #2","21":"a #2","22":"a #2","23":"a #2","24":"a #2","25":"a #2","26":"a #2","27":"a #2","28":"a #2","29":"a #2","30":"a #2","31":"a #2","32":"a #2","33":"a #2","34":"a #2","35":"a #2","36":"a #2","37":"a #2","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"a #1 #2","6":"a #2","6.1":"a #2","7":"a #2","7.1":"a #2","8":"a #2","9":"a #2","9.1":"a #2","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"a #2","11.5":"a #2","11.6":"a #2","12":"a #2","12.1":"a #2","15":"a #2","16":"a #2","17":"a #2","18":"a #2","19":"a #2","20":"a #2","21":"a #2","22":"a #2","23":"a #2","24":"a #2","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"a #2","7.0-7.1":"a #2","8":"a #2","8.1-8.4":"a #2","9.0-9.2":"a #2","9.3":"a #2","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"a #1 #2","4":"a #1 #2","4.1":"a #1 #2","4.2-4.3":"a #1 #2","4.4":"a #2","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"a #1 #2","10":"a #2"},"op_mob":{"10":"n","11":"n","11.1":"a #2","11.5":"a #2","12":"a #2","12.1":"a #2","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"a #2"},"and_uc":{"11":"a #2"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Does not have `FileReader` support. ","2":"Does not support the `File` constructor"},"usage_perc_y":73.2,"usage_perc_a":20.7,"ucprefix":false,"parent":"","keywords":"FileReader","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"shadowdom":{"title":"Shadow DOM v0","description":"Method of establishing and maintaining functional boundaries between DOM trees and how these trees interact with each other within a document, thus enabling better functional encapsulation within the DOM.","spec":"http://www.w3.org/TR/shadow-dom/","status":"wd","links":[{"url":"http://html5-demos.appspot.com/static/shadowdom-visualizer/index.html","title":"Shadow DOM Visualizer"},{"url":"http://www.html5rocks.com/tutorials/webcomponents/shadowdom/","title":"HTML5Rocks - Shadow DOM 101 article"},{"url":"https://bugs.webkit.org/show_bug.cgi?id=148695","title":"Safari implementation bug"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=1205323","title":"Firefox implementation bug"},{"url":"https://developers.google.com/web/fundamentals/getting-started/primers/shadowdom","title":"Google Developers - Shadow DOM v1: self-contained web components"}],"categories":["DOM"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n d #1","30":"n d #1","31":"n d #1","32":"n d #1","33":"n d #1","34":"n d #1","35":"n d #1","36":"n d #1","37":"n d #1","38":"n d #1","39":"n d #1","40":"n d #1","41":"n d #1","42":"n d #1","43":"n d #1","44":"n d #1","45":"n d #1","46":"n d #1","47":"n d #1","48":"n d #1","49":"n d #1","50":"n d #1","51":"n d #1","52":"n d #1","53":"n d #1","54":"n d #1"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y x","4.4.3-4.4.4":"y x","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y x"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Supported in Firefox behind the `dom.webcomponents.enabled` flag."},"usage_perc_y":58.71,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"web components","ie_id":"shadowdom","chrome_id":"4507242028072960","firefox_id":"shadow-dom","webkit_id":"feature-shadow-dom"},"websockets":{"title":"Web Sockets","description":"Bidirectional communication technology for web apps","spec":"https://html.spec.whatwg.org/multipage/comms.html#network","status":"ls","links":[{"url":"http://websocket.org/aboutwebsocket.html","title":"WebSockets information"},{"url":"http://updates.html5rocks.com/2011/08/What-s-different-in-the-new-WebSocket-protocol","title":"Details on newer protocol"},{"url":"http://en.wikipedia.org/wiki/WebSocket","title":"Wikipedia"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-websockets","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/apis/websocket","title":"WebPlatform Docs"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"a #1","5":"a #1","6":"a x #2","7":"a x #2","8":"a x #2","9":"a x #2","10":"a x #2","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a #1","5":"a #1","6":"a #1","7":"a #1","8":"a #1","9":"a #1","10":"a #1","11":"a #1","12":"a #1","13":"a #1","14":"a #1","15":"a #2","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"a #1","5.1":"a #1","6":"a #2","6.1":"a #2","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"a #1","11.1":"a #1","11.5":"a #1","11.6":"a #1","12":"a #1","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"a #1","5.0-5.1":"a #1","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y #1","10":"y"},"op_mob":{"10":"n","11":"a #1","11.1":"a #1","11.5":"a #1","12":"a #1","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Reported to be supported in some Android 4.x browsers, including Sony Xperia S, Sony TX and HTC.","notes_by_num":{"1":"Partial support in older browsers refers to the websockets implementation using an older version of the protocol and/or the implementation being disabled by default (due to security issues with the older protocol).","2":"Partial support in older browsers refers to lacking support for binary data."},"usage_perc_y":92.96,"usage_perc_a":0.32,"ucprefix":true,"parent":"","keywords":"","ie_id":"websocket","chrome_id":"6555138000945152","firefox_id":"websocket","webkit_id":""},"hidden":{"title":"hidden attribute","description":"The `hidden` attribute may be applied to any element, and effectively hides elements similar to `display: none` in CSS.","spec":"https://html.spec.whatwg.org/multipage/interaction.html#the-hidden-attribute","status":"ls","links":[{"url":"http://davidwalsh.name/html5-hidden","title":"Article on hidden attribute"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"The hidden state can be easily overridden with a CSS `display` property set to anything other than `none`.","notes_by_num":{},"usage_perc_y":96.99,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"script-async":{"title":"async attribute for external scripts","description":"The boolean async attribute on script elements allows the external JavaScript file to run when it's available, without delaying page load first.","spec":"https://html.spec.whatwg.org/multipage/scripting.html#attr-script-async","status":"ls","links":[{"url":"https://developer.mozilla.org/en/HTML/Element/script#Attributes","title":"MDN article"},{"url":"http://ie.microsoft.com/testdrive/Performance/AsyncScripts/Default.html","title":"Demo"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/script.js#script-async","title":"has.js test"}],"categories":["DOM","HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"a #1","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Using script.async = false; to maintain execution order for dynamically-added scripts isn't supported in Safari 5.0"},"usage_perc_y":93.86,"usage_perc_a":0.04,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"mediasource":{"title":"Media Source Extensions","description":"API allowing media data to be accessed from HTML `video` and `audio` elements.","spec":"http://www.w3.org/TR/media-source/","status":"cr","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/API/MediaSource#Browser_compatibility","title":"MDN article"},{"url":"https://msdn.microsoft.com/en-us/library/dn594470%28v=vs.85%29.aspx","title":"MSDN article"},{"url":"http://html5-demos.appspot.com/static/media-source.html","title":"MediaSource demo"}],"categories":["DOM","JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"a #2"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n d #1","26":"n d #1","27":"n d #1","28":"n d #1","29":"n d #1","30":"n d #1","31":"n d #1","32":"n d #1","33":"n d #1","34":"n d #1","35":"n d #1","36":"n d #1","37":"n d #1","38":"n d #1","39":"n d #1","40":"n d #1","41":"n d #1","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n d","18":"n d","19":"n d","20":"n d","21":"n d","22":"n d","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"y"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{"1":"Requires the `media.mediasource.enabled` flag to be enabled, support is limited to a whitelist including the YouTube, Netflix, and Dailymotion websites","2":"Partial support in IE11 refers to only working in Windows 8+"},"usage_perc_y":67.88,"usage_perc_a":3.87,"ucprefix":false,"parent":"","keywords":"sourcebuffer,endofstream,mse","ie_id":"mediasourceextensions","chrome_id":"4563797888991232","firefox_id":"mse","webkit_id":""},"cors":{"title":"Cross-Origin Resource Sharing","description":"Method of performing XMLHttpRequests across domains","spec":"https://fetch.spec.whatwg.org/#http-cors-protocol","status":"ls","links":[{"url":"http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/","title":"Mozilla Hacks blog post"},{"url":"http://msdn.microsoft.com/en-us/library/cc288060(VS.85).aspx","title":"Alternative implementation by IE8"},{"url":"https://dev.opera.com/articles/view/dom-access-control-using-cross-origin-resource-sharing/","title":"DOM access using CORS"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-cors-xhr","title":"has.js test"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"a #2","9":"a #2","10":"a #1","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a #1","5":"a #1","6":"a #1","7":"a #1","8":"a #1","9":"a #1","10":"a #1","11":"a #1","12":"a #1","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"a #1 #3","5":"a #1 #3","5.1":"a #1 #3","6":"y #3","6.1":"y #3","7":"y #3","7.1":"y #3","8":"y #3","9":"y #3","9.1":"y #3","10":"y #3","10.1":"y #3","TP":"y #3"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"a #1 #3","4.0-4.1":"a #1 #3","4.2-4.3":"a #1 #3","5.0-5.1":"a #1 #3","6.0-6.1":"y #3","7.0-7.1":"y #3","8":"y #3","8.1-8.4":"y #3","9.0-9.2":"y #3","9.3":"y #3","10.0-10.2":"y #3"},"op_mini":{"all":"n"},"android":{"2.1":"a #1","2.2":"a #1","2.3":"a #1","3":"a #1","4":"a #1","4.1":"a #1","4.2-4.3":"a #1","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"a #1","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"a #1","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Does not support CORS for images in `<canvas>`","2":"Supported somewhat in IE8 and IE9 using the XDomainRequest object (but has [limitations](http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx))","3":"Does not support CORS for `<video>` in `<canvas>`: https://bugs.webkit.org/show_bug.cgi?id=135379"},"usage_perc_y":92.72,"usage_perc_a":1.99,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-backdrop-filter":{"title":"CSS Backdrop Filter","description":"Method of applying filter effects (like blur, grayscale or hue) to content/elements below the target element.","spec":"http://dev.w3.org/fxtf/filters-2/#BackdropFilterProperty","status":"unoff","links":[{"url":"http://product.voxmedia.com/til/2015/2/17/8053347/css-ios-transparency-with-webkit-backdrop-filter","title":"Blog post"},{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter","title":"Mozilla Developer Network"},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/9160189-backdrop-filters","title":"Edge feature request"}],"categories":["CSS","CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n d #1","48":"n d #1","49":"n d #1","50":"n d #1","51":"n d #1","52":"n d #1","53":"n d #1","54":"n d #1","55":"n d #1","56":"n d #1","57":"n d #1","58":"n d #1","59":"n d #1"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"y x","9.1":"y x","10":"y x","10.1":"y x","TP":"y x"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n d #1","35":"n d #1","36":"n d #1","37":"n d #1","38":"n d #1","39":"n d #1","40":"n d #1","41":"n d #1","42":"n d #1","43":"n d #1","44":"n d #1","45":"n d #1"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"y x","9.3":"y x","10.0-10.2":"y x"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n d #1"},"and_chr":{"56":"n d #1"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n d #1"}},"notes":"","notes_by_num":{"1":"Can be enabled via the \"Experimental Web Platform Features\" flag"},"usage_perc_y":11.52,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"blue,hue-rotate,invert,saturate,filter","ie_id":"backdropfilter","chrome_id":"5679432723333120","firefox_id":"","webkit_id":"feature-filter-effects-backdrop-filter-propery"},"calc":{"title":"calc() as CSS unit value","description":"Method of allowing calculated values for length units, i.e. `width: calc(100% - 3em)`","spec":"http://www.w3.org/TR/css3-values/#calc","status":"cr","links":[{"url":"http://hacks.mozilla.org/2010/06/css3-calc/","title":"Mozilla Hacks article"},{"url":"https://developer.mozilla.org/en/docs/Web/CSS/calc","title":"MDN article"},{"url":"http://docs.webplatform.org/wiki/css/functions/calc","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"a #2","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"y x","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"a #1","4.4.3-4.4.4":"a #1","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Support can be somewhat emulated in older versions of IE using the non-standard `expression()` syntax.\r\n\r\nDue to the way browsers handle [sub-pixel rounding](http://ejohn.org/blog/sub-pixel-problems-in-css/) differently, layouts using `calc()` expressions may have unexpected results.","notes_by_num":{"1":"Partial support in Android Browser 4.4 refers to the browser lacking the ability to multiply and divide values.","2":"Partial support in IE9 refers to the browser crashing when used as a `background-position` value."},"usage_perc_y":82.16,"usage_perc_a":2.08,"ucprefix":false,"parent":"","keywords":"","ie_id":"csscalc","chrome_id":"5765241438732288","firefox_id":"","webkit_id":""},"dom-range":{"title":"Document Object Model Range","description":"A contiguous range of content in a Document, DocumentFragment or Attr","spec":"https://dom.spec.whatwg.org/#ranges","status":"ls","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Range","title":"MDN"},{"url":"http://www.quirksmode.org/dom/range_intro.html","title":"QuirksMode"},{"url":"https://github.com/timdown/rangy","title":"\"Rangy\" Range library with old IE support"}],"categories":["DOM","JS API"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"y","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Range) for feature support details","notes_by_num":{},"usage_perc_y":97.86,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"DOM,range,selection","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"ruby":{"title":"Ruby annotation","description":"Method of adding pronunciation or other annotations using ruby elements (primarily used in East Asian typography).","spec":"https://html.spec.whatwg.org/multipage/semantics.html#the-ruby-element","status":"ls","links":[{"url":"http://html5doctor.com/ruby-rt-rp-element/","title":"HTML5 Doctor article"},{"url":"http://docs.webplatform.org/wiki/html/elements/ruby","title":"WebPlatform Docs"},{"url":"https://addons.mozilla.org/firefox/addon/1935/","title":"Add-on \"XHTML Ruby Support\" for Firefox"},{"url":"https://addons.mozilla.org/firefox/addon/6812/","title":"Addon \"HTML Ruby\" for Firefox support"},{"url":"http://www.w3.org/TR/css-ruby-1/","title":"CSS specification"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"a","6":"a","7":"a","8":"a","9":"a","10":"a","11":"a"},"edge":{"12":"a","13":"a","14":"a","15":"a"},"firefox":{"2":"p","3":"p","3.5":"p","3.6":"p","4":"p","5":"p","6":"p","7":"p","8":"p","9":"p","10":"p","11":"p","12":"p","13":"p","14":"p","15":"p","16":"p","17":"p","18":"p","19":"p","20":"p","21":"p","22":"p","23":"p","24":"p","25":"p","26":"p","27":"p","28":"p","29":"p","30":"p","31":"p","32":"p","33":"p","34":"p","35":"p","36":"p","37":"p","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"p","5":"a","6":"a","7":"a","8":"a","9":"a","10":"a","11":"a","12":"a","13":"a","14":"a","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a","46":"a","47":"a","48":"a","49":"a","50":"a","51":"a","52":"a","53":"a","54":"a","55":"a","56":"a","57":"a","58":"a","59":"a"},"safari":{"3.1":"p","3.2":"p","4":"p","5":"a","5.1":"a","6":"a","6.1":"a","7":"a","7.1":"a","8":"a","9":"a","9.1":"a","10":"a","10.1":"a","TP":"a"},"opera":{"9":"p","9.5-9.6":"p","10.0-10.1":"p","10.5":"p","10.6":"p","11":"p","11.1":"p","11.5":"p","11.6":"p","12":"p","12.1":"p","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a"},"ios_saf":{"3.2":"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a","8":"a","8.1-8.4":"a","9.0-9.2":"a","9.3":"a","10.0-10.2":"a"},"op_mini":{"all":"p"},"android":{"2.1":"p","2.2":"p","2.3":"p","3":"a","4":"a","4.1":"a","4.2-4.3":"a","4.4":"a","4.4.3-4.4.4":"a","53":"a"},"bb":{"7":"p","10":"a"},"op_mob":{"10":"p","11":"p","11.1":"p","11.5":"p","12":"p","12.1":"p","37":"a"},"and_chr":{"56":"a"},"and_ff":{"51":"y"},"ie_mob":{"10":"a","11":"a"},"and_uc":{"11":"a"},"samsung":{"4":"a"},"and_qq":{"1.2":"a"}},"notes":"Browsers without native support can still simulate support using CSS. Partial support refers to only supporting basic ruby, may still be missing writing-mode, Complex ruby and CSS3 Ruby.","notes_by_num":{"1":"IE9+ supports [properties](https://msdn.microsoft.com/en-us/library/hh772055%28v=vs.85%29.aspx) of an older version of the CSS Ruby specification."},"usage_perc_y":6.24,"usage_perc_a":87.9,"ucprefix":false,"parent":"","keywords":"ruby-base,ruby-text,ruby-position,ruby-merge,ruby-align","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-opacity":{"title":"CSS3 Opacity","description":"Method of setting the transparency level of an element","spec":"http://www.w3.org/TR/css3-color/","status":"rec","links":[{"url":"http://www.css3files.com/color/#opacity","title":"Information page"},{"url":"http://docs.webplatform.org/wiki/css/properties/opacity","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"a","6":"a","7":"a","8":"a","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"y","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Transparency for elements in IE8 and older can be achieved using the proprietary \"filter\" property and does not work well with PNG images using alpha transparency.","notes_by_num":{},"usage_perc_y":97.86,"usage_perc_a":0.48,"ucprefix":false,"parent":"","keywords":"transparent,transparency,alpha","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"form-validation":{"title":"Form validation","description":"Method of setting required fields and field types without requiring JavaScript. This includes preventing forms from being submitted when appropriate, the `checkValidity()` method as well as support for the `:invalid`, `:valid`, and `:required` CSS pseudo-classes.","spec":"https://html.spec.whatwg.org/multipage/forms.html#client-side-form-validation","status":"ls","links":[{"url":"http://docs.webplatform.org/wiki/html/attributes/required","title":"WebPlatform Docs"},{"url":"https://webkit.org/blog/7099/html-interactive-form-validation/","title":"WebKit Blog: HTML Interactive Form Validation"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"a #1","5.1":"a #1","6":"a #1","6.1":"a #1","7":"a #1","7.1":"a #1","8":"a #1","9":"a #1","9.1":"a #1","10":"a #1","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"a #1","4.2-4.3":"a #1","5.0-5.1":"a #1","6.0-6.1":"a #1","7.0-7.1":"a #1","8":"a #1","8.1-8.4":"a #1","9.0-9.2":"a #1","9.3":"a #1","10.0-10.2":"a #1"},"op_mini":{"all":"a #3"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"a #1","4.1":"a #1","4.2-4.3":"a #1","4.4":"a #1","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"a #1","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"a #2","11":"a #2"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support refers to lack of notice when form with required fields is attempted to be submitted. See [WebKit bug](https://bugs.webkit.org/show_bug.cgi?id=28649).","2":"Partial support in IE10 mobile refers to lack of warning when blocking submission.","3":"Partial support in Opera Mini refers to only supporting the CSS pseudo classes."},"usage_perc_y":79.33,"usage_perc_a":18.13,"ucprefix":false,"parent":"forms","keywords":"","ie_id":"","chrome_id":"6091813840486400","firefox_id":"","webkit_id":"feature-html-interactive-form-validation"},"history":{"title":"Session history management","description":"Method of manipulating the user's browser's session history in JavaScript using `history.pushState`, `history.replaceState` and the `popstate` event.","spec":"https://html.spec.whatwg.org/multipage/browsers.html#dom-history-pushstate","status":"ls","links":[{"url":"http://www.adequatelygood.com/2010/7/Saner-HTML5-History-Management","title":"Introduction to history management"},{"url":"https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history","title":"MDN article"},{"url":"http://html5demos.com/history","title":"Demo page"},{"url":"https://github.com/browserstate/history.js","title":"History.js polyfill"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-history-state","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/dom/History","title":"WebPlatform Docs"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"a","5.1":"a","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"a","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"y","2.3":"y","3":"n","4":"n","4.1":"n","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"a"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Older iOS versions and Android 4.0.4 claim support, but implementation is too buggy to be useful.","notes_by_num":{},"usage_perc_y":84.73,"usage_perc_a":9.04,"ucprefix":false,"parent":"","keywords":"onpushstate,onreplacestate","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"json":{"title":"JSON parsing","description":"Method of converting JavaScript objects to JSON strings and JSON back to objects using JSON.stringify() and JSON.parse()","spec":"http://www.ecma-international.org/ecma-262/5.1/#sec-15.12","status":"other","links":[{"url":"https://developer.mozilla.org/En/Using_native_JSON","title":"MDN article"},{"url":"http://www.json.org/js.html","title":"JSON in JS (includes script w/support)"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/json.js#json","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/apis/json","title":"WebPlatform Docs"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"y #1","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Requires document to be in IE8+ [standards mode](http://msdn.microsoft.com/en-us/library/cc288325%28VS.85%29.aspx) to work in IE8."},"usage_perc_y":98.19,"usage_perc_a":0,"ucprefix":false,"parent":"es5","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"classlist":{"title":"classList (DOMTokenList)","description":"Method of easily manipulating classes on elements, using the DOMTokenList object.","spec":"https://dom.spec.whatwg.org/#dom-element-classlist","status":"ls","links":[{"url":"http://hacks.mozilla.org/2010/01/classlist-in-firefox-3-6/","title":"Mozilla Hacks article"},{"url":"https://github.com/eligrey/classList.js","title":"Polyfill script"},{"url":"http://docs.webplatform.org/wiki/dom/Element/classList","title":"WebPlatform Docs"},{"url":"http://www.sitepoint.com/exploring-classlist-api/","title":"SitePoint article"},{"url":"http://aurelio.audero.it/demo/classlist-api-demo.html","title":"Demo using classList"},{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Element.classList","title":"MDN article"}],"categories":["DOM","HTML5"],"stats":{"ie":{"5.5":"p","6":"p","7":"p","8":"p","9":"p","10":"a #1 #2 #3","11":"a #1 #2 #3"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"p","3":"p","3.5":"p","3.6":"a #2 #3","4":"a #2 #3","5":"a #2 #3","6":"a #2 #3","7":"a #2 #3","8":"a #2 #3","9":"a #2 #3","10":"a #2 #3","11":"a #2 #3","12":"a #2 #3","13":"a #2 #3","14":"a #2 #3","15":"a #2 #3","16":"a #2 #3","17":"a #2 #3","18":"a #2 #3","19":"a #2 #3","20":"a #2 #3","21":"a #2 #3","22":"a #2 #3","23":"a #2 #3","24":"a #3","25":"a #3","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"p","5":"p","6":"p","7":"p","8":"a #1 #2 #3","9":"a #1 #2 #3","10":"a #1 #2 #3","11":"a #1 #2 #3","12":"a #1 #2 #3","13":"a #1 #2 #3","14":"a #1 #2 #3","15":"a #1 #2 #3","16":"a #1 #2 #3","17":"a #1 #2 #3","18":"a #1 #2 #3","19":"a #1 #2 #3","20":"a #1 #2 #3","21":"a #1 #2 #3","22":"a #1 #2 #3","23":"a #2 #3","24":"a #3","25":"a #3","26":"a #3","27":"a #3","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"p","3.2":"p","4":"p","5":"p","5.1":"a #1 #2 #3","6":"a #1 #2 #3","6.1":"a #1 #2 #3","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"p","9.5-9.6":"p","10.0-10.1":"p","10.5":"p","10.6":"p","11":"p","11.1":"p","11.5":"a #1 #2 #3","11.6":"a #1 #2 #3","12":"a #1 #2 #3","12.1":"a #1 #2 #3","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"a #1 #2 #3","6.0-6.1":"a #1 #2 #3","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"a #1 #2 #3"},"android":{"2.1":"p","2.2":"p","2.3":"p","3":"a #1 #2 #3","4":"a #1 #2 #3","4.1":"a #1 #2 #3","4.2-4.3":"a #1 #2 #3","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"a #1 #2 #3","10":"y"},"op_mob":{"10":"p","11":"p","11.1":"a #1 #2 #3","11.5":"a #1 #2 #3","12":"a #1 #2 #3","12.1":"a #1 #2 #3","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"a #1 #2 #3","11":"a #1 #2 #3"},"and_uc":{"11":"a #1 #2 #3"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Does not have support for `classList` on SVG or MathML elements.","2":"Does not support the second parameter for the `toggle` method","3":"Does not support multiple parameters for the `add()` & `remove()` methods"},"usage_perc_y":78.82,"usage_perc_a":18.57,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"text-overflow":{"title":"CSS3 Text-overflow","description":"Append ellipsis when text overflows its containing element","spec":"http://www.w3.org/TR/css3-ui/#text-overflow","status":"cr","links":[{"url":"https://github.com/rmorse/AutoEllipsis","title":"jQuery polyfill for Firefox"},{"url":"https://developer.mozilla.org/En/CSS/Text-overflow","title":"MDN article"},{"url":"http://www.css3files.com/text/","title":"Information page"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/css.js#css-text-overflow","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/css/properties/text-overflow","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"p","3":"p","3.5":"p","3.6":"p","4":"p","5":"p","6":"p","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y x","9.5-9.6":"y x","10.0-10.1":"y x","10.5":"y x","10.6":"y x","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y x","11":"y x","11.1":"y x","11.5":"y x","12":"y x","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":98.22,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"textoverflow,ellipsis","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"webm":{"title":"WebM video format","description":"Multimedia format designed to provide a royalty-free, high-quality open video compression format for use with HTML5 video. WebM supports the video codec VP8 and VP9.","spec":"http://www.webmproject.org/","status":"other","links":[{"url":"https://tools.google.com/dlpage/webmmf","title":"Codec for IE9 support"},{"url":"http://www.broken-links.com/2010/09/01/playing-webm-in-safari-with-plugins/","title":"Info on supporting WebM in Safari"},{"url":"http://webmproject.org","title":"Official website"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/video.js#video-webm","title":"has.js test"},{"url":"http://perian.org/","title":"Perian :Mac OSX Webm Codec install"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"p","10":"p","11":"p"},"edge":{"12":"p","13":"p","14":"a","15":"a"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"a","5":"a","6":"a","7":"a","8":"a","9":"a","10":"a","11":"a","12":"a","13":"a","14":"a","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"a","7":"a","8":"a","9":"a","10":"a","11":"a","12":"a","13":"a","14":"a","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"p","4":"p","5":"p","5.1":"p","6":"p","6.1":"p","7":"p","7.1":"p","8":"p","9":"p","9.1":"p","10":"p","10.1":"p","TP":"p"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"a","11":"a","11.1":"a","11.5":"a","11.6":"a","12":"a","12.1":"a","15":"a","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"a","3":"a","4":"a","4.1":"a","4.2-4.3":"a","4.4":"a","4.4.3-4.4.4":"a","53":"a"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"a"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"p","11":"p"},"and_uc":{"11":"y"},"samsung":{"4":"a"},"and_qq":{"1.2":"y"}},"notes":"Will work in IE9+ and Safari/MacOSX provided the user has the WebM codecs installed. Partial support indicates that at least one codec is supported but not all. MS Edge supports VP9 from MSE sources, also progressive sources are not supported by Edge.","notes_by_num":{},"usage_perc_y":68.61,"usage_perc_a":8.24,"ucprefix":false,"parent":"video","keywords":"matroska","ie_id":"webmcontainer,vp9videoplayback","chrome_id":"6362186595172352","firefox_id":"","webkit_id":""},"mpeg4":{"title":"MPEG-4/H.264 video format","description":"Commonly used video compression format.","spec":"http://ip.hhi.de/imagecom_G1/assets/pdfs/csvt_overview_0305.pdf","status":"other","links":[{"url":"http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC","title":"Wikipedia article"},{"url":"http://www.interoperabilitybridges.com/html5-extension-for-wmp-plugin","title":"Firefox extension allowing support in Win7"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"a","2.2":"a","2.3":"a #1","3":"a","4":"a","4.1":"a","4.2-4.3":"a","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"a #2"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"a"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Firefox supports H.264 on Windows 7 and later since version 21. Firefox supports H.264 on Linux since version 26 if the appropriate gstreamer plug-ins are installed.\r\n\r\nPartial support for older Firefox versions refers to the lack of support in OS X & some non-Android Linux platforms.","notes_by_num":{"1":"The Android 2.3 browser requires [specific handling](http://www.broken-links.com/2010/07/08/making-html5-video-work-on-android-phones/) to play videos.","2":"Partial supports refers to the lack of hardware acceleration."},"usage_perc_y":84.01,"usage_perc_a":9.94,"ucprefix":false,"parent":"video","keywords":"avc,mp4,mpv,mov,aac,h264","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"ogv":{"title":"Ogg/Theora video format","description":"Free lossy video compression format.","spec":"http://theora.org/doc/","status":"other","links":[{"url":"http://en.wikipedia.org/wiki/Theora","title":"Wikipedia article"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"p","10":"p","11":"p"},"edge":{"12":"p","13":"p","14":"p","15":"p"},"firefox":{"2":"n","3":"n","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"y"},"ie_mob":{"10":"p","11":"p"},"and_uc":{"11":"y"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{},"usage_perc_y":43.85,"usage_perc_a":0,"ucprefix":false,"parent":"video","keywords":"xiph","ie_id":"theoravideocodec,oggcontainer","chrome_id":"","firefox_id":"","webkit_id":""},"wordwrap":{"title":"CSS3 Overflow-wrap","description":"Allows lines to be broken within words if an otherwise unbreakable string is too long to fit. Currently mostly supported using the `word-wrap` property.","spec":"http://www.w3.org/TR/css3-text/#overflow-wrap","status":"wd","links":[{"url":"https://developer.mozilla.org/En/CSS/Word-wrap","title":"MDN article"},{"url":"http://www.css3files.com/text/#wordwrap","title":"Information page"},{"url":"http://docs.webplatform.org/wiki/css/properties/word-wrap","title":"WebPlatform Docs"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=955857","title":"Bug on Firefox support"},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6524680-update-word-wrap-to-overflow-wrap","title":"Microsoft Edge feature request on UserVoice"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"a","6":"a","7":"a","8":"a","9":"a","10":"a","11":"a"},"edge":{"12":"a","13":"a","14":"a","15":"a"},"firefox":{"2":"n","3":"n","3.5":"a","3.6":"a","4":"a","5":"a","6":"a","7":"a","8":"a","9":"a","10":"a","11":"a","12":"a","13":"a","14":"a","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a","46":"a","47":"a","48":"a","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a","5":"a","6":"a","7":"a","8":"a","9":"a","10":"a","11":"a","12":"a","13":"a","14":"a","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"a","3.2":"a","4":"a","5":"a","5.1":"a","6":"a","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"a","10.6":"a","11":"a","11.1":"a","11.5":"a","11.6":"a","12":"a","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"a"},"android":{"2.1":"a","2.2":"a","2.3":"a","3":"a","4":"a","4.1":"a","4.2-4.3":"a","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"a","10":"y"},"op_mob":{"10":"a","11":"a","11.1":"a","11.5":"a","12":"a","12.1":"a","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"a","11":"a"},"and_uc":{"11":"a"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Partial support refers to requiring the legacy name \"word-wrap\" (rather than \"overflow-wrap\") to work.","notes_by_num":{},"usage_perc_y":76.12,"usage_perc_a":22.14,"ucprefix":false,"parent":"","keywords":"wordwrap,word-wrap","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"pointerlock":{"title":"PointerLock API","description":"API that provides access to raw mouse movement data. This is done by ignoring boundaries resulting from screen edges where the cursor can't go beyond, providing proper control for first person or real time strategy games. ","spec":"https://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html","status":"cr","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API","title":"MDN article"},{"url":"http://mdn.github.io/pointer-lock-demo","title":"Simple demo"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n d","17":"n d","18":"n d","19":"n d","20":"n d","21":"n d","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{},"usage_perc_y":36.07,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"mouselock,pointer lock,mouse lock,requestPointerLock,pointerLockElement,exitPointerLock,movementX,movementY","ie_id":"pointerlockmouselock","chrome_id":"6753200417800192","firefox_id":"pointerlock","webkit_id":""},"object-fit":{"title":"CSS3 object-fit/object-position","description":"Method of specifying how an object (image or video) should fit inside its box. object-fit options include \"contain\" (fit according to aspect ratio), \"fill\" (stretches object to fill) and \"cover\" (overflows box but maintains ratio), where object-position allows the object to be repositioned like background-image does.","spec":"http://www.w3.org/TR/css3-images/","status":"cr","links":[{"url":"https://dev.opera.com/articles/view/css3-object-fit-object-position/","title":"Dev.Opera article"},{"url":"http://docs.webplatform.org/wiki/css/properties/object-fit","title":"WebPlatform Docs"},{"url":"https://github.com/bfred-it/object-fit-images/","title":"object-fit-images Polyfill for IE & Edge"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"a #1","8":"a #1","9":"a #1","9.1":"a #1","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"y x","11":"y x","11.1":"y x","11.5":"y x","11.6":"y x","12":"y x","12.1":"y x","15":"n","16":"n","17":"n","18":"n","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"a #1","8.1-8.4":"a #1","9.0-9.2":"a #1","9.3":"a #1","10.0-10.2":"y"},"op_mini":{"all":"y x"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"y x","11.1":"y x","11.5":"y x","12":"y x","12.1":"y x","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support in Safari refers to support for `object-fit` but not `object-position`."},"usage_perc_y":77.15,"usage_perc_a":1.97,"ucprefix":false,"parent":"","keywords":"objectfit,objectposition","ie_id":"objectfitandobjectposition","chrome_id":"5302669702856704","firefox_id":"","webkit_id":""},"xhr2":{"title":"XMLHttpRequest advanced features","description":"Adds more functionality to XHR (aka AJAX) requests like file uploads, transfer progress information and the ability to send form data. Previously known as [XMLHttpRequest Level 2](http://www.w3.org/TR/2012/WD-XMLHttpRequest-20120117/), these features now appear simply in the XMLHttpRequest spec.","spec":"https://xhr.spec.whatwg.org/","status":"ls","links":[{"url":"https://developer.mozilla.org/en/XMLHttpRequest/FormData","title":"MDN article on FormData"},{"url":"https://github.com/3nr1c/jUri.js","title":"Polyfill for FormData object"},{"url":"http://docs.webplatform.org/wiki/apis/xhr/XMLHttpRequest","title":"WebPlatform Docs"}],"categories":["DOM","JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"a #1","11":"a #1"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"a #1 #2 #3","3.6":"a #1 #2 #3","4":"a #1 #2 #3","5":"a #1 #2 #3","6":"a #1 #2","7":"a #1 #2","8":"a #1 #2","9":"a #1 #2","10":"a #2","11":"a #2","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"u","5":"u","6":"u","7":"a #1 #2","8":"a #1 #2","9":"a #1 #2","10":"a #1 #2","11":"a #1 #2","12":"a #1 #2","13":"a #1 #2","14":"a #1 #2","15":"a #1 #2","16":"a #1 #2","17":"a #1 #2","18":"a #1 #2","19":"a #1 #2","20":"a #1 #2","21":"a #1 #2","22":"a #1 #2","23":"a #1 #2","24":"a #1 #2","25":"a #1 #2","26":"a #1 #2","27":"a #1 #2","28":"a #1 #2","29":"a #1","30":"a #1","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"a #1 #2","5.1":"a #1 #2","6":"a #1 #2","6.1":"a #1","7":"a #1","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"y","12.1":"y","15":"a #1","16":"a #1","17":"a #1","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"a #1 #2","6.0-6.1":"a #1 #2","7.0-7.1":"a #1","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"a #1 #2 #3","4":"a #1 #2 #3","4.1":"a #1 #2 #3","4.2-4.3":"a #1 #2 #3","4.4":"a #1 #2","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"a #1 #2","10":"a #1"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"a #1","11":"a #1"},"and_uc":{"11":"a #1 #2"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support refers to not supporting `json` as `responseType`","2":"Partial support refers to not supporting `.timeout` and `.ontimeout`","3":"Partial support refers to not supporting `blob` as `responseType`"},"usage_perc_y":77.64,"usage_perc_a":16.36,"ucprefix":false,"parent":"","keywords":"formdata","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"minmaxwh":{"title":"CSS min/max-width/height","description":"Method of setting a minimum or maximum width or height to an element. ","spec":"http://www.w3.org/TR/CSS21/visudet.html#min-max-widths","status":"rec","links":[{"url":"http://code.google.com/p/ie7-js/","title":"JS library with support"},{"url":"http://docs.webplatform.org/wiki/css/properties/min-width","title":"WebPlatform Docs"},{"url":"http://www.impressivewebs.com/min-max-width-height-css/","title":"CSS Basics post"}],"categories":["CSS2"],"stats":{"ie":{"5.5":"p","6":"p","7":"y #1","8":"y #2","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"y","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"IE7 does not support `inherit` as a value on any of these properties.","2":"IE8 has some bugs with `max-width`/`height` combined with `overflow: auto`/`scroll`."},"usage_perc_y":98.3,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"min-width,min-height,max-width,max-height","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"details":{"title":"Details & Summary elements","description":"The <details> element generates a simple no-JavaScript widget to show/hide element contents, optionally by clicking on its child <summary> element.","spec":"https://html.spec.whatwg.org/multipage/forms.html#the-details-element","status":"ls","links":[{"url":"https://mathiasbynens.be/notes/html5-details-jquery","title":"jQuery fallback script"},{"url":"https://gist.github.com/370590","title":"Fallback script"},{"url":"http://html5doctor.com/summary-figcaption-element/","title":"HTML5 Doctor article"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-details","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/html/elements/details","title":"WebPlatform Docs"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=591737","title":"Bug on Firefox support"},{"url":"https://github.com/javan/details-element-polyfill","title":"Details Element Polyfill"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"p","3.5":"p","3.6":"p","4":"p","5":"p","6":"p","7":"p","8":"p","9":"p","10":"p","11":"p","12":"p","13":"p","14":"p","15":"p","16":"p","17":"p","18":"p","19":"p","20":"p","21":"p","22":"p","23":"p","24":"p","25":"p","26":"p","27":"p","28":"p","29":"p","30":"p","31":"p","32":"p","33":"p","34":"p","35":"p","36":"p","37":"p","38":"p","39":"p","40":"p","41":"p","42":"p","43":"p","44":"p","45":"p","46":"p","47":"n d #1","48":"n d #1","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"p","5":"p","6":"p","7":"p","8":"p","9":"p","10":"p","11":"p","12":"y #2 #3","13":"y #2 #3","14":"y #2 #3","15":"y #2 #3","16":"y #2 #3","17":"y #2 #3","18":"y #2 #3","19":"y #2","20":"y #2","21":"y #2","22":"y #2","23":"y #2","24":"y #2","25":"y #2","26":"y #2","27":"y #2","28":"y #2","29":"y #2","30":"y #2","31":"y #2","32":"y #2","33":"y #2","34":"y #2","35":"y #2","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"p","3.2":"p","4":"p","5":"p","5.1":"p","6":"y #2","6.1":"y #2","7":"y #2","7.1":"y #2","8":"y #2","9":"y #2","9.1":"y #2","10":"y #2","10.1":"y","TP":"y"},"opera":{"9":"p","9.5-9.6":"p","10.0-10.1":"p","10.5":"p","10.6":"p","11":"p","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"p"},"android":{"2.1":"p","2.2":"p","2.3":"p","3":"p","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"p","10":"y"},"op_mob":{"10":"p","11":"p","11.1":"p","11.5":"p","12":"p","12.1":"p","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y #2 #3"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Enabled in Firefox through the `dom.details_element.enabled` flag","2":"'toggle' event is not supported","3":"<summary> is not keyboard accessible"},"usage_perc_y":85.89,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"detailssummary","chrome_id":"5348024557502464","firefox_id":"","webkit_id":""},"text-stroke":{"title":"CSS text-stroke and text-fill","description":"Method of declaring the outline (stroke) width and color for text.","spec":"https://compat.spec.whatwg.org/#text-fill-and-stroking","status":"unoff","links":[{"url":"https://css-tricks.com/adding-stroke-to-web-text/","title":"Information & workarounds"},{"url":"http://www.westciv.com/tools/textStroke/","title":"Live editor"},{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-text-stroke","title":"Mozilla Developer Network article"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"y x #1"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n d #1 #2","49":"y x #1","50":"y x #1","51":"y x #1","52":"y x #1","53":"y x #1","54":"y x #1"},"chrome":{"4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x","46":"y x","47":"y x","48":"y x","49":"y x","50":"y x","51":"y x","52":"y x","53":"y x","54":"y x","55":"y x","56":"y x","57":"y x","58":"y x","59":"y x"},"safari":{"3.1":"y x","3.2":"y x","4":"y x","5":"y x","5.1":"y x","6":"y x","6.1":"y x","7":"y x","7.1":"y x","8":"y x","9":"y x","9.1":"y x","10":"y x","10.1":"y x","TP":"y x"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x"},"ios_saf":{"3.2":"a x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x","8":"y x","8.1-8.4":"y x","9.0-9.2":"y x","9.3":"y x","10.0-10.2":"y x"},"op_mini":{"all":"n"},"android":{"2.1":"y x","2.2":"y x","2.3":"y x","3":"n","4":"y x","4.1":"y x","4.2-4.3":"y x","4.4":"y x","4.4.3-4.4.4":"y x","53":"y x"},"bb":{"7":"y x","10":"y x"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y x"},"and_chr":{"56":"y x"},"and_ff":{"51":"y x #1"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y x"},"and_qq":{"1.2":"y x"}},"notes":"Does not yet appear in any W3C specification. Was briefly included in a spec as the \"text-outline\" property, but this was removed.","notes_by_num":{"1":"Firefox & Edge specifically support the `-webkit-text-stroke` property without having support with their own prefix.","2":"Requires the `layout.css.prefixes.webkit` flag to be enabled."},"usage_perc_y":77.17,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"textstroke,stroke-color,stroke-width,text-fill-color,text-outline","ie_id":"webkittextstroke","chrome_id":"","firefox_id":"","webkit_id":""},"chacha20-poly1305":{"title":"ChaCha20-Poly1305 cipher suites for TLS","description":"A set of cipher suites used in Transport Layer Security (TLS) protocol, using ChaCha20 for symmetric encryption and Poly1305 for authentication.","spec":"https://tools.ietf.org/html/rfc7905","status":"other","links":[{"url":"https://security.googleblog.com/2014/04/speeding-up-and-strengthening-https.html","title":"Chrome article"},{"url":"https://www.ssllabs.com/ssltest/viewMyClient.html","title":"SSL/TLS Capabilities of Your Browser by Qualys SSL Labs"},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/12300414-support-chacha20-poly1305-cipher-suites-in-edge-sc","title":"Microsoft Edge feature request on UserVoice"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"y #1","34":"y #1","35":"y #1","36":"y #1","37":"y #1","38":"y #1","39":"y #1","40":"y #1","41":"y #1","42":"y #1","43":"y #1","44":"y #1","45":"y #1","46":"y #1","47":"y #1","48":"y #1","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"u","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Old versions of Chrome use non-standard code points for ChaCha20-Poly1305 cipher suites."},"usage_perc_y":62.15,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"chacha20,poly1305,tls,cipher","ie_id":"","chrome_id":"5355238106071040","firefox_id":"","webkit_id":""},"inline-block":{"title":"CSS inline-block","description":"Method of displaying an element as a block while flowing it with text. ","spec":"http://www.w3.org/TR/CSS21/visuren.html#fixed-positioning","status":"rec","links":[{"url":"http://robertnyman.com/2010/02/24/css-display-inline-block-why-it-rocks-and-why-it-sucks/","title":"Blog post w/info"},{"url":"http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/","title":"Info on cross browser support"},{"url":"http://docs.webplatform.org/wiki/css/properties/display","title":"WebPlatform Docs"}],"categories":["CSS2"],"stats":{"ie":{"5.5":"a","6":"a #1","7":"a #1","8":"y","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"a x","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Only supported in IE6 and IE7 on elements with a display of \"inline\" by default. [Alternative properties](http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/) are available to provide complete cross-browser support."},"usage_perc_y":98.26,"usage_perc_a":0.07,"ucprefix":false,"parent":"","keywords":"inlineblock,display:inline-block","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"notifications":{"title":"Web Notifications","description":"Method of alerting the user outside of a web page by displaying notifications (that do not require interaction by the user).","spec":"https://notifications.spec.whatwg.org/","status":"ls","links":[{"url":"http://www.html5rocks.com/tutorials/notifications/quick/","title":"HTML5 Rocks tutorial"},{"url":"http://www.chromium.org/developers/design-documents/desktop-notifications/api-specification","title":"Chromium API"},{"url":"https://addons.mozilla.org/en-us/firefox/addon/221523/","title":"Add-on"},{"url":"https://developer.mozilla.org/en-US/docs/Web/API/notification","title":"MDN Notifications"},{"url":"http://www.sitepoint.com/introduction-web-notifications-api/","title":"SitePoint article"},{"url":"http://aurelio.audero.it/demo/web-notifications-api-demo.html","title":"Demo"},{"url":"http://ukot.github.io/ie_web_notifications/","title":"Plug-in for support in IE"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"a x","6":"a x","7":"a x","8":"a x","9":"a x","10":"a x","11":"a x","12":"a x","13":"a x","14":"a x","15":"a x","16":"a x","17":"a x","18":"a x","19":"a x","20":"a x","21":"a x","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"a x","4.4.3-4.4.4":"a x","53":"a x"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"a x"},"and_chr":{"56":"n"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"a x"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{"1":"Can be enabled in `about:flags`"},"usage_perc_y":37.97,"usage_perc_a":5.59,"ucprefix":false,"parent":"","keywords":"","ie_id":"webnotifications","chrome_id":"5064350557536256","firefox_id":"","webkit_id":""},"stream":{"title":"getUserMedia/Stream API","description":"Method of accessing external device data (such as a webcam video stream). Formerly this was envisioned as the <device> element.","spec":"http://www.w3.org/TR/mediacapture-streams/","status":"cr","links":[{"url":"https://dev.opera.com/blog/webcam-orientation-preview/","title":"Technology preview from Opera"},{"url":"http://docs.webplatform.org/wiki/dom/Navigator/getUserMedia","title":"WebPlatform Docs"},{"url":"http://blogs.windows.com/msedgedev/2015/05/13/announcing-media-capture-functionality-in-microsoft-edge/","title":"Media Capture functionality in Microsoft Edge"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x","46":"y x","47":"y x","48":"y x","49":"y x","50":"y x","51":"y x","52":"y x","53":"y x","54":"y x"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"a x #1","22":"a x #1","23":"a x #1","24":"a x #1","25":"a x #1","26":"a x #1","27":"a x #1","28":"a x #1","29":"a x #1","30":"a x #1","31":"a x #1","32":"a x #1","33":"a x #1","34":"a x #1","35":"a x #1","36":"a x #1","37":"a x #1","38":"a x #1","39":"a x #1","40":"a x #1","41":"a x #1","42":"a x #1","43":"a x #1","44":"a x #1","45":"a x #1","46":"a x #1","47":"a x #1","48":"a x #1","49":"a x #1","50":"a x #1","51":"a x #1","52":"a x #1","53":"a x #1","54":"a x #1","55":"a x #1","56":"a x #1","57":"a x #1","58":"a x #1","59":"a x #1"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"a x #1","12.1":"a x #1","15":"n","16":"n","17":"n","18":"a x #1","19":"a x #1","20":"a x #1","21":"a x #1","22":"a x #1","23":"a x #1","24":"a x #1","25":"a x #1","26":"a x #1","27":"a x #1","28":"a x #1","29":"a x #1","30":"a x #1","31":"a x #1","32":"a x #1","33":"a x #1","34":"a x #1","35":"a x #1","36":"a x #1","37":"a x #1","38":"a x #1","39":"a x #1","40":"a x #1","41":"a x #1","42":"a x #1","43":"a x #1","44":"a x #1","45":"a x #1"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"a x #1"},"bb":{"7":"n","10":"a x #1"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"a x #1","12.1":"a x #1","37":"a x #1"},"and_chr":{"56":"a x #1"},"and_ff":{"51":"y x"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"a x #1"},"samsung":{"4":"u"},"and_qq":{"1.2":"a x #1"}},"notes":"As of Chrome 47, the getUserMedia API cannot be called from insecure origins.","notes_by_num":{"1":"Blink-based (and some other) browsers support an older version of the spec that does not use `srcObject`. [See Chromium issue 387740](https://code.google.com/p/chromium/issues/detail?id=387740)."},"usage_perc_y":8.21,"usage_perc_a":62.39,"ucprefix":false,"parent":"","keywords":"camera,device,getUserMedia,media stream,mediastream,Media Capture API","ie_id":"mediacaptureandstreams","chrome_id":"6067380039974912,6605041225957376","firefox_id":"","webkit_id":""},"svg-img":{"title":"SVG in HTML img element","description":"Method of displaying SVG images in HTML using <img>.","spec":"https://html.spec.whatwg.org/multipage/embedded-content.html","status":"ls","links":[{"url":"http://blog.dholbert.org/2010/10/svg-as-image.html","title":"Blog post with examples"},{"url":"http://www.codedread.com/blog/","title":"Blog with SVGs an images"}],"categories":["SVG"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a #1","5":"a #1","6":"a #1","7":"a #1","8":"a #1","9":"a #1","10":"a #1","11":"a #1","12":"a #1","13":"a #1","14":"a #1","15":"a #1","16":"a #1","17":"a #1","18":"a #1","19":"a #1","20":"a #1","21":"a #1","22":"a #1","23":"a #1","24":"a #1","25":"a #1","26":"a #1","27":"a #1","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"a","4":"a #1","5":"a #1","5.1":"a #1","6":"a #1","6.1":"a #1","7":"a #1","7.1":"a #1","8":"a #1","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"a #1","4.0-4.1":"a #1","4.2-4.3":"a #1","5.0-5.1":"a #1","6.0-6.1":"a #1","7.0-7.1":"a #1","8":"a #1","8.1-8.4":"a #1","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"a #1","4":"a #1","4.1":"a #1","4.2-4.3":"a #1","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support refers to not supporting embedded images (data URIs) inside the SVG."},"usage_perc_y":95.98,"usage_perc_a":1.81,"ucprefix":false,"parent":"","keywords":"svg-as-img,svg-in-img","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"datalist":{"title":"Datalist element","description":"Method of setting a list of options for a user to select in a text field, while leaving the ability to enter a custom value.","spec":"https://html.spec.whatwg.org/multipage/forms.html#the-datalist-element","status":"ls","links":[{"url":"http://hacks.mozilla.org/2010/11/firefox-4-html5-forms/","title":"Mozilla Hacks article"},{"url":"http://afarkas.github.com/webshim/demos/","title":"HTML5 Library including datalist support"},{"url":"https://developer.mozilla.org/en/HTML/Element/datalist","title":"MDN reference"},{"url":"http://docs.webplatform.org/wiki/html/elements/datalist","title":"WebPlatform Docs"},{"url":"http://demo.agektmr.com/datalist/","title":"Eiji Kitamura's options demos & tests"},{"url":"http://github.com/thgreasi/datalist-polyfill","title":"Minimal Datalist polyfill w/tutorial"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"p","10":"a #2","11":"a #2"},"edge":{"12":"a #2","13":"a #2","14":"a #2","15":"a #2"},"firefox":{"2":"p","3":"p","3.5":"p","3.6":"p","4":"a #3","5":"a #3","6":"a #3","7":"a #3","8":"a #3","9":"a #3","10":"a #3","11":"a #3","12":"a #3","13":"a #3","14":"a #3","15":"a #3","16":"a #3","17":"a #3","18":"a #3","19":"a #3","20":"a #3","21":"a #3","22":"a #3","23":"a #3","24":"a #3","25":"a #3","26":"a #3","27":"a #3","28":"a #3","29":"a #3","30":"a #3","31":"a #3","32":"a #3","33":"a #3","34":"a #3","35":"a #3","36":"a #3","37":"a #3","38":"a #3","39":"a #3","40":"a #3","41":"a #3","42":"a #3","43":"a #3","44":"a #3","45":"a #3","46":"a #3","47":"a #3","48":"a #3","49":"a #3","50":"a #3","51":"a #3","52":"a #3","53":"a #3","54":"a #3"},"chrome":{"4":"p","5":"p","6":"p","7":"p","8":"p","9":"p","10":"p","11":"p","12":"p","13":"p","14":"p","15":"p","16":"p","17":"p","18":"p","19":"p","20":"a #1","21":"a #1","22":"a #1","23":"a #1","24":"a #1","25":"a #1","26":"a #1","27":"a #1","28":"a #1","29":"a #1","30":"a #1","31":"a #1","32":"a #1","33":"a #1","34":"a #1","35":"a #1","36":"a #1","37":"a #1","38":"a #1","39":"a #1","40":"a #1","41":"a #1","42":"a #1","43":"a #1","44":"a #1","45":"a #1","46":"a #1","47":"a #1","48":"a #1","49":"a #1","50":"a #1","51":"a #1","52":"a #1","53":"a #1","54":"a #1","55":"a #1","56":"a #1","57":"a #1","58":"a #1","59":"a #1"},"safari":{"3.1":"p","3.2":"p","4":"p","5":"p","5.1":"p","6":"p","6.1":"p","7":"p","7.1":"p","8":"p","9":"p","9.1":"p","10":"p","10.1":"p","TP":"p"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"a #1","16":"a #1","17":"a #1","18":"a #1","19":"a #1","20":"a #1","21":"a #1","22":"a #1","23":"a #1","24":"a #1","25":"a #1","26":"a #1","27":"a #1","28":"a #1","29":"a #1","30":"a #1","31":"a #1","32":"a #1","33":"a #1","34":"a #1","35":"a #1","36":"a #1","37":"a #1","38":"a #1","39":"a #1","40":"a #1","41":"a #1","42":"a #1","43":"a #1","44":"a #1","45":"a #1"},"ios_saf":{"3.2":"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"p","7.0-7.1":"p","8":"p","8.1-8.4":"p","9.0-9.2":"p","9.3":"p","10.0-10.2":"p"},"op_mini":{"all":"n"},"android":{"2.1":"p","2.2":"p","2.3":"p","3":"p","4":"p","4.1":"p","4.2-4.3":"p","4.4":"p","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"p","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"p"},"and_chr":{"56":"y"},"and_ff":{"51":"a #3"},"ie_mob":{"10":"p","11":"p"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"a #1"}},"notes":"While most commonly used on text fields, datalists can also be used on other input types. IE11 supports the element on `range` fields. Chrome and Opera also support datalists to suggest given values on `range`, `color` and date/time fields. ","notes_by_num":{"1":"Partial support refers to [a bug](https://code.google.com/p/chromium/issues/detail?id=375637) where long lists of items are unscrollable resulting in unselectable options.","2":"Partial support in IE refers to [significantly buggy behavior](http://playground.onereason.eu/2013/04/ie10s-lousy-support-for-datalists/) (IE11+ does send the input and change events upon selection). ","3":"Partial support refers to no support for datalists on non-text fields (e.g. number, [range](https://bugzilla.mozilla.org/show_bug.cgi?id=841942), [color](https://bugzilla.mozilla.org/show_bug.cgi?id=960984))."},"usage_perc_y":38.84,"usage_perc_a":40.4,"ucprefix":false,"parent":"forms","keywords":"list attribute","ie_id":"datalistelement","chrome_id":"6090950820495360","firefox_id":"","webkit_id":""},"dataset":{"title":"dataset & data-* attributes","description":"Method of applying and accessing custom data to elements.","spec":"https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes","status":"ls","links":[{"url":"http://html5doctor.com/html5-custom-data-attributes/","title":"HTML5 Doctor article"},{"url":"http://html5demos.com/dataset","title":"Demo using dataset"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/dom.js#dom-dataset","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/html/attributes/data-*","title":"WebPlatform Docs"},{"url":"https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dataset","title":"MDN Reference - dataset"},{"url":"https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes","title":"MDN Guide - Using data-* attributes"},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/15885483-support-dataset-and-data-attributes-on-svg-element","title":"MS Edge UserVoice #15885483: Support dataset and data attributes on SVG elements"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"a","6":"a","7":"a","8":"a","9":"a","10":"a","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"a","3":"a","3.5":"a","3.6":"a","4":"a","5":"a","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y #1","52":"y #1","53":"y #1","54":"y #1"},"chrome":{"4":"a","5":"a","6":"a","7":"y #1","8":"y #1","9":"y #1","10":"y #1","11":"y #1","12":"y #1","13":"y #1","14":"y #1","15":"y #1","16":"y #1","17":"y #1","18":"y #1","19":"y #1","20":"y #1","21":"y #1","22":"y #1","23":"y #1","24":"y #1","25":"y #1","26":"y #1","27":"y #1","28":"y #1","29":"y #1","30":"y #1","31":"y #1","32":"y #1","33":"y #1","34":"y #1","35":"y #1","36":"y #1","37":"y #1","38":"y #1","39":"y #1","40":"y #1","41":"y #1","42":"y #1","43":"y #1","44":"y #1","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y #1","56":"y #1","57":"y #1","58":"y #1","59":"y #1"},"safari":{"3.1":"a","3.2":"a","4":"a","5":"a","5.1":"y #1","6":"y #1","6.1":"y #1","7":"y #1","7.1":"y #1","8":"y #1","9":"y #1","9.1":"y #1","10":"y #1","10.1":"y #1","TP":"y #1"},"opera":{"9":"a","9.5-9.6":"a","10.0-10.1":"a","10.5":"a","10.6":"a","11":"a","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y #1","16":"y #1","17":"y #1","18":"y #1","19":"y #1","20":"y #1","21":"y #1","22":"y #1","23":"y #1","24":"y #1","25":"y #1","26":"y #1","27":"y #1","28":"y #1","29":"y #1","30":"y #1","31":"y #1","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y #1","43":"y #1","44":"y #1","45":"y #1"},"ios_saf":{"3.2":"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"y #1","6.0-6.1":"y #1","7.0-7.1":"y #1","8":"y #1","8.1-8.4":"y #1","9.0-9.2":"y #1","9.3":"y #1","10.0-10.2":"y #1"},"op_mini":{"all":"a"},"android":{"2.1":"a","2.2":"a","2.3":"a","3":"y #1","4":"y #1","4.1":"y #1","4.2-4.3":"y #1","4.4":"y #1","4.4.3-4.4.4":"y #1","53":"y #1"},"bb":{"7":"y #1","10":"y #1"},"op_mob":{"10":"a","11":"a","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y #1"},"and_chr":{"56":"y #1"},"and_ff":{"51":"y #1"},"ie_mob":{"10":"a","11":"y"},"and_uc":{"11":"y #1"},"samsung":{"4":"y #1"},"and_qq":{"1.2":"y"}},"notes":"Partial support refers to being able to use `data-*` attributes and access them using `getAttribute`. \r\n\r\n\"Supported\" refers to accessing the values using the `dataset` property. Current spec only refers to support on HTML elements, only some browsers also have support for SVG/MathML elements.","notes_by_num":{"1":"While the HTML spec doesn't require it, these browsers also support `dataset` and `data-*` attributes on SVG elements, in compliance with [current plans for SVG2](http://www.w3.org/2015/01/15-svg-minutes.html#item03)"},"usage_perc_y":93.59,"usage_perc_a":4.75,"ucprefix":false,"parent":"","keywords":"DOMStringMap","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-grid":{"title":"CSS Grid Layout","description":"Method of using a grid concept to lay out content, providing a mechanism for authors to divide available space for lay out into columns and rows using a set of predictable sizing behaviors","spec":"http://www.w3.org/TR/css3-grid-layout/","status":"cr","links":[{"url":"http://blogs.msdn.com/b/ie/archive/2011/04/14/ie10-platform-preview-and-css-features-for-adaptive-layouts.aspx","title":"IE Blog post"},{"url":"https://bugs.webkit.org/show_bug.cgi?id=60731","title":"Webkit (Chrome, Safari, etc.) feature request"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=616605","title":"Mozilla (Firefox) feature request"},{"url":"https://github.com/codler/Grid-Layout-Polyfill","title":"Polyfill based on old spec"},{"url":"https://github.com/FremyCompany/css-grid-polyfill/","title":"Polyfill based on new spec"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"p","10":"a x #2","11":"a x #2"},"edge":{"12":"a x #2","13":"a x #2","14":"a x #2","15":"a x #2"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"p","20":"p","21":"p","22":"p","23":"p","24":"p","25":"p","26":"p","27":"p","28":"p","29":"p","30":"p","31":"p","32":"p","33":"p","34":"p","35":"p","36":"p","37":"p","38":"p","39":"p","40":"p d #3","41":"p d #3","42":"p d #3","43":"p d #3","44":"p d #3","45":"p d #3","46":"p d #3","47":"p d #3","48":"p d #3","49":"p d #3","50":"p d #3","51":"p d #3","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"p","26":"p","27":"p","28":"p","29":"p d #1","30":"p d #1","31":"p d #1","32":"p d #1","33":"p d #1","34":"p d #1","35":"p d #1","36":"p d #1","37":"p d #1","38":"p d #1","39":"p d #1","40":"p d #1","41":"p d #1","42":"p d #1","43":"p d #1","44":"p d #1","45":"p d #1","46":"p d #1","47":"p d #1","48":"p d #1","49":"p d #1","50":"p d #1","51":"p d #1","52":"p d #1","53":"p d #1","54":"p d #1","55":"p d #1","56":"p d #1","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"p","6.1":"p","7":"p","7.1":"p","8":"p","9":"p","9.1":"p","10":"p","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"p d #1","29":"p d #1","30":"p d #1","31":"p d #1","32":"p d #1","33":"p d #1","34":"p d #1","35":"p d #1","36":"p d #1","37":"p d #1","38":"p d #1","39":"p d #1","40":"p d #1","41":"p d #1","42":"p d #1","43":"p d #1","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"p","7.0-7.1":"p","8":"p","8.1-8.4":"p","9.0-9.2":"p","9.3":"p","10.0-10.2":"p"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"p","4.4":"p","4.4.3-4.4.4":"p","53":"p"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"p"},"and_chr":{"56":"p"},"and_ff":{"51":"p"},"ie_mob":{"10":"a x #2","11":"a x #2"},"and_uc":{"11":"n"},"samsung":{"4":"p"},"and_qq":{"1.2":"p d #1"}},"notes":"Supported in WebKit Nightly with `-webkit-` prefix.","notes_by_num":{"1":"Enabled in Chrome through the \"experimental Web Platform features\" flag in chrome://flags","2":"Partial support in IE refers to supporting an [older version](http://www.w3.org/TR/2011/WD-css3-grid-layout-20110407/) of the specification.","3":"Enabled in Firefox through the `layout.css.grid.enabled ` flag"},"usage_perc_y":0.1,"usage_perc_a":6.25,"ucprefix":false,"parent":"","keywords":"grids,grid-row,grid-column,display:grid","ie_id":"grid","chrome_id":"4589636412243968","firefox_id":"grid-layout","webkit_id":"specification-css-grid-layout-level-1"},"menu":{"title":"Toolbar/context menu","description":"Method of defining a toolbar menu, a context menu or a list of (interactive) options using the <menu> element.","spec":"https://html.spec.whatwg.org/multipage/forms.html#the-menu-element","status":"ls","links":[{"url":"https://bug617528.bugzilla.mozilla.org/attachment.cgi?id=554309","title":"Demo"},{"url":"https://github.com/swisnl/jQuery-contextMenu","title":"jQuery polyfill"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/events.js#event-contextmenu","title":"has.js test"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=746087","title":"Bug on Firefox support"},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6508881-html5-menu-tag-contextmenu-attribute","title":"Microsoft Edge feature request on UserVoice"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"a #1","9":"a #1","10":"a #1","11":"a #1","12":"a #1","13":"a #1","14":"a #1","15":"a #1","16":"a #1","17":"a #1","18":"a #1","19":"a #1","20":"a #1","21":"a #1","22":"a #1","23":"a #1","24":"a #1","25":"a #1","26":"a #1","27":"a #1","28":"a #1","29":"a #1","30":"a #1","31":"a #1","32":"a #1","33":"a #1","34":"a #1","35":"a #1","36":"a #1","37":"a #1","38":"a #1","39":"a #1","40":"a #1","41":"a #1","42":"a #1","43":"a #1","44":"a #1","45":"a #1","46":"a #1","47":"a #1","48":"a #1","49":"a #1","50":"a #1","51":"a #1","52":"a #1","53":"a #1","54":"a #1"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n d #3","42":"n d #3","43":"n d #3","44":"n d #3","45":"n d #3","46":"n d #3","47":"n d #3","48":"n d #2","49":"n d #2","50":"n d #2","51":"n d #2","52":"n d #5","53":"n d #5","54":"n d #5","55":"n d #5","56":"n d #5","57":"n d #5","58":"n d #5","59":"n d #5"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n d #2","36":"n d #2","37":"n d #2","38":"n d #2","39":"n d #5","40":"n d #5","41":"n d #5","42":"n d #5","43":"n d #5","44":"n d #5","45":"n d #5"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"a #1 #4"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n d #5"}},"notes":"","notes_by_num":{"1":"Partial support in Firefox refers to being limited to context menus, not toolbar menus.","2":"Context menus supported in Chromium under the \"Experimental Web Platform features\" flag","3":"Context menus with a non-compliant syntax (`type=popup`) supported in Chromium under the \"Experimental Web Platform features\" flag","4":"Nested menus are not supported","5":"Context menus supported in Chromium with the \"enable-blink-features=ContextMenu\" command line flag"},"usage_perc_y":0,"usage_perc_a":6.65,"ucprefix":false,"parent":"","keywords":"contextmenu,menuitem,command","ie_id":"menuelement","chrome_id":"","firefox_id":"","webkit_id":""},"css-zoom":{"title":"CSS zoom","description":"Non-standard method of scaling content.","spec":"https://msdn.microsoft.com/en-us/library/ms531189(v=vs.85).aspx","status":"unoff","links":[{"url":"https://css-tricks.com/almanac/properties/z/zoom/","title":"CSS Tricks"},{"url":"https://docs.webplatform.org/wiki/css/properties/zoom","title":"WebPlatform Docs"},{"url":"https://msdn.microsoft.com/en-us/library/ms531189(v=vs.85).aspx","title":"MSDN Library"},{"url":"https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariCSSRef/Articles/StandardCSSProperties.html#//apple_ref/doc/uid/TP30001266-SW1","title":"Safari Developer Library"},{"url":"http://www.satzansatz.de/cssd/onhavinglayout.html","title":"Article explaining usage of zoom as the hack for fixing rendering bugs in IE6 and IE7."},{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/zoom","title":"Mozilla Developer Network"}],"categories":["CSS"],"stats":{"ie":{"5.5":"y","6":"y","7":"y","8":"y #1","9":"y #1","10":"y #1","11":"y #1"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"n"},"ie_mob":{"10":"y #1","11":"y #1"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Originally implemented only in Internet Explorer. Although several other browsers support the property, using `transform: scale()` is the recommended solution to scale content.","notes_by_num":{"1":"The `-ms-zoom` property is an extension to CSS, and can be used as a synonym for `zoom` in IE8 Standards mode."},"usage_perc_y":87.96,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"-ms-zoom,transform,-moz-transform,-ms-transform,-webkit-transform,-o-transform,scale,css-transforms","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"rem":{"title":"rem (root em) units","description":"Type of unit similar to `em`, but relative only to the root element, not any parent element. Thus compounding does not occur as it does with `em` units.","spec":"http://www.w3.org/TR/css3-values/#font-relative-lengths","status":"cr","links":[{"url":"http://snook.ca/archives/html_and_css/font-size-with-rem","title":"Article on usage"},{"url":"https://github.com/chuckcarpenter/REM-unit-polyfill","title":"REM Polyfill"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"a #1","10":"a #1","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"a #2","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"IE 9 & IE 10 do not support `rem` units when used in the `font` shorthand property (the entire declaration is ignored) or when used on pseudo elements.","2":"iOS Safari 5.0-5.1 support `rem` but not in combination with media queries."},"usage_perc_y":97.18,"usage_perc_a":0.53,"ucprefix":false,"parent":"","keywords":"rems","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"ttf":{"title":"TTF/OTF - TrueType and OpenType font support","description":"Support for the TrueType (.ttf) and OpenType (.otf) outline font formats in @font-face. ","spec":"http://developer.apple.com/fonts/TTRefMan/index.html","status":"other","links":[{"url":"http://stackoverflow.com/questions/17694143/what-is-the-status-of-ttf-support-in-internet-explorer","title":"What is the status of TTF support in Internet Explorer?"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"a #1","10":"a #1","11":"a #1"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"a #1","11":"a #1"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support in IE9+ refers to the fonts only working [when set to be \"installable\"](http://blogs.msdn.com/b/ie/archive/2010/07/15/the-css-corner-better-web-typography-for-better-design.aspx). Support for this is tracked [here](https://status.modern.ie/crossdomainfontloading)."},"usage_perc_y":89.49,"usage_perc_a":4.87,"ucprefix":false,"parent":"fontface","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"touch":{"title":"Touch events","description":"Method of registering when, where and how the interface is touched, for devices with a touch screen. These DOM events are similar to mousedown, mousemove, etc.","spec":"http://www.w3.org/TR/touch-events/","status":"rec","links":[{"url":"http://www.quirksmode.org/mobile/tableTouch.html","title":"Detailed support tables"},{"url":"http://www.quirksmode.org/m/tests/drag2.html","title":"Multi-touch demo"},{"url":"http://schepers.cc/getintouch","title":"Information on the spec development"},{"url":"http://msdn.microsoft.com/en-us/library/ie/hh673557(v=vs.85).aspx","title":"Internet Explorer's gesture and touch implementation."},{"url":"http://github.com/CamHenlin/TouchPolyfill","title":"Touch polyfill for supporting touch events on Internet Explorer"},{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Touch_events","title":"MDN \u2013 Touch events"}],"categories":["DOM","JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"p","11":"p"},"edge":{"12":"n d #3","13":"n d #3","14":"n d #3","15":"n d #3"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"a","5":"a","6":"a","7":"a","8":"a","9":"a","10":"a","11":"a","12":"a","13":"a","14":"a","15":"a","16":"a","17":"a","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"n d #1","26":"n d #1","27":"n d #1","28":"n d #1","29":"n d #1","30":"n d #1","31":"n d #1","32":"n d #1","33":"n d #1","34":"n d #1","35":"n d #1","36":"n d #1","37":"n d #1","38":"n d #1","39":"n d #1","40":"n d #1","41":"n d #1","42":"n d #1","43":"n d #1","44":"n d #1","45":"n d #1","46":"n d #1","47":"n d #1","48":"n d #1","49":"n d #1","50":"n d #1","51":"n d #1","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"p","11":"a #2"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Internet Explorer implements Pointer Events specification which supports more input devices than Touch Events one.\r\n\r\nThere is a library on GitHub that is working toward bringing W3C touch events to IE 10 and 11: https://github.com/CamHenlin/TouchPolyfill \r\n\r\nRemoved support in Firefox refers to desktop Firefox only.","notes_by_num":{"1":"Can be enabled in Firefox using the dom.w3c_touch_events.enabled flag (disabled by default for site compatibility reasons)","2":"Supported on IE11 Mobile for phones with \"[Windows Phone 8.1 Update](http://blogs.msdn.com/b/ie/archive/2014/07/31/the-mobile-web-should-just-work-for-everyone.aspx)\"","3":"Can be enabled in Edge using the \"Enable touch events\" flag under `about:flags`"},"usage_perc_y":78.65,"usage_perc_a":0.51,"ucprefix":false,"parent":"","keywords":"touchstart,touchend,touchmove,touchenter,touchleave,touchcancel","ie_id":"touchevents","chrome_id":"6156165603917824","firefox_id":"","webkit_id":""},"matchesselector":{"title":"matches() DOM method","description":"Method of testing whether or not a DOM element matches a given selector. Formerly known (and largely supported with prefix) as matchesSelector.","spec":"https://dom.spec.whatwg.org/#dom-element-matches","status":"ls","links":[{"url":"https://developer.mozilla.org/en/docs/Web/API/Element/matches","title":"MDN article"},{"url":"http://docs.webplatform.org/wiki/dom/HTMLElement/matches","title":"WebPlatform Docs"},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6524858-unprefix-and-update-msmatchesselector-to-matches","title":"Microsoft Edge feature request on UserVoice"}],"categories":["DOM","JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"a x","10":"a x","11":"a x"},"edge":{"12":"a x","13":"a x","14":"a x","15":"a x"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"a x","4":"a x","5":"a x","6":"a x","7":"a x","8":"a x","9":"a x","10":"a x","11":"a x","12":"a x","13":"a x","14":"a x","15":"a x","16":"a x","17":"a x","18":"a x","19":"a x","20":"a x","21":"a x","22":"a x","23":"a x","24":"a x","25":"a x","26":"a x","27":"a x","28":"a x","29":"a x","30":"a x","31":"a x","32":"a x","33":"a x","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a x","5":"a x","6":"a x","7":"a x","8":"a x","9":"a x","10":"a x","11":"a x","12":"a x","13":"a x","14":"a x","15":"a x","16":"a x","17":"a x","18":"a x","19":"a x","20":"a x","21":"a x","22":"a x","23":"a x","24":"a x","25":"a x","26":"a x","27":"a x","28":"a x","29":"a x","30":"a x","31":"a x","32":"a x","33":"a x","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"a x","5.1":"a x","6":"a x","6.1":"a x","7":"a x","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"a x","11.6":"a x","12":"a x","12.1":"a x","15":"a x","16":"a x","17":"a x","18":"a x","19":"a x","20":"a x","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"a x","4.2-4.3":"a x","5.0-5.1":"a x","6.0-6.1":"a x","7.0-7.1":"a x","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"a x","2.3":"a x","3":"a x","4":"a x","4.1":"a x","4.2-4.3":"a x","4.4":"a x","4.4.3-4.4.4":"a x","53":"y"},"bb":{"7":"a x","10":"a x"},"op_mob":{"10":"n","11":"n","11.1":"a x","11.5":"a x","12":"a x","12.1":"a x","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"a x","11":"a x"},"and_uc":{"11":"a x"},"samsung":{"4":"a x"},"and_qq":{"1.2":"y"}},"notes":"Partial support refers to supporting the older specification's \"matchesSelector\" name rather than just \"matches\".","notes_by_num":{},"usage_perc_y":71.15,"usage_perc_a":23.14,"ucprefix":false,"parent":"","keywords":" matchesSelector","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"pointer-events":{"title":"CSS pointer-events (for HTML)","description":"This CSS property, when set to \"none\" allows elements to not receive hover/click events, instead the event will occur on anything behind it. ","spec":"http://wiki.csswg.org/spec/css4-ui#pointer-events","status":"unoff","links":[{"url":"http://robertnyman.com/2010/03/22/css-pointer-events-to-allow-clicks-on-underlying-elements/","title":"Article & tutorial"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/css.js#css-pointerevents","title":"has.js test"},{"url":"https://github.com/kmewhort/pointer_events_polyfill","title":"Polyfill"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Already part of the SVG specification, and all SVG-supporting browsers appear to support the property on SVG elements.","notes_by_num":{},"usage_perc_y":93.58,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"pointerevents,pointer-events:none","ie_id":"csspointerevents","chrome_id":"","firefox_id":"","webkit_id":""},"blobbuilder":{"title":"Blob constructing","description":"Construct Blobs (binary large objects) either using the BlobBuilder API (deprecated) or the Blob constructor.","spec":"http://www.w3.org/TR/FileAPI/#constructorBlob","status":"wd","links":[{"url":"https://developer.mozilla.org/en/DOM/BlobBuilder","title":"MDN article on BlobBuilder"},{"url":"https://developer.mozilla.org/en-US/docs/DOM/Blob","title":"MDN article on Blobs"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"a x","7":"a x","8":"a x","9":"a x","10":"a x","11":"a x","12":"a x","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"a x","9":"a x","10":"a x","11":"a x","12":"a x","13":"a x","14":"a x","15":"a x","16":"a x","17":"a x","18":"a x","19":"a x","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"a x","4":"a x","4.1":"a x","4.2-4.3":"a x","4.4":"a x","4.4.3-4.4.4":"a x","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"a x"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Partial support refers to only supporting the now deprecated BlobBuilder to create blobs.","notes_by_num":{},"usage_perc_y":82.13,"usage_perc_a":11.67,"ucprefix":true,"parent":"fileapi","keywords":"","ie_id":"blob","chrome_id":"5328783104016384","firefox_id":"","webkit_id":""},"filereader":{"title":"FileReader API","description":"Method of reading the contents of a File or Blob object into memory","spec":"http://www.w3.org/TR/FileAPI/#dfn-filereader","status":"wd","links":[{"url":"https://developer.mozilla.org/en/DOM/FileReader","title":"FileReader API"},{"url":"http://docs.webplatform.org/wiki/apis/file/FileReader","title":"WebPlatform Docs"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"a #1","11":"a #1"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Does not support `readAsBinaryString`"},"usage_perc_y":89.73,"usage_perc_a":4.14,"ucprefix":false,"parent":"fileapi","keywords":"","ie_id":"filereader","chrome_id":"5171003185430528","firefox_id":"","webkit_id":""},"filesystem":{"title":"Filesystem & FileWriter API","description":"Method of reading and writing files to a sandboxed file system.","spec":"http://www.w3.org/TR/file-system-api/","status":"unoff","links":[{"url":"http://www.html5rocks.com/en/tutorials/file/filesystem/","title":"HTML5 Rocks tutorial"},{"url":"http://docs.webplatform.org/wiki/apis/filesystem","title":"WebPlatform Docs"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=997471","title":"Firefox tracking bug"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"a x","9":"a x","10":"a x","11":"a x","12":"a x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x","46":"y x","47":"y x","48":"y x","49":"y x","50":"y x","51":"y x","52":"y x","53":"y x","54":"y x","55":"y x","56":"y x","57":"y x","58":"y x","59":"y x"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"y x"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y x"},"and_chr":{"56":"y x"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"The File API: Directories and System specification is no longer being maintained and support may be dropped in future versions.","notes_by_num":{},"usage_perc_y":53.45,"usage_perc_a":0.04,"ucprefix":false,"parent":"","keywords":"filewriter,requestFileSystem","ie_id":"filewriter","chrome_id":"5452478162141184","firefox_id":"","webkit_id":""},"bloburls":{"title":"Blob URLs","description":"Method of creating URL handles to the specified File or Blob object.","spec":"http://www.w3.org/TR/FileAPI/#url","status":"wd","links":[{"url":"https://developer.mozilla.org/en/DOM/window.URL.createObjectURL","title":"MDN article"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"y x","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"y x","4.1":"y x","4.2-4.3":"y x","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"y"},"and_uc":{"11":"y x"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":93.65,"usage_perc_a":0,"ucprefix":false,"parent":"fileapi","keywords":"createobjecturl,revokeobjecturl","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"rellist":{"title":"relList (DOMTokenList)","description":"Method of easily manipulating rel attribute values on elements, using the DOMTokenList object (similar to classList).","spec":"https://html.spec.whatwg.org/multipage/semantics.html#dom-a-rellist","status":"ls","links":[{"url":"https://developer.mozilla.org/en-US/docs/DOM/DOMTokenList","title":"MDN - DOMTokenList"},{"url":"https://github.com/jwilsson/domtokenlist","title":"domtokenlist polyfill"}],"categories":["DOM","HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"a #1","51":"a #1","52":"a #1","53":"a #1","54":"a #1","55":"a #1","56":"a #1","57":"a #1","58":"a #1","59":"a #1"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"a #1","38":"a #1","39":"a #1","40":"a #1","41":"a #1","42":"a #1","43":"a #1","44":"a #1","45":"a #1"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"a #1"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"a #1"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{"1":"Chrome and Chromium based browsers support relList on link elements, but not anchor elements"},"usage_perc_y":17.91,"usage_perc_a":49.9,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"typedarrays":{"title":"Typed Arrays","description":"JavaScript typed arrays provide a mechanism for accessing raw binary data much more efficiently. Includes: `Int8Array`, `Uint8Array`, `Uint8ClampedArray`, `Int16Array`, `Uint16Array`, `Int32Array`, `Uint32Array`, `Float32Array` & `Float64Array`\r\n","spec":"http://www.ecma-international.org/ecma-262/6.0/#sec-typedarray-objects","status":"other","links":[{"url":"https://developer.mozilla.org/en/javascript_typed_arrays","title":"MDN article"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"a #1","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"a #2","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"a #2","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"a #1","11":"a #1"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Includes support for ArrayBuffer objects.","notes_by_num":{"1":"IE10 (and IE 10&11 mobile) does not support `Uint8ClampedArray`"},"usage_perc_y":96.53,"usage_perc_a":0.79,"ucprefix":false,"parent":"","keywords":"ES6,JavaScript,dataview,arraybuffer","ie_id":"typedarrayses6","chrome_id":"5135818813341696","firefox_id":"","webkit_id":""},"deviceorientation":{"title":"DeviceOrientation & DeviceMotion events","description":"API for detecting orientation and motion events from the device running the browser.","spec":"http://www.w3.org/TR/orientation-event/","status":"cr","links":[{"url":"http://www.html5rocks.com/en/tutorials/device/orientation/","title":"HTML5 Rocks tutorial"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/features.js#native-orientation","title":"has.js test"},{"url":"http://html5labs.interoperabilitybridges.com/prototypes/device-orientation-events/device-orientation-events/info","title":"DeviceOrientation implementation prototype for IE10"},{"url":"http://aurelio.audero.it/demo/device-orientation-api-demo.html","title":"Demo"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"a #1"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"p","4":"p","5":"p","6":"a","7":"a","8":"a","9":"a","10":"a","11":"a","12":"a","13":"a","14":"a","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a","46":"a","47":"a","48":"a","49":"a","50":"a","51":"a","52":"a","53":"a","54":"a"},"chrome":{"4":"n","5":"n","6":"n","7":"a","8":"a","9":"a","10":"a","11":"a","12":"a","13":"a","14":"a","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a","46":"a","47":"a","48":"a","49":"a","50":"a","51":"a","52":"a","53":"a","54":"a","55":"a","56":"a","57":"a","58":"a","59":"a"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a","8":"a","8.1-8.4":"a","9.0-9.2":"a","9.3":"a","10.0-10.2":"a"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"a","4":"a","4.1":"a","4.2-4.3":"a","4.4":"a","4.4.3-4.4.4":"a","53":"a"},"bb":{"7":"n","10":"a"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"y","12.1":"y","37":"a"},"and_chr":{"56":"a"},"and_ff":{"51":"a"},"ie_mob":{"10":"n","11":"y"},"and_uc":{"11":"a"},"samsung":{"4":"a"},"and_qq":{"1.2":"a"}},"notes":"Partial support refers to the lack of compassneedscalibration event. Partial support also refers to the lack of devicemotion event support for Chrome 30- and Opera. Opera Mobile 14 lost the ondevicemotion event support. Firefox 3.6, 4 and 5 support the non-standard [MozOrientation](https://developer.mozilla.org/en/DOM/MozOrientation) event.","notes_by_num":{"1":"`compassneedscalibration` supported in IE11 only for compatible devices with Windows 8.1+."},"usage_perc_y":2.03,"usage_perc_a":89.13,"ucprefix":false,"parent":"","keywords":"","ie_id":"deviceorientation,devicemotion","chrome_id":"5874690627207168,5556931766779904","firefox_id":"device-orientation","webkit_id":""},"script-defer":{"title":"defer attribute for external scripts","description":"The boolean defer attribute on script elements allows the external JavaScript file to run when the DOM is loaded, without delaying page load first.","spec":"https://html.spec.whatwg.org/multipage/scripting.html#attr-script-defer","status":"ls","links":[{"url":"https://developer.mozilla.org/en/HTML/Element/script#Attributes","title":"MDN article"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/script.js#script-defer","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/html/attributes/defer","title":"WebPlatform Docs"}],"categories":["DOM","HTML5"],"stats":{"ie":{"5.5":"a #1","6":"a #1","7":"a #1","8":"a #1","9":"a #1","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"y #2","3.6":"y #2","4":"y #2","5":"y #2","6":"y #2","7":"y #2","8":"y #2","9":"y #2","10":"y #2","11":"y #2","12":"y #2","13":"y #2","14":"y #2","15":"y #2","16":"y #2","17":"y #2","18":"y #2","19":"y #2","20":"y #2","21":"y #2","22":"y #2","23":"y #2","24":"y #2","25":"y #2","26":"y #2","27":"y #2","28":"y #2","29":"y #2","30":"y #2","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support in older IE refers to a buggy implementation (see issue).","2":"Deferred scripts may run after DOMContentLoaded - https://bugzilla.mozilla.org/show_bug.cgi?id=688580"},"usage_perc_y":93.91,"usage_perc_a":0.75,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"nav-timing":{"title":"Navigation Timing API","description":"API for accessing timing information related to navigation and elements.","spec":"http://www.w3.org/TR/navigation-timing/","status":"rec","links":[{"url":"https://developer.mozilla.org/en/API/navigationTiming","title":"MDN article"},{"url":"http://www.html5rocks.com/en/tutorials/webperformance/basics/","title":"HTML5 Rocks tutorial"},{"url":"http://docs.webplatform.org/wiki/apis/navigation_timing","title":"WebPlatform Docs"}],"categories":["DOM","JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"y","8.1-8.4":"n","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Removed in iOS 8.1 due to poor performance.","notes_by_num":{},"usage_perc_y":93.42,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"performance,performance.timing","ie_id":"navigationtimingapi","chrome_id":"5584144679567360","firefox_id":"","webkit_id":""},"audio-api":{"title":"Web Audio API","description":"High-level JavaScript API for processing and synthesizing audio","spec":"http://www.w3.org/TR/webaudio/","status":"wd","links":[{"url":"https://github.com/corbanbrook/audionode.js","title":"Polyfill to support Web Audio API in Firefox"},{"url":"http://docs.webplatform.org/wiki/apis/webaudio","title":"WebPlatform Docs"},{"url":"http://www.doboism.com/projects/webaudio-compatibility/","title":"Additional browser compatibility tests for specific features"},{"url":"https://github.com/g200kg/WAAPISim","title":"Polyfill to enable Web Audio API through Firefox Audio Data api or flash"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"y x","6.1":"y x","7":"y x","7.1":"y x","8":"y x","9":"y x","9.1":"y x","10":"y x","10.1":"y x","TP":"y x"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0-7.1":"y x","8":"y x","8.1-8.4":"y x","9.0-9.2":"y x","9.3":"y x","10.0-10.2":"y x"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Not all browsers with support for the Audio API also support media streams (e.g. microphone input). See the [getUserMedia/Streams API](/#feat=stream) data for support for that feature.\r\n\r\nFirefox versions < 25 support an alternative, deprecated audio API.\r\n\r\nChrome support [went through some changes](http://updates.html5rocks.com/2014/07/Web-Audio-Changes-in-m36) as of version 36.","notes_by_num":{},"usage_perc_y":77.4,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"web-audio,webaudio,AudioContext,AudioBuffer,AudioNode","ie_id":"webaudioapi","chrome_id":"6261718720184320","firefox_id":"webaudio","webkit_id":""},"css-regions":{"title":"CSS Regions","description":"Method of flowing content into multiple elements.","spec":"http://www.w3.org/TR/css3-regions/","status":"wd","links":[{"url":"http://html.adobe.com/webstandards/cssregions/","title":"Adobe demos and samples"},{"url":"http://msdn.microsoft.com/en-us/ie/hh272902#_CSSConnected","title":"IE10 developer guide info"},{"url":"http://docs.webplatform.org/wiki/css/atrules/@region","title":"WebPlatform Docs"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=674802","title":"Firefox feature request bug"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"a x #1","11":"a x #1"},"edge":{"12":"a x #1","13":"a x #1","14":"a x #1","15":"a x #1"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"a x","16":"a x","17":"a x","18":"a x","19":"n d","20":"n d","21":"n d","22":"n d","23":"n d","24":"n d","25":"n d","26":"n d","27":"n d","28":"n d","29":"n d","30":"n d","31":"n d","32":"n d","33":"n d","34":"n d","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n","55":"n","56":"n","57":"n","58":"n","59":"n"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"y x","7":"y x","7.1":"y x","8":"y x","9":"y x","9.1":"y x","10":"y x","10.1":"y x","TP":"y x"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"y x","8":"y x","8.1-8.4":"y x","9.0-9.2":"y x","9.3":"y x","10.0-10.2":"y x"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"n"},"ie_mob":{"10":"a x #1","11":"a x #1"},"and_uc":{"11":"y x"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{"1":"Support is limited to using an iframe as a content source with the `-ms-flow-into: flow_name;` and `-ms-flow-from: flow_name;` syntax."},"usage_perc_y":21.07,"usage_perc_a":6.28,"ucprefix":false,"parent":"","keywords":"","ie_id":"regions","chrome_id":"5655612935372800","firefox_id":"","webkit_id":""},"spellcheck-attribute":{"title":"Spellcheck attribute","description":"Attribute for `input`/`textarea` fields to enable/disable the browser's spellchecker.","spec":"https://html.spec.whatwg.org/multipage/interaction.html#spelling-and-grammar-checking","status":"ls","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/HTML/Controlling_spell_checking_in_HTML_formsControlling_spell_checking_in_HTML_forms","title":"MDN article"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"y","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a","8":"a","8.1-8.4":"a","9.0-9.2":"a","9.3":"a","10.0-10.2":"a"},"op_mini":{"all":"a"},"android":{"2.1":"a","2.2":"a","2.3":"a","3":"a","4":"a","4.1":"a","4.2-4.3":"a","4.4":"a","4.4.3-4.4.4":"a","53":"a"},"bb":{"7":"a","10":"y"},"op_mob":{"10":"a","11":"a","11.1":"a","11.5":"a","12":"a","12.1":"a","37":"a"},"and_chr":{"56":"a"},"and_ff":{"51":"a"},"ie_mob":{"10":"a","11":"a"},"and_uc":{"11":"a"},"samsung":{"4":"a"},"and_qq":{"1.2":"y"}},"notes":"The partial support in mobile browsers results from their OS generally having built-in spell checking instead of using the wavy underline to indicate misspelled words. `spellcheck=\"false\"` does not seem to have any effect in these browsers.\r\n\r\nBrowsers have different behavior in how they deal with spellchecking in combination with the the `lang` attribute. Generally spelling is based on the browser's language, not the language of the document.","notes_by_num":{},"usage_perc_y":42.95,"usage_perc_a":54.53,"ucprefix":false,"parent":"","keywords":"spelling","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"fullscreen":{"title":"Full Screen API","description":"API for allowing content (like a video or canvas element) to take up the entire screen.","spec":"https://fullscreen.spec.whatwg.org/","status":"ls","links":[{"url":"https://developer.mozilla.org/en/DOM/Using_full-screen_mode","title":"MDN article"},{"url":"http://jlongster.com/2011/11/21/canvas.html","title":"Blog post"},{"url":"http://hacks.mozilla.org/2012/01/using-the-fullscreen-api-in-web-browsers/","title":"Mozilla hacks article"},{"url":"http://docs.webplatform.org/wiki/dom/Element/requestFullscreen","title":"WebPlatform Docs"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"a x #3"},"edge":{"12":"a #3","13":"a #3","14":"a #3","15":"a #3"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"a x #1 #3","11":"a x #1 #3","12":"a x #1 #3","13":"a x #1 #3","14":"a x #1 #3","15":"a x #1 #3","16":"a x #1 #3","17":"a x #1 #3","18":"a x #1 #3","19":"a x #1 #3","20":"a x #1 #3","21":"a x #1 #3","22":"a x #1 #3","23":"a x #1 #3","24":"a x #1 #3","25":"a x #1 #3","26":"a x #1 #3","27":"a x #1 #3","28":"a x #1 #3","29":"a x #1 #3","30":"a x #1 #3","31":"a x #1 #3","32":"a x #1 #3","33":"a x #1 #3","34":"a x #1 #3","35":"a x #1 #3","36":"a x #1 #3","37":"a x #1 #3","38":"a x #1 #3","39":"a x #1 #3","40":"a x #1 #3","41":"a x #1 #3","42":"a x #1 #3","43":"a x #1 #3","44":"a x #1 #3","45":"a x #1 #3","46":"a x #1 #3","47":"a x #1 #3 #4","48":"a x #1 #3 #4","49":"a x #1 #3 #4","50":"a x #1 #3 #4","51":"a x #1 #3 #4","52":"a x #1 #3 #4","53":"a x #1 #3 #4","54":"a x #1 #3 #4"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"a x #1 #3","16":"a x #1 #3","17":"a x #1 #3","18":"a x #1 #3","19":"a x #1 #3","20":"a x #2 #3","21":"a x #2 #3","22":"a x #2 #3","23":"a x #2 #3","24":"a x #2 #3","25":"a x #2 #3","26":"a x #2 #3","27":"a x #2 #3","28":"a x #2 #3","29":"a x #2 #3","30":"a x #2 #3","31":"a x #2 #3","32":"a x #2 #3","33":"a x #2 #3","34":"a x #2 #3","35":"a x #2 #3","36":"a x #2 #3","37":"a x #2 #3","38":"a x #2 #3","39":"a x #2 #3","40":"a x #2 #3","41":"a x #2 #3","42":"a x #2 #3","43":"a x #2 #3","44":"a x #2 #3","45":"a x #2 #3","46":"a x #2 #3","47":"a x #2 #3","48":"a x #2 #3","49":"a x #2 #3","50":"a x #2 #3","51":"a x #2 #3","52":"a x #2 #3","53":"a x #2 #3","54":"a x #2 #3","55":"a x #2 #3","56":"a x #2 #3","57":"a x #2 #3","58":"a x #2 #3","59":"a x #2 #3"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"a x #1 #3","6":"a x #2 #3","6.1":"a x #2 #3","7":"a x #2 #3","7.1":"a x #2 #3","8":"a x #2 #3","9":"a x #2 #3","9.1":"a x #2 #3","10":"a x #2 #3","10.1":"a x #2 #3","TP":"a x #2 #3"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"y","15":"a x #2 #3","16":"a x #2 #3","17":"a x #2 #3","18":"a x #2 #3","19":"a x #2 #3","20":"a x #2 #3","21":"a x #2 #3","22":"a x #2 #3","23":"a x #2 #3","24":"a x #2 #3","25":"a x #2 #3","26":"a x #2 #3","27":"a x #2 #3","28":"a x #2 #3","29":"a x #2 #3","30":"a x #2 #3","31":"a x #2 #3","32":"a x #2 #3","33":"a x #2 #3","34":"a x #2 #3","35":"a x #2 #3","36":"a x #2 #3","37":"a x #2 #3","38":"a x #2 #3","39":"a x #2 #3","40":"a x #2 #3","41":"a x #2 #3","42":"a x #2 #3","43":"a x #2 #3","44":"a x #2 #3","45":"a x #2 #3"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"a x #2"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"a x #2 #3"},"and_chr":{"56":"a x #2 #3"},"and_ff":{"51":"a x #1 #3 #4"},"ie_mob":{"10":"n","11":"a x #3"},"and_uc":{"11":"n"},"samsung":{"4":"a x #2 #3"},"and_qq":{"1.2":"a x #2 #3"}},"notes":"","notes_by_num":{"1":"Partial support refers to supporting an earlier draft of the spec.","2":"Partial support refers to not supporting `::backdrop`, and supporting the old `:full-screen` syntax rather than the standard `:fullscreen`.","3":"Partial support refers to not returning a Promise, as specified in the latest version of the spec.","4":"Unprefixed support is available behind the `full-screen-api.unprefix.enabled` flag"},"usage_perc_y":0.08,"usage_perc_a":71.89,"ucprefix":false,"parent":"","keywords":"full-screen","ie_id":"fullscreenapi","chrome_id":"5259513871466496","firefox_id":"fullscreen","webkit_id":""},"css-exclusions":{"title":"CSS Exclusions Level 1","description":"Exclusions defines how inline content flows around elements. It extends the content wrapping ability of floats to any block-level element.","spec":"http://www.w3.org/TR/css3-exclusions/","status":"wd","links":[{"url":"https://msdn.microsoft.com/en-us/library/ie/hh673558(v=vs.85).aspx","title":"CSS Exclusions"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=674804","title":"Firefox tracking bug"},{"url":"https://bugs.webkit.org/show_bug.cgi?id=57311","title":"WebKit tracking bug"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y x","11":"y x"},"edge":{"12":"y x","13":"y x","14":"y x","15":"y x"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n","55":"n","56":"n","57":"n","58":"n","59":"n"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"n"},"ie_mob":{"10":"y x","11":"y x"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{},"usage_perc_y":6.25,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"floats,exclusions,wrap-flow,wrap-through","ie_id":"exclusions","chrome_id":"6296903092273152","firefox_id":"","webkit_id":""},"requestanimationframe":{"title":"requestAnimationFrame","description":"API allowing a more efficient way of running script-based animation, compared to traditional methods using timeouts. Also covers support for `cancelAnimationFrame`","spec":"https://html.spec.whatwg.org/multipage/webappapis.html#animation-frames","status":"ls","links":[{"url":"http://paulirish.com/2011/requestanimationframe-for-smart-animating/","title":"Blog post"},{"url":"http://hacks.mozilla.org/2011/08/animating-with-javascript-from-setinterval-to-requestanimationframe/","title":"Mozilla Hacks article"},{"url":"http://docs.webplatform.org/wiki/dom/Window/requestAnimationFrame","title":"WebPlatform Docs"},{"url":"https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame","title":"MDN Docs"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"a x #1","5":"a x #1","6":"a x #1","7":"a x #1","8":"a x #1","9":"a x #1","10":"a x #1","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"a x #1 #2","11":"a x #1 #2","12":"a x #1 #2","13":"a x #1 #2","14":"a x #1 #2","15":"a x #1 #2","16":"a x #1 #2","17":"a x #1 #2","18":"a x #1","19":"a x #1","20":"a x #1","21":"a x #1","22":"y x","23":"y x","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"y x","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support refers to lacking `cancelAnimationFrame` support.","2":"Supports `webkitCancelRequestAnimationFrame` rather than `webkitCancelAnimationFrame."},"usage_perc_y":92.82,"usage_perc_a":0.17,"ucprefix":false,"parent":"","keywords":"","ie_id":"requestanimationframe","chrome_id":"5233400470306816","firefox_id":"","webkit_id":""},"input-range":{"title":"Range input type","description":"Form field type that allows the user to select a value using a slider widget.","spec":"https://html.spec.whatwg.org/multipage/forms.html#range-state-(type=range)","status":"ls","links":[{"url":"https://github.com/fryn/html5slider","title":"Polyfill for Firefox"},{"url":"https://github.com/freqdec/fd-slider","title":"Cross-browser polyfill"},{"url":"http://tutorialzine.com/2011/12/what-you-need-to-know-html5-range-input/","title":"Tutorial"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/form.js#input-type-range","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/html/elements/input/type/range","title":"WebPlatform Docs"},{"url":"https://github.com/andreruffert/rangeslider.js","title":"rangeslider.js polyfill"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"a","2.2":"a","2.3":"a","3":"a","4":"a","4.1":"a","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Currently all Android browsers with partial support hide the slider input field by default. However, the element [can be styled](http://tiffanybbrown.com/2012/02/07/input-typerange-and-androids-stock-browser/) to be made visible and usable.","notes_by_num":{},"usage_perc_y":93.67,"usage_perc_a":0.22,"ucprefix":false,"parent":"forms","keywords":"input type=\"range\"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"matchmedia":{"title":"matchMedia","description":"API for finding out whether or not a media query applies to the document.","spec":"http://www.w3.org/TR/cssom-view/#dom-window-matchmedia","status":"wd","links":[{"url":"https://github.com/paulirish/matchMedia.js/","title":"matchMedia.js polyfill"},{"url":"https://developer.mozilla.org/en/DOM/window.matchMedia","title":"MDN article"},{"url":"https://developer.mozilla.org/en/CSS/Using_media_queries_from_code","title":"MDN tutorial"},{"url":"http://docs.webplatform.org/wiki/css/media_queries/apis/matchMedia","title":"WebPlatform Docs"}],"categories":["DOM","JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":97.29,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"mediaquerylist","ie_id":"matchmedia","chrome_id":"4677872220372992","firefox_id":"","webkit_id":""},"input-datetime":{"title":"Date and time input types","description":"Form field widget to easily allow users to enter a date, time or both, generally by using a calendar/time input widget.","spec":"https://html.spec.whatwg.org/multipage/forms.html#date-state-(type=date)","status":"ls","links":[{"url":"http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-cross-browser-datepickers-within-minutes/","title":"Datepicker tutorial w/polyfill"},{"url":"https://github.com/zoltan-dulac/html5Forms.js","title":"Polyfill for HTML5 forms"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/form.js#input-type-datetime-local","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/html/elements/input/type/date","title":"WebPlatform Docs"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=888320","title":"Bug on Firefox support"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"a #1","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n d #4"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"a #2","6.0-6.1":"a #2","7.0-7.1":"a #2","8":"a #2","8.1-8.4":"a #2","9.0-9.2":"a #2","9.3":"a #2","10.0-10.2":"a #2"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n #3","4.1":"n #3","4.2-4.3":"n #3","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Older versions of Safari provide date-formatted text fields, but no real calendar widget.\r\n\r\nChrome, Opera, and Microsoft Edge also support the `datetime-local` type for both date and time.\r\n\r\nThere used to also be a `datetime` type, but it was [dropped from the HTML spec](https://github.com/whatwg/html/issues/336) since only Presto ever fully supported it.","notes_by_num":{"1":"Partial support in Microsoft Edge refers to supporting `date`, `week`, and `month` input types, and not `time` and `datetime-local`.","2":"Partial support in iOS Safari refers to not supporting `min`, `max` or `step` attributes","3":"Some modified versions of the Android 4.x browser do have support for date/time fields.","4":"Can be enabled in Firefox using the `dom.forms.datetime` flag."},"usage_perc_y":69.56,"usage_perc_a":10.01,"ucprefix":false,"parent":"forms","keywords":"datepicker,timepicker,input type=\"date\",input type=\"time\",input date,datetime-local","ie_id":"daterelatedinputtypes,timerelatedinputtypes","chrome_id":"6640933999214592","firefox_id":"","webkit_id":""},"document-execcommand":{"title":"Document.execCommand()","description":"Allows running commands to manipulate the contents of an editable region in a document switched to designMode","spec":"https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html#execcommand()","status":"unoff","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand","title":"MDN"},{"url":"http://codepen.io/netsi1964/pen/QbLLGW","title":"execCommand and queryCommandSupported demo"}],"categories":["JS API"],"stats":{"ie":{"5.5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"u","3.2":"u","4":"u","5":"u","5.1":"u","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"u","9.5-9.6":"u","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"u","5.0-5.1":"u","6.0-6.1":"u","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"n"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"y"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"To determine what commands are supported, see `Document.queryCommandSupported()`","notes_by_num":{},"usage_perc_y":85.48,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"document,text,editor,commands,designMode","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"input-color":{"title":"Color input type","description":"Form field allowing the user to select a color.","spec":"https://html.spec.whatwg.org/multipage/forms.html#color-state-(type=color)","status":"ls","links":[{"url":"http://www.html5tutorial.info/html5-color.php","title":"Tutorial"},{"url":"https://github.com/jonstipe/color-polyfill","title":"Polyfill"},{"url":"http://docs.webplatform.org/wiki/html/elements/input/type/color","title":"WebPlatform Docs"},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6514216--input-type-color","title":"Microsoft Edge feature request on UserVoice"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"n","16":"n","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"a"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":66.8,"usage_perc_a":8.94,"ucprefix":false,"parent":"forms","keywords":"colour,input type=\"color\"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"input-number":{"title":"Number input type","description":"Form field type for numbers.","spec":"https://html.spec.whatwg.org/multipage/forms.html#number-state-(type=number)","status":"ls","links":[{"url":"http://www.html5tutorial.info/html5-number.php","title":"Tutorial"},{"url":"https://github.com/jonstipe/number-polyfill","title":"Polyfill"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/form.js#input-type-number","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/html/elements/input/type/number","title":"WebPlatform Docs"},{"url":"https://www.slightfuture.com/webdev/html5-input-number-localization","title":"Poor browser support for localized decimal marks, commas"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y #1","11":"y #1"},"edge":{"12":"y #1","13":"y #1","14":"y #4","15":"y #4"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"y #3","30":"y #3","31":"y #3","32":"y #3","33":"y #3","34":"y #3","35":"y #3","36":"y #3","37":"y #3","38":"y #3","39":"y #3","40":"y #3","41":"y #3","42":"y #3","43":"y #3","44":"y #3","45":"y #3","46":"y #3","47":"y #3","48":"y #3","49":"y #3","50":"y #3","51":"y #3","52":"y #3","53":"y #3","54":"y #3"},"chrome":{"4":"n","5":"n","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"a #1 #2","4.0-4.1":"a #1 #2","4.2-4.3":"a #1 #2","5.0-5.1":"a #1 #2","6.0-6.1":"a #1 #2","7.0-7.1":"a #1 #2","8":"a #1 #2","8.1-8.4":"a #1 #2","9.0-9.2":"a #1 #2","9.3":"a #1 #2","10.0-10.2":"a #1 #2"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"a #1 #2","4.1":"a #1 #2","4.2-4.3":"a #1 #2","4.4":"a #1 #2","4.4.3-4.4.4":"a #1 #2","53":"a #1 #2"},"bb":{"7":"n","10":"a #1 #2"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"a #1 #2"},"and_chr":{"56":"a #1 #2"},"and_ff":{"51":"y #1 #3"},"ie_mob":{"10":"a #1 #2","11":"a #1 #2"},"and_uc":{"11":"a #1 #2"},"samsung":{"4":"a #1 #2"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"UI widget does not include increment/decrement buttons.","2":"UI widget does not take the \"step\", \"min\" or \"max\" attributes into account.","3":"Firefox doesn't support [autocomplete content via datalist](http://codepen.io/graste/pen/bNoVKW) elements.","4":"Does not include increment/decrement buttons, but does supports increment/decrement via arrow up & down keys."},"usage_perc_y":42.71,"usage_perc_a":51.01,"ucprefix":false,"parent":"forms","keywords":"spinner,input type=\"number\"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"getboundingclientrect":{"title":"Element.getBoundingClientRect()","description":"Method to get the size and position of an element's bounding box, relative to the viewport.","spec":"http://www.w3.org/TR/cssom-view/#dom-element-getboundingclientrect","status":"wd","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect","title":"Mozilla Developer Network"},{"url":"https://msdn.microsoft.com/en-us/library/ms536433(VS.85).aspx","title":"Microsoft Developer Network"}],"categories":["JS API"],"stats":{"ie":{"5.5":"a #1 #3","6":"a #1 #3","7":"a #1 #3","8":"a #1 #3","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"a #1 #4","3.5":"a #2 #4","3.6":"a #2 #3 #4","4":"a #2","5":"a #2","6":"a #2","7":"a #2","8":"a #2","9":"a #2","10":"a #2","11":"a #2","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"u","3.2":"u","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"u","9.5-9.6":"u","10.0-10.1":"a #1","10.5":"a #1","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"u","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"u","2.2":"u","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"a #1","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"The returned object lacks `width` and `height` properties.","2":"Returns incorrect values for elements which have had CSS `transform`s applied to them.","3":"The returned object cannot have new properties added to it; it's not extensible.","4":"Existing properties of the returned object are immutable."},"usage_perc_y":97.67,"usage_perc_a":0.63,"ucprefix":false,"parent":"","keywords":"getBoundingClientRect,bounding,client,rect,DOMRect,box,cssom","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"iframe-sandbox":{"title":"sandbox attribute for iframes","description":"Method of running external site pages with reduced privileges (e.g. no JavaScript) in iframes.","spec":"https://html.spec.whatwg.org/multipage/embedded-content.html#attr-iframe-sandbox","status":"ls","links":[{"url":"http://blog.chromium.org/2010/05/security-in-depth-html5s-sandbox.html","title":"Chromium blog article"},{"url":"http://msdn.microsoft.com/en-us/hh563496","title":"MSDN article"},{"url":"http://docs.webplatform.org/wiki/html/attributes/sandbox","title":"WebPlatform Docs"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":93.62,"usage_perc_a":0.16,"ucprefix":false,"parent":"","keywords":"","ie_id":"iframesandboxattribute","chrome_id":"5715536319086592","firefox_id":"","webkit_id":""},"css-counters":{"title":"CSS Counters","description":"Method of controlling number values in generated content, using the `counter-reset` and `counter-increment` properties.","spec":"http://www.w3.org/TR/CSS21/generate.html#counters","status":"rec","links":[{"url":"http://onwebdev.blogspot.com/2012/02/css-counters-tutorial.html","title":"Tutorial and information"},{"url":"https://developer.mozilla.org/en/CSS_Counters","title":"MDN article"},{"url":"http://docs.webplatform.org/wiki/css/properties/counter-reset","title":"WebPlatform Docs"}],"categories":["CSS2"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"y","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"y","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":98.28,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-resize":{"title":"CSS resize property","description":"Method of allowing an element to be resized by the user, with options to limit to a given direction. ","spec":"http://www.w3.org/TR/css3-ui/#resize","status":"cr","links":[{"url":"http://css-tricks.com/almanac/properties/r/resize/","title":"CSS Tricks info"},{"url":"http://davidwalsh.name/textarea-resize","title":"On textarea resizing"},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6513977-css-resize-property","title":"Microsoft Edge feature request on UserVoice"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"y x","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"a #1","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Presto-based Opera 12.10+ currently only supports the resize property for textarea elements."},"usage_perc_y":62.54,"usage_perc_a":0.08,"ucprefix":false,"parent":"","keywords":"horizontal,vertical","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"input-placeholder":{"title":"input placeholder attribute","description":"Method of setting placeholder text for text-like input fields, to suggest the expected inserted information.","spec":"https://html.spec.whatwg.org/multipage/forms.html#attr-input-placeholder","status":"ls","links":[{"url":"http://www.zachleat.com/web/placeholder/","title":"Article on usage"},{"url":"https://github.com/mathiasbynens/jquery-placeholder","title":"Polyfill"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/form.js#input-attr-placeholder","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/html/attributes/placeholder","title":"WebPlatform Docs"},{"url":"https://code.google.com/p/android/issues/detail?id=24626","title":"Issue 24626: Placeholder text for an input type="}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"a #1","3.2":"a #1","4":"a #1","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"a #1","11.1":"a #1","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"a","4.1":"a","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support refers to lacking placeholder support on textarea elements."},"usage_perc_y":97.21,"usage_perc_a":0.26,"ucprefix":false,"parent":"forms","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"spdy":{"title":"SPDY protocol","description":"Networking protocol for low-latency transport of content over the web. Superseded by HTTP version 2.","spec":"http://http2.github.io/http2-spec/index.html","status":"unoff","links":[{"url":"http://en.wikipedia.org/wiki/HTTP/2","title":"Wikipedia"},{"url":"http://dev.chromium.org/spdy/spdy-whitepaper","title":"SPDY whitepaper"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"y"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"n","52":"n","53":"n","54":"n"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"n","52":"n","53":"n","54":"n","55":"n","56":"n","57":"n","58":"n","59":"n"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"n","41":"n","42":"y","43":"n","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"y","37":"y"},"and_chr":{"56":"n"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"y"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"n"}},"notes":"See also support for [HTTP2](http://caniuse.com/#feat=http2), successor of SPDY.\r\n\r\nChrome will be removing support in 2016 (in favor of HTTP2), other browsers likely to follow.","notes_by_num":{},"usage_perc_y":32.59,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"http2","chrome_id":"5152586365665280","firefox_id":"","webkit_id":""},"css-repeating-gradients":{"title":"CSS Repeating Gradients","description":"Method of defining a repeating linear or radial color gradient as a CSS image.","spec":"http://www.w3.org/TR/css3-images/#repeating-gradients","status":"cr","links":[{"url":"https://developer.mozilla.org/en/CSS/repeating-linear-gradient","title":"MDN article"},{"url":"http://www.css3files.com/gradient/#repeatinglineargradient","title":"Information page"},{"url":"http://docs.webplatform.org/wiki/css/repeating-linear-gradient","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"y x","4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"y x","6":"y x","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"a x","11.5":"a x","11.6":"y x","12":"y x","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"y x","4.1":"y x","4.2-4.3":"y x","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"a x","11.5":"a x","12":"y x","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y x"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Firefox 10+, Chrome 26+ and Opera 11.6+ also support the new \"to (side)\" syntax.","notes_by_num":{},"usage_perc_y":93.9,"usage_perc_a":0.01,"ucprefix":false,"parent":"css-gradients","keywords":"repeating-linear-gradient,repeating-radial-gradient","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-filters":{"title":"CSS Filter Effects","description":"Method of applying filter effects (like blur, grayscale, brightness, contrast and hue) to elements, previously only possible by using SVG.","spec":"http://www.w3.org/TR/filter-effects-1/","status":"wd","links":[{"url":"http://html5-demos.appspot.com/static/css/filters/index.html","title":"Demo file for WebKit browsers"},{"url":"http://www.html5rocks.com/en/tutorials/filters/understanding-css/","title":"HTML5Rocks article"},{"url":"http://dl.dropbox.com/u/3260327/angular/CSS3ImageManipulation.html","title":"Filter editor"},{"url":"http://bennettfeely.com/filters/","title":"Filter Playground"}],"categories":["CSS","CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n d #2 #4","13":"a #4","14":"a #4","15":"a #4"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"a #3","4":"a #3","5":"a #3","6":"a #3","7":"a #3","8":"a #3","9":"a #3","10":"a #3","11":"a #3","12":"a #3","13":"a #3","14":"a #3","15":"a #3","16":"a #3","17":"a #3","18":"a #3","19":"a #3","20":"a #3","21":"a #3","22":"a #3","23":"a #3","24":"a #3","25":"a #3","26":"a #3","27":"a #3","28":"a #3","29":"a #3","30":"a #3","31":"a #3","32":"a #3","33":"a #3","34":"a d #1","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x","46":"y x","47":"y x","48":"y x","49":"y x","50":"y x","51":"y x","52":"y x","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"y x","6.1":"y x","7":"y x","7.1":"y x","8":"y x","9":"y x","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0-7.1":"y x","8":"y x","8.1-8.4":"y x","9.0-9.2":"y x","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y x","4.4.3-4.4.4":"y x","53":"y"},"bb":{"7":"n","10":"y x"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y x"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y x"},"samsung":{"4":"y x"},"and_qq":{"1.2":"y x"}},"notes":"Note that this property is significantly different from and incompatible with Microsoft's [older \"filter\" property](http://msdn.microsoft.com/en-us/library/ie/ms530752%28v=vs.85%29.aspx).","notes_by_num":{"1":"Supported in Firefox under the `layout.css.filters.enabled` flag.","2":"Supported in MS Edge under the \"Enable CSS filter property\" flag.","3":"Partial support in Firefox before version 34 [only implemented the url() function of the filter property](https://developer.mozilla.org/en-US/docs/Web/CSS/filter#Browser_compatibility)","4":"Partial support refers to supporting filter functions, but not the `url` function."},"usage_perc_y":86.29,"usage_perc_a":2,"ucprefix":false,"parent":"","keywords":"sepia,hue-rotate,invert,saturate,filter:blur","ie_id":"filters","chrome_id":"5822463824887808","firefox_id":"","webkit_id":""},"getcomputedstyle":{"title":"getComputedStyle","description":"API to get the current computed CSS styles applied to an element. This may be the current value applied by an animation or as set by a stylesheet.","spec":"http://www.w3.org/TR/cssom/#dom-window-getcomputedstyle","status":"rec","links":[{"url":"https://developer.mozilla.org/en/DOM/window.getComputedStyle","title":"MDN article"},{"url":"http://ie.microsoft.com/testdrive/HTML5/getComputedStyle/","title":"Demo"},{"url":"http://snipplr.com/view/13523/","title":"Polyfill for IE"},{"url":"http://docs.webplatform.org/wiki/css/cssom/methods/getComputedStyle","title":"WebPlatform Docs"}],"categories":["CSS3","DOM","JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"a #1","3.5":"a #1","3.6":"a #1","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a #2","5":"a #2","6":"a #2","7":"a #2","8":"a #2","9":"a #2","10":"a #2","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"a #2","3.2":"a #2","4":"a #2","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"a #2","9.5-9.6":"a #2","10.0-10.1":"a #2","10.5":"a #2","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"a #2","4.0-4.1":"a #2","4.2-4.3":"a #2","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"a #2"},"android":{"2.1":"a #2","2.2":"a #2","2.3":"a #2","3":"a #2","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"a #2","10":"y"},"op_mob":{"10":"a #2","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support refers to requiring the second parameter to be included.","2":"Partial support refers to not supporting getComputedStyle on pseudo-elements."},"usage_perc_y":94.21,"usage_perc_a":3.63,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"mp3":{"title":"MP3 audio format","description":"Popular lossy audio compression format","spec":"http://mpgedit.org/mpgedit/mpeg_format/MP3Format.html","status":"other","links":[{"url":"https://en.wikipedia.org/wiki/MP3","title":"Wikipedia"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"a #1","3.6":"a #1","4":"a #1","5":"a #1","6":"a #1","7":"a #1","8":"a #1","9":"a #1","10":"a #1","11":"a #1","12":"a #1","13":"a #1","14":"a #1","15":"a #1","16":"a #1","17":"a #1","18":"a #1","19":"a #1","20":"a #1","21":"a #1","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Support refers to use using the `audio` element, not other conditions.","notes_by_num":{"1":"Partial support in older Firefox refers to being limited to certain operating systems."},"usage_perc_y":93.99,"usage_perc_a":0.21,"ucprefix":false,"parent":"audio","keywords":"mpeg","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"word-break":{"title":"CSS3 word-break","description":"Property to prevent or allow words to be broken over multiple lines between letters.","spec":"http://www.w3.org/TR/css3-text/#word-break","status":"wd","links":[{"url":"https://developer.mozilla.org/en/CSS/word-break","title":"MDN article"},{"url":"http://docs.webplatform.org/wiki/css/properties/word-break","title":"WebPlatform Docs"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a","5":"a","6":"a","7":"a","8":"a","9":"a","10":"a","11":"a","12":"a","13":"a","14":"a","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"a","3.2":"a","4":"a","5":"a","5.1":"a","6":"a","6.1":"a","7":"a","7.1":"a","8":"a","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"a","16":"a","17":"a","18":"a","19":"a","20":"a","21":"a","22":"a","23":"a","24":"a","25":"a","26":"a","27":"a","28":"a","29":"a","30":"a","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a","8":"a","8.1-8.4":"a","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"a","2.2":"a","2.3":"a","3":"a","4":"a","4.1":"a","4.2-4.3":"a","4.4":"a","4.4.3-4.4.4":"a","53":"y"},"bb":{"7":"a","10":"a"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"a"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"a"},"samsung":{"4":"y"},"and_qq":{"1.2":"a"}},"notes":"Partial support refers to supporting the `break-all` value, but not the `keep-all` value.\r\n\r\nChrome, Safari and other WebKit/Blink browsers also support the unofficial `break-word` value which is treated like `word-wrap: break-word`.","notes_by_num":{},"usage_perc_y":80.85,"usage_perc_a":13.73,"ucprefix":false,"parent":"","keywords":"break-all,keep-all","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"viewport-units":{"title":"Viewport units: vw, vh, vmin, vmax","description":"Length units representing 1% of the viewport size for viewport width (vw), height (vh), the smaller of the two (vmin), or the larger of the two (vmax).","spec":"http://www.w3.org/TR/css3-values/#viewport-relative-lengths","status":"cr","links":[{"url":"http://css-tricks.com/viewport-sized-typography/","title":"Blog post"},{"url":"https://github.com/saabi/vminpoly","title":"Polyfill"},{"url":"https://github.com/rodneyrehm/viewport-units-buggyfill","title":"Buggyfill - Polyfill that fixes buggy support"},{"url":"http://blog.rodneyrehm.de/archives/34-iOS7-Mobile-Safari-And-Viewport-Units.html","title":"Back-Forward issue blog post"},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6514497-vmax-unit","title":"Microsoft Edge feature request on UserVoice"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"a #1","10":"a #2","11":"a #2"},"edge":{"12":"a #2","13":"a #2","14":"a #2","15":"a #2"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"a #2","21":"a #2","22":"a #2","23":"a #2","24":"a #2","25":"a #2","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"a #2","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"a #2 #3","7.0-7.1":"a #3","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"a #2","11":"a #2"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support in IE9 refers to supporting \"vm\" instead of \"vmin\".","2":"Partial support refers to not supporting the \"vmax\" unit. ","3":"Partial support in iOS7 is due to buggy behavior of the \"vh\" unit (see workarounds: [1](https://gist.github.com/pburtchaell/e702f441ba9b3f76f587), [2](https://gist.github.com/BenMorel/e9e34c08360ebbbd0634))."},"usage_perc_y":77.17,"usage_perc_a":6.9,"ucprefix":false,"parent":"","keywords":"vm,viewport-percentage","ie_id":"cssvmaxunit","chrome_id":"","firefox_id":"","webkit_id":""},"contentsecuritypolicy":{"title":"Content Security Policy 1.0","description":"Mitigate cross-site scripting attacks by whitelisting allowed sources of script, style, and other resources.","spec":"http://www.w3.org/TR/2012/CR-CSP-20121115/","status":"cr","links":[{"url":"http://html5rocks.com/en/tutorials/security/content-security-policy/","title":"HTML5Rocks article"},{"url":"http://content-security-policy.com/","title":"CSP Examples & Quick Reference"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"a #1","11":"a #1"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"y #1","5":"y #1","6":"y #1","7":"y #1","8":"y #1","9":"y #1","10":"y #1","11":"y #1","12":"y #1","13":"y #1","14":"y #1","15":"y #1","16":"y #1","17":"y #1","18":"y #1","19":"y #1","20":"y #1","21":"y #1","22":"y #1","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"y #2","15":"y #2","16":"y #2","17":"y #2","18":"y #2","19":"y #2","20":"y #2","21":"y #2","22":"y #2","23":"y #2","24":"y #2","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"a #2","6":"y #2","6.1":"y #2","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"a #2","6.0-6.1":"y #2","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y #2"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"a #1","11":"a #1"},"and_uc":{"11":"y #2"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"The standard HTTP header is `Content-Security-Policy` which is used unless otherwise noted.","notes_by_num":{"1":"Supported through the `X-Content-Security-Policy` header","2":"Supported through the `X-Webkit-CSP` header"},"usage_perc_y":88.34,"usage_perc_a":4.67,"ucprefix":false,"parent":"","keywords":"csp,security,header","ie_id":"contentsecuritypolicy","chrome_id":"5205088045891584","firefox_id":"","webkit_id":""},"pagevisibility":{"title":"Page Visibility","description":"JavaScript API for determining whether a document is visible on the display","spec":"http://www.w3.org/TR/page-visibility/","status":"rec","links":[{"url":"https://developer.mozilla.org/en-US/docs/DOM/Using_the_Page_Visibility_API","title":"MDN article"},{"url":"https://docs.webplatform.org/wiki/dom/Document/visibilityState","title":"WebPlatform Docs"},{"url":"http://www.sitepoint.com/introduction-to-page-visibility-api/","title":"SitePoint article"},{"url":"http://aurelio.audero.it/demo/page-visibility-api-demo.html","title":"Demo"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"y","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y x","4.4.3-4.4.4":"y x","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y x"},"samsung":{"4":"y x"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":92.92,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"visibilitystate,visibilitychange","ie_id":"pagevisibilityapi","chrome_id":"5689697795833856","firefox_id":"page-visibility","webkit_id":""},"stricttransportsecurity":{"title":"Strict Transport Security","description":"Declare that a website is only accessible over a secure connection (HTTPS).","spec":"https://tools.ietf.org/html/rfc6797","status":"other","links":[{"url":"http://dev.chromium.org/sts","title":"Chromium article"},{"url":"https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security","title":"MDN article"},{"url":"https://www.owasp.org/index.php/HTTP_Strict_Transport_Security","title":"OWASP article"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"y #1"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"The HTTP header is 'Strict-Transport-Security'.","notes_by_num":{"1":"IE 11 added support [in an update](http://blogs.windows.com/msedgedev/2015/06/09/http-strict-transport-security-comes-to-internet-explorer-11-on-windows-8-1-and-windows-7/) on June 9, 2015"},"usage_perc_y":83.39,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"sts,hsts,security,header","ie_id":"httpstricttransportsecurityhsts","chrome_id":"4941480133132288","firefox_id":"","webkit_id":""},"style-scoped":{"title":"Scoped CSS","description":"Allows CSS rules to be scoped to part of the document, based on the position of the style element. The attribute has been [removed from the current specification](https://github.com/whatwg/html/issues/552).","spec":"https://www.w3.org/TR/html51/document-metadata.html#element-attrdef-style-scoped","status":"unoff","links":[{"url":"https://github.com/PM5544/scoped-polyfill","title":"Polyfill"},{"url":"http://html5doctor.com/the-scoped-attribute/","title":"HTML5 Doctor article"},{"url":"http://updates.html5rocks.com/2012/03/A-New-Experimental-Feature-style-scoped","title":"HTML5Rocks article"}],"categories":["CSS","HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n d #1","21":"n d #1","22":"n d #1","23":"n d #1","24":"n d #1","25":"n d #1","26":"n d #1","27":"n d #1","28":"n d #1","29":"n d #1","30":"n d #1","31":"n d #1","32":"n d #1","33":"n d #1","34":"n d #1","35":"n d #1","36":"n d #1","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n","55":"n","56":"n","57":"n","58":"n","59":"n"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{"1":"Enabled in Chrome through the \"experimental Web Platform features\" flag in chrome://flags"},"usage_perc_y":15.48,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"scope","ie_id":"scopedstyles","chrome_id":"5374137958662144","firefox_id":"","webkit_id":""},"svg-fragment":{"title":"SVG fragment identifiers","description":"Method of displaying only a part of an SVG image by defining a view ID or view box dimensions as the file's fragment identifier.","spec":"http://www.w3.org/TR/SVG/linking.html#SVGFragmentIdentifiers","status":"rec","links":[{"url":"http://www.broken-links.com/2012/08/14/better-svg-sprites-with-fragment-identifiers/","title":"Blog post"}],"categories":["SVG"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"a #1","37":"a #1","38":"a #1","39":"a #1","40":"a #1","41":"a #1","42":"a #1","43":"a #1","44":"a #1","45":"a #1","46":"a #1","47":"a #1","48":"a #1","49":"a #1","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"a #1","8":"a #1","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"u","9.5-9.6":"u","10.0-10.1":"a","10.5":"a","10.6":"a","11":"a","11.1":"a","11.5":"a","11.6":"a","12":"a","12.1":"y","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"a #1","24":"a #1","25":"a #1","26":"a #1","27":"a #1","28":"a #1","29":"a #1","30":"a #1","31":"a #1","32":"a #1","33":"a #1","34":"a #1","35":"a #1","36":"a #1","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"a #1","8.1-8.4":"a #1","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"y"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y"},"bb":{"7":"n","10":"a #1"},"op_mob":{"10":"a","11":"a","11.1":"a","11.5":"a","12":"a","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"n"},"samsung":{"4":"a #1"},"and_qq":{"1.2":"a #1"}},"notes":"","notes_by_num":{"1":"Partial support refers to support inside `<img>` but not as CSS `background-image`"},"usage_perc_y":66.54,"usage_perc_a":6.97,"ucprefix":false,"parent":"","keywords":"fragments,sprite,svg,use","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"outline":{"title":"CSS outline","description":"The CSS outline property is a shorthand property for setting one or more of the individual outline properties outline-style, outline-width and outline-color in a single rule. In most cases the use of this shortcut is preferable and more convenient.","spec":"http://www.w3.org/TR/CSS2/ui.html#propdef-outline","status":"rec","links":[{"url":"http://dev.w3.org/csswg/css3-ui/#outline","title":"CSS Basic User Interface Module Level 3"},{"url":"https://developer.mozilla.org/en-US/docs/CSS/outline","title":"Mozilla Developer Network: outline"}],"categories":["CSS2"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"y","9":"y #1","10":"y #1","11":"y #1"},"edge":{"12":"y #1","13":"y #1","14":"y #1","15":"y #1"},"firefox":{"2":"y","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y #1","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y #1","11":"y #1"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Also supports the value of `invert` for `outline-color`. (support of this value is optional for browsers)"},"usage_perc_y":94.85,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"-moz-outline,outline-width,outline-style,outline-color","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"download":{"title":"Download attribute","description":"When used on an anchor, this attribute signifies that the browser should download the resource the anchor points to rather than navigate to it.","spec":"https://html.spec.whatwg.org/multipage/semantics.html#downloading-resources","status":"ls","links":[{"url":"http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download","title":"HTML5Rocks post"},{"url":"http://html5-demos.appspot.com/static/a.download.html","title":"Demo: creating a text file and downloading it."},{"url":"https://bugs.webkit.org/show_bug.cgi?id=102914","title":"WebKit feature request bug"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":67.02,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"download,a.download,a[download],download attribute","ie_id":"adownloadattribute","chrome_id":"6473924464345088","firefox_id":"","webkit_id":"feature-download-attribute"},"pointer":{"title":"Pointer events","description":"This specification integrates various inputs from mice, touchscreens, and pens, making separate implementations no longer necessary and authoring for cross-device pointers easier. Not to be mistaken with the unrelated \"pointer-events\" CSS property.","spec":"http://www.w3.org/TR/pointerevents/","status":"rec","links":[{"url":"http://blogs.msdn.com/b/ie/archive/2011/09/20/touch-input-for-ie10-and-metro-style-apps.aspx","title":"Implementation of Pointer Events in IE10"},{"url":"http://blogs.msdn.com/b/eternalcoding/archive/2013/01/16/hand-js-a-polyfill-for-supporting-pointer-events-on-every-browser.aspx","title":"Hand.js, the polyfill for browsers only supporting Touch Events"},{"url":"http://blogs.msdn.com/b/davrous/archive/2013/02/20/handling-touch-in-your-html5-apps-thanks-to-the-pointer-events-of-ie10-and-windows-8.aspx","title":"Article & tutorial"},{"url":"http://deeptissuejs.com","title":"Abstraction library for pointer events"},{"url":"https://github.com/jquery/PEP","title":"PEP: Pointer Events Polyfill"}],"categories":["DOM","JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"a x #1","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"p","7":"p","8":"p","9":"p","10":"p","11":"p","12":"p","13":"p","14":"p","15":"p","16":"p","17":"p","18":"p","19":"p","20":"p","21":"p","22":"p","23":"p","24":"p","25":"p","26":"p","27":"p","28":"p","29":"p","30":"p","31":"p","32":"p","33":"p","34":"p","35":"p","36":"p","37":"p","38":"p","39":"p","40":"p","41":"p d #2","42":"p d #2","43":"p d #2","44":"p d #2","45":"p d #2","46":"p d #2","47":"p d #2","48":"p d #2","49":"p d #2","50":"p d #2","51":"p d #2","52":"p d #2","53":"p d #2","54":"p d #2"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"p","23":"p","24":"p","25":"p","26":"p","27":"p","28":"p","29":"p","30":"p","31":"p","32":"p","33":"p","34":"p","35":"p","36":"p","37":"p","38":"p","39":"p","40":"p","41":"p","42":"p","43":"p","44":"p","45":"p","46":"p","47":"p","48":"p","49":"p","50":"p","51":"p","52":"p d #3","53":"p d #3","54":"p d #3","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"p","7":"p","7.1":"p","8":"p","9":"p","9.1":"p","10":"p","10.1":"p","TP":"p"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"p","16":"p","17":"p","18":"p","19":"p","20":"p","21":"p","22":"p","23":"p","24":"p","25":"p","26":"p","27":"p","28":"p","29":"p","30":"p","31":"p","32":"p","33":"p","34":"p","35":"p","36":"p","37":"p","38":"p","39":"p d #3","40":"p d #3","41":"p d #3","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"p","7.0-7.1":"p","8":"p","8.1-8.4":"p","9.0-9.2":"p","9.3":"p","10.0-10.2":"p"},"op_mini":{"all":"n"},"android":{"2.1":"p","2.2":"p","2.3":"p","3":"p","4":"p","4.1":"p","4.2-4.3":"p","4.4":"p","4.4.3-4.4.4":"p","53":"p"},"bb":{"7":"p","10":"p"},"op_mob":{"10":"n","11":"p","11.1":"p","11.5":"p","12":"p","12.1":"p","37":"p"},"and_chr":{"56":"y"},"and_ff":{"51":"p d #2"},"ie_mob":{"10":"a x","11":"y"},"and_uc":{"11":"p"},"samsung":{"4":"p"},"and_qq":{"1.2":"p d #3"}},"notes":"Firefox, starting with version 28, provides the 'dom.w3c_pointer_events.enabled' flag to support this specification.","notes_by_num":{"1":"Partial support in IE10 refers the lack of pointerenter and pointerleave events.","2":"Firefox support is disabled by default and [only supports mouse input](https://hacks.mozilla.org/2015/08/pointer-events-now-in-firefox-nightly/). On Windows only, touch can be enabled with the `layers.async-pan-zoom.enabled` and `dom.w3c_touch_events.enabled` flags","3":"Can be enabled with the `#enable-pointer-events` flag."},"usage_perc_y":54.07,"usage_perc_a":0.35,"ucprefix":false,"parent":"","keywords":"pointerdown,pointermove,pointerup,pointercancel,pointerover,pointerout,pointerenter,pointerleave","ie_id":"pointerevents","chrome_id":"4504699138998272","firefox_id":"pointer-events","webkit_id":""},"user-select-none":{"title":"CSS user-select: none","description":"Method of preventing text/element selection using CSS. ","spec":"https://drafts.csswg.org/css-ui-4/#valdef-user-select-none","status":"wd","links":[{"url":"https://developer.mozilla.org/en-US/docs/CSS/user-select","title":"MDN article"},{"url":"http://css-tricks.com/almanac/properties/u/user-select/","title":"CSS Tricks article"},{"url":"http://msdn.microsoft.com/en-us/library/ie/hh781492(v=vs.85).aspx","title":"MSDN Documentation"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y x","11":"y x"},"edge":{"12":"y x","13":"y x","14":"y x","15":"y x"},"firefox":{"2":"y x","3":"y x","3.5":"y x","3.6":"y x","4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x","46":"y x","47":"y x","48":"y x","49":"y x","50":"y x","51":"y x","52":"y x","53":"y x","54":"y x"},"chrome":{"4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x","46":"y x","47":"y x","48":"y x","49":"y x","50":"y x","51":"y x","52":"y x","53":"y x","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y x","3.2":"y x","4":"y x","5":"y x","5.1":"y x","6":"y x","6.1":"y x","7":"y x","7.1":"y x","8":"y x","9":"y x","9.1":"y x","10":"y x","10.1":"y x","TP":"y x"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y x","4.0-4.1":"y x","4.2-4.3":"y x","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x","8":"y x","8.1-8.4":"y x","9.0-9.2":"y x","9.3":"y x","10.0-10.2":"y x"},"op_mini":{"all":"n"},"android":{"2.1":"y x","2.2":"y x","2.3":"y x","3":"y x","4":"y x","4.1":"y x","4.2-4.3":"y x","4.4":"y x","4.4.3-4.4.4":"y x","53":"y x"},"bb":{"7":"y x","10":"y x"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y x"},"and_chr":{"56":"y"},"and_ff":{"51":"y x"},"ie_mob":{"10":"y x","11":"y x"},"and_uc":{"11":"y x"},"samsung":{"4":"y x"},"and_qq":{"1.2":"y x"}},"notes":"","notes_by_num":{},"usage_perc_y":93.99,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"input-file-accept":{"title":"accept attribute for file input","description":"Allows a filter to be defined for what type of files a user may pick with from an `<input type=\"file\">` dialog","spec":"https://html.spec.whatwg.org/multipage/forms.html#attr-input-accept","status":"ls","links":[{"url":"http://www.wufoo.com/html5/attributes/07-accept.html","title":"Demo & information"},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/13661175-full-spec-support-for-accept-in-input-type-file","title":"Microsoft Edge feature request on UserVoice"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"a #1","5":"a #1","6":"a #1","7":"a #1","8":"a #1","9":"a #1","10":"a #1","11":"a #1","12":"a #1","13":"a #1","14":"a #1","15":"a #1","16":"a #1","17":"a #1","18":"a #1","19":"a #1","20":"a #1","21":"a #1","22":"a #1","23":"a #1","24":"a #1","25":"a #1","26":"a #1","27":"a #1","28":"a #1","29":"a #1","30":"a #1","31":"a #1","32":"a #1","33":"a #1","34":"a #1","35":"a #1","36":"a #1","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"u","6":"u","7":"u","8":"u","9":"a #1","10":"a #1","11":"a #1","12":"a #1","13":"a #1","14":"a #1","15":"a #1","16":"a #1","17":"a #1","18":"a #1","19":"a #1","20":"a #1","21":"u","22":"u","23":"u","24":"u","25":"u","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"a #1","6.1":"a #1","7":"a #1","7.1":"a #1","8":"a #1","9":"a #1","9.1":"a #1","10":"a #1","10.1":"a #1","TP":"a #1"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n #3","4.0-4.1":"n #3","4.2-4.3":"n #3","5.0-5.1":"n #3","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"a #2","4":"a #2","4.1":"a #2","4.2-4.3":"a #2","4.4":"n #3","4.4.3-4.4.4":"n #3","53":"n #3"},"bb":{"7":"a #2","10":"a #1"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"a #2"},"and_chr":{"56":"a #2"},"and_ff":{"51":"n"},"ie_mob":{"10":"n #3","11":"a #4"},"and_uc":{"11":"n"},"samsung":{"4":"a #2"},"and_qq":{"1.2":"y"}},"notes":"Not supported means any file can be picked as if the `accept` attribute was not set, unless otherwise noted.\r\n\r\nOn Windows, files that do not apply are hidden. On OSX they are grayed out and disabled.","notes_by_num":{"1":"Supports the type format (e.g. `image/*`) but not the extension format (e.g. `.png`)","2":"Offers appropriate file locations/input based on format type, but does not prevent other files from being selected.","3":"Does not allow any files to be picked at all","4":"Supports the type format but does not allow any file to be picked when using the extension format"},"usage_perc_y":38.16,"usage_perc_a":33.01,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"webp":{"title":"WebP image format","description":"Image format that supports lossy and lossless compression, as well as animation and alpha transparency.","spec":"https://developers.google.com/speed/webp/","status":"unoff","links":[{"url":"https://developers.google.com/speed/webp/","title":"Official website"},{"url":"http://antimatter15.github.io/weppy/demo.html","title":"Polyfill for browsers with WebM support"},{"url":"http://libwebpjs.appspot.com/","title":"Decoder in JS"},{"url":"http://webpjs.appspot.com/","title":"Polyfill for browsers with or without WebM support (i.e. IE6-IE9, Safari/iOS version 6.1 and below; Firefox versions 24 and bel"},{"url":"https://developers.google.com/speed/webp/faq#which_web_browsers_natively_support_webp","title":"Official website FAQ - Which web browsers natively support WebP?"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"p","5":"p","6":"p","7":"p","8":"p","9":"p","10":"p","11":"p","12":"p","13":"p","14":"p","15":"p","16":"p","17":"p","18":"p","19":"p","20":"p","21":"p","22":"p","23":"p","24":"p","25":"p","26":"p","27":"p","28":"p","29":"p","30":"p","31":"p","32":"p","33":"p","34":"p","35":"p","36":"p","37":"p","38":"p","39":"p","40":"p","41":"p","42":"p","43":"p","44":"p","45":"p","46":"p","47":"p","48":"p","49":"p","50":"p","51":"p","52":"p","53":"p","54":"p"},"chrome":{"4":"n","5":"n","6":"p","7":"p","8":"p","9":"a #1","10":"a #1","11":"a #1","12":"a #1","13":"a #1","14":"a #1","15":"a #1","16":"a #1","17":"a #1","18":"a #1","19":"a #1","20":"a #1","21":"a #1","22":"a #1","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"p","11":"p","11.1":"a #1","11.5":"a #1","11.6":"a #1","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"y"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"a #1","4.1":"a #1","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"a #1","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"p"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Both [Safari](https://www.cnet.com/news/apple-ios-macos-tests-googles-webp-graphics-to-speed-up-web/) & [Firefox](https://bugzilla.mozilla.org/show_bug.cgi?id=1294490) are experimenting with supporting WebP images.\r\n\r\nAnimated WebP images are supported in Chrome 32+ and Opera 19+.","notes_by_num":{"1":"Partial support in older Chrome, Opera and Android refers to browsers not supporting lossless and alpha versions of WebP."},"usage_perc_y":71.76,"usage_perc_a":0.39,"ucprefix":false,"parent":"","keywords":"","ie_id":"webpimageformat","chrome_id":"6471725441089536,4785074604081152","firefox_id":"","webkit_id":""},"input-autocomplete-onoff":{"title":"autocomplete attribute: on & off values","description":"The `autocomplete` attribute for `input` elements indicates to the browser whether a value should or should not be autofilled when appropriate.","spec":"https://html.spec.whatwg.org/multipage/forms.html#autofill","status":"ls","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-autocomplete","title":"MDN article"}],"categories":["DOM"],"stats":{"ie":{"5.5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"a #1"},"edge":{"12":"a #1","13":"a #1","14":"a #1","15":"a #1"},"firefox":{"2":"y","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"a #3","31":"a #3","32":"a #3","33":"a #3","34":"a #3","35":"a #3","36":"a #3","37":"a #3","38":"a #3","39":"a #3","40":"a #3","41":"a #3","42":"a #3","43":"a #3","44":"a #3","45":"a #3","46":"a #3","47":"a #3","48":"a #3","49":"a #3","50":"a #3","51":"a #3","52":"a #3","53":"a #3","54":"a #3"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"a #1","28":"a #1","29":"a #1","30":"a #1","31":"a #1","32":"a #1","33":"a #1","34":"a #1","35":"a #1","36":"a #1","37":"a #1","38":"a #1","39":"a #1","40":"a #1","41":"a #2","42":"a #2","43":"a #2","44":"a #2","45":"a #2","46":"a #2","47":"a #2","48":"a #2","49":"a #2","50":"a #2","51":"a #2","52":"a #2","53":"a #2","54":"a #2","55":"a #2","56":"a #2","57":"a #2","58":"a #2","59":"a #2"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"y","6":"y","6.1":"y","7":"a #5","7.1":"a #5","8":"a #5","9":"a #5","9.1":"a #5","10":"a #5","10.1":"a #5","TP":"a #5"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y #4","6.0-6.1":"y #4","7.0-7.1":"y #4","8":"y #4","8.1-8.4":"y #4","9.0-9.2":"y #4","9.3":"y #4","10.0-10.2":"y #4"},"op_mini":{"all":"y #4"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"a #5","11":"a #5"},"and_uc":{"11":"y #4"},"samsung":{"4":"y"},"and_qq":{"1.2":"a #2"}},"notes":"This support information does not include support for other `autocomplete` values.\r\n\r\nAs described in detail below, many modern browsers ignore the `off` value on certain fields in certain cases intentionally in order to give the user more control over autofilling fields. One example is the use of password managers.","notes_by_num":{"1":"Partial support refers to ignoring the `off` value for password fields. [see related blog post](http://blogs.msdn.com/b/ieinternals/archive/2009/09/10/troubleshooting-stored-login-problems-in-ie.aspx)","2":"Partial support in Chrome refers to the browser intentionally ignoring `autocomplete=\"off\"` when the user uses the browser's autofill functionality. [see bug](https://code.google.com/p/chromium/issues/detail?id=468153#c29)","3":"Partial support in Firefox refers to ignoring `autocomplete=\"off\"` for login forms. [see bug](https://bugzilla.mozilla.org/show_bug.cgi?id=956906)","4":"Browser does not display previously submitted values as options with `on` value.","5":"Safari ignores the `off` value for [username, email and password fields](http://stackoverflow.com/questions/22661977/disabling-safari-autofill-on-usernames-and-passwords)"},"usage_perc_y":56.59,"usage_perc_a":41.6,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"intrinsic-width":{"title":"Intrinsic & Extrinsic Sizing","description":"Allows for the heights and widths to be specified in intrinsic values using the `fill`, `max-content`, `min-content`, and `fit-content` properties.","spec":"http://www.w3.org/TR/css3-sizing/","status":"wd","links":[{"url":"http://demosthenes.info/blog/662/Design-From-the-Inside-Out-With-CSS-MinContent","title":"Min-Content tutorial"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"a x #1 #2 #3","3.5":"a x #1 #2 #3","3.6":"a x #1 #2 #3","4":"a x #1 #2 #3","5":"a x #1 #2 #3","6":"a x #1 #2 #3","7":"a x #1 #2 #3","8":"a x #1 #2 #3","9":"a x #1 #2 #3","10":"a x #1 #2 #3","11":"a x #1 #2 #3","12":"a x #1 #2 #3","13":"a x #1 #2 #3","14":"a x #1 #2 #3","15":"a x #1 #2 #3","16":"a x #1 #2 #3","17":"a x #1 #2 #3","18":"a x #1 #2 #3","19":"a x #1 #2 #3","20":"a x #1 #2 #3","21":"a x #1 #2 #3","22":"a x #1 #2 #3","23":"a x #1 #2 #3","24":"a x #1 #2 #3","25":"a x #1 #2 #3","26":"a x #1 #2 #3","27":"a x #1 #2 #3","28":"a x #1 #2 #3","29":"a x #1 #2 #3","30":"a x #1 #2 #3","31":"a x #1 #2 #3","32":"a x #1 #2 #3","33":"a x #1 #2 #3","34":"a x #1 #2 #3","35":"a x #1 #2 #3","36":"a x #1 #2 #3","37":"a x #1 #2 #3","38":"a x #1 #2 #3","39":"a x #1 #2 #3","40":"a x #1 #2 #3","41":"a x #1 #2 #3","42":"a x #1 #2 #3","43":"a x #1 #2 #3","44":"a x #1 #2 #3","45":"a x #1 #2 #3","46":"a x #1 #2 #3","47":"a x #1 #2 #3","48":"a x #1 #2 #3","49":"a x #1 #2 #3","50":"a x #1 #2 #3","51":"a x #1 #2 #3","52":"a x #1 #2 #3","53":"a x #1 #2 #3","54":"a x #1 #2 #3"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"y x #3","23":"y x #3","24":"y x #3","25":"y x #3","26":"y x #3","27":"y x #3","28":"y x #3","29":"y x #3","30":"y x #3","31":"y x #3","32":"y x #3","33":"y x #3","34":"y x #3","35":"y x #3","36":"y x #3","37":"y x #3","38":"y x #3","39":"y x #3","40":"y x #3","41":"y x #3","42":"y x #3","43":"y x #3","44":"y x #3","45":"y x #3","46":"y #3 #4","47":"y #3 #4","48":"y #3 #4","49":"y #3 #4","50":"y #3 #4","51":"y #3 #4","52":"y #3 #4","53":"y #3 #4","54":"y #3 #4","55":"y #3 #4","56":"y #3 #4","57":"y #3 #4","58":"y #3 #4","59":"y #3 #4"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"a x #1 #3","7":"a x #1 #3","7.1":"a x #1 #3","8":"a x #1 #3","9":"a x #3","9.1":"a x #3","10":"a x #3","10.1":"a x #3","TP":"a x #3"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y x #3","16":"y x #3","17":"y x #3","18":"y x #3","19":"y x #3","20":"y x #3","21":"y x #3","22":"y x #3","23":"y x #3","24":"y x #3","25":"y x #3","26":"y x #3","27":"y x #3","28":"y x #3","29":"y x #3","30":"y x #3","31":"y x #3","32":"y x #3","33":"y #3 #4","34":"y #3","35":"y #3 #4","36":"y #3 #4","37":"y #3 #4","38":"y #3 #4","39":"y #3 #4","40":"y #3 #4","41":"y #3 #4","42":"y #3 #4","43":"y #3 #4","44":"y #3 #4","45":"y #3 #4"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"a x #1 #3","8":"a x #1 #3","8.1-8.4":"a x #1 #3","9.0-9.2":"a x #3","9.3":"a x #3","10.0-10.2":"a x #3"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y x #3","4.4.3-4.4.4":"y x #3","53":"y #3 #4"},"bb":{"7":"n","10":"y x #3"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y #3 #4"},"and_chr":{"56":"y #3 #4"},"and_ff":{"51":"a x #1 #2 #3"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y x #3"},"and_qq":{"1.2":"y x #3"}},"notes":"Prefixes are on the values, not the property names (e.g. -webkit-min-content)\r\n\r\nOlder webkit browsers also support the unofficial `intrinsic` value which acts the same as `max-content`.","notes_by_num":{"1":"Does not support for height/min-height/max-height property, only width. [see test case](http://codepen.io/shshaw/pen/Kiwaz) [Firefox bug](https://bugzilla.mozilla.org/show_bug.cgi?id=567039)","2":"Firefox currently supports the \"-moz-available\" property rather than \"-moz-fill\".","3":"Does not support for \"flex-basis\" property. [see specs](http://www.w3.org/TR/2015/WD-css-flexbox-1-20150514/#flex-basis-property).\r\n[Blink bug](https://codereview.chromium.org/1304853002/),[Firefox bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1055887)","4":"This does not yet unprefix fill-available (aka fill)[See bug](https://chromium.googlesource.com/chromium/blink.git/+/bf119cdfece210e69c9a99af06f1b9981e2a1bc2), because the [CSSWG](https://lists.w3.org/Archives/Public/www-style/2015Aug/0127.html) is not ready for that yet."},"usage_perc_y":58.81,"usage_perc_a":18.87,"ucprefix":false,"parent":"","keywords":"fill,fill-available,max-content,min-content,fit-content,contain-floats,intrinsic,extrinsic,sizing","ie_id":"cssintrinsicsizing","chrome_id":"5901353784180736","firefox_id":"","webkit_id":""},"cryptography":{"title":"Web Cryptography","description":"JavaScript API for performing basic cryptographic operations in web applications","spec":"http://www.w3.org/TR/WebCryptoAPI/","status":"cr","links":[{"url":"http://www.slideshare.net/Channy/the-history-and-status-of-web-crypto-api","title":"The History and Status of Web Crypto API"},{"url":"http://research.microsoft.com/en-us/projects/msrjscrypto/","title":"Microsoft Research JavaScript Cryptography Library"},{"url":"http://bitwiseshiftleft.github.io/sjcl/","title":"Cross-browser cryptography library"},{"url":"https://docs.google.com/spreadsheet/ccc?key=0AiAcidBZRLxndE9LWEs2R1oxZ0xidUVoU3FQbFFobkE#gid=1","title":"Support for recommended algorithms in Firefox"},{"url":"https://github.com/Netflix/NfWebCrypto","title":"Polyfill by Netflix with partial support"},{"url":"https://github.com/GlobalSign/PKI.js","title":"PKI.js - another crypto library for Public Key Infrastructure applications"},{"url":"https://diafygi.github.io/webcrypto-examples/","title":"Test suite for various algorithms/methods"},{"url":"https://github.com/vibornoff/webcrypto-shim","title":"Web Cryptography API shim for IE11 and Safari - set of bugfixes and workarounds of prefixed api implementations"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"p","10":"p","11":"a x #1"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"p","3":"p","3.5":"p","3.6":"p","4":"p","5":"p","6":"p","7":"p","8":"p","9":"p","10":"p","11":"p","12":"p","13":"p","14":"p","15":"p","16":"p","17":"p","18":"p","19":"p","20":"p","21":"p","22":"p","23":"p","24":"p","25":"p","26":"p","27":"p","28":"p","29":"p","30":"p","31":"p","32":"n d #2","33":"n d #2","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"p","5":"p","6":"p","7":"p","8":"p","9":"p","10":"p","11":"p","12":"p","13":"p","14":"p","15":"p","16":"p","17":"p","18":"p","19":"p","20":"p","21":"p","22":"p","23":"p","24":"p","25":"p","26":"p","27":"p","28":"p","29":"p","30":"p","31":"p","32":"p","33":"p","34":"p","35":"p","36":"p","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"p","3.2":"p","4":"p","5":"p","5.1":"p","6":"p","6.1":"p","7":"p","7.1":"y x #3","8":"y x #3","9":"y x #3","9.1":"y x #3","10":"y x #3","10.1":"y x #3","TP":"y x #3"},"opera":{"9":"p","9.5-9.6":"p","10.0-10.1":"p","10.5":"p","10.6":"p","11":"p","11.1":"p","11.5":"p","11.6":"p","12":"p","12.1":"p","15":"p","16":"p","17":"p","18":"p","19":"p","20":"p","21":"p","22":"p","23":"p","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"p","7.0-7.1":"p","8":"y x #3","8.1-8.4":"y x #3","9.0-9.2":"y x #3","9.3":"y x #3","10.0-10.2":"y x #3"},"op_mini":{"all":"n"},"android":{"2.1":"p","2.2":"p","2.3":"p","3":"p","4":"p","4.1":"p","4.2-4.3":"p","4.4":"p","4.4.3-4.4.4":"p","53":"y"},"bb":{"7":"p","10":"p"},"op_mob":{"10":"p","11":"p","11.1":"p","11.5":"p","12":"p","12.1":"p","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"p"},"ie_mob":{"10":"p","11":"a x #1"},"and_uc":{"11":"p"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"Many browsers support the `[crypto.getRandomValues()](#feat=getrandomvalues)` method, but not actual cryptography functionality under `crypto.subtle`. \r\n\r\nFirefox also has support for [unofficial features](https://developer.mozilla.org/en-US/docs/JavaScript_crypto). \r\n\r\nIn Chrome the API is only usable over secure connections. ([corresponding bug](https://code.google.com/p/chromium/issues/detail?id=373032))","notes_by_num":{"1":"Support in IE11 is based an older version of the specification.","2":"Supported in Firefox behind the `dom.webcrypto.enabled` flag.","3":"Supported in Safari using the `crypto.webkitSubtle` prefix."},"usage_perc_y":76.07,"usage_perc_a":4.26,"ucprefix":false,"parent":"","keywords":"subtle,subtlecrypto","ie_id":"webcryptoapi","chrome_id":"5030265697075200","firefox_id":"","webkit_id":"specification-webcrypto"},"template":{"title":"HTML templates","description":"Method of declaring a portion of reusable markup that is parsed but not rendered until cloned.","spec":"https://html.spec.whatwg.org/multipage/scripting.html#the-template-element","status":"ls","links":[{"url":"http://www.html5rocks.com/en/tutorials/webcomponents/template/","title":"HTML5Rocks - HTML's New template Tag"},{"url":"http://polymer-project.org","title":"Polymer project (polyfill & web components framework)"}],"categories":["DOM","HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":78.66,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"web components, template","ie_id":"templateelement","chrome_id":"5207287069147136","firefox_id":"html-templates","webkit_id":"feature-template-element"},"opus":{"title":"Opus","description":"Royalty-free open audio codec by IETF, which incorporated SILK from Skype and CELT from Xiph.org, to serve higher sound quality and lower latency at the same bitrate.","spec":"https://tools.ietf.org/html/rfc6716","status":"other","links":[{"url":"https://hacks.mozilla.org/2012/07/firefox-beta-15-supports-the-new-opus-audio-format/","title":"Introduction of Opus by Mozilla"},{"url":"http://www.ietf.org/mail-archive/web/rtcweb/current/msg04953.html","title":"Google's statement about the use of VP8 and Opus codec for WebRTC standard"},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6513488-ogg-vorbis-and-opus-audio-formats-support-firefox","title":"Microsoft Edge feature request on UserVoice"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"Support refers to use using the `audio` element, not other conditions.\r\n\r\nFor Opera the Linux version may be able to play it when the GStreamer module is up to date and the served mime-type is 'audio/ogg'.","notes_by_num":{},"usage_perc_y":61,"usage_perc_a":0,"ucprefix":false,"parent":"audio","keywords":"","ie_id":"opusaudioplayback","chrome_id":"4891189287321600","firefox_id":"","webkit_id":""},"jpegxr":{"title":"JPEG XR image format","description":"The latest JPEG image format of Joint Photographic Experts Group which boasts better compression and supports lossless compression, alpha channel, and 48-bit deep color over normal jpg format.","spec":"http://www.itu.int/rec/T-REC-T.832","status":"other","links":[{"url":"http://msdn.microsoft.com/en-us/library/windows/desktop/hh707223(v=vs.85).aspx","title":"Microsoft JPEG XR Codec Overview"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=500500","title":"Firefox support bug"},{"url":"https://code.google.com/p/chromium/issues/detail?id=56908","title":"Chrome support bug (marked as WONTFIX)"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n","55":"n","56":"n","57":"n","58":"n","59":"n"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"n"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{},"usage_perc_y":6.51,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"channel-messaging":{"title":"Channel messaging","description":"Method for having two-way communication between browsing contexts (using MessageChannel)","spec":"https://html.spec.whatwg.org/multipage/comms.html#channel-messaging","status":"ls","links":[{"url":"https://dev.opera.com/articles/view/window-postmessage-messagechannel/#channel","title":"An Introduction to HTML5 web messaging"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n d #1","27":"n d #1","28":"n d #1","29":"n d #1","30":"n d #1","31":"n d #1","32":"n d #1","33":"n d #1","34":"n d #1","35":"n d #1","36":"n d #1","37":"n d #1","38":"n d #1","39":"n d #1","40":"n d #1","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"u","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Supported in Firefox behind the `dom.messageChannel.enabled` flag. Reported to not work in web workers before version 41."},"usage_perc_y":92.72,"usage_perc_a":0,"ucprefix":false,"parent":"x-doc-messaging","keywords":"","ie_id":"messagechannels","chrome_id":"6710044586409984","firefox_id":"","webkit_id":""},"css3-tabsize":{"title":"CSS3 tab-size","description":"Method of customizing the width of the tab character. Only effective using 'white-space: pre' or 'white-space: pre-wrap'.","spec":"http://www.w3.org/TR/css3-text/#tab-size","status":"wd","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/tab-size","title":"MDN article"},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6524689-tab-size-property","title":"Microsoft Edge feature request on UserVoice"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"a x #1","5":"a x #1","6":"a x #1","7":"a x #1","8":"a x #1","9":"a x #1","10":"a x #1","11":"a x #1","12":"a x #1","13":"a x #1","14":"a x #1","15":"a x #1","16":"a x #1","17":"a x #1","18":"a x #1","19":"a x #1","20":"a x #1","21":"a x #1","22":"a x #1","23":"a x #1","24":"a x #1","25":"a x #1","26":"a x #1","27":"a x #1","28":"a x #1","29":"a x #1","30":"a x #1","31":"a x #1","32":"a x #1","33":"a x #1","34":"a x #1","35":"a x #1","36":"a x #1","37":"a x #1","38":"a x #1","39":"a x #1","40":"a x #1","41":"a x #1","42":"a x #1","43":"a x #1","44":"a x #1","45":"a x #1","46":"a x #1","47":"a x #1","48":"a x #1","49":"a x #1","50":"a x #1","51":"a x #1","52":"a x #1","53":"y x","54":"y x"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"a #1","22":"a #1","23":"a #1","24":"a #1","25":"a #1","26":"a #1","27":"a #1","28":"a #1","29":"a #1","30":"a #1","31":"a #1","32":"a #1","33":"a #1","34":"a #1","35":"a #1","36":"a #1","37":"a #1","38":"a #1","39":"a #1","40":"a #1","41":"a #1","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"a #1","7":"a #1","7.1":"a #1","8":"a #1","9":"a #1","9.1":"a #1","10":"a #1","10.1":"a #1","TP":"a #1"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"a x #1","11":"a x #1","11.1":"a x #1","11.5":"a x #1","11.6":"a x #1","12":"a x #1","12.1":"a x #1","15":"a #1","16":"a #1","17":"a #1","18":"a #1","19":"a #1","20":"a #1","21":"a #1","22":"a #1","23":"a #1","24":"a #1","25":"a #1","26":"a #1","27":"a #1","28":"a #1","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"a #1","8":"a #1","8.1-8.4":"a #1","9.0-9.2":"a #1","9.3":"a #1","10.0-10.2":"a #1"},"op_mini":{"all":"a x #1"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"a #1","4.4.3-4.4.4":"a #1","53":"a #1"},"bb":{"7":"a #1","10":"a #1"},"op_mob":{"10":"n","11":"a x #1","11.1":"a x #1","11.5":"a x #1","12":"a x #1","12.1":"a x #1","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"a x #1"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial refers to supporting `<integer>` but not `<length>` values."},"usage_perc_y":56.04,"usage_perc_a":25.22,"ucprefix":false,"parent":"","keywords":"tab-size,tab-width","ie_id":"csstabsizeproperty","chrome_id":"","firefox_id":"","webkit_id":""},"mutationobserver":{"title":"Mutation Observer","description":"Method for observing and reacting to changes to the DOM. Replaces MutationEvents, which is deprecated.","spec":"https://dom.spec.whatwg.org/#mutation-observers","status":"ls","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver","title":"MutationObserver from MDN"},{"url":"https://github.com/webcomponents/webcomponentsjs","title":"Polyfill"}],"categories":["DOM","JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"p","10":"p","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"y x","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"p","4.1":"p","4.2-4.3":"p","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"p","11":"y"},"and_uc":{"11":"y x"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"When the content of a node with a single CharacterData child node is changed by innerHTML attribute and the node have a single different one as a result, WebKit browsers consider it as a characterData mutation of the child CharacterData node, while other browsers think it as a childList mutation of the parent node.","notes_by_num":{},"usage_perc_y":92.5,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"MutationObserver","ie_id":"mutationobservers","chrome_id":"5021194726146048","firefox_id":"","webkit_id":""},"css-selection":{"title":"::selection CSS pseudo-element","description":"The ::selection CSS pseudo-element applies rules to the portion of a document that has been highlighted (e.g., selected with the mouse or another pointing device) by the user.","spec":"http://www.w3.org/TR/css-pseudo-4/#selectordef-selection","status":"wd","links":[{"url":"http://quirksmode.org/css/selectors/selection.html","title":"::selection test"},{"url":"http://docs.webplatform.org/wiki/css/selectors/pseudo-elements/::selection","title":"WebPlatform Docs"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"y x","3":"y x","3.5":"y x","3.6":"y x","4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x","46":"y x","47":"y x","48":"y x","49":"y x","50":"y x","51":"y x","52":"y x","53":"y x","54":"y x"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"u","11":"u","11.1":"u","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y x"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":74.73,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"::selection,selection","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-placeholder":{"title":"::placeholder CSS pseudo-element","description":"The ::placeholder pseudo-element represents placeholder text in an input field: text that represents the input and provides a hint to the user on how to fill out the form. For example, a date-input field might have the placeholder text `YYYY/MM/DD` to clarify that numeric dates are to be entered in year-month-day order.","spec":"http://dev.w3.org/csswg/css-pseudo-4/#placeholder-pseudo","status":"wd","links":[{"url":"http://msdn.microsoft.com/en-us/library/ie/hh772745(v=vs.85).aspx","title":"MSDN article"},{"url":"http://css-tricks.com/snippets/css/style-placeholder-text/","title":"CSS-Tricks article with all prefixes"},{"url":"http://wiki.csswg.org/ideas/placeholder-styling","title":"CSSWG discussion"},{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/::-moz-placeholder","title":"MDN article"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=1069012","title":"Mozilla Bug 1069012 - unprefix :placeholder-shown pseudo-class and ::placeholder pseudo-element"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"a x","11":"a x"},"edge":{"12":"a x","13":"a x","14":"a x","15":"a x"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"a x #1","5":"a x #1","6":"a x #1","7":"a x #1","8":"a x #1","9":"a x #1","10":"a x #1","11":"a x #1","12":"a x #1","13":"a x #1","14":"a x #1","15":"a x #1","16":"a x #1","17":"a x #1","18":"a x #1","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x","46":"y x","47":"y x","48":"y x","49":"y x","50":"y x","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a x","5":"a x","6":"a x","7":"a x","8":"a x","9":"a x","10":"a x","11":"a x","12":"a x","13":"a x","14":"a x","15":"a x","16":"a x","17":"a x","18":"a x","19":"a x","20":"a x","21":"a x","22":"a x","23":"a x","24":"a x","25":"a x","26":"a x","27":"a x","28":"a x","29":"a x","30":"a x","31":"a x","32":"a x","33":"a x","34":"a x","35":"a x","36":"a x","37":"a x","38":"a x","39":"a x","40":"a x","41":"a x","42":"a x","43":"a x","44":"a x","45":"a x","46":"a x","47":"a x","48":"a x","49":"a x","50":"a x","51":"a x","52":"a x","53":"a x","54":"a x","55":"a x","56":"a x","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"a x","5.1":"a x","6":"a x","6.1":"a x","7":"a x","7.1":"a x","8":"a x","9":"a x","9.1":"a x","10":"a x","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"a x","16":"a x","17":"a x","18":"a x","19":"a x","20":"a x","21":"a x","22":"a x","23":"a x","24":"a x","25":"a x","26":"a x","27":"a x","28":"a x","29":"a x","30":"a x","31":"a x","32":"a x","33":"a x","34":"a x","35":"a x","36":"a x","37":"a x","38":"a x","39":"a x","40":"a x","41":"a x","42":"a x","43":"a x","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"a x","5.0-5.1":"a x","6.0-6.1":"a x","7.0-7.1":"a x","8":"a x","8.1-8.4":"a x","9.0-9.2":"a x","9.3":"a x","10.0-10.2":"a x"},"op_mini":{"all":"n"},"android":{"2.1":"a x","2.2":"a x","2.3":"a x","3":"a x","4":"a x","4.1":"a x","4.2-4.3":"a x","4.4":"a x","4.4.3-4.4.4":"a x","53":"a x"},"bb":{"7":"a x","10":"a x"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"a x"},"and_chr":{"56":"a x"},"and_ff":{"51":"y"},"ie_mob":{"10":"a x","11":"a x"},"and_uc":{"11":"a x"},"samsung":{"4":"a x"},"and_qq":{"1.2":"a x"}},"notes":"Partial support refers to using alternate names:\r\n`::-webkit-input-placeholder` for Chrome/Safari/Opera ([Chrome issue #623345](https://bugs.chromium.org/p/chromium/issues/detail?id=623345))\r\n`:-ms-input-placeholder` for IE. \r\n`::-ms-input-placeholder` for Edge (also supports webkit prefix)","notes_by_num":{"1":"Firefox 18 and below supported the `:-moz-placeholder` pseudo-class rather than the `::-moz-placeholder` pseudo-element."},"usage_perc_y":6.61,"usage_perc_a":87.29,"ucprefix":false,"parent":"","keywords":"::placeholder,placeholder","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-deviceadaptation":{"title":"CSS Device Adaptation","description":"A standard way to override the size of viewport in web page using the `@viewport` rule, standardizing and replacing Apple's own popular `<meta>` viewport implementation.","spec":"http://www.w3.org/TR/css-device-adapt/","status":"wd","links":[{"url":"https://dev.opera.com/articles/view/an-introduction-to-meta-viewport-and-viewport/","title":"Introduction to meta viewport and @viewport in Opera Mobile"},{"url":"http://msdn.microsoft.com/en-us/library/ie/hh708740(v=vs.85).aspx","title":"Device adaptation in Internet Explorer 10"},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6777420-unprefix-and-support-all-viewport-properties","title":"Microsoft Edge feature request on UserVoice"},{"url":"https://code.google.com/p/chromium/issues/detail?id=155477","title":"Chrome tracking bug"},{"url":"https://bugs.webkit.org/show_bug.cgi?id=95959","title":"WebKit tracking bug"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=747754","title":"Mozilla tracking bug"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"a x #1","11":"a x #1"},"edge":{"12":"a x #1","13":"a x #1","14":"a x #1","15":"a x #1"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n d","30":"n d","31":"n d","32":"n d","33":"n d","34":"n d","35":"n d","36":"n d","37":"n d","38":"n d","39":"n d","40":"n d","41":"n d","42":"n d","43":"n d","44":"n d","45":"n d","46":"n d","47":"n d","48":"n d","49":"n d","50":"n d","51":"n d","52":"n d","53":"n d","54":"n d","55":"n d","56":"n d","57":"n d","58":"n d","59":"n d"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n d","41":"n d","42":"n d","43":"n d","44":"n d","45":"n d"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"a x #2"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"a x #2","11.1":"a x #2","11.5":"a x #2","12":"a x #2","12.1":"a x #2","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"n"},"ie_mob":{"10":"a x #1","11":"a x #1"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n d"}},"notes":"","notes_by_num":{"1":"IE only supports the 'width' and 'height' properties.","2":"Opera Mobile and Opera Mini only support the 'orientation' property."},"usage_perc_y":0,"usage_perc_a":9.69,"ucprefix":false,"parent":"","keywords":"viewport","ie_id":"","chrome_id":"4737164243894272","firefox_id":"","webkit_id":""},"text-emphasis":{"title":"text-emphasis styling","description":"Method of using small symbols next to each glyph to emphasize a run of text, commonly used in East Asian languages. The `text-emphasis` shorthand, and its `text-emphasis-style` and `text-emphasis-color` longhands, can be used to apply marks to the text. The `text-emphasis-position` property, which inherits separately, allows setting the emphasis marks' position with respect to the text.","spec":"https://drafts.csswg.org/css-text-decor-3/#text-emphasis-property","status":"cr","links":[{"url":"https://github.com/zmmbreeze/jquery.emphasis/","title":"A javascript fallback for CSS3 emphasis mark."},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6514536-text-decoration-styling","title":"Microsoft Edge feature request on UserVoice"},{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/text-emphasis","title":"Mozilla Developer Network"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n d #2","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"a x #1","26":"a x #1","27":"a x #1","28":"a x #1","29":"a x #1","30":"a x #1","31":"a x #1","32":"a x #1","33":"a x #1","34":"a x #1","35":"a x #1","36":"a x #1","37":"a x #1","38":"a x #1","39":"a x #1","40":"a x #1","41":"a x #1","42":"a x #1","43":"a x #1","44":"a x #1","45":"a x #1","46":"a x #1","47":"a x #1","48":"a x #1","49":"a x #1","50":"a x #1","51":"a x #1","52":"a x #1","53":"a x #1","54":"a x #1","55":"a x #1","56":"a x #1","57":"a x #1","58":"a x #1","59":"a x #1"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"a x #1","7":"a x #1","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"a x #1","16":"a x #1","17":"a x #1","18":"a x #1","19":"a x #1","20":"a x #1","21":"a x #1","22":"a x #1","23":"a x #1","24":"a x #1","25":"a x #1","26":"a x #1","27":"a x #1","28":"a x #1","29":"a x #1","30":"a x #1","31":"a x #1","32":"a x #1","33":"a x #1","34":"a x #1","35":"a x #1","36":"a x #1","37":"a x #1","38":"a x #1","39":"a x #1","40":"a x #1","41":"a x #1","42":"a x #1","43":"a x #1","44":"a x #1","45":"a x #1"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"a x #1","4.4.3-4.4.4":"a x #1","53":"a x #1"},"bb":{"7":"n","10":"a x #1"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"a x #1"},"and_chr":{"56":"a x #1"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"a x #1"},"samsung":{"4":"a x #1"},"and_qq":{"1.2":"a x #1"}},"notes":"Some old WebKit browsers (like Chrome 24) support `-webkit-text-emphasis`, but does not support CJK languages and is therefore considered unsupported.","notes_by_num":{"1":"Partial support refers to incorrect support for `-webkit-text-emphasis-position`. These browsers support `over` and `under` as values, but not the added `left` and `right` values required by the spec.","2":"Can be enabled in Firefox using the `layout.css.text-emphasis.enabled` flag"},"usage_perc_y":17.76,"usage_perc_a":67.72,"ucprefix":false,"parent":"","keywords":"text-emphasis,text-emphasis-position,text-emphasis-style,text-emphasis-color","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"midi":{"title":"Web MIDI API","description":"The Web MIDI API specification defines a means for web developers to enumerate, manipulate and access MIDI devices","spec":"http://webaudio.github.io/web-midi-api/","status":"wd","links":[{"url":"https://github.com/cwilso/WebMIDIAPIShim","title":"Polyfill"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=836897","title":"Firefox bug"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{},"usage_perc_y":55.98,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"webmidiapi","chrome_id":"4923613069180928","firefox_id":"","webkit_id":""},"canvas-blending":{"title":"Canvas blend modes","description":"Method of defining the effect resulting from overlaying two layers on a Canvas element.","spec":"http://www.w3.org/TR/compositing-1/#blending","status":"cr","links":[{"url":"http://blogs.adobe.com/webplatform/2013/01/28/blending-features-in-canvas/","title":"Blog post"}],"categories":["Canvas"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":78.87,"usage_perc_a":0,"ucprefix":false,"parent":"canvas","keywords":"","ie_id":"compositingandblendingincanvas2d","chrome_id":"","firefox_id":"","webkit_id":""},"clipboard":{"title":"Clipboard API","description":"API to provide copy, cut and paste events as well as provide access to the OS clipboard.","spec":"http://www.w3.org/TR/clipboard-apis/","status":"wd","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent","title":"MDN page on ClipboardEvent"},{"url":"https://www.lucidchart.com/techblog/2014/12/02/definitive-guide-copying-pasting-javascript/","title":"Guide on cross-platform clipboard access"}],"categories":["JS API"],"stats":{"ie":{"5.5":"a #1 #2 #5","6":"a #1 #2 #5","7":"a #1 #2 #5","8":"a #1 #2 #5","9":"a #1 #2 #5","10":"a #1 #2 #5","11":"a #1 #2 #5"},"edge":{"12":"a #1 #2 #5","13":"a #1 #2 #5","14":"a #1 #2 #5","15":"a #1 #2 #5"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"a #2 #3","23":"a #2 #3","24":"a #2 #3","25":"a #2 #3","26":"a #2 #3","27":"a #2 #3","28":"a #2 #3","29":"a #2 #3","30":"a #2 #3","31":"a #2 #3","32":"a #2 #3","33":"a #2 #3","34":"a #2 #3","35":"a #2 #3","36":"a #2 #3","37":"a #2 #3","38":"a #2 #3","39":"a #2 #3","40":"a #2 #3","41":"a #6","42":"a #6","43":"a #6","44":"a #6","45":"a #6","46":"a #6","47":"a #6","48":"a #6","49":"a #6","50":"a #6","51":"a #6","52":"a #6","53":"a #6","54":"a #6"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"a #3 #5","14":"a #3 #5","15":"a #3 #5","16":"a #3 #5","17":"a #3 #5","18":"a #3 #5","19":"a #3 #5","20":"a #3 #5","21":"a #3 #5","22":"a #3 #5","23":"a #3 #5","24":"a #3 #5","25":"a #3 #5","26":"a #3 #5","27":"a #3 #5","28":"a #3 #5","29":"a #3 #5","30":"a #3 #5","31":"a #3 #5","32":"a #3 #5","33":"a #3 #5","34":"a #3 #5","35":"a #3 #5","36":"a #3 #5","37":"a #3 #5","38":"a #3 #5","39":"a #3 #5","40":"a #3 #5","41":"a #3 #5","42":"a #3 #5","43":"a #5 #7","44":"a #5 #7","45":"a #5 #7","46":"a #5 #7","47":"a #5 #7","48":"a #5 #7","49":"a #5 #7","50":"a #5 #7","51":"a #5 #7","52":"a #5 #7","53":"a #5 #7","54":"a #5 #7","55":"a #5 #7","56":"a #5 #7","57":"a #5 #7","58":"a #5 #7","59":"a #5 #7"},"safari":{"3.1":"u","3.2":"u","4":"a #2 #3 #5","5":"a #2 #3 #5","5.1":"a #2 #3 #5","6":"a #2 #3 #5","6.1":"a #2 #3 #5","7":"a #2 #3 #5","7.1":"a #2 #3 #5","8":"a #2 #3 #5","9":"a #2 #3 #5","9.1":"a #2 #3 #5","10":"a #2 #5","10.1":"a #2 #5","TP":"a #2 #5"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"u","12.1":"a #3","15":"a #3 #5","16":"a #3 #5","17":"a #3 #5","18":"a #3 #5","19":"a #3 #5","20":"a #3 #5","21":"a #3 #5","22":"a #3 #5","23":"a #3 #5","24":"a #3 #5","25":"a #3 #5","26":"a #3 #5","27":"a #3 #5","28":"a #3 #5","29":"a #3 #5","30":"a #5 #7","31":"a #5 #7","32":"a #5 #7","33":"a #5 #7","34":"a #5 #7","35":"a #5 #7","36":"a #5 #7","37":"a #5 #7","38":"a #5 #7","39":"a #5 #7","40":"a #5 #7","41":"a #5 #7","42":"a #5 #7","43":"a #5 #7","44":"a #5 #7","45":"a #5 #7"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"a #2 #3 #5","6.0-6.1":"a #2 #3 #5","7.0-7.1":"a #2 #3 #5","8":"a #2 #3 #5","8.1-8.4":"a #2 #3 #5","9.0-9.2":"a #2 #3 #5","9.3":"a #2 #3 #5","10.0-10.2":"a #2 #3 #5"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"a #2 #5","4.4.3-4.4.4":"a #2 #5","53":"a #2 #5"},"bb":{"7":"n","10":"a #2 #5"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"u","37":"a #4 #5"},"and_chr":{"56":"a #5"},"and_ff":{"51":"a #4"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"a #2 #5"},"and_qq":{"1.2":"a #5 #7"}},"notes":"Internet Explorer will display a security prompt for access to the OS clipboard.\r\n\r\nChrome 42+, Opera 29+ and Firefox 41+ support clipboard reading/writing only when part of a user action (click, keydown, etc).\r\n\r\nFirefox 40- users [can enable support](https://developer.mozilla.org/en-US/docs/Midas/Security_preferences) with a security preference setting.","notes_by_num":{"1":"Only supports `Text` and `URL` data types and uses [a non-standard method](http://msdn.microsoft.com/en-us/library/ie/ms535220%28v=vs.85%29.aspx) of interacting with the clipboard.","2":"Only fires `copy` event on a valid selection and only `cut` and `paste` in focused editable fields.","3":"Only supports OS clipboard reading/writing via shortcut keys, not through `document.execCommand()`.","4":"Only supports `paste` event (on focused editable field).","5":"Does not support the `ClipboardEvent` constructor","6":"Supports `cut` & `copy` events without a focused editable field, but not `paste` (presumably for security reasons)","7":"Supports `cut` & `copy` events without a focused editable field, but does not fire `paste` with `document.execCommand('paste')`  "},"usage_perc_y":0,"usage_perc_a":84.29,"ucprefix":false,"parent":"","keywords":"cut,copy,paste,clipboarddata,clipboardevent","ie_id":"clipboardapi","chrome_id":"","firefox_id":"","webkit_id":""},"rtcpeerconnection":{"title":"WebRTC Peer-to-peer connections","description":"Method of allowing two users to communicate directly, browser to browser using the RTCPeerConnection API.","spec":"https://w3c.github.io/webrtc-pc/","status":"wd","links":[{"url":"http://www.webrtc.org/","title":"WebRTC Project site"},{"url":"https://temasys.atlassian.net/wiki/display/TWPP/WebRTC+Plugins","title":"Plug-in for support in IE & Safari"},{"url":"http://www.html5labs.com/prototypes/object-rtc/object-rtc/info","title":"Prototype implementation for ORTC"},{"url":"https://blogs.windows.com/msedgedev/2017/01/31/introducing-webrtc-microsoft-edge/","title":"Introducing WebRTC 1.0 and interoperable real-time communications in Microsoft Edge"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x","46":"y x","47":"y x","48":"y x","49":"y x","50":"y x","51":"y x","52":"y x","53":"y x","54":"y x","55":"y x","56":"y x","57":"y x","58":"y x","59":"y x"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y x","38":"y x","39":"y x","40":"y x","41":"y x","42":"y x","43":"y x","44":"y x","45":"y x"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y x"},"bb":{"7":"n","10":"n #1"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y x"},"and_chr":{"56":"y x"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y x"},"and_qq":{"1.2":"y x"}},"notes":"Microsoft also offers a compatible implementation known as [ObjectRTC](http://blogs.msdn.com/b/ie/archive/2014/10/27/bringing-interoperable-real-time-communications-to-the-web.aspx). See [Object RTC](http://caniuse.com/#feat=objectrtc) for support details for that API.","notes_by_num":{"1":"BlackBerry 10 recognizes RTCPeerConnection but real support is unconfirmed.","2":"Can be enabled via the \"Enable WebRTC 1.0\" flag"},"usage_perc_y":63.45,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"webrtcwebrtcv10api","chrome_id":"6612462929444864","firefox_id":"webrtc","webkit_id":"specification-webrtc"},"css3-cursors":{"title":"CSS3 Cursors (original values)","description":"CSS3 cursor values added in the 2004 spec, including none, context-menu, cell, vertical-text, alias, copy, no-drop, not-allowed, nesw-resize, nwse-resize, col-resize, row-resize and all-scroll. ","spec":"http://www.w3.org/TR/css3-ui/#cursor","status":"cr","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/cursor","title":"MDN Documentation"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"a #1","6":"a #1","7":"a #1","8":"a #1","9":"y","10":"y","11":"y"},"edge":{"12":"a #2","13":"a #2","14":"y","15":"y"},"firefox":{"2":"a","3":"a","3.5":"a","3.6":"a","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"a","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"a","3.2":"a","4":"a","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"a #2","9.5-9.6":"a #2","10.0-10.1":"a #2","10.5":"a #2","10.6":"a #2","11":"a #2","11.1":"a #2","11.5":"a #2","11.6":"a #2","12":"a #2","12.1":"a #2","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"u"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{"1":"Partial support refers to no support for the alias, cell, copy, ew-resize, ns-resize, nesw-resize, nwse-resize or context-menu cursors.","2":"Partial support refers to not supporting 'none'."},"usage_perc_y":42.84,"usage_perc_a":0.98,"ucprefix":false,"parent":"","keywords":"cursors, pointers","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css3-cursors-newer":{"title":"CSS3 Cursors: zoom-in & zoom-out","description":"Support for `zoom-in`, `zoom-out` values for the CSS3 `cursor` property.","spec":"http://www.w3.org/TR/css3-ui/#cursor","status":"cr","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/cursor","title":"MDN Documentation"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"y x","3":"y x","3.5":"y x","3.6":"y x","4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y x","5":"y x","6":"y x","7":"y x","8":"y x","9":"y x","10":"y x","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y x","25":"y x","26":"y x","27":"y x","28":"y x","29":"y x","30":"y x","31":"y x","32":"y x","33":"y x","34":"y x","35":"y x","36":"y x","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y x","3.2":"y x","4":"y x","5":"y x","5.1":"y x","6":"y x","6.1":"y x","7":"y x","7.1":"y x","8":"y x","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"y","12":"y","12.1":"y","15":"y x","16":"y x","17":"y x","18":"y x","19":"y x","20":"y x","21":"y x","22":"y x","23":"y x","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"y x","10":"y x"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{},"usage_perc_y":38.9,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"cursors, pointers","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"webvtt":{"title":"WebVTT - Web Video Text Tracks","description":"Format for marking up text captions for multimedia resources.","spec":"https://w3c.github.io/webvtt/","status":"wd","links":[{"url":"http://www.html5rocks.com/en/tutorials/track/basics/","title":"Getting Started With the Track Element"},{"url":"https://dev.opera.com/articles/view/an-introduction-to-webvtt-and-track/","title":"An Introduction to WebVTT and track"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n d","25":"n d","26":"n d","27":"n d","28":"n d","29":"n d","30":"n d","31":"y #1","32":"y #1","33":"y #1","34":"y #1","35":"y #1","36":"y #1","37":"y #1","38":"y #1","39":"y #1","40":"y #1","41":"y #1","42":"y #1","43":"y #1","44":"y #1","45":"y #1","46":"y #1","47":"y #1","48":"y #1","49":"y #1","50":"y #1","51":"y #1","52":"y #1","53":"y #1","54":"y #1"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"y"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"WebVTT must be used with the <track> element.","notes_by_num":{"1":"Firefox currently lacks support for the `::cue` pseudo-element. [See bug #865395.](https://bugzilla.mozilla.org/show_bug.cgi?id=865395)"},"usage_perc_y":83.55,"usage_perc_a":0,"ucprefix":false,"parent":"video","keywords":"captions,track,vtt,subtitles","ie_id":"","chrome_id":"6719115557339136","firefox_id":"","webkit_id":""},"promises":{"title":"Promises","description":"A promise represents the eventual result of an asynchronous operation.","spec":"http://www.ecma-international.org/ecma-262/6.0/#sec-promise-objects","status":"other","links":[{"url":"http://promises-aplus.github.io/promises-spec/","title":"Promises/A+ spec"},{"url":"http://www.chromestatus.com/features/5681726336532480","title":"Chromium dashboard - ES6 Promises"},{"url":"http://www.html5rocks.com/en/tutorials/es6/promises/","title":"JavaScript Promises: There and back again - HTML5 Rocks"},{"url":"https://github.com/jakearchibald/ES6-Promises","title":"A polyfill for ES6-style Promises"}],"categories":["JS API"],"stats":{"ie":{"5.5":"p","6":"p","7":"p","8":"p","9":"p","10":"p","11":"p"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"p","3":"p","3.5":"p","3.6":"p","4":"p","5":"p","6":"p","7":"p","8":"p","9":"p","10":"p","11":"p","12":"p","13":"p","14":"p","15":"p","16":"p","17":"p","18":"p","19":"p","20":"p","21":"p","22":"p","23":"p","24":"p","25":"p","26":"p","27":"a","28":"a","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"p","5":"p","6":"p","7":"p","8":"p","9":"p","10":"p","11":"p","12":"p","13":"p","14":"p","15":"p","16":"p","17":"p","18":"p","19":"p","20":"p","21":"p","22":"p","23":"p","24":"p","25":"p","26":"p","27":"p","28":"p","29":"p","30":"p","31":"p","32":"a","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"p","3.2":"p","4":"p","5":"p","5.1":"p","6":"p","6.1":"p","7":"p","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"p","9.5-9.6":"p","10.0-10.1":"p","10.5":"p","10.6":"p","11":"p","11.1":"p","11.5":"p","11.6":"p","12":"p","12.1":"p","15":"p","16":"p","17":"p","18":"p","19":"a","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"p","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"p","7.0-7.1":"p","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"p"},"android":{"2.1":"p","2.2":"p","2.3":"p","3":"p","4":"p","4.1":"p","4.2-4.3":"p","4.4":"p","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"p","10":"p"},"op_mob":{"10":"p","11":"p","11.1":"p","11.5":"p","12":"p","12.1":"p","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"p","11":"p"},"and_uc":{"11":"p"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":77.19,"usage_perc_a":0.07,"ucprefix":false,"parent":"","keywords":"futures","ie_id":"","chrome_id":"5681726336532480","firefox_id":"promise","webkit_id":"feature-promise-objects"},"css-sticky":{"title":"CSS position:sticky","description":"Keeps elements positioned as \"fixed\" or \"relative\" depending on how it appears in the viewport. As a result the element is \"stuck\" when necessary while scrolling.","spec":"https://drafts.csswg.org/css-position/#sticky-pos","status":"wd","links":[{"url":"http://updates.html5rocks.com/2012/08/Stick-your-landings-position-sticky-lands-in-WebKit","title":"HTML5Rocks"},{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/position","title":"MDN article"},{"url":"http://docs.webplatform.org/wiki/css/properties/position","title":"WebPlatform Docs"},{"url":"https://github.com/filamentgroup/fixed-sticky","title":"Polyfill"},{"url":"https://github.com/wilddeer/stickyfill","title":"Another polyfill"},{"url":"http://gedd.ski/post/position-sticky/","title":"geddski article: Examples and Gotchas"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n d #1","27":"n d #1","28":"n d #1","29":"n d #1","30":"n d #1","31":"n d #1","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n d #2","24":"n d #2","25":"n d #2","26":"n d #2","27":"n d #2","28":"n d #2","29":"n d #2","30":"n d #2","31":"n d #2","32":"n d #2","33":"n d #2","34":"n d #2","35":"n d #2","36":"n d #2","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n d #2","53":"n d #2","54":"n d #2","55":"n d #2","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"y x","7":"y x","7.1":"y x","8":"y x","9":"y x","9.1":"y x","10":"y x","10.1":"y x","TP":"y x"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n d #2","40":"n d #2","41":"n d #2","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y x","7.0-7.1":"y x","8":"y x","8.1-8.4":"y x","9.0-9.2":"y x","9.3":"y x","10.0-10.2":"y x"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n d #2"}},"notes":"","notes_by_num":{"1":"Can be enabled in Firefox by setting the about:config preference layout.css.sticky.enabled to true","2":"Enabled through the \"experimental Web Platform features\" flag"},"usage_perc_y":44.81,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"positionsticky","chrome_id":"6190250464378880","firefox_id":"","webkit_id":"feature-position:-sticky"},"dialog":{"title":"Dialog element","description":"Method of easily creating custom dialog boxes to display to the user with modal or non-modal options. Also includes a `::backdrop` pseudo-element for behind the element.","spec":"https://html.spec.whatwg.org/multipage/forms.html#the-dialog-element","status":"ls","links":[{"url":"https://github.com/GoogleChrome/dialog-polyfill","title":"Polyfill"}],"categories":["DOM","HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n d #1","54":"n d #1"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n d #2","33":"n d #2","34":"n d #2","35":"n d #2","36":"n d #2","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n d #3","20":"n d #3","21":"n d #3","22":"n d #3","23":"n d #3","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Supported in Firefox by enabling \"dom.dialog_element.enabled\" in about:config","2":"Enabled through the \"Experimental Web Platform features\" flag in `chrome://flags`","3":"Enabled through the \"Experimental Web Platform features\" flag in `opera://flags`"},"usage_perc_y":56.27,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"HTMLDialogElement,showModal,backdrop","ie_id":"dialogelementformodals","chrome_id":"5770237022568448","firefox_id":"","webkit_id":""},"css-variables":{"title":"CSS Variables (Custom Properties)","description":"Permits the declaration and usage of cascading variables in stylesheets.","spec":"https://drafts.csswg.org/css-variables/","status":"cr","links":[{"url":"https://hacks.mozilla.org/2013/12/css-variables-in-firefox-nightly/","title":"Mozilla hacks article (older syntax)"},{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_variables","title":"MDN article"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"a"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n d #1","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n d #1","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{"1":"Enabled through the \"Experimental Web Platform features\" flag in `chrome://flags`"},"usage_perc_y":69.06,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"css variables,custom properties","ie_id":"csscustompropertiesakacssvariables","chrome_id":"6401356696911872","firefox_id":"css-variables","webkit_id":"specification-css-variables"},"vibration":{"title":"Vibration API","description":"Method to access the vibration mechanism of the hosting device.","spec":"http://www.w3.org/TR/vibration/","status":"rec","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/Guide/API/Vibration","title":"MDN article"},{"url":"http://davidwalsh.name/vibration-api","title":"Vibration API sample code & demo"},{"url":"http://code.tutsplus.com/tutorials/html5-vibration-api--mobile-22585","title":"Tuts+ article"},{"url":"http://aurelio.audero.it/demo/vibration-api-demo.html","title":"Demo"},{"url":"http://www.illyism.com/journal/vibration-api","title":"Article and Usage Examples"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"y x","12":"y x","13":"y x","14":"y x","15":"y x","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":74.2,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"vibration,mobile,device","ie_id":"vibrationapi","chrome_id":"5698768766763008","firefox_id":"vibration","webkit_id":""},"css-backgroundblendmode":{"title":"CSS background-blend-mode","description":"Allows blending between CSS background images, gradients, and colors.","spec":"http://www.w3.org/TR/compositing-1/#propdef-background-blend-mode","status":"cr","links":[{"url":"http://codepen.io/bennettfeely/pen/rxoAc","title":"codepen example"},{"url":"https://medium.com/web-design-technique/6b51bf53743a","title":"Blog post"},{"url":"http://bennettfeely.com/gradients","title":"Demo"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"a #2","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"a #1","8":"a #1","9":"a #1","9.1":"a #1","10":"a #1","10.1":"a #1","TP":"a #1"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"a #2","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"a #1","8.1-8.4":"a #1","9.0-9.2":"a #1","9.3":"a #1","10.0-10.2":"a #1"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"a #2"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial in Safari refers to not supporting the `hue`, `saturation`, `color`, and `luminosity` blend modes.","2":"Chrome 46 has some [serious bugs](https://code.google.com/p/chromium/issues/detail?id=543583) with multiply, difference, and exclusion blend modes"},"usage_perc_y":62.86,"usage_perc_a":11.94,"ucprefix":false,"parent":"","keywords":"css blend modes,css blending modes,blending,multiply,screen,background","ie_id":"","chrome_id":"5768037999312896","firefox_id":"","webkit_id":""},"css-mixblendmode":{"title":"Blending of HTML/SVG elements","description":"Allows blending between arbitrary SVG and HTML elements","spec":"http://www.w3.org/TR/compositing-1/#mix-blend-mode","status":"cr","links":[{"url":"http://codepen.io/bennettfeely/pen/csjzd","title":"codepen example"},{"url":"http://css-tricks.com/basics-css-blend-modes/","title":"Blog post"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n d #1","30":"n d #1","31":"n d #1","32":"n d #1","33":"n d #1","34":"n d #1","35":"n d #1","36":"n d #1","37":"n d #1","38":"n d #1","39":"n d #1","40":"n d #1","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"a #2","8":"a #2","9":"a #2","9.1":"a #2","10":"a #2","10.1":"a #2","TP":"a #2"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"a #2","8.1-8.4":"a #2","9.0-9.2":"a #2","9.3":"a #2","10.0-10.2":"a #2"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Enabled in Chrome through the \"experimental Web Platform features\" flag in chrome://flags","2":"Partial in Safari refers to not supporting the `hue`, `saturation`, `color`, and `luminosity` blend modes."},"usage_perc_y":58.81,"usage_perc_a":11.87,"ucprefix":false,"parent":"","keywords":"mix-blend-mode,css blend modes,css blending modes","ie_id":"mixblendmode","chrome_id":"6362616360337408","firefox_id":"","webkit_id":""},"speech-recognition":{"title":"Speech Recognition API","description":"Method to provide speech input in a web browser.","spec":"https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#speechreco-section","status":"unoff","links":[{"url":"http://updates.html5rocks.com/2013/01/Voice-Driven-Web-Apps-Introduction-to-the-Web-Speech-API","title":"HTML5Rocks article"},{"url":"http://www.sitepoint.com/introducing-web-speech-api/","title":"SitePoint article"},{"url":"http://aurelio.audero.it/demo/web-speech-api-demo.html","title":"Demo"},{"url":"http://zenorocha.github.io/voice-elements/#recognition-element","title":"Advanced demo and resource"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n d #2","23":"n d #2","24":"n d #2","25":"n d #2","26":"n d #2","27":"n d #2","28":"n d #2","29":"n d #2","30":"n d #2","31":"n d #2","32":"n d #2","33":"n d #2","34":"n d #2","35":"n d #2","36":"n d #2","37":"n d #2","38":"n d #2","39":"n d #2","40":"n d #2","41":"n d #2","42":"n d #2","43":"n d #2","44":"n d #2","45":"n d #2","46":"n d #2","47":"n d #2","48":"n d #2","49":"n d #2","50":"n d #2","51":"n d #2","52":"n d #2","53":"n d #2","54":"n d #2"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"a x #1","26":"a x #1","27":"a x #1","28":"a x #1","29":"a x #1","30":"a x #1","31":"a x #1","32":"a x #1","33":"a x #1","34":"a x #1","35":"a x #1","36":"a x #1","37":"a x #1","38":"a x #1","39":"a x #1","40":"a x #1","41":"a x #1","42":"a x #1","43":"a x #1","44":"a x #1","45":"a x #1","46":"a x #1","47":"a x #1","48":"a x #1","49":"a x #1","50":"a x #1","51":"a x #1","52":"a x #1","53":"a x #1","54":"a x #1","55":"a x #1","56":"a x #1","57":"a x #1","58":"a x #1","59":"a x #1"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"a x #1","28":"a x #1","29":"a x #1","30":"a x #1","31":"a x #1","32":"a x #1","33":"a x #1","34":"a x #1","35":"a x #1","36":"a x #1","37":"a x #1","38":"a x #1","39":"a x #1","40":"a x #1","41":"a x #1","42":"a x #1","43":"a x #1","44":"a x #1","45":"a x #1"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"a x #1"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"a x #1"},"and_qq":{"1.2":"a x #1"}},"notes":"","notes_by_num":{"1":"Partial support refers to some attributes missing.","2":"Firefox currently has a `media.webspeech.recognition.enable` flag in about:config for this, but actual support is waiting for permissions to be sorted out.","3":"Reported to be in development for Samsung Internet for GearVR, due Q1/2017"},"usage_perc_y":0,"usage_perc_a":56.81,"ucprefix":false,"parent":"","keywords":"#web-speech,speechrecognition,ASR","ie_id":"webspeechapiinput","chrome_id":"5908775487668224","firefox_id":"","webkit_id":""},"high-resolution-time":{"title":"High Resolution Time API","description":"Method to provide the current time in sub-millisecond resolution and such that it is not subject to system clock skew or adjustments. Called using `performance.now()`","spec":"http://www.w3.org/TR/hr-time/","status":"rec","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Performance.now()","title":"MDN article"},{"url":"http://updates.html5rocks.com/2012/08/When-milliseconds-are-not-enough-performance-now","title":"HTML5Rocks article"},{"url":"http://www.sitepoint.com/discovering-the-high-resolution-time-api/","title":"SitePoint article"},{"url":"http://aurelio.audero.it/demo/high-resolution-time-api-demo.html","title":"Demo"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"y x","21":"y x","22":"y x","23":"y x","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"y","8.1-8.4":"n","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":92.25,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"performance,now,testing","ie_id":"highresolutiontime","chrome_id":"5349124069130240","firefox_id":"","webkit_id":""},"battery-status":{"title":"Battery Status API","description":"Method to provide information about the battery status of the hosting device.","spec":"http://www.w3.org/TR/battery-status/","status":"cr","links":[{"url":"https://developer.mozilla.org/en-US/docs/WebAPI/Battery_Status","title":"MDN Docs"},{"url":"http://www.smartjava.org/examples/webapi-battery/","title":"Simple demo"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"a x #1","11":"a x #1","12":"a x #1","13":"a x #1","14":"a x #1","15":"a x #1","16":"a #1","17":"a #1","18":"a #1","19":"a #1","20":"a #1","21":"a #1","22":"a #1","23":"a #1","24":"a #1","25":"a #1","26":"a #1","27":"a #1","28":"a #1","29":"a #1","30":"a #1","31":"a #1","32":"a #1","33":"a #1","34":"a #1","35":"a #1","36":"a #1","37":"a #1","38":"a #1","39":"a #1","40":"a #1","41":"a #1","42":"a #1","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n d","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"a #1"},"samsung":{"4":"y"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{"1":"Partial support refers to support for the older specification's `navigator.battery` rather than `navigator.getBattery()` to access the `BatteryManager`."},"usage_perc_y":62.3,"usage_perc_a":9.51,"ucprefix":false,"parent":"","keywords":"navigator.battery,navigator.getbattery,batterymanager","ie_id":"batterystatusapi","chrome_id":"4537134732017664","firefox_id":"","webkit_id":""},"serviceworkers":{"title":"Service Workers","description":"Method that enables applications to take advantage of persistent background processing, including hooks to enable bootstrapping of web applications while offline.","spec":"https://slightlyoff.github.io/ServiceWorker/spec/service_worker/","status":"wd","links":[{"url":"http://www.html5rocks.com/en/tutorials/service-worker/introduction/","title":"HTML5Rocks article (introduction)"},{"url":"https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker_API","title":"MDN article"},{"url":"https://jakearchibald.github.io/isserviceworkerready/resources.html","title":"List of various resources"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n d #2"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n d #1","34":"n d #1","35":"n d #1","36":"n d #1","37":"n d #1","38":"n d #1","39":"n d #1","40":"n d #1","41":"n d #1","42":"n d #1","43":"n d #1","44":"a","45":"a","46":"a","47":"a","48":"a","49":"a","50":"a","51":"a","52":"a","53":"a","54":"a"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a","46":"a","47":"a","48":"a","49":"a","50":"a","51":"a","52":"a","53":"a","54":"a","55":"a","56":"a","57":"a","58":"a","59":"a"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"a","28":"a","29":"a","30":"a","31":"a","32":"a","33":"a","34":"a","35":"a","36":"a","37":"a","38":"a","39":"a","40":"a","41":"a","42":"a","43":"a","44":"a","45":"a"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"a"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"a"},"and_chr":{"56":"a"},"and_ff":{"51":"a"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"a"},"and_qq":{"1.2":"a"}},"notes":"Details on partial support can be found on [is ServiceWorker Ready?](https://jakearchibald.github.io/isserviceworkerready/)","notes_by_num":{"1":"Partial support can be enabled in Firefox with the `dom.serviceWorkers.enabled` flag.","2":"Available behind the \"Enable service workers\" flag"},"usage_perc_y":0,"usage_perc_a":62.1,"ucprefix":false,"parent":"","keywords":"","ie_id":"serviceworker","chrome_id":"6561526227927040","firefox_id":"service-worker","webkit_id":"specification-service-workers"},"text-decoration":{"title":"text-decoration styling","description":"Method of defining the type, style and color of lines in the text-decoration property. These can be defined as shorthand (e.g. `text-decoration: line-through dashed blue`) or as single properties (e.g. `text-decoration-color: blue`)","spec":"http://www.w3.org/TR/css-text-decor-3/#line-decoration","status":"cr","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/text-decoration-style","title":"MDN Documentation for text-decoration-style"},{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/text-decoration-color","title":"MDN Documentation for text-decoration-color"},{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/text-decoration-line","title":"MDN Documentation for text-decoration-line"},{"url":"https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6514536-text-decoration-styling","title":"Microsoft Edge feature request on UserVoice"},{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/text-decoration-skip","title":"MDN Documentation for text-decoration-skip"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=812990","title":"Firefox implementation bug"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"a x #4","7":"a x #4","8":"a x #4","9":"a x #4","10":"a x #4","11":"a x #4","12":"a x #4","13":"a x #4","14":"a x #4","15":"a x #4","16":"a x #4","17":"a x #4","18":"a x #4","19":"a x #4","20":"a x #4","21":"a x #4","22":"a x #4","23":"a x #4","24":"a x #4","25":"a x #4","26":"a x #4","27":"a x #4","28":"a x #4","29":"a x #4","30":"a x #4","31":"a x #4","32":"a x #4","33":"a x #4","34":"a x #4","35":"a x #4","36":"a #4","37":"a #4","38":"a #4","39":"a #4","40":"a #4","41":"a #4","42":"a #4","43":"a #4","44":"a #4","45":"a #4","46":"a #4","47":"a #4","48":"a #4","49":"a #4","50":"a #4","51":"a #4","52":"a #4","53":"a #4","54":"a #4"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n x d #1","27":"n x d #1","28":"n x d #1","29":"n x d #1","30":"n x d #1","31":"n x d #1","32":"n x d #1","33":"n x d #1","34":"n x d #1","35":"n x d #1","36":"n x d #1","37":"n x d #1","38":"n x d #1","39":"n x d #1","40":"n x d #1","41":"n x d #1","42":"n x d #1","43":"n x d #1","44":"n x d #1","45":"n x d #1","46":"n x d #1","47":"n x d #1","48":"n x d #1","49":"n x d #1","50":"n x d #1","51":"n x d #1","52":"n x d #1","53":"n x d #1","54":"n x d #1","55":"n x d #1","56":"n x d #1","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"a x #2 #4","8":"a x #2 #3","9":"a x #2 #3","9.1":"a x #2 #3","10":"a x #2 #3","10.1":"a x #2 #3","TP":"a x #2 #3"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n x d #1","36":"n x d #1","37":"n x d #1","38":"n x d #1","39":"n x d #1","40":"n x d #1","41":"n x d #1","42":"n x d #1","43":"n x d #1","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"a x #2","8.1-8.4":"a x #2","9.0-9.2":"a x #2","9.3":"a x #2","10.0-10.2":"a x #2"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"n x d #1"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"All browsers support the CSS2 version of `text-decoration`, which matches only the `text-decoration-line` values (`underline`, etc.)","notes_by_num":{"1":"Enabled in Chrome through the \"experimental Web Platform features\" flag in chrome://flags","2":"Partial support refers to not supporting the `text-decoration-style` property.","3":"Safari 8+ supports `-webkit-text-decoration-skip` with values `none` and `skip` (other values behave like `none` or `skip`)","4":"Partial support refers to not supporting the `text-decoration-skip` property."},"usage_perc_y":0.1,"usage_perc_a":18.51,"ucprefix":false,"parent":"","keywords":"text-decoration-line,text-decoration-style,text-decoration-color,text-decoration-skip","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"iframe-srcdoc":{"title":"srcdoc attribute for iframes","description":"Override the content specified in the `src` attribute (if present) with HTML content within the attribute.","spec":"https://html.spec.whatwg.org/multipage/embedded-content.html#attr-iframe-srcdoc","status":"ls","links":[{"url":"https://docs.webplatform.org/wiki/html/elements/iframe","title":"WebPlatform Docs"},{"url":"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe","title":"MDN Docs"},{"url":"https://github.com/jugglinmike/srcdoc-polyfill","title":"Srcdoc Polyfill"},{"url":"https://bocoup.com/weblog/third-party-javascript-development-future/","title":"Article"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"p","7":"p","8":"p","9":"p","10":"p","11":"p"},"edge":{"12":"p","13":"p","14":"p","15":"p"},"firefox":{"2":"n","3":"p","3.5":"p","3.6":"p","4":"p","5":"p","6":"p","7":"p","8":"p","9":"p","10":"p","11":"p","12":"p","13":"p","14":"p","15":"p","16":"p","17":"p","18":"p","19":"p","20":"p","21":"p","22":"p","23":"p","24":"p","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"p","15":"p","16":"p","17":"p","18":"p","19":"p","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"p","5":"p","5.1":"p","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"p","11.5":"p","11.6":"p","12":"p","12.1":"p","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"p","4.2-4.3":"p","5.0-5.1":"p","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"p","2.2":"p","2.3":"p","3":"p","4":"p","4.1":"p","4.2-4.3":"p","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"p","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"p","11.5":"p","12":"p","12.1":"p","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"p","11":"p"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":86.43,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"iframesrcdocattribute","chrome_id":"5222955109842944","firefox_id":"","webkit_id":""},"speech-synthesis":{"title":"Speech Synthesis API","description":"A web API for controlling a text-to-speech output.","spec":"https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#tts-section","status":"unoff","links":[{"url":"http://updates.html5rocks.com/2014/01/Web-apps-that-talk---Introduction-to-the-Speech-Synthesis-API","title":"HTML5Rocks article"},{"url":"http://www.sitepoint.com/talking-web-pages-and-the-speech-synthesis-api/","title":"SitePoint article"},{"url":"http://aurelio.audero.it/demo/speech-synthesis-api-demo.html","title":"Demo"},{"url":"http://zenorocha.github.io/voice-elements/","title":"Advanced demo and resource"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n d #1","32":"n d #1","33":"n d #1","34":"n d #1","35":"n d #1","36":"n d #1","37":"n d #1","38":"n d #1","39":"n d #1","40":"n d #1","41":"n d #1","42":"n d #1","43":"n d #1","44":"n d #1","45":"n d #1","46":"n d #1","47":"n d #1","48":"n d #1","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"y"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"y"}},"notes":"Samsung Internet for GearVR: In Development, release based on Chromium m53 due Q1/2017","notes_by_num":{"1":"Can be enabled in Firefox using the `media.webspeech.synth.enabled` about:config flag."},"usage_perc_y":71.54,"usage_perc_a":0,"ucprefix":false,"parent":"web-speech","keywords":"speech,synthesis,speechSynthesis,TTS,SpeechSynthesisUtterance,","ie_id":"webspeechapisynthesis","chrome_id":"4782875580825600","firefox_id":"webspeech-synthesis","webkit_id":""},"user-timing":{"title":"User Timing API","description":"Method to help web developers measure the performance of their applications by giving them access to high precision timestamps.","spec":"http://www.w3.org/TR/user-timing/","status":"rec","links":[{"url":"http://www.sitepoint.com/discovering-user-timing-api/","title":"SitePoint article"},{"url":"http://www.html5rocks.com/en/tutorials/webperformance/usertiming/","title":"HTML5Rocks article"},{"url":"https://gist.github.com/pmeenan/5902672","title":"Polyfill"},{"url":"http://aurelio.audero.it/demo/user-timing-api-demo.html","title":"Demo"},{"url":"https://github.com/nicjansma/usertiming.js","title":"UserTiming.js polyfill"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":71.2,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"performance,testing,mark,measure","ie_id":"usertimingapi","chrome_id":"5066549580791808","firefox_id":"","webkit_id":"specification-user-timing"},"srcset":{"title":"Srcset attribute","description":"Allows authors to define various image resources and \"hints\" that assist a user agent to determine the most appropriate image source to display (e.g. high-resolution displays, small monitors, etc).","spec":"https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-srcset","status":"ls","links":[{"url":"https://www.webkit.org/blog/2910/improved-support-for-high-resolution-displays-with-the-srcset-image-attribute/","title":"Improved support for high-resolution displays with the srcset image attribute"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"a #2","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n d #1","33":"n d #1","34":"n d #1","35":"n d #1","36":"n d #1","37":"n d #1","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"a #2","35":"a #2","36":"a #2","37":"a #2","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"a #2","8":"a #2","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"a #2","22":"a #2","23":"a #2","24":"a #2","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"a #2","8.1-8.4":"a #2","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Can be enabled in Firefox by setting the about:config preference dom.image.srcset.enabled to true","2":"Supports the subset of the syntax for resolution switching (using the `x` descriptor), but not the full syntax that can be used with `sizes` (using the `w` descriptor)."},"usage_perc_y":84.52,"usage_perc_a":0.75,"ucprefix":false,"parent":"","keywords":"","ie_id":"imgsrcset","chrome_id":"4644337115725824","firefox_id":"","webkit_id":"feature-srcset-w-descriptor-and-related-sizes-attribute,feature-srcset-x-descriptor"},"ambient-light":{"title":"Ambient Light API","description":"Defines events that provide information about the ambient light level, as measured by a device's light sensor.","spec":"http://www.w3.org/TR/ambient-light/","status":"cr","links":[{"url":"http://aurelio.audero.it/demo/ambient-light-api-demo.html","title":"Demo"},{"url":"http://modernweb.com/2014/05/27/introduction-to-the-ambient-light-api/","title":"Article"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"a #1","23":"a #1","24":"a #1","25":"a #1","26":"a #1","27":"a #1","28":"a #1","29":"a #1","30":"a #1","31":"a #1","32":"a #1","33":"a #1","34":"a #1","35":"a #1","36":"a #1","37":"a #1","38":"a #1","39":"a #1","40":"a #1","41":"a #1","42":"a #1","43":"a #1","44":"a #1","45":"a #1","46":"a #1","47":"a #1","48":"a #1","49":"a #1","50":"a #1","51":"a #1","52":"a #1","53":"a #1","54":"a #1"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n","55":"n","56":"n","57":"n","58":"n","59":"n"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{"1":"Partial support in desktop Firefox refers to support being limited to Mac OS X. [Support for Windows 7 is in progress](https://bugzilla.mozilla.org/show_bug.cgi?id=754199)"},"usage_perc_y":1.44,"usage_perc_a":6.47,"ucprefix":false,"parent":"","keywords":"","ie_id":"ambientlightsensorapi","chrome_id":"5298357018820608","firefox_id":"","webkit_id":""},"will-change":{"title":"CSS will-change property","description":"Method of optimizing animations by informing the browser which elements will change and what properties will change.","spec":"http://dev.w3.org/csswg/css-will-change/","status":"wd","links":[{"url":"https://dev.opera.com/articles/css-will-change-property/","title":"Detailed article"},{"url":"http://aerotwist.com/blog/bye-bye-layer-hacks/","title":"Blog post"},{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/will-change","title":"will-change on MDN"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n d #1","30":"n d #1","31":"n d #1","32":"n d #1","33":"n d #1","34":"n d #1","35":"n d #1","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Supported in Firefox behind the `layout.css.will-change.enabled` flag"},"usage_perc_y":74.03,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"scroll-position","ie_id":"csswillchange","chrome_id":"5954199330226176","firefox_id":"","webkit_id":"specification-css-will-change"},"css-shapes":{"title":"CSS Shapes Level 1","description":"Allows geometric shapes to be set in CSS to define an area for text to flow around.","spec":"http://www.w3.org/TR/css-shapes/","status":"cr","links":[{"url":"http://html.adobe.com/webplatform/layout/shapes/","title":"Adobe demos and samples"},{"url":"http://html.adobe.com/webplatform/layout/shapes/browser-support/","title":"CSS shapes support test by Adobe"},{"url":"http://alistapart.com/article/css-shapes-101","title":"A List Apart article"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=1040714","title":"Firefox tracking bug"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n d #1","35":"n d #1","36":"n d #1","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"y x","8":"y x","9":"y x","9.1":"y x","10":"y x","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"y x","8.1-8.4":"y x","9.0-9.2":"y x","9.3":"y x","10.0-10.2":"y x"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Enabled in Chrome through the \"experimental Web Platform features\" flag in chrome://flags"},"usage_perc_y":68.14,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"circle,ellipse,polygon,inset,shape-outside,shape-inside","ie_id":"shapes","chrome_id":"5163890719588352","firefox_id":"css-shapes","webkit_id":"feature-css-shapes-level-1"},"domcontentloaded":{"title":"DOMContentLoaded","description":"JavaScript event that fires when the DOM is loaded, but before all page assets are loaded (CSS, images, etc.).","spec":"https://html.spec.whatwg.org/multipage/syntax.html#stop-parsing","status":"ls","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/Reference/Events/DOMContentLoaded","title":"MDN: DOMContentLoaded"}],"categories":["DOM"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"y","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":97.86,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"dom,domready,onload,contentloaded,document","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"proximity":{"title":"Proximity API","description":"Defines events that provide information about the distance between a device and an object, as measured by a proximity sensor.","spec":"http://www.w3.org/TR/proximity/","status":"cr","links":[{"url":"http://aurelio.audero.it/demo/proximity-api-demo.html","title":"Demo"},{"url":"http://www.sitepoint.com/introducing-proximity-api/","title":"SitePoint article"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n","55":"n","56":"n","57":"n","58":"n","59":"n"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{},"usage_perc_y":6.6,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"kerning-pairs-ligatures":{"title":"Improved kerning pairs & ligatures","description":"Currently non-standard method of improving kerning pairs & ligatures using `text-rendering: optimizeLegibility`.","spec":"http://www.w3.org/TR/SVG11/painting.html#TextRenderingProperty","status":"unoff","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/text-rendering","title":"MDN article"},{"url":"http://css-tricks.com/almanac/properties/t/text-rendering/","title":"CSS Tricks article"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"u","4.0-4.1":"u","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"a #1","4":"a #1","4.1":"a #1","4.2-4.3":"a #1","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Partial support in Android browser versions is due to a serious bug where `text-rendering: optimizeLegibility` causes custom web fonts to not render."},"usage_perc_y":86.92,"usage_perc_a":0.74,"ucprefix":false,"parent":"","keywords":"optimizeLegibility,optimizeSpeed,geometricPrecision","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"iframe-seamless":{"title":"seamless attribute for iframes","description":"The seamless attribute makes an iframe's contents actually part of a page, and adopts the styles from its hosting page. The attribute has been [removed from the current specification](https://github.com/whatwg/html/issues/331). ","spec":"https://www.w3.org/TR/html51/semantics.html#attr-iframe-seamless","status":"unoff","links":[{"url":"https://github.com/ornj/seamless-polyfill","title":"Experimental polyfill"},{"url":"http://labs.ft.com/2013/01/seamless-iframes-not-quite-seamless/","title":"Article"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=631218","title":"Bug on Firefox support"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"u","53":"u","54":"u"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n d","21":"n d","22":"n d","23":"n d","24":"n d","25":"n d","26":"n d","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n","55":"n","56":"n","57":"n","58":"n","59":"n"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n #1","7.1":"n #1","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n #1","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"y"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"Chrome 20-26 had partial support behind a flag, though this was [later removed](http://crbug.com/229421).","notes_by_num":{"1":"Hides the border of seamless iframes and recognizes the 'seamless' DOM property, but does not provide actual support."},"usage_perc_y":8.94,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"iframeseamlessattribute","chrome_id":"6630329993396224","firefox_id":"","webkit_id":""},"css-image-orientation":{"title":"CSS3 image-orientation","description":"CSS property used generally to fix the intended orientation of an image. This can be done using 90 degree increments or based on the image's EXIF data using the \"from-image\" value.","spec":"http://www.w3.org/TR/css3-images/#image-orientation","status":"cr","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/image-orientation","title":"MDN article"},{"url":"http://sethfowler.org/blog/2013/09/13/new-in-firefox-26-css-image-orientation/","title":"Blog post"},{"url":"http://jsbin.com/EXUTolo/4","title":"Demo (Chinese)"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n","55":"n","56":"n","57":"n","58":"n","59":"n"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n"},"ios_saf":{"3.2":"a #1","4.0-4.1":"a #1","4.2-4.3":"a #1","5.0-5.1":"a #1","6.0-6.1":"a #1","7.0-7.1":"a #1","8":"a #1","8.1-8.4":"a #1","9.0-9.2":"a #1","9.3":"a #1","10.0-10.2":"a #1"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"Opening the image in a new tab in Chrome results in the image shown in the orientation according to the EXIF data.","notes_by_num":{"1":"Partial support in iOS refers to the browser using EXIF data by default, though it does not actually support the property."},"usage_perc_y":6.43,"usage_perc_a":9.96,"ucprefix":false,"parent":"","keywords":"image-orientation,from-image,flip","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"picture":{"title":"Picture element","description":"A responsive images method to control which image resource a user agent presents to a user, based on resolution, media query and/or support for a particular image format","spec":"https://html.spec.whatwg.org/multipage/embedded-content.html#the-picture-element","status":"ls","links":[{"url":"http://responsiveimages.org/demos/","title":"Demo"},{"url":"http://code.tutsplus.com/tutorials/better-responsive-images-with-the-picture-element--net-36583","title":"Tutorial"},{"url":"http://usecases.responsiveimages.org/","title":"Read about the use cases"},{"url":"http://responsiveimages.org/","title":"General information about Responsive Images"},{"url":"https://dev.opera.com/articles/responsive-images/","title":"Blog post on usage"},{"url":"http://www.html5rocks.com/tutorials/responsive/picture-element/","title":"HTML5 Rocks tutorial"},{"url":"https://github.com/scottjehl/picturefill","title":"Picturefill - polyfill for picture, srcset, sizes, and more"}],"categories":["DOM","HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n d #3","35":"n d #3","36":"n d #3","37":"n d #3","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n d #1","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n d #2","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Enabled in Chrome through the \"experimental Web Platform features\" flag in chrome://flags","2":"Enabled in Opera through the \"experimental Web Platform features\" flag in opera://flags","3":"Enabled in Firefox by setting the about:config preference dom.image.picture.enable to true"},"usage_perc_y":75.36,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"<picture>","ie_id":"pictureelement","chrome_id":"5910974510923776","firefox_id":"","webkit_id":"feature-picture-element"},"woff2":{"title":"WOFF 2.0 - Web Open Font Format","description":"TrueType/OpenType font that provides better compression than WOFF 1.0.","spec":"http://www.w3.org/TR/WOFF2/","status":"cr","links":[{"url":"https://gist.github.com/sergejmueller/cf6b4f2133bcb3e2f64a","title":"Basics about WOFF 2.0"},{"url":"http://everythingfonts.com/ttf-to-woff2","title":"WOFF 2.0 converter"}],"categories":["Other"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"a #1","10.1":"a #1","TP":"a #1"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"y"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Supported only on Safari for Mac OS Sierra, not El Capitan & older."},"usage_perc_y":72.47,"usage_perc_a":1.46,"ucprefix":false,"parent":"fontface","keywords":"woff, fontface, webfonts","ie_id":"wofffileformat20","chrome_id":"6718644721549312","firefox_id":"","webkit_id":"specification-woff-file-format-2.0"},"text-size-adjust":{"title":"CSS text-size-adjust","description":"On mobile devices, the text-size-adjust CSS property allows Web authors to control if and how the text-inflating algorithm is applied to the textual content of the element it is applied to.","spec":"http://dev.w3.org/csswg/css-size-adjust/","status":"unoff","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/text-size-adjust","title":"MDN Docs"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=1226116","title":"Mozilla Bug\u00a0#1226116: Unprefix -moz-text-size-adjust"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n #2","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n #2","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"y","44":"n","45":"n"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"y x","6.0-6.1":"y x","7.0-7.1":"y x","8":"y x","8.1-8.4":"y x","9.0-9.2":"y x","9.3":"y x","10.0-10.2":"y x"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"y"},"and_ff":{"51":"y x"},"ie_mob":{"10":"y x #1","11":"y x #1"},"and_uc":{"11":"y x"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"","notes_by_num":{"1":"If the viewport size is set using a `<meta>` element, the `-ms-text-size-adjust` property is ignored. See [MSDN](https://msdn.microsoft.com/en-us/library/ie/dn793579%28v=vs.85%29.aspx)","2":"Old versions of WebKit-based desktop browsers (Chrome<27, Safari<6) [suffer from a bug](https://bugs.webkit.org/show_bug.cgi?id=56543) where if `-webkit-text-size-adjust` is explicitly set to `none`, instead of ignoring the property, the browsers will prevent the user from zooming in or out on the webpage."},"usage_perc_y":67.73,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"5730156303876096","firefox_id":"","webkit_id":""},"web-animation":{"title":"Web Animations API","description":"Lets you create animations that are run in the browser and as well as inspect and manipulate animations created through declarative means like CSS.","spec":"http://w3c.github.io/web-animations/","status":"wd","links":[{"url":"http://updates.html5rocks.com/2014/05/Web-Animations---element-animate-is-now-in-Chrome-36","title":"HTML5 Rocks"},{"url":"http://updates.html5rocks.com/2013/12/New-Web-Animations-engine-in-Blink-drives-CSS-Animations-Transitions","title":"HTML5 Rocks"},{"url":"https://birtles.github.io/areweanimatedyet/","title":"Current Firefox status"},{"url":"https://github.com/web-animations/web-animations-js","title":"Polyfill"}],"categories":["DOM","JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"a d #3","34":"a d #3","35":"a d #3","36":"a d #3","37":"a d #3","38":"a d #3","39":"a d #3","40":"a d #3","41":"a d #3","42":"a d #3","43":"a d #3","44":"a d #3","45":"a d #3","46":"a d #3","47":"a #3","48":"a #3","49":"a #3","50":"a #3","51":"a #3","52":"a #3","53":"a #3","54":"a #3"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"a #1","37":"a #1","38":"a #1","39":"a #2","40":"a #2","41":"a #2","42":"a #2","43":"a #2","44":"a #2","45":"a #2","46":"a #2","47":"a #2","48":"a #2","49":"a #2","50":"a #2","51":"a #2","52":"a #2","53":"a #2","54":"a #2","55":"a #2","56":"a #2","57":"a #2","58":"a #2","59":"a #2"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"a #1","24":"a #1","25":"a #1","26":"a #2","27":"a #2","28":"a #2","29":"a #2","30":"a #2","31":"a #2","32":"a #2","33":"a #2","34":"a #2","35":"a #2","36":"a #2","37":"a #2","38":"a #2","39":"a #2","40":"a #2","41":"a #2","42":"a #2","43":"a #2","44":"a #2","45":"a #2"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"a #2"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"a #2"},"and_chr":{"56":"a #2"},"and_ff":{"51":"a #3"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"a #2"},"and_qq":{"1.2":"a #2"}},"notes":"","notes_by_num":{"1":"Partial support refers to basic support of `element.animate()`","2":"Partial support refers to basic support of `element.animate()` and [playback control of AnimationPlayer](https://www.chromestatus.com/features/5633748733263872)","3":"Partial support in Firefox is detailed in [Are we animated yet?](https://birtles.github.io/areweanimatedyet/)"},"usage_perc_y":0,"usage_perc_a":62.79,"ucprefix":false,"parent":"","keywords":"animate,play,pause,reverse,finish,currentTime,startTime,playbackRate,playState","ie_id":"webanimationsjavascriptapi","chrome_id":"4854343836631040,5633748733263872","firefox_id":"","webkit_id":"specification-web-animations"},"resource-timing":{"title":"Resource Timing","description":"Method to help web developers to collect complete timing information related to resources on a document.","spec":"http://www.w3.org/TR/resource-timing/","status":"cr","links":[{"url":"http://aurelio.audero.it/demo/resource-timing-api-demo.html","title":"Demo"},{"url":"http://googledevelopers.blogspot.com/2013/12/measuring-network-performance-with.html","title":"Blog post"},{"url":"http://www.sitepoint.com/introduction-resource-timing-api/","title":"SitePoint article"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n d #1","32":"n d #1","33":"n d #1","34":"n d #1","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Can be enabled in Firefox using the dom.enable_resource_timing flag"},"usage_perc_y":71.27,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"performance,testing,resource","ie_id":"resourcetimingapi","chrome_id":"5796350423728128","firefox_id":"","webkit_id":"specification-resource-timing"},"custom-elements":{"title":"Custom Elements v0","description":"Method of defining new HTML tags.","spec":"http://www.w3.org/TR/custom-elements/","status":"wd","links":[{"url":"http://w3c.github.io/webcomponents/spec/custom/","title":"W3C Editor's Draft spec (closer to current implementations)"},{"url":"http://www.polymer-project.org/platform/custom-elements.html","title":"Polymer project (polyfill & web components framework)"},{"url":"http://www.html5rocks.com/tutorials/webcomponents/customelements/","title":"HTML5Rocks - Custom Elements: defining new elements in HTML"},{"url":"https://code.google.com/p/chromium/issues/detail?id=234509","title":"Chromium tracking bug: Implement Custom Elements"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=889230","title":"Firefox tracking bug: Implement Custom Elements (from Web Components)"},{"url":"http://status.modern.ie/customelements","title":"IE Web Platform Status and Roadmap: Custom Elements"},{"url":"https://github.com/WebReflection/document-register-element","title":"document.registerElement polyfill in 3KB minified & gzipped"},{"url":"https://developers.google.com/web/fundamentals/primers/customelements/","title":"Google Developers - Custom elements v1: reusable web components"},{"url":"https://github.com/webcomponents/webcomponentsjs/tree/v1/src/CustomElements/v1","title":"customElements.define polyfill (supersedes document.registerElement)"}],"categories":["DOM","HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"p","11":"p"},"edge":{"12":"p","13":"p","14":"p","15":"p"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n d #1","24":"n d #1","25":"n d #1","26":"n d #1","27":"n d #1","28":"n d #1","29":"n d #1","30":"p d #1","31":"p d #1","32":"p d #1","33":"p d #1","34":"p d #1","35":"p d #1","36":"p d #1","37":"p d #1","38":"p d #1","39":"p d #1","40":"p d #1","41":"p d #1","42":"p d #1","43":"p d #1","44":"p d #1","45":"p d #1","46":"p d #1","47":"p d #1","48":"p d #1","49":"p d #1","50":"p d #1","51":"p d #1","52":"p d #1","53":"p d #1","54":"p d #1"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n d","28":"n d","29":"n d","30":"n d","31":"n d","32":"n d","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"p","6.1":"p","7":"p","7.1":"p","8":"p","9":"p","9.1":"p","10":"p","10.1":"p","TP":"p"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n d","16":"n d","17":"n d","18":"n d","19":"n d","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"p","8":"p","8.1-8.4":"p","9.0-9.2":"p","9.3":"p","10.0-10.2":"p"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"p d #1"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Enabled through the \"dom.webcomponents.enabled\" preference in about:config"},"usage_perc_y":57.28,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"web components,registerElement","ie_id":"customelements","chrome_id":"4642138092470272","firefox_id":"custom-elements","webkit_id":"feature-custom-elements"},"imports":{"title":"HTML Imports","description":"Method of including and reusing HTML documents in other HTML documents.","spec":"http://www.w3.org/TR/html-imports/","status":"wd","links":[{"url":"http://www.polymer-project.org/platform/html-imports.html","title":"Polymer project (polyfill & web components framework)"},{"url":"http://www.html5rocks.com/tutorials/webcomponents/imports/","title":"HTML5Rocks - HTML Imports: #include for the web"},{"url":"https://code.google.com/p/chromium/issues/detail?id=240592","title":"Chromium tracking bug: Implement HTML Imports"},{"url":"https://bugzilla.mozilla.org/show_bug.cgi?id=877072","title":"Firefox tracking bug: Implement HTML Imports"},{"url":"http://status.modern.ie/htmlimports","title":"IE Web Platform Status and Roadmap: HTML Imports"}],"categories":["DOM","HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"p","11":"p"},"edge":{"12":"p","13":"p","14":"p","15":"p"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"p","31":"p","32":"p d #1","33":"p d #1","34":"p d #1","35":"p d #1","36":"p d #1","37":"p d #1","38":"p d #1","39":"p d #1","40":"p d #1","41":"p d #1","42":"p d #1","43":"p d #1","44":"p d #1","45":"p d #1","46":"p d #1","47":"p d #1","48":"p d #1","49":"p d #1","50":"p d #1","51":"p d #1","52":"p d #1","53":"p d #1","54":"p d #1"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n d #2","31":"n d #2","32":"n d #2","33":"n d #2","34":"n d #2","35":"p d #3","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"p","6.1":"p","7":"p","7.1":"p","8":"p","9":"p","9.1":"p","10":"p","10.1":"p","TP":"p"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n d #4","18":"n d #4","19":"n d #4","20":"n d #4","21":"n d #4","22":"p d #5","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"p","8":"p","8.1-8.4":"p","9.0-9.2":"p","9.3":"p","10.0-10.2":"p"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"p"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Firefox [has no plans to support HTML imports](https://hacks.mozilla.org/2014/12/mozilla-and-web-components/) though for now it can be enabled through the \"dom.webcomponents.enabled\" preference in about:config","2":"Enabled through the \"Enable HTML Imports\" flag in chrome://flags","3":"Enabled through the \"Experimental Web Platform features\" flag in chrome://flags","4":"Enabled through the \"Enable HTML Imports\" flag in opera://flags","5":"Enabled through the \"Experimental Web Platform features\" flag in opera://flags"},"usage_perc_y":56.46,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"web components","ie_id":"htmlimports","chrome_id":"5144752345317376","firefox_id":"html-imports","webkit_id":"feature-html-imports"},"input-file-multiple":{"title":"Multiple file selection","description":"Allows users to select multiple files in the file picker.","spec":"https://html.spec.whatwg.org/multipage/forms.html#attr-input-multiple","status":"ls","links":[{"url":"https://code.google.com/p/chromium/issues/detail?id=348912","title":"Chrome bug (for Android)"},{"url":"http://www.raymondcamden.com/2012/2/28/Working-with-HTML5s-multiple-file-upload-support","title":"Article"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"n #1"},"android":{"2.1":"n #1","2.2":"n #1","2.3":"n #1","3":"n #1","4":"n #1","4.1":"n #1","4.2-4.3":"n #1","4.4":"n #1","4.4.3-4.4.4":"n #1","53":"n #1"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n #1","11":"n #1","11.1":"n #1","11.5":"n #1","12":"n #1","12.1":"n #1","37":"n #1"},"and_chr":{"56":"a #1"},"and_ff":{"51":"n #1"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n #1"},"samsung":{"4":"n #1"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Not supported on Android 4.x and below, presumably an OS limitation. Only seems to work in Android 5.x for the Chrome browser."},"usage_perc_y":52.92,"usage_perc_a":25.45,"ucprefix":false,"parent":"forms","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"atob-btoa":{"title":"Base64 encoding and decoding","description":"Utility functions for of encoding and decoding strings to and from base 64: window.atob() and window.btoa().","spec":"https://html.spec.whatwg.org/multipage/webappapis.html#atob","status":"ls","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa","title":"MDN article on btoa()"},{"url":"https://developer.mozilla.org/en-US/docs/Web/API/Window.atob","title":"MDN article on atob()"},{"url":"https://github.com/davidchambers/Base64.js","title":"Polyfill"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"y","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"u","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"u","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"y"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":97.55,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"atob,btoa","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-appearance":{"title":"CSS Appearance","description":"The `appearance` property defines how elements (particularly form controls) appear by default. By setting the value to `none` the default appearance can be entirely redefined using other CSS properties.","spec":"https://drafts.csswg.org/css-ui-4/#appearance-switching","status":"wd","links":[{"url":"http://css-tricks.com/almanac/properties/a/appearance/","title":"CSS Tricks article"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"a #1 #2","13":"a #1 #2","14":"a #1 #2","15":"a #1 #2"},"firefox":{"2":"a x #1 #3","3":"a x #1 #3","3.5":"a x #1 #3","3.6":"a x #1 #3","4":"a x #1 #3","5":"a x #1 #3","6":"a x #1 #3","7":"a x #1 #3","8":"a x #1 #3","9":"a x #1 #3","10":"a x #1 #3","11":"a x #1 #3","12":"a x #1 #3","13":"a x #1 #3","14":"a x #1 #3","15":"a x #1 #3","16":"a x #1 #3","17":"a x #1 #3","18":"a x #1 #3","19":"a x #1 #3","20":"a x #1 #3","21":"a x #1 #3","22":"a x #1 #3","23":"a x #1 #3","24":"a x #1 #3","25":"a x #1 #3","26":"a x #1 #3","27":"a x #1 #3","28":"a x #1 #3","29":"a x #1 #3","30":"a x #1 #3","31":"a x #1 #3","32":"a x #1 #3","33":"a x #1 #3","34":"a x #1 #3","35":"a x #1","36":"a x #1","37":"a x #1","38":"a x #1","39":"a x #1","40":"a x #1","41":"a x #1","42":"a x #1","43":"a x #1","44":"a x #1","45":"a x #1","46":"a x #1","47":"a x #1","48":"a x #1","49":"a x #1","50":"a x #1","51":"a x #1","52":"a x #1","53":"a x #1","54":"a x #1"},"chrome":{"4":"a x #1","5":"a x #1","6":"a x #1","7":"a x #1","8":"a x #1","9":"a x #1","10":"a x #1","11":"a x #1","12":"a x #1","13":"a x #1","14":"a x #1","15":"a x #1","16":"a x #1","17":"a x #1","18":"a x #1","19":"a x #1","20":"a x #1","21":"a x #1","22":"a x #1","23":"a x #1","24":"a x #1","25":"a x #1","26":"a x #1","27":"a x #1","28":"a x #1","29":"a x #1","30":"a x #1","31":"a x #1","32":"a x #1","33":"a x #1","34":"a x #1","35":"a x #1","36":"a x #1","37":"a x #1","38":"a x #1","39":"a x #1","40":"a x #1","41":"a x #1","42":"a x #1","43":"a x #1","44":"a x #1","45":"a x #1","46":"a x #1","47":"a x #1","48":"a x #1","49":"a x #1","50":"a x #1","51":"a x #1","52":"a x #1","53":"a x #1","54":"a x #1","55":"a x #1","56":"a x #1","57":"a x #1","58":"a x #1","59":"a x #1"},"safari":{"3.1":"a x #1","3.2":"a x #1","4":"a x #1","5":"a x #1","5.1":"a x #1","6":"a x #1","6.1":"a x #1","7":"a x #1","7.1":"a x #1","8":"a x #1","9":"a x #1","9.1":"a x #1","10":"a x #1","10.1":"a x #1","TP":"a x #1"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"a x #1","16":"a x #1","17":"a x #1","18":"a x #1","19":"a x #1","20":"a x #1","21":"a x #1","22":"a x #1","23":"a x #1","24":"a x #1","25":"a x #1","26":"a x #1","27":"a x #1","28":"a x #1","29":"a x #1","30":"a x #1","31":"a x #1","32":"a x #1","33":"a x #1","34":"a x #1","35":"a x #1","36":"a x #1","37":"a x #1","38":"a x #1","39":"a x #1","40":"a x #1","41":"a x #1","42":"a x #1","43":"a x #1","44":"a x #1","45":"a x #1"},"ios_saf":{"3.2":"a x #1","4.0-4.1":"a x #1","4.2-4.3":"a x #1","5.0-5.1":"a x #1","6.0-6.1":"a x #1","7.0-7.1":"a x #1","8":"a x #1","8.1-8.4":"a x #1","9.0-9.2":"a x #1","9.3":"a x #1","10.0-10.2":"a x #1"},"op_mini":{"all":"n"},"android":{"2.1":"a x #1","2.2":"a x #1","2.3":"a x #1","3":"a x #1","4":"a x #1","4.1":"a x #1","4.2-4.3":"a x #1","4.4":"a x #1","4.4.3-4.4.4":"a x #1","53":"a x #1"},"bb":{"7":"a x #1","10":"a x #1"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"a x #1"},"and_chr":{"56":"a x #1"},"and_ff":{"51":"a x #1"},"ie_mob":{"10":"n","11":"a #1 #2"},"and_uc":{"11":"a x #1"},"samsung":{"4":"a x #1"},"and_qq":{"1.2":"a x #1"}},"notes":"","notes_by_num":{"1":"The appearance property is supported with the `none` value, but not `auto`. Webkit, Blink, and Gecko browsers also support additional vendor specific values.","2":"Microsoft Edge and IE Mobile support this property with the `-webkit-` prefix, rather than `-ms-` for interop reasons.","3":"-moz-appearance:none doesn't remove the dropdown arrow in select tag"},"usage_perc_y":0,"usage_perc_a":89.77,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"objectrtc":{"title":"Object RTC (ORTC) API for WebRTC","description":"Enables mobile endpoints to talk to servers and web browsers with Real-Time Communications (RTC) capabilities via native and simple JavaScript APIs","spec":"https://www.w3.org/community/ortc/","status":"other","links":[{"url":"http://blogs.msdn.com/b/ie/archive/2014/10/27/bringing-interoperable-real-time-communications-to-the-web.aspx","title":"Bringing Interoperable Real-Time Communications to the Web"}],"categories":["JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n","46":"n","47":"n","48":"n","49":"n","50":"n","51":"n","52":"n","53":"n","54":"n","55":"n","56":"n","57":"n","58":"n","59":"n"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"n","10":"n","10.1":"n","TP":"n"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n","44":"n","45":"n"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"n"},"bb":{"7":"n","10":"n #1"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"n"},"and_chr":{"56":"n"},"and_ff":{"51":"n"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"n"},"and_qq":{"1.2":"n"}},"notes":"ORTC is often dubbed WebRTC 1.1. It is possible to make ORTC communicate with WebRTC 1.0 endpoints. See [WebRTC 1.0](http://caniuse.com/#feat=rtcpeerconnection) for support details for that API.","notes_by_num":{},"usage_perc_y":1.59,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"RTC,WebRTC,ORTC,ObjectRTC,RTCIceTransport,RTCIceGatherer,RTCRtpSender,RTCRtpReceiver,Real Time,video,webcam","ie_id":"webrtcobjectrtcapi","chrome_id":"","firefox_id":"","webkit_id":""},"css-background-offsets":{"title":"CSS background-position edge offsets","description":"Allows CSS background images to be positioned relative to the specified edge using the 3 to 4 value syntax. For example: `background-position: right 5px bottom 5px;` for positioning 5px from the bottom-right corner.","spec":"http://www.w3.org/TR/css3-background/#background-position","status":"cr","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/background-position","title":"MDN article on background-position"},{"url":"http://briantree.se/quick-tip-06-use-four-value-syntax-properly-position-background-images/","title":"Basic information"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"y","8":"y","8.1-8.4":"y","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"y"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"y"},"op_mob":{"10":"n","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{},"usage_perc_y":87.5,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"4 value syntax","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-supports-api":{"title":"CSS.supports() API","description":"The CSS.supports() static methods returns a Boolean value indicating if the browser supports a given CSS feature, or not.","spec":"http://dev.w3.org/csswg/css-conditional/#the-css-interface","status":"cr","links":[{"url":"https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports","title":"MDN Docs"},{"url":"http://jsbin.com/rimevilotari/1/edit","title":"Demo (Chinese)"},{"url":"https://dev.opera.com/articles/native-css-feature-detection/","title":"Native CSS Feature Detection via the @supports Rule"},{"url":"http://davidwalsh.name/css-supports","title":"CSS @supports"},{"url":"http://blog.csdn.net/hfahe/article/details/8619480","title":"Article (Chinese)"}],"categories":["DOM","JS API"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n d","21":"n d","22":"n d","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"a #1","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"y","9.3":"y","10.0-10.2":"y"},"op_mini":{"all":"a #1"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"a #1","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"See also [@supports in CSS](#feat=css-featurequeries)","notes_by_num":{"1":"Partial support in Presto-based Opera browsers refers to using an older API (`window.supportsCSS`)"},"usage_perc_y":78.32,"usage_perc_a":3.51,"ucprefix":false,"parent":"","keywords":"conditional","ie_id":"conditionalrules","chrome_id":"4993981813358592","firefox_id":"","webkit_id":""},"css-touch-action":{"title":"CSS touch-action property","description":"touch-action is a CSS property that controls filtering of gesture events, providing developers with a declarative mechanism to selectively disable touch scrolling (in one or both axes) or double-tap-zooming.","spec":"http://www.w3.org/TR/pointerevents/#the-touch-action-css-property","status":"rec","links":[{"url":"http://msdn.microsoft.com/en-us/library/windows/apps/hh767313.aspx","title":"MSDN Docs"},{"url":"http://updates.html5rocks.com/2013/12/300ms-tap-delay-gone-away","title":"300ms tap delay, gone away"},{"url":"http://blogs.telerik.com/appbuilder/posts/13-11-21/what-exactly-is.....-the-300ms-click-delay","title":"What Exactly Is..... The 300ms Click Delay"},{"url":"http://thx.github.io/mobile/300ms-click-delay/","title":"What Exactly Is..... The 300ms Click Delay (Chinese)"},{"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action","title":"Mozilla Developer Network"},{"url":"https://bugs.webkit.org/show_bug.cgi?id=149854","title":"WebKit bug 149854: Implement touch-action: manipulation; for iOS"},{"url":"https://bugs.webkit.org/show_bug.cgi?id=133112","title":"WebKit bug 133112: touch-action CSS property support"}],"categories":["CSS"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y x #2","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n d #1","30":"n d #1","31":"n d #1","32":"n d #1","33":"n d #1","34":"n d #1","35":"n d #1","36":"n d #1","37":"n d #1","38":"n d #1","39":"n d #1","40":"n d #1","41":"n d #1","42":"n d #1","43":"n d #1","44":"n d #1","45":"n d #1","46":"n d #1","47":"n d #1","48":"n d #1","49":"n d #1","50":"n d #1","51":"n d #1","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"n","9":"n","9.1":"a #3","10":"a #3","10.1":"a #3","TP":"a #3"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"a #3","10.0-10.2":"a #3"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","53":"y"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"n d #1"},"ie_mob":{"10":"y x #2","11":"y"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"","notes_by_num":{"1":"Supported in Firefox behind the `layout.css.touch_action.enabled` flag, Firefox for Windows 8 Touch ('Metro') enabled by default.","2":"IE10+ has already supported these property which are not in standard at present such as `double-tap-zoom`, `cross-slide-x`, `cross-slide-y`.","3":"Safari only supports `auto` and `manipulation`."},"usage_perc_y":62.73,"usage_perc_a":11.3,"ucprefix":false,"parent":"","keywords":"touch action","ie_id":"csstouchaction","chrome_id":"5912074022551552","firefox_id":"","webkit_id":""},"autofocus":{"title":"Autofocus attribute","description":"Allows a form field to be immediately focused on page load.","spec":"https://html.spec.whatwg.org/multipage/forms.html#autofocusing-a-form-control:-the-autofocus-attribute","status":"ls","links":[{"url":"http://davidwalsh.name/autofocus","title":"Article on autofocus"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"y","11":"y"},"edge":{"12":"y","13":"y","14":"y","15":"y"},"firefox":{"2":"n","3":"n","3.5":"n","3.6":"n","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y"},"chrome":{"4":"n","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y","46":"y","47":"y","48":"y","49":"y","50":"y","51":"y","52":"y","53":"y","54":"y","55":"y","56":"y","57":"y","58":"y","59":"y"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y","9":"y","9.1":"y","10":"y","10.1":"y","TP":"y"},"opera":{"9":"n","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y","44":"y","45":"y"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"n","8.1-8.4":"n","9.0-9.2":"n","9.3":"n","10.0-10.2":"n"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","53":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"y"},"and_chr":{"56":"y"},"and_ff":{"51":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"11":"n"},"samsung":{"4":"y"},"and_qq":{"1.2":"y"}},"notes":"While not supported in iOS Safari, it does work in iOS WebViews.","notes_by_num":{},"usage_perc_y":75.15,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"css-clip-path":{"title":"CSS clip-path property (for HTML)","description":"Method of defining the visible region of an HTML element using SVG or a shape definition.","spec":"http://www.w3.org/TR/css-masking-1/#the-clip-path","status":"cr","links":[{"url":"http://css-tricks.com/almanac/properties/c/clip/","title":"CSS Tricks article"},{"url":"http://codepen.io/dubrod/details/myNNyW/","title":"Codepen Example Clipping an Image with a Polygon"},{"url":"http://lab.iamvdo.me/css-svg-masks","title":"Visual test cases"}],"categories":["CSS3"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n"},"edge":{"12":"n","13":"n","14":"n","15":"n"},"firefox":{"2":"n","3":"n","3.5":"a #1","3.6":"a #1","4":"a #1","5":"a #1","6":"a #1","7":"a #1","8":"a #1","9":"a #1","10":"a #1","11":"a #1","12":"a #1","13":"a #1","14":"a #1","15":"a #1","16":"a #1","17":"a #1","18":"a #1","19":"a #1","20":"a #1","21":"a #1","22":"a #1","23":"a #1","24":"a #1","25":"a #1","26":"a #1","27":"a #1","28":"a #1","29":"a #1","30":"a #1","31":"a #1","32":"a #1","33":"a #1","34":"a #1","35":"a #1","36":"a #1","37":"a #1","38":"a #1","39":"a #1","40":"a #1","41":"a #1","42":"a #1","43":"a #1","44":"a #1","45":"a #1","46":"a #1","47":"a #1 #3","48":"a #1 #3","49":"a #1 #3","50":"a #1 #3","51":"a #1 #3","52":"a #1 #3","53":"y","54":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"a x #2","25":"a x #2","26":"a x #2","27":"a x #2","28":"a x #2","29":"a x #2","30":"a x #2","31":"a x #2","32":"a x #2","33":"a x #2","34":"a x #2","35":"a x #2","36":"a x #2","37":"a x #2","38":"a x #2","39":"a x #2","40":"a x #2","41":"a x #2","42":"a x #2","43":"a x #2","44":"a x #2","45":"a x #2","46":"a x #2","47":"a x #2","48":"a x #2","49":"a x #2","50":"a x #2","51":"a x #2","52":"a x #2","53":"a x #2","54":"a x #2","55":"a #2","56":"a #2","57":"a #2","58":"a #2","59":"a #2"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"a x #2","7.1":"a x #2","8":"a x #2","9":"a x #2","9.1":"a x #2","10":"a x #2","10.1":"a x #2","TP":"a x #2"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"n","10.6":"n","11":"n","11.1":"n","11.5":"n","11.6":"n","12":"n","12.1":"n","15":"a x #2","16":"a x #2","17":"a x #2","18":"a x #2","19":"a x #2","20":"a x #2","21":"a x #2","22":"a x #2","23":"a x #2","24":"a x #2","25":"a x #2","26":"a x #2","27":"a x #2","28":"a x #2","29":"a x #2","30":"a x #2","31":"a x #2","32":"a x #2","33":"a x #2","34":"a x #2","35":"a x #2","36":"a x #2","37":"a x #2","38":"a x #2","39":"a x #2","40":"a x #2","41":"a x #2","42":"a #2","43":"a #2","44":"a #2","45":"a #2"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"a x #2","8":"a x #2","8.1-8.4":"a x #2","9.0-9.2":"a x #2","9.3":"a x #2","10.0-10.2":"a x #2"},"op_mini":{"all":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"a x #2","4.4.3-4.4.4":"a x #2","53":"a x #2"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"n","11":"n","11.1":"n","11.5":"n","12":"n","12.1":"n","37":"a x #2"},"and_chr":{"56":"a #2"},"and_ff":{"51":"a #1 #3"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"11":"n"},"samsung":{"4":"a x #2"},"and_qq":{"1.2":"a x #2"}},"notes":"Support refers to the `clip-path` CSS property on HTML elements specifically. Support for `clip-path` in SVG is supported in all browsers with [basic SVG](#feat=svg) support.","notes_by_num":{"1":"Partial support refers to only supporting the `url()` syntax.","2":"Partial support refers to supporting shapes and the `url(#foo)` syntax for inline SVG, but not shapes in external SVGs.","3":"Supports shapes behind the `layout.css.clip-path-shapes.enabled` flag"},"usage_perc_y":0,"usage_perc_a":77.58,"ucprefix":false,"parent":"css-masks","keywords":"clippath","ie_id":"","chrome_id":"","firefox_id":"","webkit_id":""},"getrandomvalues"