From c93082951074d9db51440f5ec6801aebde1a4a48 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 16 Feb 2016 16:16:06 +0100 Subject: [PATCH] Got rid of all submodules --- .gitmodules | 6 - src/pretix/MANIFEST.in | 13 - src/pretix/static/bootstrap/.editorconfig | 14 - src/pretix/static/bootstrap/.gitattributes | 9 - src/pretix/static/bootstrap/.gitignore | 42 - src/pretix/static/bootstrap/.travis.yml | 45 - src/pretix/static/bootstrap/CNAME | 1 - src/pretix/static/bootstrap/CONTRIBUTING.md | 249 - src/pretix/static/bootstrap/Gruntfile.js | 509 - src/pretix/static/bootstrap/_config.yml | 32 - src/pretix/static/bootstrap/bower.json | 38 - src/pretix/static/bootstrap/composer.json | 37 - src/pretix/static/bootstrap/docs/LICENSE | 319 - .../bootstrap/docs/_data/browser-bugs.yml | 201 - .../static/bootstrap/docs/_data/core-team.yml | 27 - .../bootstrap/docs/_data/glyphicons.yml | 262 - .../static/bootstrap/docs/_data/sass-team.yml | 7 - .../static/bootstrap/docs/_data/showcase.yml | 19 - .../bootstrap/docs/_data/translations.yml | 44 - .../static/bootstrap/docs/_includes/ads.html | 1 - .../docs/_includes/components/alerts.html | 89 - .../docs/_includes/components/badges.html | 45 - .../_includes/components/breadcrumbs.html | 27 - .../components/button-dropdowns.html | 321 - .../_includes/components/button-groups.html | 268 - .../docs/_includes/components/dropdowns.html | 126 - .../docs/_includes/components/glyphicons.html | 91 - .../_includes/components/input-groups.html | 316 - .../docs/_includes/components/jumbotron.html | 27 - .../docs/_includes/components/labels.html | 40 - .../docs/_includes/components/list-group.html | 167 - .../docs/_includes/components/media.html | 207 - .../docs/_includes/components/navbar.html | 461 - .../docs/_includes/components/navs.html | 189 - .../_includes/components/page-header.html | 15 - .../docs/_includes/components/pagination.html | 197 - .../docs/_includes/components/panels.html | 279 - .../_includes/components/progress-bars.html | 209 - .../components/responsive-embed.html | 23 - .../docs/_includes/components/thumbnails.html | 94 - .../docs/_includes/components/wells.html | 33 - .../bootstrap/docs/_includes/css/buttons.html | 189 - .../bootstrap/docs/_includes/css/code.html | 52 - .../bootstrap/docs/_includes/css/forms.html | 1025 - .../bootstrap/docs/_includes/css/grid.html | 561 - .../bootstrap/docs/_includes/css/helpers.html | 208 - .../bootstrap/docs/_includes/css/images.html | 30 - .../bootstrap/docs/_includes/css/less.html | 499 - .../docs/_includes/css/overview.html | 52 - .../_includes/css/responsive-utilities.html | 258 - .../bootstrap/docs/_includes/css/sass.html | 52 - .../bootstrap/docs/_includes/css/tables.html | 467 - .../bootstrap/docs/_includes/css/type.html | 461 - .../docs/_includes/customizer-variables.html | 1862 -- .../bootstrap/docs/_includes/footer.html | 93 - .../getting-started/accessibility.html | 32 - .../browser-device-support.html | 205 - .../_includes/getting-started/community.html | 12 - .../disabling-responsiveness.html | 22 - .../_includes/getting-started/download.html | 59 - .../_includes/getting-started/examples.html | 159 - .../docs/_includes/getting-started/grunt.html | 35 - .../_includes/getting-started/license.html | 34 - .../_includes/getting-started/template.html | 36 - .../getting-started/third-party-support.html | 51 - .../docs/_includes/getting-started/tools.html | 6 - .../getting-started/translations.html | 12 - .../getting-started/whats-included.html | 53 - .../bootstrap/docs/_includes/header.html | 58 - .../bootstrap/docs/_includes/js/affix.html | 115 - .../bootstrap/docs/_includes/js/alerts.html | 73 - .../bootstrap/docs/_includes/js/buttons.html | 138 - .../bootstrap/docs/_includes/js/carousel.html | 254 - .../bootstrap/docs/_includes/js/collapse.html | 277 - .../docs/_includes/js/dropdowns.html | 201 - .../bootstrap/docs/_includes/js/modal.html | 422 - .../bootstrap/docs/_includes/js/overview.html | 86 - .../bootstrap/docs/_includes/js/popovers.html | 304 - .../docs/_includes/js/scrollspy.html | 151 - .../bootstrap/docs/_includes/js/tabs.html | 164 - .../bootstrap/docs/_includes/js/tooltips.html | 265 - .../docs/_includes/js/transitions.html | 8 - .../bootstrap/docs/_includes/nav/about.html | 9 - .../docs/_includes/nav/components.html | 143 - .../bootstrap/docs/_includes/nav/css.html | 136 - .../docs/_includes/nav/customize.html | 47 - .../docs/_includes/nav/getting-started.html | 75 - .../docs/_includes/nav/javascript.html | 122 - .../bootstrap/docs/_includes/nav/main.html | 36 - .../docs/_includes/nav/migration.html | 12 - .../docs/_includes/social-buttons.html | 16 - .../bootstrap/docs/_jade/customizer-nav.jade | 17 - .../docs/_jade/customizer-variables.jade | 25 - .../bootstrap/docs/_layouts/default.html | 64 - .../static/bootstrap/docs/_layouts/home.html | 18 - .../static/bootstrap/docs/_plugins/bridge.rb | 9 - .../static/bootstrap/docs/_plugins/bugify.rb | 25 - src/pretix/static/bootstrap/docs/about.html | 127 - .../bootstrap/docs/apple-touch-icon.png | Bin 6140 -> 0 bytes .../docs/assets/brand/bootstrap-outline.svg | 20 - .../docs/assets/brand/bootstrap-punchout.svg | 18 - .../docs/assets/brand/bootstrap-solid.svg | 17 - .../bootstrap/docs/assets/css/docs.min.css | 6 - .../bootstrap/docs/assets/css/src/docs.css | 1580 -- .../docs/assets/css/src/pygments-manni.css | 66 - .../docs/assets/flash/ZeroClipboard.swf | Bin 2157 -> 0 bytes .../bootstrap/docs/assets/img/components.png | Bin 3110 -> 0 bytes .../bootstrap/docs/assets/img/devices.png | Bin 6654 -> 0 bytes .../bootstrap/docs/assets/img/sass-less.png | Bin 14588 -> 0 bytes .../bootstrap/docs/assets/js/customize.min.js | 61 - .../bootstrap/docs/assets/js/docs.min.js | 26 - .../assets/js/ie-emulation-modes-warning.js | 51 - .../assets/js/ie10-viewport-bug-workaround.js | 22 - .../assets/js/ie8-responsive-file-warning.js | 13 - .../bootstrap/docs/assets/js/raw-files.min.js | 8 - .../docs/assets/js/src/application.js | 176 - .../docs/assets/js/src/customizer.js | 518 - .../bootstrap/docs/assets/js/vendor/Blob.js | 197 - .../docs/assets/js/vendor/FileSaver.js | 243 - .../assets/js/vendor/ZeroClipboard.min.js | 9 - .../docs/assets/js/vendor/autoprefixer.js | 16994 ---------------- .../bootstrap/docs/assets/js/vendor/holder.js | 12 - .../docs/assets/js/vendor/jszip.min.js | 14 - .../docs/assets/js/vendor/less.min.js | 16 - .../docs/assets/js/vendor/uglify.min.js | 5 - .../static/bootstrap/docs/browser-bugs.html | 38 - .../static/bootstrap/docs/components.html | 29 - src/pretix/static/bootstrap/docs/css.html | 20 - .../static/bootstrap/docs/customize.html | 389 - .../docs/dist/css/bootstrap-theme.css | 476 - .../docs/dist/css/bootstrap-theme.css.map | 1 - .../docs/dist/css/bootstrap-theme.min.css | 5 - .../bootstrap/docs/dist/css/bootstrap.css | 6566 ------ .../bootstrap/docs/dist/css/bootstrap.css.map | 1 - .../bootstrap/docs/dist/css/bootstrap.min.css | 5 - .../fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes .../fonts/glyphicons-halflings-regular.svg | 288 - .../fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes .../bootstrap/docs/dist/js/bootstrap.js | 2306 --- .../bootstrap/docs/dist/js/bootstrap.min.js | 7 - .../static/bootstrap/docs/dist/js/npm.js | 13 - .../bootstrap/docs/examples/blog/blog.css | 166 - .../bootstrap/docs/examples/blog/index.html | 176 - .../docs/examples/carousel/carousel.css | 134 - .../docs/examples/carousel/index.html | 214 - .../bootstrap/docs/examples/cover/cover.css | 163 - .../bootstrap/docs/examples/cover/index.html | 80 - .../docs/examples/dashboard/dashboard.css | 105 - .../docs/examples/dashboard/index.html | 246 - .../bootstrap/docs/examples/grid/grid.css | 23 - .../bootstrap/docs/examples/grid/index.html | 152 - .../docs/examples/jumbotron-narrow/index.html | 84 - .../jumbotron-narrow/jumbotron-narrow.css | 79 - .../docs/examples/jumbotron/index.html | 102 - .../docs/examples/jumbotron/jumbotron.css | 5 - .../docs/examples/justified-nav/index.html | 86 - .../examples/justified-nav/justified-nav.css | 89 - .../docs/examples/navbar-fixed-top/index.html | 94 - .../navbar-fixed-top/navbar-fixed-top.css | 4 - .../examples/navbar-static-top/index.html | 95 - .../navbar-static-top/navbar-static-top.css | 7 - .../bootstrap/docs/examples/navbar/index.html | 93 - .../bootstrap/docs/examples/navbar/navbar.css | 8 - .../docs/examples/non-responsive/index.html | 114 - .../non-responsive/non-responsive.css | 204 - .../docs/examples/offcanvas/index.html | 134 - .../docs/examples/offcanvas/offcanvas.css | 59 - .../docs/examples/offcanvas/offcanvas.js | 5 - .../docs/examples/screenshots/blog.jpg | Bin 122280 -> 0 bytes .../docs/examples/screenshots/carousel.jpg | Bin 82270 -> 0 bytes .../docs/examples/screenshots/cover.jpg | Bin 36580 -> 0 bytes .../docs/examples/screenshots/dashboard.jpg | Bin 105325 -> 0 bytes .../screenshots/equal-height-columns.jpg | Bin 129265 -> 0 bytes .../docs/examples/screenshots/grid.jpg | Bin 99951 -> 0 bytes .../examples/screenshots/jumbotron-narrow.jpg | Bin 68573 -> 0 bytes .../docs/examples/screenshots/jumbotron.jpg | Bin 101076 -> 0 bytes .../examples/screenshots/justified-nav.jpg | Bin 79037 -> 0 bytes .../examples/screenshots/navbar-fixed.jpg | Bin 37932 -> 0 bytes .../examples/screenshots/navbar-static.jpg | Bin 39654 -> 0 bytes .../docs/examples/screenshots/navbar.jpg | Bin 40956 -> 0 bytes .../examples/screenshots/non-responsive.jpg | Bin 61060 -> 0 bytes .../docs/examples/screenshots/offcanvas.jpg | Bin 112527 -> 0 bytes .../docs/examples/screenshots/sign-in.jpg | Bin 13596 -> 0 bytes .../examples/screenshots/starter-template.jpg | Bin 22571 -> 0 bytes .../screenshots/sticky-footer-navbar.jpg | Bin 39249 -> 0 bytes .../examples/screenshots/sticky-footer.jpg | Bin 25002 -> 0 bytes .../docs/examples/screenshots/theme.jpg | Bin 85405 -> 0 bytes .../bootstrap/docs/examples/signin/index.html | 54 - .../bootstrap/docs/examples/signin/signin.css | 40 - .../docs/examples/starter-template/index.html | 71 - .../starter-template/starter-template.css | 7 - .../examples/sticky-footer-navbar/index.html | 90 - .../sticky-footer-navbar.css | 39 - .../docs/examples/sticky-footer/index.html | 51 - .../examples/sticky-footer/sticky-footer.css | 32 - .../bootstrap/docs/examples/theme/index.html | 640 - .../bootstrap/docs/examples/theme/theme.css | 18 - .../docs/examples/tooltip-viewport/index.html | 59 - .../tooltip-viewport/tooltip-viewport.css | 26 - .../tooltip-viewport/tooltip-viewport.js | 18 - src/pretix/static/bootstrap/docs/favicon.ico | Bin 5430 -> 0 bytes .../bootstrap/docs/getting-started.html | 28 - src/pretix/static/bootstrap/docs/index.html | 73 - .../static/bootstrap/docs/javascript.html | 21 - .../static/bootstrap/docs/migration.html | 441 - src/pretix/static/bootstrap/docs/robots.txt | 9 - src/pretix/static/bootstrap/docs/sitemap.xml | 23 - src/pretix/static/bootstrap/grunt/.jshintrc | 7 - .../bootstrap/grunt/bs-commonjs-generator.js | 23 - .../grunt/bs-glyphicons-data-generator.js | 41 - .../bootstrap/grunt/bs-lessdoc-parser.js | 238 - .../bootstrap/grunt/bs-raw-files-generator.js | 46 - .../static/bootstrap/grunt/configBridge.json | 45 - .../static/bootstrap/grunt/sauce_browsers.yml | 82 - src/pretix/static/bootstrap/js/.jscsrc | 36 - src/pretix/static/bootstrap/js/.jshintrc | 15 - src/pretix/static/bootstrap/js/affix.js | 162 - src/pretix/static/bootstrap/js/alert.js | 94 - src/pretix/static/bootstrap/js/button.js | 116 - src/pretix/static/bootstrap/js/carousel.js | 237 - src/pretix/static/bootstrap/js/collapse.js | 211 - src/pretix/static/bootstrap/js/dropdown.js | 161 - src/pretix/static/bootstrap/js/modal.js | 324 - src/pretix/static/bootstrap/js/popover.js | 113 - src/pretix/static/bootstrap/js/scrollspy.js | 175 - src/pretix/static/bootstrap/js/tab.js | 153 - .../static/bootstrap/js/tests/index.html | 95 - .../static/bootstrap/js/tests/unit/.jshintrc | 5 - .../static/bootstrap/js/tests/unit/affix.js | 101 - .../static/bootstrap/js/tests/unit/alert.js | 72 - .../static/bootstrap/js/tests/unit/button.js | 169 - .../bootstrap/js/tests/unit/carousel.js | 697 - .../bootstrap/js/tests/unit/collapse.js | 329 - .../bootstrap/js/tests/unit/dropdown.js | 268 - .../static/bootstrap/js/tests/unit/modal.js | 273 - .../static/bootstrap/js/tests/unit/phantom.js | 72 - .../static/bootstrap/js/tests/unit/popover.js | 228 - .../bootstrap/js/tests/unit/scrollspy.js | 186 - .../static/bootstrap/js/tests/unit/tab.js | 205 - .../static/bootstrap/js/tests/unit/tooltip.js | 1110 - .../bootstrap/js/tests/vendor/jquery.min.js | 5 - .../bootstrap/js/tests/vendor/qunit.css | 237 - .../static/bootstrap/js/tests/vendor/qunit.js | 2495 --- .../bootstrap/js/tests/visual/affix.html | 306 - .../bootstrap/js/tests/visual/alert.html | 48 - .../bootstrap/js/tests/visual/button.html | 74 - .../bootstrap/js/tests/visual/carousel.html | 58 - .../bootstrap/js/tests/visual/collapse.html | 78 - .../bootstrap/js/tests/visual/dropdown.html | 108 - .../bootstrap/js/tests/visual/modal.html | 87 - .../bootstrap/js/tests/visual/popover.html | 54 - .../bootstrap/js/tests/visual/scrollspy.html | 109 - .../static/bootstrap/js/tests/visual/tab.html | 172 - .../bootstrap/js/tests/visual/tooltip.html | 50 - src/pretix/static/bootstrap/js/tooltip.js | 472 - src/pretix/static/bootstrap/js/transition.js | 59 - src/pretix/static/bootstrap/package.json | 83 - .../static/bootstrap/test-infra/README.md | 118 - .../bootstrap/test-infra/S3Cachefile.json | 12 - .../bootstrap/test-infra/npm-shrinkwrap.json | 4287 ---- .../bootstrap/test-infra/requirements.txt | 1 - .../static/bootstrap/test-infra/s3_cache.py | 184 - .../test-infra/uncached-npm-install.sh | 15 - src/pretix/static/fontawesome/.gitignore | 33 - src/pretix/static/fontawesome/.npmignore | 42 - src/pretix/static/fontawesome/CONTRIBUTING.md | 91 - src/pretix/static/fontawesome/Gemfile | 4 - src/pretix/static/fontawesome/Gemfile.lock | 53 - src/pretix/static/fontawesome/_config.yml | 56 - src/pretix/static/fontawesome/bower.json | 23 - src/pretix/static/fontawesome/component.json | 20 - src/pretix/static/fontawesome/composer.json | 27 - src/pretix/static/fontawesome/package.json | 48 - .../static/fontawesome/scss/_animated.scss | 34 - .../fontawesome/scss/_bordered-pulled.scss | 16 - src/pretix/static/fontawesome/scss/_core.scss | 13 - .../static/fontawesome/scss/_fixed-width.scss | 6 - .../static/fontawesome/scss/_icons.scss | 596 - .../static/fontawesome/scss/_larger.scss | 13 - src/pretix/static/fontawesome/scss/_list.scss | 19 - .../static/fontawesome/scss/_mixins.scss | 27 - src/pretix/static/fontawesome/scss/_path.scss | 15 - .../fontawesome/scss/_rotated-flipped.scss | 20 - .../static/fontawesome/scss/_stacked.scss | 20 - .../static/fontawesome/scss/_variables.scss | 606 - .../static/fontawesome/scss/font-awesome.scss | 17 - src/pretix/static/fontawesome/src/3.2.1/CNAME | 1 - .../static/fontawesome/src/3.2.1/Makefile | 36 - .../src/3.2.1/assets/css/prettify.css | 30 - .../src/3.2.1/assets/css/pygments.css | 71 - .../fontawesome/src/3.2.1/assets/css/site.css | 1154 -- .../src/3.2.1/assets/font-awesome.zip | Bin 276410 -> 0 bytes .../font-awesome/css/font-awesome-ie7.css | 1203 -- .../font-awesome/css/font-awesome-ie7.min.css | 384 - .../assets/font-awesome/css/font-awesome.css | 1479 -- .../font-awesome/css/font-awesome.min.css | 403 - .../assets/font-awesome/font/FontAwesome.otf | Bin 61896 -> 0 bytes .../font-awesome/font/fontawesome-webfont.eot | Bin 37405 -> 0 bytes .../font-awesome/font/fontawesome-webfont.svg | 399 - .../font-awesome/font/fontawesome-webfont.ttf | Bin 79076 -> 0 bytes .../font/fontawesome-webfont.woff | Bin 43572 -> 0 bytes .../assets/font-awesome/less/bootstrap.less | 84 - .../3.2.1/assets/font-awesome/less/core.less | 129 - .../assets/font-awesome/less/extras.less | 93 - .../font-awesome/less/font-awesome-ie7.less | 1953 -- .../font-awesome/less/font-awesome.less | 33 - .../3.2.1/assets/font-awesome/less/icons.less | 381 - .../assets/font-awesome/less/mixins.less | 48 - .../3.2.1/assets/font-awesome/less/path.less | 14 - .../assets/font-awesome/less/variables.less | 735 - .../assets/font-awesome/scss/_bootstrap.scss | 84 - .../3.2.1/assets/font-awesome/scss/_core.scss | 129 - .../assets/font-awesome/scss/_extras.scss | 93 - .../assets/font-awesome/scss/_icons.scss | 381 - .../assets/font-awesome/scss/_mixins.scss | 48 - .../3.2.1/assets/font-awesome/scss/_path.scss | 14 - .../assets/font-awesome/scss/_variables.scss | 734 - .../font-awesome/scss/font-awesome-ie7.scss | 1953 -- .../font-awesome/scss/font-awesome.scss | 33 - .../src/3.2.1/assets/ico/favicon.ico | Bin 1150 -> 0 bytes .../3.2.1/assets/img/contribution-sample.png | Bin 2441 -> 0 bytes .../src/3.2.1/assets/img/fort_awesome.jpg | Bin 114822 -> 0 bytes .../assets/img/glyphicons-halflings-white.png | Bin 8777 -> 0 bytes .../3.2.1/assets/img/glyphicons-halflings.png | Bin 12799 -> 0 bytes .../src/3.2.1/assets/img/icon-flag.pdf | 1355 -- .../assets/js/ZeroClipboard-1.1.7.min.js | 8 - .../3.2.1/assets/js/ZeroClipboard-1.1.7.swf | Bin 1635 -> 0 bytes .../src/3.2.1/assets/js/backbone.min.js | 37 - .../3.2.1/assets/js/bootstrap-2.3.1.min.js | 6 - .../src/3.2.1/assets/js/bootstrap-222.min.js | 6 - .../src/3.2.1/assets/js/jquery-1.7.1.min.js | 4 - .../src/3.2.1/assets/js/prettify.min.js | 28 - .../fontawesome/src/3.2.1/assets/js/site.js | 38 - .../src/3.2.1/assets/js/underscore.min.js | 31 - .../less/bootstrap-2.3.2/accordion.less | 34 - .../assets/less/bootstrap-2.3.2/alerts.less | 79 - .../less/bootstrap-2.3.2/bootstrap.less | 63 - .../less/bootstrap-2.3.2/breadcrumbs.less | 24 - .../less/bootstrap-2.3.2/button-groups.less | 229 - .../assets/less/bootstrap-2.3.2/buttons.less | 228 - .../assets/less/bootstrap-2.3.2/carousel.less | 158 - .../assets/less/bootstrap-2.3.2/close.less | 32 - .../assets/less/bootstrap-2.3.2/code.less | 61 - .../bootstrap-2.3.2/component-animations.less | 22 - .../less/bootstrap-2.3.2/dropdowns.less | 248 - .../assets/less/bootstrap-2.3.2/forms.less | 690 - .../assets/less/bootstrap-2.3.2/grid.less | 21 - .../less/bootstrap-2.3.2/hero-unit.less | 25 - .../less/bootstrap-2.3.2/labels-badges.less | 84 - .../assets/less/bootstrap-2.3.2/layouts.less | 16 - .../assets/less/bootstrap-2.3.2/media.less | 55 - .../assets/less/bootstrap-2.3.2/mixins.less | 702 - .../assets/less/bootstrap-2.3.2/modals.less | 95 - .../assets/less/bootstrap-2.3.2/navbar.less | 497 - .../assets/less/bootstrap-2.3.2/navs.less | 409 - .../assets/less/bootstrap-2.3.2/pager.less | 43 - .../less/bootstrap-2.3.2/pagination.less | 123 - .../assets/less/bootstrap-2.3.2/popovers.less | 133 - .../less/bootstrap-2.3.2/progress-bars.less | 122 - .../assets/less/bootstrap-2.3.2/reset.less | 216 - .../responsive-1200px-min.less | 28 - .../bootstrap-2.3.2/responsive-767px-max.less | 193 - .../responsive-768px-979px.less | 19 - .../bootstrap-2.3.2/responsive-navbar.less | 189 - .../bootstrap-2.3.2/responsive-utilities.less | 59 - .../less/bootstrap-2.3.2/responsive.less | 48 - .../less/bootstrap-2.3.2/scaffolding.less | 53 - .../assets/less/bootstrap-2.3.2/sprites.less | 197 - .../assets/less/bootstrap-2.3.2/tables.less | 244 - .../less/bootstrap-2.3.2/thumbnails.less | 53 - .../assets/less/bootstrap-2.3.2/tooltip.less | 70 - .../assets/less/bootstrap-2.3.2/type.less | 247 - .../less/bootstrap-2.3.2/utilities.less | 30 - .../less/bootstrap-2.3.2/variables.less | 301 - .../assets/less/bootstrap-2.3.2/wells.less | 29 - .../src/3.2.1/assets/less/lazy.less | 85 - .../src/3.2.1/assets/less/mixins.less | 58 - .../assets/less/responsive-1200px-min.less | 56 - .../assets/less/responsive-767px-max.less | 83 - .../assets/less/responsive-768px-979px.less | 67 - .../3.2.1/assets/less/responsive-navbar.less | 11 - .../src/3.2.1/assets/less/responsive.less | 53 - .../src/3.2.1/assets/less/site.less | 352 - .../src/3.2.1/assets/less/sticky-footer.less | 17 - .../src/3.2.1/assets/less/variables.less | 347 - .../src/3.2.1/cheatsheet/index.html | 2388 --- .../src/3.2.1/community/index.html | 363 - .../static/fontawesome/src/3.2.1/design.html | 1 - .../fontawesome/src/3.2.1/examples/index.html | 680 - .../src/3.2.1/get-started/index.html | 308 - .../src/3.2.1/icon/adjust/index.html | 208 - .../fontawesome/src/3.2.1/icon/adn/index.html | 208 - .../src/3.2.1/icon/align-center/index.html | 208 - .../src/3.2.1/icon/align-justify/index.html | 208 - .../src/3.2.1/icon/align-left/index.html | 208 - .../src/3.2.1/icon/align-right/index.html | 208 - .../src/3.2.1/icon/ambulance/index.html | 208 - .../src/3.2.1/icon/anchor/index.html | 208 - .../src/3.2.1/icon/android/index.html | 208 - .../src/3.2.1/icon/angle-down/index.html | 208 - .../src/3.2.1/icon/angle-left/index.html | 208 - .../src/3.2.1/icon/angle-right/index.html | 208 - .../src/3.2.1/icon/angle-up/index.html | 208 - .../src/3.2.1/icon/apple/index.html | 208 - .../src/3.2.1/icon/archive/index.html | 208 - .../src/3.2.1/icon/arrow-down/index.html | 208 - .../src/3.2.1/icon/arrow-left/index.html | 208 - .../src/3.2.1/icon/arrow-right/index.html | 208 - .../src/3.2.1/icon/arrow-up/index.html | 208 - .../src/3.2.1/icon/asterisk/index.html | 208 - .../src/3.2.1/icon/backward/index.html | 208 - .../src/3.2.1/icon/ban-circle/index.html | 208 - .../src/3.2.1/icon/bar-chart/index.html | 208 - .../src/3.2.1/icon/barcode/index.html | 208 - .../src/3.2.1/icon/beaker/index.html | 208 - .../src/3.2.1/icon/beer/index.html | 208 - .../src/3.2.1/icon/bell-alt/index.html | 208 - .../src/3.2.1/icon/bell/index.html | 208 - .../src/3.2.1/icon/bitbucket-sign/index.html | 208 - .../src/3.2.1/icon/bitbucket/index.html | 208 - .../src/3.2.1/icon/bold/index.html | 208 - .../src/3.2.1/icon/bolt/index.html | 208 - .../src/3.2.1/icon/book/index.html | 208 - .../src/3.2.1/icon/bookmark-empty/index.html | 208 - .../src/3.2.1/icon/bookmark/index.html | 208 - .../src/3.2.1/icon/briefcase/index.html | 208 - .../fontawesome/src/3.2.1/icon/btc/index.html | 215 - .../fontawesome/src/3.2.1/icon/bug/index.html | 208 - .../src/3.2.1/icon/building/index.html | 208 - .../src/3.2.1/icon/bullhorn/index.html | 208 - .../src/3.2.1/icon/bullseye/index.html | 208 - .../src/3.2.1/icon/calendar-empty/index.html | 208 - .../src/3.2.1/icon/calendar/index.html | 208 - .../src/3.2.1/icon/camera-retro/index.html | 208 - .../src/3.2.1/icon/camera/index.html | 208 - .../src/3.2.1/icon/caret-down/index.html | 208 - .../src/3.2.1/icon/caret-left/index.html | 208 - .../src/3.2.1/icon/caret-right/index.html | 208 - .../src/3.2.1/icon/caret-up/index.html | 208 - .../src/3.2.1/icon/certificate/index.html | 208 - .../src/3.2.1/icon/check-empty/index.html | 213 - .../src/3.2.1/icon/check-minus/index.html | 208 - .../src/3.2.1/icon/check-sign/index.html | 208 - .../src/3.2.1/icon/check/index.html | 208 - .../src/3.2.1/icon/chevron-down/index.html | 208 - .../src/3.2.1/icon/chevron-left/index.html | 208 - .../src/3.2.1/icon/chevron-right/index.html | 208 - .../3.2.1/icon/chevron-sign-down/index.html | 208 - .../3.2.1/icon/chevron-sign-left/index.html | 208 - .../3.2.1/icon/chevron-sign-right/index.html | 208 - .../src/3.2.1/icon/chevron-sign-up/index.html | 208 - .../src/3.2.1/icon/chevron-up/index.html | 208 - .../3.2.1/icon/circle-arrow-down/index.html | 208 - .../3.2.1/icon/circle-arrow-left/index.html | 208 - .../3.2.1/icon/circle-arrow-right/index.html | 208 - .../src/3.2.1/icon/circle-arrow-up/index.html | 208 - .../src/3.2.1/icon/circle-blank/index.html | 208 - .../src/3.2.1/icon/circle/index.html | 208 - .../src/3.2.1/icon/cloud-download/index.html | 208 - .../src/3.2.1/icon/cloud-upload/index.html | 208 - .../src/3.2.1/icon/cloud/index.html | 208 - .../fontawesome/src/3.2.1/icon/cny/index.html | 213 - .../src/3.2.1/icon/code-fork/index.html | 208 - .../src/3.2.1/icon/code/index.html | 208 - .../src/3.2.1/icon/coffee/index.html | 208 - .../fontawesome/src/3.2.1/icon/cog/index.html | 213 - .../src/3.2.1/icon/cogs/index.html | 213 - .../src/3.2.1/icon/collapse-alt/index.html | 208 - .../src/3.2.1/icon/collapse-top/index.html | 208 - .../src/3.2.1/icon/collapse/index.html | 208 - .../src/3.2.1/icon/columns/index.html | 208 - .../src/3.2.1/icon/comment-alt/index.html | 208 - .../src/3.2.1/icon/comment/index.html | 208 - .../src/3.2.1/icon/comments-alt/index.html | 208 - .../src/3.2.1/icon/comments/index.html | 208 - .../src/3.2.1/icon/compass/index.html | 208 - .../src/3.2.1/icon/copy/index.html | 208 - .../src/3.2.1/icon/credit-card/index.html | 208 - .../src/3.2.1/icon/crop/index.html | 208 - .../src/3.2.1/icon/css3/index.html | 208 - .../fontawesome/src/3.2.1/icon/cut/index.html | 208 - .../src/3.2.1/icon/dashboard/index.html | 208 - .../src/3.2.1/icon/desktop/index.html | 208 - .../3.2.1/icon/double-angle-down/index.html | 208 - .../3.2.1/icon/double-angle-left/index.html | 208 - .../3.2.1/icon/double-angle-right/index.html | 208 - .../src/3.2.1/icon/double-angle-up/index.html | 208 - .../src/3.2.1/icon/download-alt/index.html | 208 - .../src/3.2.1/icon/download/index.html | 208 - .../src/3.2.1/icon/dribbble/index.html | 208 - .../src/3.2.1/icon/dropbox/index.html | 208 - .../src/3.2.1/icon/edit-sign/index.html | 208 - .../src/3.2.1/icon/edit/index.html | 208 - .../src/3.2.1/icon/eject/index.html | 208 - .../3.2.1/icon/ellipsis-horizontal/index.html | 208 - .../3.2.1/icon/ellipsis-vertical/index.html | 208 - .../src/3.2.1/icon/envelope-alt/index.html | 208 - .../src/3.2.1/icon/envelope/index.html | 208 - .../src/3.2.1/icon/eraser/index.html | 210 - .../fontawesome/src/3.2.1/icon/eur/index.html | 213 - .../src/3.2.1/icon/exchange/index.html | 208 - .../3.2.1/icon/exclamation-sign/index.html | 208 - .../src/3.2.1/icon/exclamation/index.html | 208 - .../src/3.2.1/icon/expand-alt/index.html | 208 - .../src/3.2.1/icon/expand/index.html | 208 - .../3.2.1/icon/external-link-sign/index.html | 208 - .../src/3.2.1/icon/external-link/index.html | 208 - .../src/3.2.1/icon/eye-close/index.html | 208 - .../src/3.2.1/icon/eye-open/index.html | 208 - .../src/3.2.1/icon/facebook-sign/index.html | 208 - .../src/3.2.1/icon/facebook/index.html | 208 - .../src/3.2.1/icon/facetime-video/index.html | 208 - .../src/3.2.1/icon/fast-backward/index.html | 208 - .../src/3.2.1/icon/fast-forward/index.html | 208 - .../src/3.2.1/icon/female/index.html | 208 - .../src/3.2.1/icon/fighter-jet/index.html | 208 - .../src/3.2.1/icon/file-alt/index.html | 208 - .../src/3.2.1/icon/file-text-alt/index.html | 208 - .../src/3.2.1/icon/file-text/index.html | 208 - .../src/3.2.1/icon/file/index.html | 208 - .../src/3.2.1/icon/film/index.html | 208 - .../src/3.2.1/icon/filter/index.html | 208 - .../3.2.1/icon/fire-extinguisher/index.html | 208 - .../src/3.2.1/icon/fire/index.html | 208 - .../src/3.2.1/icon/flag-alt/index.html | 208 - .../src/3.2.1/icon/flag-checkered/index.html | 208 - .../src/3.2.1/icon/flag/index.html | 208 - .../src/3.2.1/icon/flickr/index.html | 208 - .../3.2.1/icon/folder-close-alt/index.html | 208 - .../src/3.2.1/icon/folder-close/index.html | 208 - .../src/3.2.1/icon/folder-open-alt/index.html | 208 - .../src/3.2.1/icon/folder-open/index.html | 208 - .../src/3.2.1/icon/font/index.html | 208 - .../src/3.2.1/icon/food/index.html | 208 - .../src/3.2.1/icon/forward/index.html | 208 - .../src/3.2.1/icon/foursquare/index.html | 208 - .../src/3.2.1/icon/frown/index.html | 208 - .../src/3.2.1/icon/fullscreen/index.html | 208 - .../src/3.2.1/icon/gamepad/index.html | 208 - .../fontawesome/src/3.2.1/icon/gbp/index.html | 208 - .../src/3.2.1/icon/gift/index.html | 208 - .../src/3.2.1/icon/github-alt/index.html | 208 - .../src/3.2.1/icon/github-sign/index.html | 208 - .../src/3.2.1/icon/github/index.html | 208 - .../src/3.2.1/icon/gittip/index.html | 208 - .../src/3.2.1/icon/glass/index.html | 208 - .../src/3.2.1/icon/globe/index.html | 208 - .../3.2.1/icon/google-plus-sign/index.html | 208 - .../src/3.2.1/icon/google-plus/index.html | 208 - .../src/3.2.1/icon/group/index.html | 208 - .../src/3.2.1/icon/h-sign/index.html | 208 - .../src/3.2.1/icon/hand-down/index.html | 208 - .../src/3.2.1/icon/hand-left/index.html | 208 - .../src/3.2.1/icon/hand-right/index.html | 208 - .../src/3.2.1/icon/hand-up/index.html | 208 - .../fontawesome/src/3.2.1/icon/hdd/index.html | 208 - .../src/3.2.1/icon/headphones/index.html | 208 - .../src/3.2.1/icon/heart-empty/index.html | 208 - .../src/3.2.1/icon/heart/index.html | 208 - .../src/3.2.1/icon/home/index.html | 208 - .../src/3.2.1/icon/hospital/index.html | 208 - .../src/3.2.1/icon/html5/index.html | 208 - .../src/3.2.1/icon/inbox/index.html | 208 - .../src/3.2.1/icon/indent-left/index.html | 208 - .../src/3.2.1/icon/indent-right/index.html | 208 - .../src/3.2.1/icon/info-sign/index.html | 208 - .../src/3.2.1/icon/info/index.html | 208 - .../fontawesome/src/3.2.1/icon/inr/index.html | 213 - .../src/3.2.1/icon/instagram/index.html | 208 - .../src/3.2.1/icon/italic/index.html | 208 - .../fontawesome/src/3.2.1/icon/jpy/index.html | 213 - .../fontawesome/src/3.2.1/icon/key/index.html | 208 - .../src/3.2.1/icon/keyboard/index.html | 208 - .../fontawesome/src/3.2.1/icon/krw/index.html | 213 - .../src/3.2.1/icon/laptop/index.html | 208 - .../src/3.2.1/icon/leaf/index.html | 208 - .../src/3.2.1/icon/legal/index.html | 208 - .../src/3.2.1/icon/lemon/index.html | 208 - .../src/3.2.1/icon/level-down/index.html | 208 - .../src/3.2.1/icon/level-up/index.html | 208 - .../src/3.2.1/icon/lightbulb/index.html | 208 - .../src/3.2.1/icon/link/index.html | 208 - .../src/3.2.1/icon/linkedin-sign/index.html | 208 - .../src/3.2.1/icon/linkedin/index.html | 208 - .../src/3.2.1/icon/linux/index.html | 208 - .../src/3.2.1/icon/list-alt/index.html | 208 - .../src/3.2.1/icon/list-ol/index.html | 208 - .../src/3.2.1/icon/list-ul/index.html | 208 - .../src/3.2.1/icon/list/index.html | 208 - .../src/3.2.1/icon/location-arrow/index.html | 208 - .../src/3.2.1/icon/lock/index.html | 208 - .../src/3.2.1/icon/long-arrow-down/index.html | 208 - .../src/3.2.1/icon/long-arrow-left/index.html | 208 - .../3.2.1/icon/long-arrow-right/index.html | 208 - .../src/3.2.1/icon/long-arrow-up/index.html | 208 - .../src/3.2.1/icon/magic/index.html | 208 - .../src/3.2.1/icon/magnet/index.html | 208 - .../src/3.2.1/icon/mail-reply-all/index.html | 208 - .../src/3.2.1/icon/male/index.html | 208 - .../src/3.2.1/icon/map-marker/index.html | 208 - .../src/3.2.1/icon/maxcdn/index.html | 208 - .../src/3.2.1/icon/medkit/index.html | 208 - .../fontawesome/src/3.2.1/icon/meh/index.html | 208 - .../src/3.2.1/icon/microphone-off/index.html | 208 - .../src/3.2.1/icon/microphone/index.html | 208 - .../src/3.2.1/icon/minus-sign-alt/index.html | 208 - .../src/3.2.1/icon/minus-sign/index.html | 208 - .../src/3.2.1/icon/minus/index.html | 208 - .../src/3.2.1/icon/mobile-phone/index.html | 208 - .../src/3.2.1/icon/money/index.html | 208 - .../src/3.2.1/icon/moon/index.html | 208 - .../src/3.2.1/icon/move/index.html | 208 - .../src/3.2.1/icon/music/index.html | 208 - .../fontawesome/src/3.2.1/icon/off/index.html | 213 - .../src/3.2.1/icon/ok-circle/index.html | 208 - .../src/3.2.1/icon/ok-sign/index.html | 208 - .../fontawesome/src/3.2.1/icon/ok/index.html | 208 - .../src/3.2.1/icon/paper-clip/index.html | 213 - .../src/3.2.1/icon/paste/index.html | 208 - .../src/3.2.1/icon/pause/index.html | 208 - .../src/3.2.1/icon/pencil/index.html | 208 - .../src/3.2.1/icon/phone-sign/index.html | 208 - .../src/3.2.1/icon/phone/index.html | 208 - .../src/3.2.1/icon/picture/index.html | 208 - .../src/3.2.1/icon/pinterest-sign/index.html | 208 - .../src/3.2.1/icon/pinterest/index.html | 208 - .../src/3.2.1/icon/plane/index.html | 208 - .../src/3.2.1/icon/play-circle/index.html | 208 - .../src/3.2.1/icon/play-sign/index.html | 208 - .../src/3.2.1/icon/play/index.html | 208 - .../src/3.2.1/icon/plus-sign-alt/index.html | 210 - .../src/3.2.1/icon/plus-sign/index.html | 208 - .../src/3.2.1/icon/plus/index.html | 208 - .../src/3.2.1/icon/print/index.html | 208 - .../src/3.2.1/icon/pushpin/index.html | 208 - .../src/3.2.1/icon/puzzle-piece/index.html | 208 - .../src/3.2.1/icon/qrcode/index.html | 208 - .../src/3.2.1/icon/question-sign/index.html | 208 - .../src/3.2.1/icon/question/index.html | 208 - .../src/3.2.1/icon/quote-left/index.html | 208 - .../src/3.2.1/icon/quote-right/index.html | 208 - .../src/3.2.1/icon/random/index.html | 208 - .../src/3.2.1/icon/refresh/index.html | 208 - .../src/3.2.1/icon/remove-circle/index.html | 208 - .../src/3.2.1/icon/remove-sign/index.html | 208 - .../src/3.2.1/icon/remove/index.html | 208 - .../src/3.2.1/icon/renren/index.html | 208 - .../src/3.2.1/icon/reorder/index.html | 208 - .../src/3.2.1/icon/repeat/index.html | 213 - .../src/3.2.1/icon/reply-all/index.html | 208 - .../src/3.2.1/icon/reply/index.html | 213 - .../src/3.2.1/icon/resize-full/index.html | 208 - .../3.2.1/icon/resize-horizontal/index.html | 208 - .../src/3.2.1/icon/resize-small/index.html | 208 - .../src/3.2.1/icon/resize-vertical/index.html | 208 - .../src/3.2.1/icon/retweet/index.html | 208 - .../src/3.2.1/icon/road/index.html | 208 - .../src/3.2.1/icon/rocket/index.html | 208 - .../src/3.2.1/icon/rss-sign/index.html | 208 - .../fontawesome/src/3.2.1/icon/rss/index.html | 208 - .../src/3.2.1/icon/save/index.html | 208 - .../src/3.2.1/icon/screenshot/index.html | 208 - .../src/3.2.1/icon/search/index.html | 208 - .../src/3.2.1/icon/share-alt/index.html | 213 - .../src/3.2.1/icon/share-sign/index.html | 208 - .../src/3.2.1/icon/share/index.html | 208 - .../src/3.2.1/icon/shield/index.html | 208 - .../src/3.2.1/icon/shopping-cart/index.html | 208 - .../src/3.2.1/icon/sign-blank/index.html | 208 - .../src/3.2.1/icon/signal/index.html | 208 - .../src/3.2.1/icon/signin/index.html | 208 - .../src/3.2.1/icon/signout/index.html | 208 - .../src/3.2.1/icon/sitemap/index.html | 208 - .../src/3.2.1/icon/skype/index.html | 208 - .../src/3.2.1/icon/smile/index.html | 208 - .../icon/sort-by-alphabet-alt/index.html | 208 - .../3.2.1/icon/sort-by-alphabet/index.html | 208 - .../icon/sort-by-attributes-alt/index.html | 208 - .../3.2.1/icon/sort-by-attributes/index.html | 208 - .../3.2.1/icon/sort-by-order-alt/index.html | 208 - .../src/3.2.1/icon/sort-by-order/index.html | 208 - .../src/3.2.1/icon/sort-down/index.html | 208 - .../src/3.2.1/icon/sort-up/index.html | 208 - .../src/3.2.1/icon/sort/index.html | 208 - .../src/3.2.1/icon/spinner/index.html | 208 - .../src/3.2.1/icon/stackexchange/index.html | 208 - .../src/3.2.1/icon/star-empty/index.html | 208 - .../src/3.2.1/icon/star-half-empty/index.html | 213 - .../src/3.2.1/icon/star-half/index.html | 208 - .../src/3.2.1/icon/star/index.html | 208 - .../src/3.2.1/icon/step-backward/index.html | 208 - .../src/3.2.1/icon/step-forward/index.html | 208 - .../src/3.2.1/icon/stethoscope/index.html | 208 - .../src/3.2.1/icon/stop/index.html | 208 - .../src/3.2.1/icon/strikethrough/index.html | 208 - .../src/3.2.1/icon/subscript/index.html | 208 - .../src/3.2.1/icon/suitcase/index.html | 208 - .../fontawesome/src/3.2.1/icon/sun/index.html | 208 - .../src/3.2.1/icon/superscript/index.html | 208 - .../src/3.2.1/icon/table/index.html | 208 - .../src/3.2.1/icon/tablet/index.html | 208 - .../fontawesome/src/3.2.1/icon/tag/index.html | 208 - .../src/3.2.1/icon/tags/index.html | 208 - .../src/3.2.1/icon/tasks/index.html | 208 - .../src/3.2.1/icon/terminal/index.html | 208 - .../src/3.2.1/icon/text-height/index.html | 208 - .../src/3.2.1/icon/text-width/index.html | 208 - .../src/3.2.1/icon/th-large/index.html | 208 - .../src/3.2.1/icon/th-list/index.html | 208 - .../fontawesome/src/3.2.1/icon/th/index.html | 208 - .../src/3.2.1/icon/thumbs-down-alt/index.html | 208 - .../src/3.2.1/icon/thumbs-down/index.html | 208 - .../src/3.2.1/icon/thumbs-up-alt/index.html | 208 - .../src/3.2.1/icon/thumbs-up/index.html | 208 - .../src/3.2.1/icon/ticket/index.html | 208 - .../src/3.2.1/icon/time/index.html | 208 - .../src/3.2.1/icon/tint/index.html | 208 - .../src/3.2.1/icon/trash/index.html | 208 - .../src/3.2.1/icon/trello/index.html | 208 - .../src/3.2.1/icon/trophy/index.html | 208 - .../src/3.2.1/icon/truck/index.html | 208 - .../src/3.2.1/icon/tumblr-sign/index.html | 208 - .../src/3.2.1/icon/tumblr/index.html | 208 - .../src/3.2.1/icon/twitter-sign/index.html | 208 - .../src/3.2.1/icon/twitter/index.html | 208 - .../src/3.2.1/icon/umbrella/index.html | 208 - .../src/3.2.1/icon/underline/index.html | 208 - .../src/3.2.1/icon/undo/index.html | 213 - .../src/3.2.1/icon/unlink/index.html | 208 - .../src/3.2.1/icon/unlock-alt/index.html | 208 - .../src/3.2.1/icon/unlock/index.html | 208 - .../src/3.2.1/icon/upload-alt/index.html | 208 - .../src/3.2.1/icon/upload/index.html | 208 - .../fontawesome/src/3.2.1/icon/usd/index.html | 213 - .../src/3.2.1/icon/user-md/index.html | 208 - .../src/3.2.1/icon/user/index.html | 208 - .../fontawesome/src/3.2.1/icon/vk/index.html | 208 - .../src/3.2.1/icon/volume-down/index.html | 208 - .../src/3.2.1/icon/volume-off/index.html | 208 - .../src/3.2.1/icon/volume-up/index.html | 208 - .../src/3.2.1/icon/warning-sign/index.html | 208 - .../src/3.2.1/icon/weibo/index.html | 208 - .../src/3.2.1/icon/windows/index.html | 208 - .../src/3.2.1/icon/wrench/index.html | 208 - .../src/3.2.1/icon/xing-sign/index.html | 208 - .../src/3.2.1/icon/xing/index.html | 208 - .../src/3.2.1/icon/youtube-play/index.html | 210 - .../src/3.2.1/icon/youtube-sign/index.html | 208 - .../src/3.2.1/icon/youtube/index.html | 208 - .../src/3.2.1/icon/zoom-in/index.html | 208 - .../src/3.2.1/icon/zoom-out/index.html | 208 - .../static/fontawesome/src/3.2.1/icons.yml | 2590 --- .../fontawesome/src/3.2.1/icons/index.html | 1211 -- .../static/fontawesome/src/3.2.1/index.html | 329 - .../fontawesome/src/3.2.1/license/index.html | 270 - .../fontawesome/src/3.2.1/test/index.html | 1056 - .../src/3.2.1/whats-new/index.html | 442 - src/pretix/static/fontawesome/src/CNAME | 1 - src/pretix/static/fontawesome/src/Makefile | 40 - .../static/fontawesome/src/README.md-nobuild | 89 - .../fontawesome/src/_includes/ads/fusion.html | 1 - .../src/_includes/brand-adblock-warning.html | 5 - .../src/_includes/brand-license.html | 4 - .../fontawesome/src/_includes/code/core.less | 7 - .../fontawesome/src/_includes/code/core.scss | 7 - .../src/_includes/code/license.css | 4 - .../_includes/community/getting-support.html | 22 - .../community/project-milestones.html | 7 - .../_includes/community/reporting-bugs.html | 18 - .../community/requesting-new-icons.html | 29 - .../community/submitting-pull-requests.html | 13 - .../src/_includes/examples/animated.html | 36 - .../src/_includes/examples/basic.html | 36 - .../src/_includes/examples/bootstrap.html | 93 - .../_includes/examples/bordered-pulled.html | 30 - .../src/_includes/examples/custom.html | 16 - .../src/_includes/examples/fixed-width.html | 33 - .../src/_includes/examples/larger.html | 40 - .../src/_includes/examples/list.html | 30 - .../_includes/examples/rotated-flipped.html | 34 - .../src/_includes/examples/stacked.html | 65 - .../fontawesome/src/_includes/footer.html | 25 - .../src/_includes/icons/brand.html | 19 - .../src/_includes/icons/chart.html | 12 - .../src/_includes/icons/currency.html | 12 - .../src/_includes/icons/directional.html | 12 - .../src/_includes/icons/file-type.html | 12 - .../src/_includes/icons/filter.html | 30 - .../src/_includes/icons/form-control.html | 11 - .../src/_includes/icons/gender.html | 12 - .../src/_includes/icons/medical.html | 12 - .../fontawesome/src/_includes/icons/new.html | 18 - .../src/_includes/icons/payment.html | 12 - .../src/_includes/icons/spinner.html | 21 - .../src/_includes/icons/text-editor.html | 12 - .../src/_includes/icons/transportation.html | 12 - .../src/_includes/icons/video-player.html | 12 - .../src/_includes/icons/web-application.html | 12 - .../src/_includes/jumbotron-carousel.html | 52 - .../fontawesome/src/_includes/jumbotron.html | 6 - .../fontawesome/src/_includes/navbar.html | 87 - .../src/_includes/new-features.html | 29 - .../fontawesome/src/_includes/new-naming.html | 157 - .../src/_includes/new-upgrading.html | 10 - .../fontawesome/src/_includes/stripe-ad.html | 6 - .../src/_includes/stripe-social.html | 18 - .../src/_includes/tell-me-thanks.html | 22 - .../tests/rotated-flipped-inside-anchor.html | 6 - .../tests/rotated-flipped-inside-btn.html | 6 - .../src/_includes/tests/rotated-flipped.html | 6 - .../tests/stacked-inside-anchor.html | 69 - .../_includes/tests/stacked-with-text.html | 4 - .../src/_includes/tests/stacked.html | 58 - .../fontawesome/src/_includes/thanks-to.html | 26 - .../static/fontawesome/src/_includes/why.html | 41 - .../static/fontawesome/src/_layouts/base.html | 72 - .../static/fontawesome/src/_layouts/icon.html | 62 - .../src/_plugins/flatten_icon_filters.rb | 38 - .../src/_plugins/icon_page_generator.rb | 45 - .../static/fontawesome/src/_plugins/site.rb | 142 - .../fontawesome/src/assets/css/prettify.css | 30 - .../fontawesome/src/assets/css/pygments.css | 71 - .../assets/font-awesome/fonts/FontAwesome.otf | Bin 93888 -> 0 bytes .../fonts/fontawesome-webfont.eot | Bin 60767 -> 0 bytes .../fonts/fontawesome-webfont.svg | 565 - .../fonts/fontawesome-webfont.ttf | Bin 122092 -> 0 bytes .../fonts/fontawesome-webfont.woff | Bin 71508 -> 0 bytes .../fonts/fontawesome-webfont.woff2 | Bin 56780 -> 0 bytes .../assets/font-awesome/less/animated.less | 37 - .../font-awesome/less/bordered-pulled.less | 19 - .../src/assets/font-awesome/less/core.less | 9 - .../assets/font-awesome/less/fixed-width.less | 9 - .../font-awesome/less/font-awesome.less | 16 - .../src/assets/font-awesome/less/icons.less | 7 - .../src/assets/font-awesome/less/larger.less | 16 - .../src/assets/font-awesome/less/list.less | 22 - .../src/assets/font-awesome/less/mixins.less | 22 - .../src/assets/font-awesome/less/path.less | 15 - .../font-awesome/less/rotated-flipped.less | 23 - .../src/assets/font-awesome/less/stacked.less | 23 - .../assets/font-awesome/less/variables.less | 16 - .../assets/font-awesome/scss/_animated.scss | 37 - .../font-awesome/scss/_bordered-pulled.scss | 19 - .../src/assets/font-awesome/scss/_core.scss | 9 - .../font-awesome/scss/_fixed-width.scss | 9 - .../src/assets/font-awesome/scss/_icons.scss | 7 - .../src/assets/font-awesome/scss/_larger.scss | 16 - .../src/assets/font-awesome/scss/_list.scss | 22 - .../src/assets/font-awesome/scss/_mixins.scss | 22 - .../src/assets/font-awesome/scss/_path.scss | 15 - .../font-awesome/scss/_rotated-flipped.scss | 23 - .../assets/font-awesome/scss/_stacked.scss | 23 - .../assets/font-awesome/scss/_variables.scss | 16 - .../font-awesome/scss/font-awesome.scss | 16 - .../fontawesome/src/assets/ico/favicon.ico | Bin 1150 -> 0 bytes .../src/assets/js/ZeroClipboard-1.1.7.min.js | 8 - .../src/assets/js/ZeroClipboard-1.1.7.swf | Bin 1635 -> 0 bytes .../fontawesome/src/assets/js/backbone.min.js | 37 - .../src/assets/js/bootstrap-2.3.1.min.js | 6 - .../src/assets/js/bootstrap-3.0.2.min.js | 9 - .../src/assets/js/bootstrap-3.1.1.min.js | 6 - .../fontawesome/src/assets/js/html5shiv.js | 8 - .../src/assets/js/jquery-1.10.2.js | 9789 --------- .../src/assets/js/jquery-1.10.2.min.js | 6 - .../src/assets/js/jquery-1.10.2.min.map | 1 - .../src/assets/js/jquery-1.7.1.min.js | 4 - .../fontawesome/src/assets/js/prettify.min.js | 28 - .../fontawesome/src/assets/js/respond.min.js | 6 - .../static/fontawesome/src/assets/js/site.js | 102 - .../src/assets/js/tabcomplete.min.js | 6 - .../src/assets/js/underscore.min.js | 31 - .../assets/less/bootstrap-3.2.0/.csscomb.json | 297 - .../assets/less/bootstrap-3.2.0/.csslintrc | 19 - .../assets/less/bootstrap-3.2.0/alerts.less | 68 - .../assets/less/bootstrap-3.2.0/badges.less | 55 - .../less/bootstrap-3.2.0/bootstrap.less | 50 - .../less/bootstrap-3.2.0/breadcrumbs.less | 26 - .../less/bootstrap-3.2.0/button-groups.less | 240 - .../assets/less/bootstrap-3.2.0/buttons.less | 157 - .../assets/less/bootstrap-3.2.0/carousel.less | 243 - .../assets/less/bootstrap-3.2.0/close.less | 33 - .../src/assets/less/bootstrap-3.2.0/code.less | 68 - .../bootstrap-3.2.0/component-animations.less | 31 - .../less/bootstrap-3.2.0/dropdowns.less | 215 - .../assets/less/bootstrap-3.2.0/forms.less | 540 - .../less/bootstrap-3.2.0/glyphicons.less | 233 - .../src/assets/less/bootstrap-3.2.0/grid.less | 84 - .../less/bootstrap-3.2.0/input-groups.less | 166 - .../less/bootstrap-3.2.0/jumbotron.less | 48 - .../assets/less/bootstrap-3.2.0/labels.less | 64 - .../less/bootstrap-3.2.0/list-group.less | 131 - .../assets/less/bootstrap-3.2.0/media.less | 56 - .../assets/less/bootstrap-3.2.0/mixins.less | 39 - .../less/bootstrap-3.2.0/mixins/alerts.less | 14 - .../mixins/background-variant.less | 8 - .../bootstrap-3.2.0/mixins/border-radius.less | 18 - .../less/bootstrap-3.2.0/mixins/buttons.less | 50 - .../bootstrap-3.2.0/mixins/center-block.less | 7 - .../less/bootstrap-3.2.0/mixins/clearfix.less | 22 - .../less/bootstrap-3.2.0/mixins/forms.less | 81 - .../bootstrap-3.2.0/mixins/gradients.less | 59 - .../mixins/grid-framework.less | 91 - .../less/bootstrap-3.2.0/mixins/grid.less | 122 - .../bootstrap-3.2.0/mixins/hide-text.less | 21 - .../less/bootstrap-3.2.0/mixins/image.less | 34 - .../less/bootstrap-3.2.0/mixins/labels.less | 12 - .../bootstrap-3.2.0/mixins/list-group.less | 29 - .../bootstrap-3.2.0/mixins/nav-divider.less | 10 - .../mixins/nav-vertical-align.less | 9 - .../less/bootstrap-3.2.0/mixins/opacity.less | 8 - .../bootstrap-3.2.0/mixins/pagination.less | 23 - .../less/bootstrap-3.2.0/mixins/panels.less | 24 - .../bootstrap-3.2.0/mixins/progress-bar.less | 10 - .../bootstrap-3.2.0/mixins/reset-filter.less | 8 - .../less/bootstrap-3.2.0/mixins/resize.less | 6 - .../mixins/responsive-visibility.less | 15 - .../less/bootstrap-3.2.0/mixins/size.less | 10 - .../bootstrap-3.2.0/mixins/tab-focus.less | 9 - .../bootstrap-3.2.0/mixins/table-row.less | 28 - .../bootstrap-3.2.0/mixins/text-emphasis.less | 8 - .../bootstrap-3.2.0/mixins/text-overflow.less | 8 - .../mixins/vendor-prefixes.less | 224 - .../assets/less/bootstrap-3.2.0/modals.less | 150 - .../assets/less/bootstrap-3.2.0/navbar.less | 655 - .../src/assets/less/bootstrap-3.2.0/navs.less | 242 - .../less/bootstrap-3.2.0/normalize.less | 425 - .../assets/less/bootstrap-3.2.0/pager.less | 55 - .../less/bootstrap-3.2.0/pagination.less | 88 - .../assets/less/bootstrap-3.2.0/panels.less | 243 - .../assets/less/bootstrap-3.2.0/popovers.less | 133 - .../assets/less/bootstrap-3.2.0/print.less | 101 - .../less/bootstrap-3.2.0/progress-bars.less | 105 - .../bootstrap-3.2.0/responsive-embed.less | 34 - .../bootstrap-3.2.0/responsive-utilities.less | 194 - .../less/bootstrap-3.2.0/scaffolding.less | 150 - .../assets/less/bootstrap-3.2.0/tables.less | 233 - .../assets/less/bootstrap-3.2.0/theme.less | 258 - .../less/bootstrap-3.2.0/thumbnails.less | 36 - .../assets/less/bootstrap-3.2.0/tooltip.less | 95 - .../src/assets/less/bootstrap-3.2.0/type.less | 313 - .../less/bootstrap-3.2.0/utilities.less | 57 - .../less/bootstrap-3.2.0/variables.less | 846 - .../assets/less/bootstrap-3.2.0/wells.less | 29 - .../fontawesome/src/assets/less/site.less | 30 - .../assets/less/site/bootstrap/buttons.less | 3 - .../assets/less/site/bootstrap/jumbotron.less | 68 - .../assets/less/site/bootstrap/navbar.less | 35 - .../src/assets/less/site/bootstrap/type.less | 3 - .../assets/less/site/bootstrap/variables.less | 124 - .../src/assets/less/site/bootstrap/wells.less | 1 - .../src/assets/less/site/bsap-ad.less | 14 - .../src/assets/less/site/example-rating.less | 25 - .../src/assets/less/site/feature-list.less | 19 - .../less/site/fontawesome-icon-list.less | 32 - .../src/assets/less/site/fonticons.less | 62 - .../src/assets/less/site/footer.less | 40 - .../src/assets/less/site/fusion-ad.less | 27 - .../assets/less/site/jumbotron-carousel.less | 61 - .../src/assets/less/site/layout.less | 1 - .../src/assets/less/site/lazy.less | 93 - .../less/site/responsive/screen-lg.less | 58 - .../less/site/responsive/screen-md.less | 3 - .../less/site/responsive/screen-sm.less | 49 - .../less/site/responsive/screen-xs.less | 78 - .../src/assets/less/site/search.less | 25 - .../src/assets/less/site/social-buttons.less | 9 - .../src/assets/less/site/stripe-ad.less | 4 - .../src/assets/less/site/textured-bg.less | 20 - .../static/fontawesome/src/cheatsheet.html | 34 - .../static/fontawesome/src/community.html | 34 - src/pretix/static/fontawesome/src/design.html | 1 - .../static/fontawesome/src/examples.html | 33 - .../static/fontawesome/src/get-started.html | 169 - .../fontawesome/src/glyphicons-test.html | 795 - src/pretix/static/fontawesome/src/icons.html | 41 - src/pretix/static/fontawesome/src/icons.yml | 5058 ----- src/pretix/static/fontawesome/src/index.html | 22 - .../static/fontawesome/src/license.html | 72 - .../static/fontawesome/src/test-2.3.2.html | 824 - src/pretix/static/fontawesome/src/test.html | 800 - .../static/fontawesome/src/whats-new.html | 25 - src/setup.py | 7 +- 984 files changed, 2 insertions(+), 202556 deletions(-) delete mode 100644 src/pretix/MANIFEST.in delete mode 100644 src/pretix/static/bootstrap/.editorconfig delete mode 100644 src/pretix/static/bootstrap/.gitattributes delete mode 100644 src/pretix/static/bootstrap/.gitignore delete mode 100644 src/pretix/static/bootstrap/.travis.yml delete mode 100644 src/pretix/static/bootstrap/CNAME delete mode 100644 src/pretix/static/bootstrap/CONTRIBUTING.md delete mode 100644 src/pretix/static/bootstrap/Gruntfile.js delete mode 100644 src/pretix/static/bootstrap/_config.yml delete mode 100644 src/pretix/static/bootstrap/bower.json delete mode 100644 src/pretix/static/bootstrap/composer.json delete mode 100644 src/pretix/static/bootstrap/docs/LICENSE delete mode 100644 src/pretix/static/bootstrap/docs/_data/browser-bugs.yml delete mode 100644 src/pretix/static/bootstrap/docs/_data/core-team.yml delete mode 100644 src/pretix/static/bootstrap/docs/_data/glyphicons.yml delete mode 100644 src/pretix/static/bootstrap/docs/_data/sass-team.yml delete mode 100644 src/pretix/static/bootstrap/docs/_data/showcase.yml delete mode 100644 src/pretix/static/bootstrap/docs/_data/translations.yml delete mode 100644 src/pretix/static/bootstrap/docs/_includes/ads.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/alerts.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/badges.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/breadcrumbs.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/button-dropdowns.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/button-groups.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/dropdowns.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/glyphicons.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/input-groups.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/jumbotron.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/labels.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/list-group.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/media.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/navbar.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/navs.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/page-header.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/pagination.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/panels.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/progress-bars.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/responsive-embed.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/thumbnails.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/components/wells.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/css/buttons.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/css/code.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/css/forms.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/css/grid.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/css/helpers.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/css/images.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/css/less.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/css/overview.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/css/responsive-utilities.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/css/sass.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/css/tables.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/css/type.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/customizer-variables.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/footer.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/getting-started/accessibility.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/getting-started/browser-device-support.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/getting-started/community.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/getting-started/disabling-responsiveness.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/getting-started/download.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/getting-started/examples.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/getting-started/grunt.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/getting-started/license.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/getting-started/template.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/getting-started/third-party-support.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/getting-started/tools.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/getting-started/translations.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/getting-started/whats-included.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/header.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/js/affix.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/js/alerts.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/js/buttons.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/js/carousel.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/js/collapse.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/js/dropdowns.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/js/modal.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/js/overview.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/js/popovers.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/js/scrollspy.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/js/tabs.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/js/tooltips.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/js/transitions.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/nav/about.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/nav/components.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/nav/css.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/nav/customize.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/nav/getting-started.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/nav/javascript.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/nav/main.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/nav/migration.html delete mode 100644 src/pretix/static/bootstrap/docs/_includes/social-buttons.html delete mode 100644 src/pretix/static/bootstrap/docs/_jade/customizer-nav.jade delete mode 100644 src/pretix/static/bootstrap/docs/_jade/customizer-variables.jade delete mode 100644 src/pretix/static/bootstrap/docs/_layouts/default.html delete mode 100644 src/pretix/static/bootstrap/docs/_layouts/home.html delete mode 100644 src/pretix/static/bootstrap/docs/_plugins/bridge.rb delete mode 100644 src/pretix/static/bootstrap/docs/_plugins/bugify.rb delete mode 100644 src/pretix/static/bootstrap/docs/about.html delete mode 100644 src/pretix/static/bootstrap/docs/apple-touch-icon.png delete mode 100644 src/pretix/static/bootstrap/docs/assets/brand/bootstrap-outline.svg delete mode 100644 src/pretix/static/bootstrap/docs/assets/brand/bootstrap-punchout.svg delete mode 100644 src/pretix/static/bootstrap/docs/assets/brand/bootstrap-solid.svg delete mode 100644 src/pretix/static/bootstrap/docs/assets/css/docs.min.css delete mode 100644 src/pretix/static/bootstrap/docs/assets/css/src/docs.css delete mode 100644 src/pretix/static/bootstrap/docs/assets/css/src/pygments-manni.css delete mode 100644 src/pretix/static/bootstrap/docs/assets/flash/ZeroClipboard.swf delete mode 100644 src/pretix/static/bootstrap/docs/assets/img/components.png delete mode 100644 src/pretix/static/bootstrap/docs/assets/img/devices.png delete mode 100644 src/pretix/static/bootstrap/docs/assets/img/sass-less.png delete mode 100644 src/pretix/static/bootstrap/docs/assets/js/customize.min.js delete mode 100644 src/pretix/static/bootstrap/docs/assets/js/docs.min.js delete mode 100644 src/pretix/static/bootstrap/docs/assets/js/ie-emulation-modes-warning.js delete mode 100644 src/pretix/static/bootstrap/docs/assets/js/ie10-viewport-bug-workaround.js delete mode 100644 src/pretix/static/bootstrap/docs/assets/js/ie8-responsive-file-warning.js delete mode 100644 src/pretix/static/bootstrap/docs/assets/js/raw-files.min.js delete mode 100644 src/pretix/static/bootstrap/docs/assets/js/src/application.js delete mode 100644 src/pretix/static/bootstrap/docs/assets/js/src/customizer.js delete mode 100644 src/pretix/static/bootstrap/docs/assets/js/vendor/Blob.js delete mode 100644 src/pretix/static/bootstrap/docs/assets/js/vendor/FileSaver.js delete mode 100644 src/pretix/static/bootstrap/docs/assets/js/vendor/ZeroClipboard.min.js delete mode 100644 src/pretix/static/bootstrap/docs/assets/js/vendor/autoprefixer.js delete mode 100644 src/pretix/static/bootstrap/docs/assets/js/vendor/holder.js delete mode 100644 src/pretix/static/bootstrap/docs/assets/js/vendor/jszip.min.js delete mode 100644 src/pretix/static/bootstrap/docs/assets/js/vendor/less.min.js delete mode 100644 src/pretix/static/bootstrap/docs/assets/js/vendor/uglify.min.js delete mode 100644 src/pretix/static/bootstrap/docs/browser-bugs.html delete mode 100644 src/pretix/static/bootstrap/docs/components.html delete mode 100644 src/pretix/static/bootstrap/docs/css.html delete mode 100644 src/pretix/static/bootstrap/docs/customize.html delete mode 100644 src/pretix/static/bootstrap/docs/dist/css/bootstrap-theme.css delete mode 100644 src/pretix/static/bootstrap/docs/dist/css/bootstrap-theme.css.map delete mode 100644 src/pretix/static/bootstrap/docs/dist/css/bootstrap-theme.min.css delete mode 100644 src/pretix/static/bootstrap/docs/dist/css/bootstrap.css delete mode 100644 src/pretix/static/bootstrap/docs/dist/css/bootstrap.css.map delete mode 100644 src/pretix/static/bootstrap/docs/dist/css/bootstrap.min.css delete mode 100644 src/pretix/static/bootstrap/docs/dist/fonts/glyphicons-halflings-regular.eot delete mode 100644 src/pretix/static/bootstrap/docs/dist/fonts/glyphicons-halflings-regular.svg delete mode 100644 src/pretix/static/bootstrap/docs/dist/fonts/glyphicons-halflings-regular.ttf delete mode 100644 src/pretix/static/bootstrap/docs/dist/fonts/glyphicons-halflings-regular.woff delete mode 100644 src/pretix/static/bootstrap/docs/dist/fonts/glyphicons-halflings-regular.woff2 delete mode 100644 src/pretix/static/bootstrap/docs/dist/js/bootstrap.js delete mode 100644 src/pretix/static/bootstrap/docs/dist/js/bootstrap.min.js delete mode 100644 src/pretix/static/bootstrap/docs/dist/js/npm.js delete mode 100644 src/pretix/static/bootstrap/docs/examples/blog/blog.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/blog/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/carousel/carousel.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/carousel/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/cover/cover.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/cover/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/dashboard/dashboard.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/dashboard/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/grid/grid.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/grid/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/jumbotron-narrow/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/jumbotron-narrow/jumbotron-narrow.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/jumbotron/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/jumbotron/jumbotron.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/justified-nav/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/justified-nav/justified-nav.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/navbar-fixed-top/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/navbar-fixed-top/navbar-fixed-top.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/navbar-static-top/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/navbar-static-top/navbar-static-top.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/navbar/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/navbar/navbar.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/non-responsive/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/non-responsive/non-responsive.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/offcanvas/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/offcanvas/offcanvas.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/offcanvas/offcanvas.js delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/blog.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/carousel.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/cover.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/dashboard.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/equal-height-columns.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/grid.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/jumbotron-narrow.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/jumbotron.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/justified-nav.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/navbar-fixed.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/navbar-static.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/navbar.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/non-responsive.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/offcanvas.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/sign-in.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/starter-template.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/sticky-footer-navbar.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/sticky-footer.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/screenshots/theme.jpg delete mode 100644 src/pretix/static/bootstrap/docs/examples/signin/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/signin/signin.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/starter-template/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/starter-template/starter-template.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/sticky-footer-navbar/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/sticky-footer-navbar/sticky-footer-navbar.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/sticky-footer/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/sticky-footer/sticky-footer.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/theme/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/theme/theme.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/tooltip-viewport/index.html delete mode 100644 src/pretix/static/bootstrap/docs/examples/tooltip-viewport/tooltip-viewport.css delete mode 100644 src/pretix/static/bootstrap/docs/examples/tooltip-viewport/tooltip-viewport.js delete mode 100644 src/pretix/static/bootstrap/docs/favicon.ico delete mode 100644 src/pretix/static/bootstrap/docs/getting-started.html delete mode 100644 src/pretix/static/bootstrap/docs/index.html delete mode 100644 src/pretix/static/bootstrap/docs/javascript.html delete mode 100644 src/pretix/static/bootstrap/docs/migration.html delete mode 100644 src/pretix/static/bootstrap/docs/robots.txt delete mode 100644 src/pretix/static/bootstrap/docs/sitemap.xml delete mode 100644 src/pretix/static/bootstrap/grunt/.jshintrc delete mode 100644 src/pretix/static/bootstrap/grunt/bs-commonjs-generator.js delete mode 100644 src/pretix/static/bootstrap/grunt/bs-glyphicons-data-generator.js delete mode 100644 src/pretix/static/bootstrap/grunt/bs-lessdoc-parser.js delete mode 100644 src/pretix/static/bootstrap/grunt/bs-raw-files-generator.js delete mode 100644 src/pretix/static/bootstrap/grunt/configBridge.json delete mode 100644 src/pretix/static/bootstrap/grunt/sauce_browsers.yml delete mode 100644 src/pretix/static/bootstrap/js/.jscsrc delete mode 100644 src/pretix/static/bootstrap/js/.jshintrc delete mode 100644 src/pretix/static/bootstrap/js/affix.js delete mode 100644 src/pretix/static/bootstrap/js/alert.js delete mode 100644 src/pretix/static/bootstrap/js/button.js delete mode 100644 src/pretix/static/bootstrap/js/carousel.js delete mode 100644 src/pretix/static/bootstrap/js/collapse.js delete mode 100644 src/pretix/static/bootstrap/js/dropdown.js delete mode 100644 src/pretix/static/bootstrap/js/modal.js delete mode 100644 src/pretix/static/bootstrap/js/popover.js delete mode 100644 src/pretix/static/bootstrap/js/scrollspy.js delete mode 100644 src/pretix/static/bootstrap/js/tab.js delete mode 100644 src/pretix/static/bootstrap/js/tests/index.html delete mode 100644 src/pretix/static/bootstrap/js/tests/unit/.jshintrc delete mode 100644 src/pretix/static/bootstrap/js/tests/unit/affix.js delete mode 100644 src/pretix/static/bootstrap/js/tests/unit/alert.js delete mode 100644 src/pretix/static/bootstrap/js/tests/unit/button.js delete mode 100644 src/pretix/static/bootstrap/js/tests/unit/carousel.js delete mode 100644 src/pretix/static/bootstrap/js/tests/unit/collapse.js delete mode 100644 src/pretix/static/bootstrap/js/tests/unit/dropdown.js delete mode 100644 src/pretix/static/bootstrap/js/tests/unit/modal.js delete mode 100644 src/pretix/static/bootstrap/js/tests/unit/phantom.js delete mode 100644 src/pretix/static/bootstrap/js/tests/unit/popover.js delete mode 100644 src/pretix/static/bootstrap/js/tests/unit/scrollspy.js delete mode 100644 src/pretix/static/bootstrap/js/tests/unit/tab.js delete mode 100644 src/pretix/static/bootstrap/js/tests/unit/tooltip.js delete mode 100644 src/pretix/static/bootstrap/js/tests/vendor/jquery.min.js delete mode 100644 src/pretix/static/bootstrap/js/tests/vendor/qunit.css delete mode 100644 src/pretix/static/bootstrap/js/tests/vendor/qunit.js delete mode 100644 src/pretix/static/bootstrap/js/tests/visual/affix.html delete mode 100644 src/pretix/static/bootstrap/js/tests/visual/alert.html delete mode 100644 src/pretix/static/bootstrap/js/tests/visual/button.html delete mode 100644 src/pretix/static/bootstrap/js/tests/visual/carousel.html delete mode 100644 src/pretix/static/bootstrap/js/tests/visual/collapse.html delete mode 100644 src/pretix/static/bootstrap/js/tests/visual/dropdown.html delete mode 100644 src/pretix/static/bootstrap/js/tests/visual/modal.html delete mode 100644 src/pretix/static/bootstrap/js/tests/visual/popover.html delete mode 100644 src/pretix/static/bootstrap/js/tests/visual/scrollspy.html delete mode 100644 src/pretix/static/bootstrap/js/tests/visual/tab.html delete mode 100644 src/pretix/static/bootstrap/js/tests/visual/tooltip.html delete mode 100644 src/pretix/static/bootstrap/js/tooltip.js delete mode 100644 src/pretix/static/bootstrap/js/transition.js delete mode 100644 src/pretix/static/bootstrap/package.json delete mode 100644 src/pretix/static/bootstrap/test-infra/README.md delete mode 100644 src/pretix/static/bootstrap/test-infra/S3Cachefile.json delete mode 100644 src/pretix/static/bootstrap/test-infra/npm-shrinkwrap.json delete mode 100644 src/pretix/static/bootstrap/test-infra/requirements.txt delete mode 100755 src/pretix/static/bootstrap/test-infra/s3_cache.py delete mode 100755 src/pretix/static/bootstrap/test-infra/uncached-npm-install.sh delete mode 100644 src/pretix/static/fontawesome/.gitignore delete mode 100644 src/pretix/static/fontawesome/.npmignore delete mode 100644 src/pretix/static/fontawesome/CONTRIBUTING.md delete mode 100644 src/pretix/static/fontawesome/Gemfile delete mode 100644 src/pretix/static/fontawesome/Gemfile.lock delete mode 100644 src/pretix/static/fontawesome/_config.yml delete mode 100644 src/pretix/static/fontawesome/bower.json delete mode 100644 src/pretix/static/fontawesome/component.json delete mode 100644 src/pretix/static/fontawesome/composer.json delete mode 100644 src/pretix/static/fontawesome/package.json delete mode 100644 src/pretix/static/fontawesome/scss/_animated.scss delete mode 100644 src/pretix/static/fontawesome/scss/_bordered-pulled.scss delete mode 100644 src/pretix/static/fontawesome/scss/_core.scss delete mode 100644 src/pretix/static/fontawesome/scss/_fixed-width.scss delete mode 100644 src/pretix/static/fontawesome/scss/_icons.scss delete mode 100644 src/pretix/static/fontawesome/scss/_larger.scss delete mode 100644 src/pretix/static/fontawesome/scss/_list.scss delete mode 100644 src/pretix/static/fontawesome/scss/_mixins.scss delete mode 100644 src/pretix/static/fontawesome/scss/_path.scss delete mode 100644 src/pretix/static/fontawesome/scss/_rotated-flipped.scss delete mode 100644 src/pretix/static/fontawesome/scss/_stacked.scss delete mode 100644 src/pretix/static/fontawesome/scss/_variables.scss delete mode 100644 src/pretix/static/fontawesome/scss/font-awesome.scss delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/CNAME delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/Makefile delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/css/prettify.css delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/css/pygments.css delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/css/site.css delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome.zip delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/css/font-awesome-ie7.css delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/css/font-awesome-ie7.min.css delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/css/font-awesome.css delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/css/font-awesome.min.css delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/font/FontAwesome.otf delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.eot delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.svg delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.ttf delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/font/fontawesome-webfont.woff delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/less/bootstrap.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/less/core.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/less/extras.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/less/font-awesome-ie7.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/less/font-awesome.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/less/icons.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/less/mixins.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/less/path.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/less/variables.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/scss/_bootstrap.scss delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/scss/_core.scss delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/scss/_extras.scss delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/scss/_icons.scss delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/scss/_mixins.scss delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/scss/_path.scss delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/scss/_variables.scss delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/scss/font-awesome-ie7.scss delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/font-awesome/scss/font-awesome.scss delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/ico/favicon.ico delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/img/contribution-sample.png delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/img/fort_awesome.jpg delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/img/glyphicons-halflings-white.png delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/img/glyphicons-halflings.png delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/img/icon-flag.pdf delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/js/ZeroClipboard-1.1.7.min.js delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/js/ZeroClipboard-1.1.7.swf delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/js/backbone.min.js delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/js/bootstrap-2.3.1.min.js delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/js/bootstrap-222.min.js delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/js/jquery-1.7.1.min.js delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/js/prettify.min.js delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/js/site.js delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/js/underscore.min.js delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/accordion.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/alerts.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/bootstrap.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/breadcrumbs.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/button-groups.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/buttons.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/carousel.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/close.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/code.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/component-animations.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/dropdowns.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/forms.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/grid.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/hero-unit.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/labels-badges.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/layouts.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/media.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/mixins.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/modals.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/navbar.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/navs.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/pager.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/pagination.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/popovers.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/progress-bars.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/reset.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-1200px-min.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-767px-max.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-768px-979px.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-navbar.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive-utilities.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/responsive.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/scaffolding.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/sprites.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/tables.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/thumbnails.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/tooltip.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/type.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/utilities.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/variables.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/bootstrap-2.3.2/wells.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/lazy.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/mixins.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/responsive-1200px-min.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/responsive-767px-max.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/responsive-768px-979px.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/responsive-navbar.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/responsive.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/site.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/sticky-footer.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/assets/less/variables.less delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/cheatsheet/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/community/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/design.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/examples/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/get-started/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/adjust/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/adn/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/align-center/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/align-justify/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/align-left/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/align-right/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/ambulance/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/anchor/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/android/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/angle-down/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/angle-left/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/angle-right/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/angle-up/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/apple/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/archive/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/arrow-down/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/arrow-left/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/arrow-right/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/arrow-up/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/asterisk/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/backward/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/ban-circle/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/bar-chart/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/barcode/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/beaker/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/beer/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/bell-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/bell/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/bitbucket-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/bitbucket/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/bold/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/bolt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/book/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/bookmark-empty/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/bookmark/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/briefcase/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/btc/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/bug/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/building/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/bullhorn/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/bullseye/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/calendar-empty/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/calendar/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/camera-retro/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/camera/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/caret-down/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/caret-left/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/caret-right/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/caret-up/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/certificate/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/check-empty/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/check-minus/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/check-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/check/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/chevron-down/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/chevron-left/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/chevron-right/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/chevron-sign-down/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/chevron-sign-left/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/chevron-sign-right/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/chevron-sign-up/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/chevron-up/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/circle-arrow-down/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/circle-arrow-left/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/circle-arrow-right/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/circle-arrow-up/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/circle-blank/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/circle/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/cloud-download/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/cloud-upload/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/cloud/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/cny/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/code-fork/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/code/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/coffee/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/cog/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/cogs/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/collapse-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/collapse-top/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/collapse/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/columns/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/comment-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/comment/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/comments-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/comments/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/compass/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/copy/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/credit-card/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/crop/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/css3/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/cut/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/dashboard/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/desktop/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/double-angle-down/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/double-angle-left/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/double-angle-right/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/double-angle-up/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/download-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/download/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/dribbble/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/dropbox/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/edit-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/edit/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/eject/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/ellipsis-horizontal/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/ellipsis-vertical/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/envelope-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/envelope/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/eraser/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/eur/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/exchange/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/exclamation-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/exclamation/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/expand-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/expand/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/external-link-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/external-link/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/eye-close/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/eye-open/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/facebook-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/facebook/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/facetime-video/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/fast-backward/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/fast-forward/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/female/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/fighter-jet/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/file-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/file-text-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/file-text/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/file/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/film/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/filter/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/fire-extinguisher/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/fire/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/flag-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/flag-checkered/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/flag/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/flickr/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/folder-close-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/folder-close/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/folder-open-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/folder-open/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/font/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/food/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/forward/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/foursquare/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/frown/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/fullscreen/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/gamepad/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/gbp/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/gift/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/github-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/github-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/github/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/gittip/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/glass/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/globe/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/google-plus-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/google-plus/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/group/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/h-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/hand-down/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/hand-left/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/hand-right/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/hand-up/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/hdd/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/headphones/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/heart-empty/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/heart/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/home/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/hospital/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/html5/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/inbox/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/indent-left/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/indent-right/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/info-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/info/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/inr/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/instagram/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/italic/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/jpy/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/key/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/keyboard/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/krw/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/laptop/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/leaf/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/legal/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/lemon/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/level-down/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/level-up/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/lightbulb/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/link/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/linkedin-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/linkedin/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/linux/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/list-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/list-ol/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/list-ul/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/list/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/location-arrow/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/lock/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/long-arrow-down/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/long-arrow-left/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/long-arrow-right/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/long-arrow-up/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/magic/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/magnet/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/mail-reply-all/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/male/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/map-marker/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/maxcdn/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/medkit/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/meh/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/microphone-off/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/microphone/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/minus-sign-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/minus-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/minus/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/mobile-phone/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/money/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/moon/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/move/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/music/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/off/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/ok-circle/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/ok-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/ok/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/paper-clip/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/paste/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/pause/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/pencil/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/phone-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/phone/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/picture/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/pinterest-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/pinterest/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/plane/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/play-circle/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/play-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/play/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/plus-sign-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/plus-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/plus/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/print/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/pushpin/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/puzzle-piece/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/qrcode/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/question-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/question/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/quote-left/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/quote-right/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/random/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/refresh/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/remove-circle/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/remove-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/remove/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/renren/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/reorder/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/repeat/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/reply-all/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/reply/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/resize-full/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/resize-horizontal/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/resize-small/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/resize-vertical/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/retweet/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/road/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/rocket/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/rss-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/rss/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/save/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/screenshot/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/search/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/share-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/share-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/share/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/shield/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/shopping-cart/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/sign-blank/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/signal/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/signin/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/signout/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/sitemap/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/skype/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/smile/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/sort-by-alphabet-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/sort-by-alphabet/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/sort-by-attributes-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/sort-by-attributes/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/sort-by-order-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/sort-by-order/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/sort-down/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/sort-up/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/sort/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/spinner/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/stackexchange/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/star-empty/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/star-half-empty/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/star-half/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/star/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/step-backward/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/step-forward/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/stethoscope/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/stop/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/strikethrough/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/subscript/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/suitcase/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/sun/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/superscript/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/table/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/tablet/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/tag/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/tags/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/tasks/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/terminal/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/text-height/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/text-width/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/th-large/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/th-list/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/th/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/thumbs-down-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/thumbs-down/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/thumbs-up-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/thumbs-up/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/ticket/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/time/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/tint/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/trash/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/trello/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/trophy/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/truck/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/tumblr-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/tumblr/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/twitter-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/twitter/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/umbrella/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/underline/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/undo/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/unlink/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/unlock-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/unlock/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/upload-alt/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/upload/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/usd/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/user-md/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/user/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/vk/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/volume-down/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/volume-off/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/volume-up/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/warning-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/weibo/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/windows/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/wrench/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/xing-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/xing/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/youtube-play/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/youtube-sign/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/youtube/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/zoom-in/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icon/zoom-out/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icons.yml delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/icons/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/license/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/test/index.html delete mode 100644 src/pretix/static/fontawesome/src/3.2.1/whats-new/index.html delete mode 100644 src/pretix/static/fontawesome/src/CNAME delete mode 100644 src/pretix/static/fontawesome/src/Makefile delete mode 100644 src/pretix/static/fontawesome/src/README.md-nobuild delete mode 100644 src/pretix/static/fontawesome/src/_includes/ads/fusion.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/brand-adblock-warning.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/brand-license.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/code/core.less delete mode 100644 src/pretix/static/fontawesome/src/_includes/code/core.scss delete mode 100644 src/pretix/static/fontawesome/src/_includes/code/license.css delete mode 100644 src/pretix/static/fontawesome/src/_includes/community/getting-support.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/community/project-milestones.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/community/reporting-bugs.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/community/requesting-new-icons.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/community/submitting-pull-requests.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/examples/animated.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/examples/basic.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/examples/bootstrap.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/examples/bordered-pulled.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/examples/custom.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/examples/fixed-width.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/examples/larger.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/examples/list.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/examples/rotated-flipped.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/examples/stacked.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/footer.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/icons/brand.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/icons/chart.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/icons/currency.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/icons/directional.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/icons/file-type.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/icons/filter.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/icons/form-control.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/icons/gender.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/icons/medical.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/icons/new.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/icons/payment.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/icons/spinner.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/icons/text-editor.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/icons/transportation.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/icons/video-player.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/icons/web-application.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/jumbotron-carousel.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/jumbotron.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/navbar.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/new-features.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/new-naming.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/new-upgrading.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/stripe-ad.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/stripe-social.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/tell-me-thanks.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/tests/rotated-flipped-inside-anchor.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/tests/rotated-flipped-inside-btn.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/tests/rotated-flipped.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/tests/stacked-inside-anchor.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/tests/stacked-with-text.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/tests/stacked.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/thanks-to.html delete mode 100644 src/pretix/static/fontawesome/src/_includes/why.html delete mode 100644 src/pretix/static/fontawesome/src/_layouts/base.html delete mode 100644 src/pretix/static/fontawesome/src/_layouts/icon.html delete mode 100644 src/pretix/static/fontawesome/src/_plugins/flatten_icon_filters.rb delete mode 100644 src/pretix/static/fontawesome/src/_plugins/icon_page_generator.rb delete mode 100644 src/pretix/static/fontawesome/src/_plugins/site.rb delete mode 100644 src/pretix/static/fontawesome/src/assets/css/prettify.css delete mode 100644 src/pretix/static/fontawesome/src/assets/css/pygments.css delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/fonts/FontAwesome.otf delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/fonts/fontawesome-webfont.eot delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/fonts/fontawesome-webfont.svg delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/fonts/fontawesome-webfont.ttf delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/fonts/fontawesome-webfont.woff delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/fonts/fontawesome-webfont.woff2 delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/less/animated.less delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/less/bordered-pulled.less delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/less/core.less delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/less/fixed-width.less delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/less/font-awesome.less delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/less/icons.less delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/less/larger.less delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/less/list.less delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/less/mixins.less delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/less/path.less delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/less/rotated-flipped.less delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/less/stacked.less delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/less/variables.less delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/scss/_animated.scss delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/scss/_bordered-pulled.scss delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/scss/_core.scss delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/scss/_fixed-width.scss delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/scss/_icons.scss delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/scss/_larger.scss delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/scss/_list.scss delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/scss/_mixins.scss delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/scss/_path.scss delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/scss/_rotated-flipped.scss delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/scss/_stacked.scss delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/scss/_variables.scss delete mode 100644 src/pretix/static/fontawesome/src/assets/font-awesome/scss/font-awesome.scss delete mode 100644 src/pretix/static/fontawesome/src/assets/ico/favicon.ico delete mode 100644 src/pretix/static/fontawesome/src/assets/js/ZeroClipboard-1.1.7.min.js delete mode 100644 src/pretix/static/fontawesome/src/assets/js/ZeroClipboard-1.1.7.swf delete mode 100644 src/pretix/static/fontawesome/src/assets/js/backbone.min.js delete mode 100644 src/pretix/static/fontawesome/src/assets/js/bootstrap-2.3.1.min.js delete mode 100644 src/pretix/static/fontawesome/src/assets/js/bootstrap-3.0.2.min.js delete mode 100644 src/pretix/static/fontawesome/src/assets/js/bootstrap-3.1.1.min.js delete mode 100644 src/pretix/static/fontawesome/src/assets/js/html5shiv.js delete mode 100644 src/pretix/static/fontawesome/src/assets/js/jquery-1.10.2.js delete mode 100644 src/pretix/static/fontawesome/src/assets/js/jquery-1.10.2.min.js delete mode 100644 src/pretix/static/fontawesome/src/assets/js/jquery-1.10.2.min.map delete mode 100644 src/pretix/static/fontawesome/src/assets/js/jquery-1.7.1.min.js delete mode 100644 src/pretix/static/fontawesome/src/assets/js/prettify.min.js delete mode 100644 src/pretix/static/fontawesome/src/assets/js/respond.min.js delete mode 100644 src/pretix/static/fontawesome/src/assets/js/site.js delete mode 100644 src/pretix/static/fontawesome/src/assets/js/tabcomplete.min.js delete mode 100644 src/pretix/static/fontawesome/src/assets/js/underscore.min.js delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/.csscomb.json delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/.csslintrc delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/alerts.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/badges.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/bootstrap.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/breadcrumbs.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/button-groups.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/buttons.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/carousel.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/close.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/code.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/component-animations.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/dropdowns.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/forms.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/glyphicons.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/grid.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/input-groups.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/jumbotron.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/labels.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/list-group.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/media.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/alerts.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/background-variant.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/border-radius.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/buttons.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/center-block.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/clearfix.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/forms.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/gradients.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/grid-framework.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/grid.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/hide-text.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/image.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/labels.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/list-group.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/nav-divider.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/nav-vertical-align.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/opacity.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/pagination.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/panels.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/progress-bar.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/reset-filter.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/resize.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/responsive-visibility.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/size.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/tab-focus.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/table-row.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/text-emphasis.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/text-overflow.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/mixins/vendor-prefixes.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/modals.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/navbar.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/navs.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/normalize.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/pager.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/pagination.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/panels.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/popovers.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/print.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/progress-bars.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/responsive-embed.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/responsive-utilities.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/scaffolding.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/tables.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/theme.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/thumbnails.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/tooltip.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/type.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/utilities.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/variables.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/bootstrap-3.2.0/wells.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/bootstrap/buttons.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/bootstrap/jumbotron.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/bootstrap/navbar.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/bootstrap/type.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/bootstrap/variables.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/bootstrap/wells.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/bsap-ad.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/example-rating.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/feature-list.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/fontawesome-icon-list.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/fonticons.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/footer.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/fusion-ad.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/jumbotron-carousel.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/layout.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/lazy.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/responsive/screen-lg.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/responsive/screen-md.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/responsive/screen-sm.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/responsive/screen-xs.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/search.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/social-buttons.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/stripe-ad.less delete mode 100644 src/pretix/static/fontawesome/src/assets/less/site/textured-bg.less delete mode 100644 src/pretix/static/fontawesome/src/cheatsheet.html delete mode 100644 src/pretix/static/fontawesome/src/community.html delete mode 100644 src/pretix/static/fontawesome/src/design.html delete mode 100644 src/pretix/static/fontawesome/src/examples.html delete mode 100644 src/pretix/static/fontawesome/src/get-started.html delete mode 100644 src/pretix/static/fontawesome/src/glyphicons-test.html delete mode 100644 src/pretix/static/fontawesome/src/icons.html delete mode 100644 src/pretix/static/fontawesome/src/icons.yml delete mode 100644 src/pretix/static/fontawesome/src/index.html delete mode 100644 src/pretix/static/fontawesome/src/license.html delete mode 100644 src/pretix/static/fontawesome/src/test-2.3.2.html delete mode 100644 src/pretix/static/fontawesome/src/test.html delete mode 100644 src/pretix/static/fontawesome/src/whats-new.html diff --git a/.gitmodules b/.gitmodules index 4ff25ca140..e69de29bb2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +0,0 @@ -[submodule "src/static/fontawesome"] - path = src/static/fontawesome - url = https://github.com/FortAwesome/Font-Awesome.git -[submodule "src/static/bootstrap"] - path = src/static/bootstrap - url = https://github.com/twbs/bootstrap.git diff --git a/src/pretix/MANIFEST.in b/src/pretix/MANIFEST.in deleted file mode 100644 index 822e5cb2b0..0000000000 --- a/src/pretix/MANIFEST.in +++ /dev/null @@ -1,13 +0,0 @@ -include LICENSE -include README.rst -recursive-include base/static * -recursive-include base/templates * -recursive-include control/static * -recursive-include control/templates * -recursive-include presale/static * -recursive-include presale/templates * -recursive-include plugins/banktransfer/templates * -recursive-include plugins/paypal/templates * -recursive-include plugins/stripe/templates * -recursive-include plugins/stripe/static * - diff --git a/src/pretix/static/bootstrap/.editorconfig b/src/pretix/static/bootstrap/.editorconfig deleted file mode 100644 index ff0ad0433c..0000000000 --- a/src/pretix/static/bootstrap/.editorconfig +++ /dev/null @@ -1,14 +0,0 @@ -# editorconfig.org - -root = true - -[*] -charset = utf-8 -end_of_line = lf -indent_size = 2 -indent_style = space -insert_final_newline = true -trim_trailing_whitespace = true - -[*.py] -indent_size = 4 diff --git a/src/pretix/static/bootstrap/.gitattributes b/src/pretix/static/bootstrap/.gitattributes deleted file mode 100644 index f5eaf93b5a..0000000000 --- a/src/pretix/static/bootstrap/.gitattributes +++ /dev/null @@ -1,9 +0,0 @@ -# Enforce Unix newlines -*.css text eol=lf -*.html text eol=lf -*.js text eol=lf -*.json text eol=lf -*.less text eol=lf -*.md text eol=lf -*.svg text eol=lf -*.yml text eol=lf diff --git a/src/pretix/static/bootstrap/.gitignore b/src/pretix/static/bootstrap/.gitignore deleted file mode 100644 index 84d48d86e2..0000000000 --- a/src/pretix/static/bootstrap/.gitignore +++ /dev/null @@ -1,42 +0,0 @@ -# Ignore docs files -_gh_pages -_site -.ruby-version - -# Numerous always-ignore extensions -*.diff -*.err -*.log -*.orig -*.rej -*.swo -*.swp -*.vi -*.zip -*~ - -# OS or Editor folders -._* -.cache -.DS_Store -.idea -.project -.settings -.tmproj -*.esproj -*.sublime-project -*.sublime-workspace -nbproject -Thumbs.db - -# Komodo -.komodotools -*.komodoproject - -# grunt-html-validation -validation-report.json -validation-status.json - -# Folders to ignore -bower_components -node_modules diff --git a/src/pretix/static/bootstrap/.travis.yml b/src/pretix/static/bootstrap/.travis.yml deleted file mode 100644 index 99e274d3a2..0000000000 --- a/src/pretix/static/bootstrap/.travis.yml +++ /dev/null @@ -1,45 +0,0 @@ -language: node_js -git: - depth: 10 -node_js: - - "0.10" -before_install: - - travis_retry sudo pip install -r test-infra/requirements.txt - - rvm use 1.9.3 --fuzzy - - export GEMDIR=$(rvm gemdir) - - if [ "$TWBS_TEST" = validate-html ]; then echo "ruby=$(basename $GEMDIR) jekyll=$JEKYLL_VERSION rouge=$ROUGE_VERSION" > pseudo_Gemfile.lock; fi - - "export TRAVIS_COMMIT_MSG=\"$(git log --format=%B --no-merges -n 1)\"" - - echo "$TRAVIS_COMMIT_MSG" | grep '\[skip validator\]'; export TWBS_DO_VALIDATOR=$?; true - - echo "$TRAVIS_COMMIT_MSG" | grep '\[skip sauce\]'; export TWBS_DO_SAUCE=$?; true - - if [ "$TRAVIS_REPO_SLUG" = twbs-savage/bootstrap ]; then export TWBS_DO_VALIDATOR=0; fi -install: - - npm install -g grunt-cli - - ./test-infra/s3_cache.py download npm-modules - - if [ "$TWBS_TEST" = validate-html ] && [ $TWBS_DO_VALIDATOR -ne 0 ]; then ./test-infra/s3_cache.py download rubygems; fi -after_script: - - if [ "$TRAVIS_REPO_SLUG" != twbs-savage/bootstrap ] && [ "$TWBS_TEST" = core ]; then ./test-infra/s3_cache.py upload npm-modules; fi - - if [ "$TRAVIS_REPO_SLUG" != twbs-savage/bootstrap ] && [ "$TWBS_TEST" = validate-html ] && [ $TWBS_DO_VALIDATOR -ne 0 ]; then ./test-infra/s3_cache.py upload rubygems; fi -env: - global: - - JEKYLL_VERSION="2.5.1" - - ROUGE_VERSION="1.7.2" - - SAUCE_USERNAME="bootstrap" - - secure: "pJkBwnuae9dKU5tEcCqccfS1QQw7/meEcfz63fM7ba7QJNjoA6BaXj08L5Z3Vb5vBmVPwBawxo5Hp0jC0r/Z/O0hGnAmz/Cz09L+cy7dSAZ9x4hvZePSja/UAusaB5ogMoO8l2b773MzgQeSmrLbExr9BWLeqEfjC2hFgdgHLaQ=" - - secure: "gqjqISbxBJK6byFbsmr1AyP1qoWH+rap06A2gI7v72+Tn2PU2nYkIMUkCvhZw6K889jv+LhQ/ybcBxDOXHpNCExCnSgB4dcnmYp+9oeNZb37jSP0rQ+Ib4OTLjzc3/FawE/fUq5kukZTC7porzc/k0qJNLAZRx3YLALmK1GIdUY=" - - secure: "Gghh/e3Gsbj1+4RR9Lh2aR/xJl35HWiHqlPIeSUqE9D7uDCVTAwNce/dGL3Ew7uJPfJ6Pgr70wD3zgu3stw0Zmzayax0hiDtGwcQCxVIER08wqGANK9C2Q7PYJkNTNtiTo6ehKWbdV4Z+/U+TEYyQfpQTDbAFYk/vVpsdjp0Lmc=" - - secure: "RTbRdx4G/2OTLfrZtP1VbRljxEmd6A1F3GqXboeQTldsnAlwpsES65es5CE3ub/rmixLApOY9ot7OPmNixFgC2Y8xOsV7lNCC62QVpmqQEDyGFFQKb3yO6/dmwQxdsCqGfzf9Np6Wh5V22QFvr50ZLKLd7Uhd9oXMDIk/z1MJ3o=" - - secure: "RKWpS+P20b4tG9tawzCMJSmQftoonmC7tJzyGYiHuEM1TcpHALLBcnzKlr/+DiPTfzDJWY4kS8pxfhK4uXOe8OHnhpMNub7LEWtFPePlZIervOJcsOydaQocTKqVVWD6OUubMeQmQ+tZmvmpjoJ1uPPEbFs9ciF7+dv3U5tLUZ0=" - - secure: "XswSKBY0HJ/aO9VOBeWlvGpqSFF/DsJmNKz7o5RkJMJX340qe44J929uUNwwOwlv9YrgptzC2W6l8bpmZQV+p6IYs99SoSA8CCaUfIJaqeU9x/UiT5vIHgqaNax+vFJwvzHLpF5v/ggFqFEKCd54gCDasePLTztHeC4oL104iaQ=" - - secure: "Dv1HX5dzyTh8gA2YsLI+yWEgh9lnGKPpRDDEYYvm42fjBFziUYfcpvA9g8GXQuU9srY3mhfsZkCDHN0x5n1gliOai5TSjmd5Hh+9UyhvNWE+D8HoUpcFXWoQXvy/if2r25m+ZWi3cqgXkkBOcal3W1ePMtU4ln18NcWyIZ0tEFo=" - - secure: "PabpUdG2dE40hHUkMCdxk1e9Ak3BOo0h7Y5/uekosLKOz5N60Xmn/ooyrSkvicLthXO4cfONFhO3/xSVRKQOxlUw4on5i0VuNK+QSqxJk0IDaRSZnTCcC8J7083K0YL+FvMdGQwcYwMY9LiwS8aS014IRkSQjsa+mjo3owP+dOU=" - - secure: "G4/f4PVyVi9o6UbZMqw9YFmDu7cHqe9iymiXYd1RcnPXwhWAePX12m0PWMhUj5itJ180PTEddVip8PNOgBdqyrDxEPKkcgAW2EElVAPIKJXVfvDW64UjQ0H7NS7XvF7iLQUJp/XfmR7NJ7tT393AQdh8SGmuQpJhgYbwIWbES/k=" - matrix: - - TWBS_TEST=core - - TWBS_TEST=validate-html - - TWBS_TEST=sauce-js-unit -matrix: - fast_finish: true -notifications: - slack: heybb:iz4wwosL0N0EdaX1gvgkU0NH - webhooks: - - http://savage.twbsapps.com/savage/travis diff --git a/src/pretix/static/bootstrap/CNAME b/src/pretix/static/bootstrap/CNAME deleted file mode 100644 index 52c853392c..0000000000 --- a/src/pretix/static/bootstrap/CNAME +++ /dev/null @@ -1 +0,0 @@ -getbootstrap.com diff --git a/src/pretix/static/bootstrap/CONTRIBUTING.md b/src/pretix/static/bootstrap/CONTRIBUTING.md deleted file mode 100644 index 7b14660c6d..0000000000 --- a/src/pretix/static/bootstrap/CONTRIBUTING.md +++ /dev/null @@ -1,249 +0,0 @@ -# Contributing to Bootstrap - -Looking to contribute something to Bootstrap? **Here's how you can help.** - -Please take a moment to review this document in order to make the contribution -process easy and effective for everyone involved. - -Following these guidelines helps to communicate that you respect the time of -the developers managing and developing this open source project. In return, -they should reciprocate that respect in addressing your issue or assessing -patches and features. - - -## Using the issue tracker - -The [issue tracker](https://github.com/twbs/bootstrap/issues) is -the preferred channel for [bug reports](#bug-reports), [features requests](#feature-requests) -and [submitting pull requests](#pull-requests), but please respect the following -restrictions: - -* Please **do not** use the issue tracker for personal support requests. Stack - Overflow ([`twitter-bootstrap-3`](http://stackoverflow.com/questions/tagged/twitter-bootstrap-3) tag) or [IRC](README.md#community) are better places to get help. - -* Please **do not** derail or troll issues. Keep the discussion on topic and - respect the opinions of others. - -* Please **do not** open issues or pull requests regarding the code in - [`Normalize`](https://github.com/necolas/normalize.css) (open them in - their respective repositories). - - -## Issues and labels - -Our bug tracker utilizes several labels to help organize and identify issues. Here's what they represent and how we use them: - -- `browser bug` - Issues that are reported to us, but actually are the result of a browser-specific bug. These are diagnosed with reduced test cases and result in a issue opened on that browser's own bug tracker. -- `confirmed` - Issues that have been confirmed with a reduced test case and identify a bug in Bootstrap. -- `css` - Issues stemming from our compiled CSS or source Less files. -- `customizer` - Issues with our web-based Customizer. -- `docs` - Issues for improving or updating our documentation. -- `examples` - Issues involving the example templates included in our docs. -- `feature` - Issues asking for a new feature to be added, or an existing one to be extended or modified. New features require a minor version bump (e.g., `v3.0.0` to `v3.1.0`). -- `grunt` - Issues with our included JavaScript-based Gruntfile, which is used to run all our tests, concatenate and compile source files, and more. -- `help wanted` - Issues we need or would love help from the community to resolve. -- `js` - Issues stemming from our compiled or source JavaScript files. -- `meta` - Issues with the project itself or our GitHub repository. - -For a complete look at our labels, see the [project labels page](https://github.com/twbs/bootstrap/labels). - - -## Bug reports - -A bug is a _demonstrable problem_ that is caused by the code in the repository. -Good bug reports are extremely helpful, so thanks! - -Guidelines for bug reports: - -0. **Validate and lint your code** — [validate your HTML](http://html5.validator.nu) - and [lint your HTML](https://github.com/twbs/bootlint) to ensure your - problem isn't caused by a simple error in your own code. - -1. **Use the GitHub issue search** — check if the issue has already been - reported. - -2. **Check if the issue has been fixed** — try to reproduce it using the - latest `master` or development branch in the repository. - -3. **Isolate the problem** — ideally create a [reduced test - case](http://css-tricks.com/6263-reduced-test-cases/) and a live example. - [This JS Bin](http://jsbin.com/lefey/1/edit?html,output) is a helpful template. - - -A good bug report shouldn't leave others needing to chase you up for more -information. Please try to be as detailed as possible in your report. What is -your environment? What steps will reproduce the issue? What browser(s) and OS -experience the problem? Do other browsers show the bug differently? What -would you expect to be the outcome? All these details will help people to fix -any potential bugs. - -Example: - -> Short and descriptive example bug report title -> -> A summary of the issue and the browser/OS environment in which it occurs. If -> suitable, include the steps required to reproduce the bug. -> -> 1. This is the first step -> 2. This is the second step -> 3. Further steps, etc. -> -> `` - a link to the reduced test case -> -> Any other information you want to share that is relevant to the issue being -> reported. This might include the lines of code that you have identified as -> causing the bug, and potential solutions (and your opinions on their -> merits). - -### Reporting upstream browser bugs - -Sometimes bugs reported to us are actually caused by bugs in the browser(s) themselves, not bugs in Bootstrap per se. -When feasible, we aim to report such upstream bugs to the relevant browser vendor(s), and then list them on our [Wall of Browser Bugs](http://getbootstrap.com/browser-bugs/) and [document them in MDN](https://developer.mozilla.org/en-US/docs/Web). - -| Vendor(s) | Browser(s) | Rendering engine | Bug reporting website(s) | Notes | -| ------------- | ---------------------------- | ---------------- | ------------------------------------------------------------------------------------- | -------------------------------------------------------- | -| Mozilla | Firefox | Gecko | https://bugzilla.mozilla.org/enter_bug.cgi | "Core" is normally the right product option to choose. | -| Apple | Safari | WebKit | https://bugs.webkit.org/enter_bug.cgi?product=WebKit
https://bugreport.apple.com | In Apple's bug reporter, choose "Safari" as the product. | -| Google, Opera | Chrome, Chromium, Opera v15+ | Blink | https://code.google.com/p/chromium/issues/list | Click the "New issue" button. | -| Microsoft | Internet Explorer | Trident | https://connect.microsoft.com/IE/feedback/LoadSubmitFeedbackForm | | - -### Issues bots - -[@twbs-lmvtfy](https://github.com/twbs-lmvtfy) is a Bootstrap bot that hangs out in our GitHub issue tracker and automatically checks for HTML validation errors in live examples (e.g. jsFiddles, JS Bins, Bootplys, Plunks, CodePens, etc.) posted in issue comments. If it finds any errors, it will post a follow-up comment on the issue and point out the errors. If this happens with an example you've posted, please fix the errors and post an updated live example. If you opened a bug report, please check whether the bug still occurs with your revised, valid live example. If the bug no longer occurs, it was probably due to your invalid HTML rather than something in Bootstrap and we'd appreciate it if you could close out the GitHub issue. - - -## Feature requests - -Feature requests are welcome. But take a moment to find out whether your idea -fits with the scope and aims of the project. It's up to *you* to make a strong -case to convince the project's developers of the merits of this feature. Please -provide as much detail and context as possible. - - -## Pull requests - -Good pull requests—patches, improvements, new features—are a fantastic -help. They should remain focused in scope and avoid containing unrelated -commits. - -**Please ask first** before embarking on any significant pull request (e.g. -implementing features, refactoring code, porting to a different language), -otherwise you risk spending a lot of time working on something that the -project's developers might not want to merge into the project. - -Please adhere to the [coding guidelines](#code-guidelines) used throughout the -project (indentation, accurate comments, etc.) and any other requirements -(such as test coverage). - -**Do not edit `bootstrap.css`, `bootstrap-theme.css`, or `bootstrap.js` -directly!** Those files are automatically generated. You should edit the -source files in [`/bootstrap/less/`](https://github.com/twbs/bootstrap/tree/master/less) -and/or [`/bootstrap/js/`](https://github.com/twbs/bootstrap/tree/master/js) instead. - -Similarly, when contributing to Bootstrap's documentation, you should edit the -documentation source files in -[the `/bootstrap/docs/` directory of the `master` branch](https://github.com/twbs/bootstrap/tree/master/docs). -**Do not edit the `gh-pages` branch.** That branch is generated from the -documentation source files and is managed separately by the Bootstrap Core Team. - -Adhering to the following process is the best way to get your work -included in the project: - -1. [Fork](http://help.github.com/fork-a-repo/) the project, clone your fork, - and configure the remotes: - - ```bash - # Clone your fork of the repo into the current directory - git clone https://github.com//bootstrap.git - # Navigate to the newly cloned directory - cd bootstrap - # Assign the original repo to a remote called "upstream" - git remote add upstream https://github.com/twbs/bootstrap.git - ``` - -2. If you cloned a while ago, get the latest changes from upstream: - - ```bash - git checkout master - git pull upstream master - ``` - -3. Create a new topic branch (off the main project development branch) to - contain your feature, change, or fix: - - ```bash - git checkout -b - ``` - -4. Commit your changes in logical chunks. Please adhere to these [git commit - message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) - or your code is unlikely be merged into the main project. Use Git's - [interactive rebase](https://help.github.com/articles/interactive-rebase) - feature to tidy up your commits before making them public. - -5. Locally merge (or rebase) the upstream development branch into your topic branch: - - ```bash - git pull [--rebase] upstream master - ``` - -6. Push your topic branch up to your fork: - - ```bash - git push origin - ``` - -7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) - with a clear title and description against the `master` branch. - -**IMPORTANT**: By submitting a patch, you agree to allow the project owners to -license your work under the terms of the [MIT License](LICENSE) (if it -includes code changes) and under the terms of the -[Creative Commons Attribution 3.0 Unported License](docs/LICENSE) -(if it includes documentation changes). - -### Pull request bots - -[@twbs-rorschach](https://github.com/twbs-rorschach) is a Bootstrap bot that hangs out in our GitHub issue tracker and automatically checks all pull requests for a few simple common mistakes. It's possible that Rorschach might leave a comment on your pull request and then close it. If that happens, simply fix the problem(s) mentioned in the comment (there should be link(s) in the comment explaining the problem(s) in detail) and then either: - -* Push the revised version to your pull request's branch and post a comment on the pull request saying that you've fixed the problem(s). One of the Bootstrap Core Team members will then come along and reopen your pull request. -* Or you can just open a new pull request for your revised version. - -[@twbs-savage](https://github.com/twbs-savage) is a Bootstrap bot that automatically runs cross-browser tests (via [Sauce](https://saucelabs.com) and Travis CI) on JavaScript pull requests. Savage will leave a comment on pull requests stating whether cross-browser JS tests passed or failed, with a link to the full Travis build details. If your pull request fails, check the Travis log to see which browser + OS combinations failed. Each browser test in the Travis log includes a link to a Sauce page with details about the test. On those details pages, you can watch a screencast of the test run to see exactly which unit tests failed. - - -## Code guidelines - -### HTML - -[Adhere to the Code Guide.](http://codeguide.co/#html) - -- Use tags and elements appropriate for an HTML5 doctype (e.g., self-closing tags). -- Use CDNs and HTTPS for third-party JS when possible. We don't use protocol-relative URLs in this case because they break when viewing the page locally via `file://`. -- Use [WAI-ARIA](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) attributes in documentation examples to promote accessibility. - -### CSS - -[Adhere to the Code Guide.](http://codeguide.co/#css) - -- When feasible, default color palettes should comply with [WCAG color contrast guidelines](http://www.w3.org/TR/WCAG20/#visual-audio-contrast). -- Except in rare cases, don't remove default `:focus` styles (via e.g. `outline: none;`) without providing alternative styles. See [this A11Y Project post](http://a11yproject.com/posts/never-remove-css-outlines/) for more details. - -### JS - -- No semicolons (in client-side JS) -- 2 spaces (no tabs) -- strict mode -- "Attractive" - -### Checking coding style - -Run `grunt test` before committing to ensure your changes follow our coding standards. - - -## License - -By contributing your code, you agree to license your contribution under the [MIT License](LICENSE). -By contributing to the documentation, you agree to license your contribution under the [Creative Commons Attribution 3.0 Unported License](docs/LICENSE). - -Prior to v3.1.0, Bootstrap's code was released under the Apache License v2.0. diff --git a/src/pretix/static/bootstrap/Gruntfile.js b/src/pretix/static/bootstrap/Gruntfile.js deleted file mode 100644 index de945ab3cf..0000000000 --- a/src/pretix/static/bootstrap/Gruntfile.js +++ /dev/null @@ -1,509 +0,0 @@ -/*! - * Bootstrap's Gruntfile - * http://getbootstrap.com - * Copyright 2013-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -module.exports = function (grunt) { - 'use strict'; - - // Force use of Unix newlines - grunt.util.linefeed = '\n'; - - RegExp.quote = function (string) { - return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&'); - }; - - var fs = require('fs'); - var path = require('path'); - var npmShrinkwrap = require('npm-shrinkwrap'); - var generateGlyphiconsData = require('./grunt/bs-glyphicons-data-generator.js'); - var BsLessdocParser = require('./grunt/bs-lessdoc-parser.js'); - var getLessVarsData = function () { - var filePath = path.join(__dirname, 'less/variables.less'); - var fileContent = fs.readFileSync(filePath, { encoding: 'utf8' }); - var parser = new BsLessdocParser(fileContent); - return { sections: parser.parseFile() }; - }; - var generateRawFiles = require('./grunt/bs-raw-files-generator.js'); - var generateCommonJSModule = require('./grunt/bs-commonjs-generator.js'); - var configBridge = grunt.file.readJSON('./grunt/configBridge.json', { encoding: 'utf8' }); - - Object.keys(configBridge.paths).forEach(function (key) { - configBridge.paths[key].forEach(function (val, i, arr) { - arr[i] = path.join('./docs/assets', val); - }); - }); - - // Project configuration. - grunt.initConfig({ - - // Metadata. - pkg: grunt.file.readJSON('package.json'), - banner: '/*!\n' + - ' * Bootstrap v<%= pkg.version %> (<%= pkg.homepage %>)\n' + - ' * Copyright 2011-<%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' + - ' * Licensed under <%= pkg.license.type %> (<%= pkg.license.url %>)\n' + - ' */\n', - jqueryCheck: configBridge.config.jqueryCheck.join('\n'), - jqueryVersionCheck: configBridge.config.jqueryVersionCheck.join('\n'), - - // Task configuration. - clean: { - dist: 'dist', - docs: 'docs/dist' - }, - - jshint: { - options: { - jshintrc: 'js/.jshintrc' - }, - grunt: { - options: { - jshintrc: 'grunt/.jshintrc' - }, - src: ['Gruntfile.js', 'grunt/*.js'] - }, - core: { - src: 'js/*.js' - }, - test: { - options: { - jshintrc: 'js/tests/unit/.jshintrc' - }, - src: 'js/tests/unit/*.js' - }, - assets: { - src: ['docs/assets/js/src/*.js', 'docs/assets/js/*.js', '!docs/assets/js/*.min.js'] - } - }, - - jscs: { - options: { - config: 'js/.jscsrc' - }, - grunt: { - src: '<%= jshint.grunt.src %>' - }, - core: { - src: '<%= jshint.core.src %>' - }, - test: { - src: '<%= jshint.test.src %>' - }, - assets: { - options: { - requireCamelCaseOrUpperCaseIdentifiers: null - }, - src: '<%= jshint.assets.src %>' - } - }, - - concat: { - options: { - banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>', - stripBanners: false - }, - bootstrap: { - src: [ - 'js/transition.js', - 'js/alert.js', - 'js/button.js', - 'js/carousel.js', - 'js/collapse.js', - 'js/dropdown.js', - 'js/modal.js', - 'js/tooltip.js', - 'js/popover.js', - 'js/scrollspy.js', - 'js/tab.js', - 'js/affix.js' - ], - dest: 'dist/js/<%= pkg.name %>.js' - } - }, - - uglify: { - options: { - preserveComments: 'some' - }, - core: { - src: '<%= concat.bootstrap.dest %>', - dest: 'dist/js/<%= pkg.name %>.min.js' - }, - customize: { - src: configBridge.paths.customizerJs, - dest: 'docs/assets/js/customize.min.js' - }, - docsJs: { - src: configBridge.paths.docsJs, - dest: 'docs/assets/js/docs.min.js' - } - }, - - qunit: { - options: { - inject: 'js/tests/unit/phantom.js' - }, - files: 'js/tests/index.html' - }, - - less: { - compileCore: { - options: { - strictMath: true, - sourceMap: true, - outputSourceFiles: true, - sourceMapURL: '<%= pkg.name %>.css.map', - sourceMapFilename: 'dist/css/<%= pkg.name %>.css.map' - }, - src: 'less/bootstrap.less', - dest: 'dist/css/<%= pkg.name %>.css' - }, - compileTheme: { - options: { - strictMath: true, - sourceMap: true, - outputSourceFiles: true, - sourceMapURL: '<%= pkg.name %>-theme.css.map', - sourceMapFilename: 'dist/css/<%= pkg.name %>-theme.css.map' - }, - src: 'less/theme.less', - dest: 'dist/css/<%= pkg.name %>-theme.css' - } - }, - - autoprefixer: { - options: { - browsers: configBridge.config.autoprefixerBrowsers - }, - core: { - options: { - map: true - }, - src: 'dist/css/<%= pkg.name %>.css' - }, - theme: { - options: { - map: true - }, - src: 'dist/css/<%= pkg.name %>-theme.css' - }, - docs: { - src: 'docs/assets/css/src/docs.css' - }, - examples: { - expand: true, - cwd: 'docs/examples/', - src: ['**/*.css'], - dest: 'docs/examples/' - } - }, - - csslint: { - options: { - csslintrc: 'less/.csslintrc' - }, - dist: [ - 'dist/css/bootstrap.css', - 'dist/css/bootstrap-theme.css' - ], - examples: [ - 'docs/examples/**/*.css' - ], - docs: { - options: { - ids: false, - 'overqualified-elements': false - }, - src: 'docs/assets/css/src/docs.css' - } - }, - - cssmin: { - options: { - compatibility: 'ie8', - keepSpecialComments: '*', - advanced: false - }, - minifyCore: { - src: 'dist/css/<%= pkg.name %>.css', - dest: 'dist/css/<%= pkg.name %>.min.css' - }, - minifyTheme: { - src: 'dist/css/<%= pkg.name %>-theme.css', - dest: 'dist/css/<%= pkg.name %>-theme.min.css' - }, - docs: { - src: [ - 'docs/assets/css/src/docs.css', - 'docs/assets/css/src/pygments-manni.css' - ], - dest: 'docs/assets/css/docs.min.css' - } - }, - - usebanner: { - options: { - position: 'top', - banner: '<%= banner %>' - }, - files: { - src: 'dist/css/*.css' - } - }, - - csscomb: { - options: { - config: 'less/.csscomb.json' - }, - dist: { - expand: true, - cwd: 'dist/css/', - src: ['*.css', '!*.min.css'], - dest: 'dist/css/' - }, - examples: { - expand: true, - cwd: 'docs/examples/', - src: '**/*.css', - dest: 'docs/examples/' - }, - docs: { - src: 'docs/assets/css/src/docs.css', - dest: 'docs/assets/css/src/docs.css' - } - }, - - copy: { - fonts: { - src: 'fonts/*', - dest: 'dist/' - }, - docs: { - src: 'dist/*/*', - dest: 'docs/' - } - }, - - connect: { - server: { - options: { - port: 3000, - base: '.' - } - } - }, - - jekyll: { - options: { - config: '_config.yml' - }, - docs: {}, - github: { - options: { - raw: 'github: true' - } - } - }, - - jade: { - options: { - pretty: true, - data: getLessVarsData - }, - customizerVars: { - src: 'docs/_jade/customizer-variables.jade', - dest: 'docs/_includes/customizer-variables.html' - }, - customizerNav: { - src: 'docs/_jade/customizer-nav.jade', - dest: 'docs/_includes/nav/customize.html' - } - }, - - validation: { - options: { - charset: 'utf-8', - doctype: 'HTML5', - failHard: true, - reset: true, - relaxerror: [ - 'Element img is missing required attribute src.', - 'Attribute autocomplete not allowed on element input at this point.', - 'Attribute autocomplete not allowed on element button at this point.', - 'Bad value separator for attribute role on element li.' - ] - }, - files: { - src: '_gh_pages/**/*.html' - } - }, - - watch: { - src: { - files: '<%= jshint.core.src %>', - tasks: ['jshint:src', 'qunit', 'concat'] - }, - test: { - files: '<%= jshint.test.src %>', - tasks: ['jshint:test', 'qunit'] - }, - less: { - files: 'less/**/*.less', - tasks: 'less' - } - }, - - sed: { - versionNumber: { - pattern: (function () { - var old = grunt.option('oldver'); - return old ? RegExp.quote(old) : old; - })(), - replacement: grunt.option('newver'), - recursive: true - } - }, - - 'saucelabs-qunit': { - all: { - options: { - build: process.env.TRAVIS_JOB_ID, - throttled: 10, - maxRetries: 3, - maxPollRetries: 4, - urls: ['http://127.0.0.1:3000/js/tests/index.html'], - browsers: grunt.file.readYAML('grunt/sauce_browsers.yml') - } - } - }, - - exec: { - npmUpdate: { - command: 'npm update' - } - }, - - compress: { - main: { - options: { - archive: 'bootstrap-<%= pkg.version %>-dist.zip', - mode: 'zip', - level: 9, - pretty: true - }, - files: [ - { - expand: true, - cwd: 'dist/', - src: ['**'], - dest: 'bootstrap-<%= pkg.version %>-dist' - } - ] - } - } - - }); - - - // These plugins provide necessary tasks. - require('load-grunt-tasks')(grunt, { scope: 'devDependencies' }); - require('time-grunt')(grunt); - - // Docs HTML validation task - grunt.registerTask('validate-html', ['jekyll:docs', 'validation']); - - var runSubset = function (subset) { - return !process.env.TWBS_TEST || process.env.TWBS_TEST === subset; - }; - var isUndefOrNonZero = function (val) { - return val === undefined || val !== '0'; - }; - - // Test task. - var testSubtasks = []; - // Skip core tests if running a different subset of the test suite - if (runSubset('core') && - // Skip core tests if this is a Savage build - process.env.TRAVIS_REPO_SLUG !== 'twbs-savage/bootstrap') { - testSubtasks = testSubtasks.concat(['dist-css', 'dist-js', 'csslint:dist', 'test-js', 'docs']); - } - // Skip HTML validation if running a different subset of the test suite - if (runSubset('validate-html') && - // Skip HTML5 validator on Travis when [skip validator] is in the commit message - isUndefOrNonZero(process.env.TWBS_DO_VALIDATOR)) { - testSubtasks.push('validate-html'); - } - // Only run Sauce Labs tests if there's a Sauce access key - if (typeof process.env.SAUCE_ACCESS_KEY !== 'undefined' && - // Skip Sauce if running a different subset of the test suite - runSubset('sauce-js-unit') && - // Skip Sauce on Travis when [skip sauce] is in the commit message - isUndefOrNonZero(process.env.TWBS_DO_SAUCE)) { - testSubtasks.push('connect'); - testSubtasks.push('saucelabs-qunit'); - } - grunt.registerTask('test', testSubtasks); - grunt.registerTask('test-js', ['jshint:core', 'jshint:test', 'jshint:grunt', 'jscs:core', 'jscs:test', 'jscs:grunt', 'qunit']); - - // JS distribution task. - grunt.registerTask('dist-js', ['concat', 'uglify:core', 'commonjs']); - - // CSS distribution task. - grunt.registerTask('less-compile', ['less:compileCore', 'less:compileTheme']); - grunt.registerTask('dist-css', ['less-compile', 'autoprefixer:core', 'autoprefixer:theme', 'usebanner', 'csscomb:dist', 'cssmin:minifyCore', 'cssmin:minifyTheme']); - - // Full distribution task. - grunt.registerTask('dist', ['clean:dist', 'dist-css', 'copy:fonts', 'dist-js']); - - // Default task. - grunt.registerTask('default', ['clean:dist', 'copy:fonts', 'test']); - - // Version numbering task. - // grunt change-version-number --oldver=A.B.C --newver=X.Y.Z - // This can be overzealous, so its changes should always be manually reviewed! - grunt.registerTask('change-version-number', 'sed'); - - grunt.registerTask('build-glyphicons-data', function () { generateGlyphiconsData.call(this, grunt); }); - - // task for building customizer - grunt.registerTask('build-customizer', ['build-customizer-html', 'build-raw-files']); - grunt.registerTask('build-customizer-html', 'jade'); - grunt.registerTask('build-raw-files', 'Add scripts/less files to customizer.', function () { - var banner = grunt.template.process('<%= banner %>'); - generateRawFiles(grunt, banner); - }); - - grunt.registerTask('commonjs', 'Generate CommonJS entrypoint module in dist dir.', function () { - var srcFiles = grunt.config.get('concat.bootstrap.src'); - var destFilepath = 'dist/js/npm.js'; - generateCommonJSModule(grunt, srcFiles, destFilepath); - }); - - // Docs task. - grunt.registerTask('docs-css', ['autoprefixer:docs', 'autoprefixer:examples', 'csscomb:docs', 'csscomb:examples', 'cssmin:docs']); - grunt.registerTask('lint-docs-css', ['csslint:docs', 'csslint:examples']); - grunt.registerTask('docs-js', ['uglify:docsJs', 'uglify:customize']); - grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']); - grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-glyphicons-data', 'build-customizer']); - - grunt.registerTask('prep-release', ['jekyll:github', 'compress']); - - // Task for updating the cached npm packages used by the Travis build (which are controlled by test-infra/npm-shrinkwrap.json). - // This task should be run and the updated file should be committed whenever Bootstrap's dependencies change. - grunt.registerTask('update-shrinkwrap', ['exec:npmUpdate', '_update-shrinkwrap']); - grunt.registerTask('_update-shrinkwrap', function () { - var done = this.async(); - npmShrinkwrap({ dev: true, dirname: __dirname }, function (err) { - if (err) { - grunt.fail.warn(err); - } - var dest = 'test-infra/npm-shrinkwrap.json'; - fs.renameSync('npm-shrinkwrap.json', dest); - grunt.log.writeln('File ' + dest.cyan + ' updated.'); - done(); - }); - }); -}; diff --git a/src/pretix/static/bootstrap/_config.yml b/src/pretix/static/bootstrap/_config.yml deleted file mode 100644 index da84e67c30..0000000000 --- a/src/pretix/static/bootstrap/_config.yml +++ /dev/null @@ -1,32 +0,0 @@ -# Dependencies -markdown: kramdown -highlighter: rouge - -# Permalinks -permalink: pretty - -# Server -source: docs -destination: _gh_pages -host: 0.0.0.0 -port: 9001 -url: http://getbootstrap.com -encoding: UTF-8 - -# Custom vars -current_version: 3.3.2 -repo: https://github.com/twbs/bootstrap -sass_repo: https://github.com/twbs/bootstrap-sass - -download: - source: https://github.com/twbs/bootstrap/archive/v3.3.2.zip - dist: https://github.com/twbs/bootstrap/releases/download/v3.3.2/bootstrap-3.3.2-dist.zip - sass: https://github.com/twbs/bootstrap-sass/archive/v3.3.2.tar.gz - -blog: http://blog.getbootstrap.com -expo: http://expo.getbootstrap.com - -cdn: - css: https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css - css_theme: https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css - js: https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js diff --git a/src/pretix/static/bootstrap/bower.json b/src/pretix/static/bootstrap/bower.json deleted file mode 100644 index 1e88514126..0000000000 --- a/src/pretix/static/bootstrap/bower.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "bootstrap", - "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", - "version": "3.3.2", - "keywords": [ - "css", - "js", - "less", - "mobile-first", - "responsive", - "front-end", - "framework", - "web" - ], - "homepage": "http://getbootstrap.com", - "main": [ - "less/bootstrap.less", - "dist/css/bootstrap.css", - "dist/js/bootstrap.js", - "dist/fonts/glyphicons-halflings-regular.eot", - "dist/fonts/glyphicons-halflings-regular.svg", - "dist/fonts/glyphicons-halflings-regular.ttf", - "dist/fonts/glyphicons-halflings-regular.woff" - ], - "ignore": [ - "/.*", - "_config.yml", - "CNAME", - "composer.json", - "CONTRIBUTING.md", - "docs", - "js/tests", - "test-infra" - ], - "dependencies": { - "jquery": ">= 1.9.1" - } -} diff --git a/src/pretix/static/bootstrap/composer.json b/src/pretix/static/bootstrap/composer.json deleted file mode 100644 index b63a6d3204..0000000000 --- a/src/pretix/static/bootstrap/composer.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "twbs/bootstrap", - "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", - "keywords": [ - "css", - "js", - "less", - "mobile-first", - "responsive", - "front-end", - "framework", - "web" - ], - "homepage": "http://getbootstrap.com", - "authors": [ - { - "name": "Mark Otto", - "email": "markdotto@gmail.com" - }, - { - "name": "Jacob Thornton", - "email": "jacobthornton@gmail.com" - } - ], - "support": { - "issues": "https://github.com/twbs/bootstrap/issues" - }, - "license": "MIT", - "extra": { - "branch-alias": { - "dev-master": "3.3.x-dev" - } - }, - "replace": { - "twitter/bootstrap": "self.version" - } -} diff --git a/src/pretix/static/bootstrap/docs/LICENSE b/src/pretix/static/bootstrap/docs/LICENSE deleted file mode 100644 index 1d658d6d37..0000000000 --- a/src/pretix/static/bootstrap/docs/LICENSE +++ /dev/null @@ -1,319 +0,0 @@ -Creative Commons Legal Code - -Attribution 3.0 Unported - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR - DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE -COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY -COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS -AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE -TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY -BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS -CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND -CONDITIONS. - -1. Definitions - - a. "Adaptation" means a work based upon the Work, or upon the Work and - other pre-existing works, such as a translation, adaptation, - derivative work, arrangement of music or other alterations of a - literary or artistic work, or phonogram or performance and includes - cinematographic adaptations or any other form in which the Work may be - recast, transformed, or adapted including in any form recognizably - derived from the original, except that a work that constitutes a - Collection will not be considered an Adaptation for the purpose of - this License. For the avoidance of doubt, where the Work is a musical - work, performance or phonogram, the synchronization of the Work in - timed-relation with a moving image ("synching") will be considered an - Adaptation for the purpose of this License. - b. "Collection" means a collection of literary or artistic works, such as - encyclopedias and anthologies, or performances, phonograms or - broadcasts, or other works or subject matter other than works listed - in Section 1(f) below, which, by reason of the selection and - arrangement of their contents, constitute intellectual creations, in - which the Work is included in its entirety in unmodified form along - with one or more other contributions, each constituting separate and - independent works in themselves, which together are assembled into a - collective whole. A work that constitutes a Collection will not be - considered an Adaptation (as defined above) for the purposes of this - License. - c. "Distribute" means to make available to the public the original and - copies of the Work or Adaptation, as appropriate, through sale or - other transfer of ownership. - d. "Licensor" means the individual, individuals, entity or entities that - offer(s) the Work under the terms of this License. - e. "Original Author" means, in the case of a literary or artistic work, - the individual, individuals, entity or entities who created the Work - or if no individual or entity can be identified, the publisher; and in - addition (i) in the case of a performance the actors, singers, - musicians, dancers, and other persons who act, sing, deliver, declaim, - play in, interpret or otherwise perform literary or artistic works or - expressions of folklore; (ii) in the case of a phonogram the producer - being the person or legal entity who first fixes the sounds of a - performance or other sounds; and, (iii) in the case of broadcasts, the - organization that transmits the broadcast. - f. "Work" means the literary and/or artistic work offered under the terms - of this License including without limitation any production in the - literary, scientific and artistic domain, whatever may be the mode or - form of its expression including digital form, such as a book, - pamphlet and other writing; a lecture, address, sermon or other work - of the same nature; a dramatic or dramatico-musical work; a - choreographic work or entertainment in dumb show; a musical - composition with or without words; a cinematographic work to which are - assimilated works expressed by a process analogous to cinematography; - a work of drawing, painting, architecture, sculpture, engraving or - lithography; a photographic work to which are assimilated works - expressed by a process analogous to photography; a work of applied - art; an illustration, map, plan, sketch or three-dimensional work - relative to geography, topography, architecture or science; a - performance; a broadcast; a phonogram; a compilation of data to the - extent it is protected as a copyrightable work; or a work performed by - a variety or circus performer to the extent it is not otherwise - considered a literary or artistic work. - g. "You" means an individual or entity exercising rights under this - License who has not previously violated the terms of this License with - respect to the Work, or who has received express permission from the - Licensor to exercise rights under this License despite a previous - violation. - h. "Publicly Perform" means to perform public recitations of the Work and - to communicate to the public those public recitations, by any means or - process, including by wire or wireless means or public digital - performances; to make available to the public Works in such a way that - members of the public may access these Works from a place and at a - place individually chosen by them; to perform the Work to the public - by any means or process and the communication to the public of the - performances of the Work, including by public digital performance; to - broadcast and rebroadcast the Work by any means including signs, - sounds or images. - i. "Reproduce" means to make copies of the Work by any means including - without limitation by sound or visual recordings and the right of - fixation and reproducing fixations of the Work, including storage of a - protected performance or phonogram in digital form or other electronic - medium. - -2. Fair Dealing Rights. Nothing in this License is intended to reduce, -limit, or restrict any uses free from copyright or rights arising from -limitations or exceptions that are provided for in connection with the -copyright protection under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, -Licensor hereby grants You a worldwide, royalty-free, non-exclusive, -perpetual (for the duration of the applicable copyright) license to -exercise the rights in the Work as stated below: - - a. to Reproduce the Work, to incorporate the Work into one or more - Collections, and to Reproduce the Work as incorporated in the - Collections; - b. to create and Reproduce Adaptations provided that any such Adaptation, - including any translation in any medium, takes reasonable steps to - clearly label, demarcate or otherwise identify that changes were made - to the original Work. For example, a translation could be marked "The - original work was translated from English to Spanish," or a - modification could indicate "The original work has been modified."; - c. to Distribute and Publicly Perform the Work including as incorporated - in Collections; and, - d. to Distribute and Publicly Perform Adaptations. - e. For the avoidance of doubt: - - i. Non-waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme cannot be waived, the Licensor - reserves the exclusive right to collect such royalties for any - exercise by You of the rights granted under this License; - ii. Waivable Compulsory License Schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme can be waived, the Licensor waives the - exclusive right to collect such royalties for any exercise by You - of the rights granted under this License; and, - iii. Voluntary License Schemes. The Licensor waives the right to - collect royalties, whether individually or, in the event that the - Licensor is a member of a collecting society that administers - voluntary licensing schemes, via that society, from any exercise - by You of the rights granted under this License. - -The above rights may be exercised in all media and formats whether now -known or hereafter devised. The above rights include the right to make -such modifications as are technically necessary to exercise the rights in -other media and formats. Subject to Section 8(f), all rights not expressly -granted by Licensor are hereby reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made -subject to and limited by the following restrictions: - - a. You may Distribute or Publicly Perform the Work only under the terms - of this License. You must include a copy of, or the Uniform Resource - Identifier (URI) for, this License with every copy of the Work You - Distribute or Publicly Perform. You may not offer or impose any terms - on the Work that restrict the terms of this License or the ability of - the recipient of the Work to exercise the rights granted to that - recipient under the terms of the License. You may not sublicense the - Work. You must keep intact all notices that refer to this License and - to the disclaimer of warranties with every copy of the Work You - Distribute or Publicly Perform. When You Distribute or Publicly - Perform the Work, You may not impose any effective technological - measures on the Work that restrict the ability of a recipient of the - Work from You to exercise the rights granted to that recipient under - the terms of the License. This Section 4(a) applies to the Work as - incorporated in a Collection, but this does not require the Collection - apart from the Work itself to be made subject to the terms of this - License. If You create a Collection, upon notice from any Licensor You - must, to the extent practicable, remove from the Collection any credit - as required by Section 4(b), as requested. If You create an - Adaptation, upon notice from any Licensor You must, to the extent - practicable, remove from the Adaptation any credit as required by - Section 4(b), as requested. - b. If You Distribute, or Publicly Perform the Work or any Adaptations or - Collections, You must, unless a request has been made pursuant to - Section 4(a), keep intact all copyright notices for the Work and - provide, reasonable to the medium or means You are utilizing: (i) the - name of the Original Author (or pseudonym, if applicable) if supplied, - and/or if the Original Author and/or Licensor designate another party - or parties (e.g., a sponsor institute, publishing entity, journal) for - attribution ("Attribution Parties") in Licensor's copyright notice, - terms of service or by other reasonable means, the name of such party - or parties; (ii) the title of the Work if supplied; (iii) to the - extent reasonably practicable, the URI, if any, that Licensor - specifies to be associated with the Work, unless such URI does not - refer to the copyright notice or licensing information for the Work; - and (iv) , consistent with Section 3(b), in the case of an Adaptation, - a credit identifying the use of the Work in the Adaptation (e.g., - "French translation of the Work by Original Author," or "Screenplay - based on original Work by Original Author"). The credit required by - this Section 4 (b) may be implemented in any reasonable manner; - provided, however, that in the case of a Adaptation or Collection, at - a minimum such credit will appear, if a credit for all contributing - authors of the Adaptation or Collection appears, then as part of these - credits and in a manner at least as prominent as the credits for the - other contributing authors. For the avoidance of doubt, You may only - use the credit required by this Section for the purpose of attribution - in the manner set out above and, by exercising Your rights under this - License, You may not implicitly or explicitly assert or imply any - connection with, sponsorship or endorsement by the Original Author, - Licensor and/or Attribution Parties, as appropriate, of You or Your - use of the Work, without the separate, express prior written - permission of the Original Author, Licensor and/or Attribution - Parties. - c. Except as otherwise agreed in writing by the Licensor or as may be - otherwise permitted by applicable law, if You Reproduce, Distribute or - Publicly Perform the Work either by itself or as part of any - Adaptations or Collections, You must not distort, mutilate, modify or - take other derogatory action in relation to the Work which would be - prejudicial to the Original Author's honor or reputation. Licensor - agrees that in those jurisdictions (e.g. Japan), in which any exercise - of the right granted in Section 3(b) of this License (the right to - make Adaptations) would be deemed to be a distortion, mutilation, - modification or other derogatory action prejudicial to the Original - Author's honor and reputation, the Licensor will waive or not assert, - as appropriate, this Section, to the fullest extent permitted by the - applicable national law, to enable You to reasonably exercise Your - right under Section 3(b) of this License (right to make Adaptations) - but not otherwise. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR -OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY -KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, -INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, -FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF -LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, -WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION -OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE -LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR -ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES -ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS -BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - - a. This License and the rights granted hereunder will terminate - automatically upon any breach by You of the terms of this License. - Individuals or entities who have received Adaptations or Collections - from You under this License, however, will not have their licenses - terminated provided such individuals or entities remain in full - compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will - survive any termination of this License. - b. Subject to the above terms and conditions, the license granted here is - perpetual (for the duration of the applicable copyright in the Work). - Notwithstanding the above, Licensor reserves the right to release the - Work under different license terms or to stop distributing the Work at - any time; provided, however that any such election will not serve to - withdraw this License (or any other license that has been, or is - required to be, granted under the terms of this License), and this - License will continue in full force and effect unless terminated as - stated above. - -8. Miscellaneous - - a. Each time You Distribute or Publicly Perform the Work or a Collection, - the Licensor offers to the recipient a license to the Work on the same - terms and conditions as the license granted to You under this License. - b. Each time You Distribute or Publicly Perform an Adaptation, Licensor - offers to the recipient a license to the original Work on the same - terms and conditions as the license granted to You under this License. - c. If any provision of this License is invalid or unenforceable under - applicable law, it shall not affect the validity or enforceability of - the remainder of the terms of this License, and without further action - by the parties to this agreement, such provision shall be reformed to - the minimum extent necessary to make such provision valid and - enforceable. - d. No term or provision of this License shall be deemed waived and no - breach consented to unless such waiver or consent shall be in writing - and signed by the party to be charged with such waiver or consent. - e. This License constitutes the entire agreement between the parties with - respect to the Work licensed here. There are no understandings, - agreements or representations with respect to the Work not specified - here. Licensor shall not be bound by any additional provisions that - may appear in any communication from You. This License may not be - modified without the mutual written agreement of the Licensor and You. - f. The rights granted under, and the subject matter referenced, in this - License were drafted utilizing the terminology of the Berne Convention - for the Protection of Literary and Artistic Works (as amended on - September 28, 1979), the Rome Convention of 1961, the WIPO Copyright - Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 - and the Universal Copyright Convention (as revised on July 24, 1971). - These rights and subject matter take effect in the relevant - jurisdiction in which the License terms are sought to be enforced - according to the corresponding provisions of the implementation of - those treaty provisions in the applicable national law. If the - standard suite of rights granted under applicable copyright law - includes additional rights not granted under this License, such - additional rights are deemed to be included in the License; this - License is not intended to restrict the license of any rights under - applicable law. - - -Creative Commons Notice - - Creative Commons is not a party to this License, and makes no warranty - whatsoever in connection with the Work. Creative Commons will not be - liable to You or any party on any legal theory for any damages - whatsoever, including without limitation any general, special, - incidental or consequential damages arising in connection to this - license. Notwithstanding the foregoing two (2) sentences, if Creative - Commons has expressly identified itself as the Licensor hereunder, it - shall have all rights and obligations of Licensor. - - Except for the limited purpose of indicating to the public that the - Work is licensed under the CCPL, Creative Commons does not authorize - the use by either party of the trademark "Creative Commons" or any - related trademark or logo of Creative Commons without the prior - written consent of Creative Commons. Any permitted use will be in - compliance with Creative Commons' then-current trademark usage - guidelines, as may be published on its website or otherwise made - available upon request from time to time. For the avoidance of doubt, - this trademark restriction does not form part of this License. - - Creative Commons may be contacted at http://creativecommons.org/. diff --git a/src/pretix/static/bootstrap/docs/_data/browser-bugs.yml b/src/pretix/static/bootstrap/docs/_data/browser-bugs.yml deleted file mode 100644 index 1feb7c3129..0000000000 --- a/src/pretix/static/bootstrap/docs/_data/browser-bugs.yml +++ /dev/null @@ -1,201 +0,0 @@ -- - browser: > - Internet Explorer 11 - summary: > - Hovered element still remains in `:hover` state after scrolling away. - upstream_bug: > - IE#926665 - origin: > - Bootstrap#14211 - -- - browser: > - Internet Explorer 11 - summary: > - When hovering over a `` increment button flashes the decrement button. - upstream_bug: > - Chromium#419108 - origin: > - Offshoot of Bootstrap#8350 & Chromium#337668 - -- - browser: > - Chrome - summary: > - `display: table;` within `display: block;` forces sibling content to new line. - upstream_bug: > - Chromium#309483 - origin: > - Bootstrap#9950 - -- - browser: > - Chrome - summary: > - Incorrect viewport size used for media queries when printing. - upstream_bug: > - Chromium#273306 - origin: > - Bootstrap#12078 - -- - browser: > - Chrome - summary: > - CSS infinite linear animation with alpha transparency leaks memory. - upstream_bug: > - Chromium#429375 - origin: > - Bootstrap#14409 - -- - browser: > - Chrome (Windows & Linux) - summary: > - Animation glitch when returning to inactive tab after animations occurred while tab was hidden. - upstream_bug: > - Chromium#449180 - origin: > - Bootstrap#15298 - -- - browser: > - Safari (OS X) - summary: > - Scrollbar clipped in `select[multiple]` with padding. - upstream_bug: > - WebKit#128489, Safari#19208483 - origin: > - Bootstrap#12536 - -- - browser: > - Safari (OS X) - summary: > - Weird button behavior with some `` elements. - upstream_bug: > - WebKit#137269, Safari#18834768 - origin: > - Bootstrap#8350, - Normalize#283, - Chromium#337668 - -- - browser: > - Safari (OS X) - summary: > - `display: table-cell;` within media query renders incorrectly when resizing the window. - upstream_bug: > - WebKit#138167, Safari#18987206 - origin: > - Bootstrap#9774 - -- - browser: > - Safari (OS X) - summary: > - Small font size when printing webpage with fixed-width `.container`. - upstream_bug: > - WebKit#138192, Safari#19435018 - origin: > - Bootstrap#14868 - -- - browser: > - Safari (OS X) - summary: > - Alpha linear-gradient has dark line at its edge. - upstream_bug: > - WebKit#139803, Safari#19434933 - origin: > - Bootstrap#15205 - -- - browser: > - Safari (iOS) - summary: > - `transform: translate3d(0,0,0);` rendering bug. - upstream_bug: > - WebKit#138162, Safari#18804973 - origin: > - Bootstrap#14603 - -- - browser: > - Safari (iOS) - summary: > - Text input's cursor doesn't move while scrolling the page. - upstream_bug: > - WebKit#138201, Safari#18819624 - origin: > - Bootstrap#14708 - -- - browser: > - Safari (iOS) - summary: > - `display: block` causes text of temporal ``s to become vertically misaligned - upstream_bug: > - WebKit#139848, Safari#19434878 - origin: > - Bootstrap#11266, Bootstrap#13098 diff --git a/src/pretix/static/bootstrap/docs/_data/core-team.yml b/src/pretix/static/bootstrap/docs/_data/core-team.yml deleted file mode 100644 index d1fd76320a..0000000000 --- a/src/pretix/static/bootstrap/docs/_data/core-team.yml +++ /dev/null @@ -1,27 +0,0 @@ -- name: Mark Otto - user: mdo - gravatar: bc4ab438f7a4ce1c406aadc688427f2c - -- name: Jacob Thornton - user: fat - gravatar: a98244cbdacaf1c0b55499466002f7a8 - -- name: Chris Rebert - user: cvrebert - gravatar: edec428c425453955f770095a7d26c50 - -- name: Julian Thilo - user: juthilo - gravatar: 0f7dd3ce58a416be5685ea6194f82b11 - -- name: XhmikosR - user: xhmikosr - gravatar: e37759b1ea0125d4e97b1e00b5eed26f - -- name: Heinrich Fenkart - user: hnrch02 - gravatar: 0d53f5d3d3d28bd470f394d98f7ef48f - -- name: Patrick H. Lauke - user: patrickhlauke - gravatar: 357f279672db832fc41a5a2f36559fcb diff --git a/src/pretix/static/bootstrap/docs/_data/glyphicons.yml b/src/pretix/static/bootstrap/docs/_data/glyphicons.yml deleted file mode 100644 index ade750912b..0000000000 --- a/src/pretix/static/bootstrap/docs/_data/glyphicons.yml +++ /dev/null @@ -1,262 +0,0 @@ -# This file is generated via Grunt task. **Do not edit directly.** -# See the 'build-glyphicons-data' task in Gruntfile.js. - -- glyphicon-asterisk -- glyphicon-plus -- glyphicon-euro -- glyphicon-eur -- glyphicon-minus -- glyphicon-cloud -- glyphicon-envelope -- glyphicon-pencil -- glyphicon-glass -- glyphicon-music -- glyphicon-search -- glyphicon-heart -- glyphicon-star -- glyphicon-star-empty -- glyphicon-user -- glyphicon-film -- glyphicon-th-large -- glyphicon-th -- glyphicon-th-list -- glyphicon-ok -- glyphicon-remove -- glyphicon-zoom-in -- glyphicon-zoom-out -- glyphicon-off -- glyphicon-signal -- glyphicon-cog -- glyphicon-trash -- glyphicon-home -- glyphicon-file -- glyphicon-time -- glyphicon-road -- glyphicon-download-alt -- glyphicon-download -- glyphicon-upload -- glyphicon-inbox -- glyphicon-play-circle -- glyphicon-repeat -- glyphicon-refresh -- glyphicon-list-alt -- glyphicon-lock -- glyphicon-flag -- glyphicon-headphones -- glyphicon-volume-off -- glyphicon-volume-down -- glyphicon-volume-up -- glyphicon-qrcode -- glyphicon-barcode -- glyphicon-tag -- glyphicon-tags -- glyphicon-book -- glyphicon-bookmark -- glyphicon-print -- glyphicon-camera -- glyphicon-font -- glyphicon-bold -- glyphicon-italic -- glyphicon-text-height -- glyphicon-text-width -- glyphicon-align-left -- glyphicon-align-center -- glyphicon-align-right -- glyphicon-align-justify -- glyphicon-list -- glyphicon-indent-left -- glyphicon-indent-right -- glyphicon-facetime-video -- glyphicon-picture -- glyphicon-map-marker -- glyphicon-adjust -- glyphicon-tint -- glyphicon-edit -- glyphicon-share -- glyphicon-check -- glyphicon-move -- glyphicon-step-backward -- glyphicon-fast-backward -- glyphicon-backward -- glyphicon-play -- glyphicon-pause -- glyphicon-stop -- glyphicon-forward -- glyphicon-fast-forward -- glyphicon-step-forward -- glyphicon-eject -- glyphicon-chevron-left -- glyphicon-chevron-right -- glyphicon-plus-sign -- glyphicon-minus-sign -- glyphicon-remove-sign -- glyphicon-ok-sign -- glyphicon-question-sign -- glyphicon-info-sign -- glyphicon-screenshot -- glyphicon-remove-circle -- glyphicon-ok-circle -- glyphicon-ban-circle -- glyphicon-arrow-left -- glyphicon-arrow-right -- glyphicon-arrow-up -- glyphicon-arrow-down -- glyphicon-share-alt -- glyphicon-resize-full -- glyphicon-resize-small -- glyphicon-exclamation-sign -- glyphicon-gift -- glyphicon-leaf -- glyphicon-fire -- glyphicon-eye-open -- glyphicon-eye-close -- glyphicon-warning-sign -- glyphicon-plane -- glyphicon-calendar -- glyphicon-random -- glyphicon-comment -- glyphicon-magnet -- glyphicon-chevron-up -- glyphicon-chevron-down -- glyphicon-retweet -- glyphicon-shopping-cart -- glyphicon-folder-close -- glyphicon-folder-open -- glyphicon-resize-vertical -- glyphicon-resize-horizontal -- glyphicon-hdd -- glyphicon-bullhorn -- glyphicon-bell -- glyphicon-certificate -- glyphicon-thumbs-up -- glyphicon-thumbs-down -- glyphicon-hand-right -- glyphicon-hand-left -- glyphicon-hand-up -- glyphicon-hand-down -- glyphicon-circle-arrow-right -- glyphicon-circle-arrow-left -- glyphicon-circle-arrow-up -- glyphicon-circle-arrow-down -- glyphicon-globe -- glyphicon-wrench -- glyphicon-tasks -- glyphicon-filter -- glyphicon-briefcase -- glyphicon-fullscreen -- glyphicon-dashboard -- glyphicon-paperclip -- glyphicon-heart-empty -- glyphicon-link -- glyphicon-phone -- glyphicon-pushpin -- glyphicon-usd -- glyphicon-gbp -- glyphicon-sort -- glyphicon-sort-by-alphabet -- glyphicon-sort-by-alphabet-alt -- glyphicon-sort-by-order -- glyphicon-sort-by-order-alt -- glyphicon-sort-by-attributes -- glyphicon-sort-by-attributes-alt -- glyphicon-unchecked -- glyphicon-expand -- glyphicon-collapse-down -- glyphicon-collapse-up -- glyphicon-log-in -- glyphicon-flash -- glyphicon-log-out -- glyphicon-new-window -- glyphicon-record -- glyphicon-save -- glyphicon-open -- glyphicon-saved -- glyphicon-import -- glyphicon-export -- glyphicon-send -- glyphicon-floppy-disk -- glyphicon-floppy-saved -- glyphicon-floppy-remove -- glyphicon-floppy-save -- glyphicon-floppy-open -- glyphicon-credit-card -- glyphicon-transfer -- glyphicon-cutlery -- glyphicon-header -- glyphicon-compressed -- glyphicon-earphone -- glyphicon-phone-alt -- glyphicon-tower -- glyphicon-stats -- glyphicon-sd-video -- glyphicon-hd-video -- glyphicon-subtitles -- glyphicon-sound-stereo -- glyphicon-sound-dolby -- glyphicon-sound-5-1 -- glyphicon-sound-6-1 -- glyphicon-sound-7-1 -- glyphicon-copyright-mark -- glyphicon-registration-mark -- glyphicon-cloud-download -- glyphicon-cloud-upload -- glyphicon-tree-conifer -- glyphicon-tree-deciduous -- glyphicon-cd -- glyphicon-save-file -- glyphicon-open-file -- glyphicon-level-up -- glyphicon-copy -- glyphicon-paste -- glyphicon-alert -- glyphicon-equalizer -- glyphicon-king -- glyphicon-queen -- glyphicon-pawn -- glyphicon-bishop -- glyphicon-knight -- glyphicon-baby-formula -- glyphicon-tent -- glyphicon-blackboard -- glyphicon-bed -- glyphicon-apple -- glyphicon-erase -- glyphicon-hourglass -- glyphicon-lamp -- glyphicon-duplicate -- glyphicon-piggy-bank -- glyphicon-scissors -- glyphicon-bitcoin -- glyphicon-yen -- glyphicon-ruble -- glyphicon-scale -- glyphicon-ice-lolly -- glyphicon-ice-lolly-tasted -- glyphicon-education -- glyphicon-option-horizontal -- glyphicon-option-vertical -- glyphicon-menu-hamburger -- glyphicon-modal-window -- glyphicon-oil -- glyphicon-grain -- glyphicon-sunglasses -- glyphicon-text-size -- glyphicon-text-color -- glyphicon-text-background -- glyphicon-object-align-top -- glyphicon-object-align-bottom -- glyphicon-object-align-horizontal -- glyphicon-object-align-left -- glyphicon-object-align-vertical -- glyphicon-object-align-right -- glyphicon-triangle-right -- glyphicon-triangle-left -- glyphicon-triangle-bottom -- glyphicon-triangle-top -- glyphicon-console -- glyphicon-superscript -- glyphicon-subscript -- glyphicon-menu-left -- glyphicon-menu-right -- glyphicon-menu-down -- glyphicon-menu-up diff --git a/src/pretix/static/bootstrap/docs/_data/sass-team.yml b/src/pretix/static/bootstrap/docs/_data/sass-team.yml deleted file mode 100644 index 9918e23ced..0000000000 --- a/src/pretix/static/bootstrap/docs/_data/sass-team.yml +++ /dev/null @@ -1,7 +0,0 @@ -- name: Thomas McDonald - user: thomas-mcdonald - gravatar: 24cd55ab1a62ffb113ab8c02f64c9301 - -- name: Gleb Mazovetskiy - user: glebm - gravatar: 729f685b8e8d7e9feed18c177c82e59b diff --git a/src/pretix/static/bootstrap/docs/_data/showcase.yml b/src/pretix/static/bootstrap/docs/_data/showcase.yml deleted file mode 100644 index 45e9b0ccc0..0000000000 --- a/src/pretix/static/bootstrap/docs/_data/showcase.yml +++ /dev/null @@ -1,19 +0,0 @@ -- name: Lyft - url: https://www.lyft.com - expo_url: http://expo.getbootstrap.com/2014/10/29/lyft/ - img: lyft - -- name: Vogue - url: http://www.vogue.com - expo_url: http://expo.getbootstrap.com/2014/09/30/vogue/ - img: vogue - -- name: Riot Design - url: http://riotdesign.eu/en/ - expo_url: http://expo.getbootstrap.com/2014/03/13/riot-design/ - img: riot - -- name: Newsweek - url: http://www.newsweek.com/ - expo_url: http://expo.getbootstrap.com/2014/02/12/newsweek/ - img: newsweek diff --git a/src/pretix/static/bootstrap/docs/_data/translations.yml b/src/pretix/static/bootstrap/docs/_data/translations.yml deleted file mode 100644 index 0978cd1fe3..0000000000 --- a/src/pretix/static/bootstrap/docs/_data/translations.yml +++ /dev/null @@ -1,44 +0,0 @@ -- name: Chinese - code: zh - description: Bootstrap 中文文档 - url: http://v3.bootcss.com/ - -- name: Danish - code: da - description: Bootstrap pÃ¥ Dansk - url: http://getbootstrap.dk/ - -- name: French - code: fr - description: Bootstrap en Français - url: http://www.oneskyapp.com/docs/bootstrap/fr - -- name: German - code: de - description: Bootstrap auf Deutsch - url: http://holdirbootstrap.de/ - -- name: Italian - code: it - description: Bootstrap in Italiano - url: http://www.hackerstribe.com/guide/IT-bootstrap-3.1.1/ - -- name: Korean - code: ko - description: Bootstrap 한국어 - url: http://bootstrapk.com/BS3/ - -- name: Russian - code: ru - description: Bootstrap по-руÑÑки - url: http://www.oneskyapp.com/docs/bootstrap/ru - -- name: Spanish - code: es - description: Bootstrap en Español - url: http://www.oneskyapp.com/docs/bootstrap/es - -- name: Ukrainian - code: uk - description: Bootstrap українÑькою - url: http://twbs.docs.org.ua diff --git a/src/pretix/static/bootstrap/docs/_includes/ads.html b/src/pretix/static/bootstrap/docs/_includes/ads.html deleted file mode 100644 index ba4775f5e3..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/ads.html +++ /dev/null @@ -1 +0,0 @@ -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/alerts.html b/src/pretix/static/bootstrap/docs/_includes/components/alerts.html deleted file mode 100644 index 7487a968aa..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/alerts.html +++ /dev/null @@ -1,89 +0,0 @@ -
-

Alerts

- -

Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.

- -

Examples

-

Wrap any text and an optional dismiss button in .alert and one of the four contextual classes (e.g., .alert-success) for basic alert messages.

- -
-

No default class

-

Alerts don't have default classes, only base and modifier classes. A default gray alert doesn't make too much sense, so you're required to specify a type via contextual class. Choose from success, info, warning, or danger.

-
- -
- - - - -
-{% highlight html %} - - - - -{% endhighlight %} - -

Dismissible alerts

-

Build on any alert by adding an optional .alert-dismissible and close button.

-
-

Requires JavaScript alert plugin

-

For fully functioning, dismissible alerts, you must use the alerts JavaScript plugin.

-
-
- -
-{% highlight html %} - -{% endhighlight %} - -
-

Ensure proper behavior across all devices

-

Be sure to use the <button> element with the data-dismiss="alert" data attribute.

-
- - -

Use the .alert-link utility class to quickly provide matching colored links within any alert.

-
- - - - -
-{% highlight html %} - - - - -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/badges.html b/src/pretix/static/bootstrap/docs/_includes/components/badges.html deleted file mode 100644 index a7fff73226..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/badges.html +++ /dev/null @@ -1,45 +0,0 @@ -
-

Badges

- -

Easily highlight new or unread items by adding a <span class="badge"> to links, Bootstrap navs, and more.

- -
- Inbox 42 -

- -
-{% highlight html %} -Inbox 42 - - -{% endhighlight %} - -

Self collapsing

-

When there are no new or unread items, badges will simply collapse (via CSS's :empty selector) provided no content exists within.

- -
-

Cross-browser compatibility

-

Badges won't self collapse in Internet Explorer 8 because it lacks support for the :empty selector.

-
- -

Adapts to active nav states

-

Built-in styles are included for placing badges in active states in pill navigations.

-
- -
-{% highlight html %} - -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/breadcrumbs.html b/src/pretix/static/bootstrap/docs/_includes/components/breadcrumbs.html deleted file mode 100644 index 04d2f1468b..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/breadcrumbs.html +++ /dev/null @@ -1,27 +0,0 @@ -
-

Breadcrumbs

- -

Indicate the current page's location within a navigational hierarchy.

-

Separators are automatically added in CSS through :before and content.

-
- - - -
-{% highlight html %} - -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/button-dropdowns.html b/src/pretix/static/bootstrap/docs/_includes/components/button-dropdowns.html deleted file mode 100644 index e63e9eedd0..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/button-dropdowns.html +++ /dev/null @@ -1,321 +0,0 @@ -
-

Button dropdowns

- -

Use any button to trigger a dropdown menu by placing it within a .btn-group and providing the proper menu markup.

- -
-

Plugin dependency

-

Button dropdowns require the dropdown plugin to be included in your version of Bootstrap.

-
- -

Single button dropdowns

-

Turn a button into a dropdown toggle with some basic markup changes.

- -{% highlight html %} - - -{% endhighlight %} - -

Split button dropdowns

-

Similarly, create split button dropdowns with the same markup changes, only with a separate button.

-
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
-{% highlight html %} - -
- - - -
-{% endhighlight %} - -

Sizing

-

Button dropdowns work with buttons of all sizes.

-
- - - -
-{% highlight html %} - -
- - -
- - -
- - -
- - -
- - -
-{% endhighlight %} - -

Dropup variation

-

Trigger dropdown menus above elements by adding .dropup to the parent.

-
- -
-{% highlight html %} -
- - - -
-{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/button-groups.html b/src/pretix/static/bootstrap/docs/_includes/components/button-groups.html deleted file mode 100644 index 9abf562945..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/button-groups.html +++ /dev/null @@ -1,268 +0,0 @@ -
-

Button groups

- -

Group a series of buttons together on a single line with the button group. Add on optional JavaScript radio and checkbox style behavior with our buttons plugin.

- -
-

Tooltips & popovers in button groups require special setting

-

When using tooltips or popovers on elements within a .btn-group, you'll have to specify the option container: 'body' to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the tooltip or popover is triggered).

-
- -
-

Ensure correct role and provide a label

-

In order for assistive technologies – such as screen readers – to convey that a series of buttons is grouped, an appropriate role attribute needs to be provided. For button groups, this would be role="group", while toolbars should have a role="toolbar".

-

One exception are groups which only contain a single control (for instance the justified button groups with <button> elements) or a dropdown.

-

In addition, groups and toolbars should be given an explicit label, as most assistive technologies will otherwise not announce them, despite the presence of the correct role attribute. In the examples provided here, we use aria-label, but alternatives such as aria-labelledby can also be used.

-
- -

Basic example

-

Wrap a series of buttons with .btn in .btn-group.

-
-
- - - -
-
-{% highlight html %} -
- - - -
-{% endhighlight %} - -

Button toolbar

-

Combine sets of <div class="btn-group"> into a <div class="btn-toolbar"> for more complex components.

-
- -
-{% highlight html %} - -{% endhighlight %} - -

Sizing

-

Instead of applying button sizing classes to every button in a group, just add .btn-group-* to each .btn-group, including when nesting multiple groups.

-
-
- - - -
-
-
- - - -
-
-
- - - -
-
-
- - - -
-
-{% highlight html %} -
...
-
...
-
...
-
...
-{% endhighlight %} - -

Nesting

-

Place a .btn-group within another .btn-group when you want dropdown menus mixed with a series of buttons.

-
-
- - - -
- - -
-
-
-{% highlight html %} -
- - - -
- - -
-
-{% endhighlight %} - -

Vertical variation

-

Make a set of buttons appear vertically stacked rather than horizontally. Split button dropdowns are not supported here.

-
-
- - -
- - -
- - -
- - -
-
- - -
-
- - -
-
-
-{% highlight html %} -
- ... -
-{% endhighlight %} - -

Justified button groups

-

Make a group of buttons stretch at equal sizes to span the entire width of its parent. Also works with button dropdowns within the button group.

- -
-

Handling borders

-

Due to the specific HTML and CSS used to justify buttons (namely display: table-cell), the borders between them are doubled. In regular button groups, margin-left: -1px is used to stack the borders instead of removing them. However, margin doesn't work with display: table-cell. As a result, depending on your customizations to Bootstrap, you may wish to remove or re-color the borders.

-
-
-

IE8 and borders

-

Internet Explorer 8 doesn't render borders on buttons in a justified button group, whether it's on <a> or <button> elements. To get around that, wrap each button in another .btn-group.

-

See #12476 for more information.

-
- -

With <a> elements

-

Just wrap a series of .btns in .btn-group.btn-group-justified.

- -{% highlight html %} -
- ... -
-{% endhighlight %} - -
-

Links acting as buttons

-

If the <a> elements are used to act as buttons – triggering in-page functionality, rather than navigating to another document or section within the current page – they should also be given an appropriate role="button".

-
- -

With <button> elements

-

To use justified button groups with <button> elements, you must wrap each button in a button group. Most browsers don't properly apply our CSS for justification to <button> elements, but since we support button dropdowns, we can work around that.

-
-
-
- -
-
- -
-
- -
-
-
-{% highlight html %} -
-
- -
-
- -
-
- -
-
-{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/dropdowns.html b/src/pretix/static/bootstrap/docs/_includes/components/dropdowns.html deleted file mode 100644 index 6a5d4ded50..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/dropdowns.html +++ /dev/null @@ -1,126 +0,0 @@ -
-

Dropdowns

- -

Toggleable, contextual menu for displaying lists of links. Made interactive with the dropdown JavaScript plugin.

- - -

Wrap the dropdown's trigger and the dropdown menu within .dropdown, or another element that declares position: relative;. Then add the menu's HTML.

-
- -
-{% highlight html %} - -{% endhighlight %} - - -

By default, a dropdown menu is automatically positioned 100% from the top and along the left side of its parent. Add .dropdown-menu-right to a .dropdown-menu to right align the dropdown menu.

-
-

May require additional positioning

-

Dropdowns are automatically positioned via CSS within the normal flow of the document. This means dropdowns may be cropped by parents with certain overflow properties or appear out of bounds of the viewport. Address these issues on your own as they arise.

-
-
-

Deprecated .pull-right alignment

-

As of v3.1.0, we've deprecated .pull-right on dropdown menus. To right-align a menu, use .dropdown-menu-right. Right-aligned nav components in the navbar use a mixin version of this class to automatically align the menu. To override it, use .dropdown-menu-left.

-
-{% highlight html %} - -{% endhighlight %} - - -

Add a header to label sections of actions in any dropdown menu.

-
- -
-{% highlight html %} - -{% endhighlight %} - - -

Add a divider to separate series of links in a dropdown menu.

-
- -
-{% highlight html %} - -{% endhighlight %} - - -

Add .disabled to a <li> in the dropdown to disable the link.

-
- -
-{% highlight html %} - -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/glyphicons.html b/src/pretix/static/bootstrap/docs/_includes/components/glyphicons.html deleted file mode 100644 index ed454110b3..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/glyphicons.html +++ /dev/null @@ -1,91 +0,0 @@ -
-

Glyphicons

- -

Available glyphs

-

Includes 260 glyphs in font format from the Glyphicon Halflings set. Glyphicons Halflings are normally not available for free, but their creator has made them available for Bootstrap free of cost. As a thank you, we only ask that you include a link back to Glyphicons whenever possible.

-
-
    - {% for iconClassName in site.data.glyphicons %} -
  • - - glyphicon {{ iconClassName }} -
  • - {% endfor %} -
-
- - -

How to use

-

For performance reasons, all icons require a base class and individual icon class. To use, place the following code just about anywhere. Be sure to leave a space between the icon and text for proper padding.

-
-

Don't mix with other components

-

Icon classes cannot be directly combined with other components. They should not be used along with other classes on the same element. Instead, add a nested <span> and apply the icon classes to the <span>.

-
-
-

Only for use on empty elements

-

Icon classes should only be used on elements that contain no text content and have no child elements.

-
-
-

Changing the icon font location

-

Bootstrap assumes icon font files will be located in the ../fonts/ directory, relative to the compiled CSS files. Moving or renaming those font files means updating the CSS in one of three ways:

-
    -
  • Change the @icon-font-path and/or @icon-font-name variables in the source Less files.
  • -
  • Utilize the relative URLs option provided by the Less compiler.
  • -
  • Change the url() paths in the compiled CSS.
  • -
-

Use whatever option best suits your specific development setup.

-
-
-

Accessible icons

-

Modern versions of assistive technologies will announce CSS generated content, as well as specific Unicode characters. To avoid unintended and confusing output in screen readers (particularly when icons are used purely for decoration), we hide them with the aria-hidden="true" attribute.

-

If you're using an icon to convey meaning (rather than only as a decorative element), ensure that this meaning is also conveyed to assistive technologies – for instance, include additional content, visually hidden with the .sr-only class.

-

If you're creating controls with no other text (such as a <button> that only contains an icon), you should always provide alternative content to identify the purpose of the control, so that it will make sense to users of assistive technologies. In this case, you could add an aria-label attribute on the control itself.

-
-{% highlight html %} - -{% endhighlight %} - - -

Examples

-

Use them in buttons, button groups for a toolbar, navigation, or prepended form inputs.

-
- - -
-{% highlight html %} - - - -{% endhighlight %} -

An icon used in an alert to convey that it's an error message, with additional .sr-only text to convey this hint to users of assistive technologies.

-
- -
-{% highlight html %} - -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/input-groups.html b/src/pretix/static/bootstrap/docs/_includes/components/input-groups.html deleted file mode 100644 index 665c5b7cc9..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/input-groups.html +++ /dev/null @@ -1,316 +0,0 @@ -
-

Input groups

- -

Extend form controls by adding text or buttons before, after, or on both sides of any text-based <input>. Use .input-group with an .input-group-addon to prepend or append elements to a single .form-control.

- -
-

Textual <input>s only

-

Avoid using <select> elements here as they cannot be fully styled in WebKit browsers.

-

Avoid using <textarea> elements here as their rows attribute will not be respected in some cases.

-
-
-

Tooltips & popovers in input groups require special setting

-

When using tooltips or popovers on elements within an .input-group, you'll have to specify the option container: 'body' to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the tooltip or popover is triggered).

-
-
-

Don't mix with other components

-

Do not mix form groups or grid column classes directly with input groups. Instead, nest the input group inside of the form group or grid-related element.

-
-
-

Always add labels

-

Screen readers will have trouble with your forms if you don't include a label for every input. For these input groups, ensure that any additional label or functionality is conveyed to assistive technologies.

-

The exact technique to be used (<label> elements hidden using the .sr-only class, or use of the aria-label, aria-labelledby, aria-describedby, title or placeholder attribute) and what additional information will need to be conveyed will vary depending on the exact type of interface widget you're implementing. The examples in this section provide a few suggested, case-specific approaches.

-
- -

Basic example

-

Place one add-on or button on either side of an input. You may also place one on both sides of an input.

-

We do not support multiple add-ons on a single side.

-

We do not support multiple form-controls in a single input group.

-
-
- @ - -
-
-
- - @example.com -
-
-
- $ - - .00 -
-
-{% highlight html %} -
- @ - -
- -
- - @example.com -
- -
- $ - - .00 -
-{% endhighlight %} - -

Sizing

-

Add the relative form sizing classes to the .input-group itself and contents within will automatically resize—no need for repeating the form control size classes on each element.

-
-
- @ - -
-
-
- @ - -
-
-
- @ - -
-
-{% highlight html %} -
- @ - -
- -
- @ - -
- -
- @ - -
-{% endhighlight %} - - -

Checkboxes and radio addons

-

Place any checkbox or radio option within an input group's addon instead of text.

-
-
-
-
- - - - -
-
-
-
- - - - -
-
-
-
-{% highlight html %} -
-
-
- - - - -
-
-
-
- - - - -
-
-
-{% endhighlight %} - - -

Button addons

-

Buttons in input groups are a bit different and require one extra level of nesting. Instead of .input-group-addon, you'll need to use .input-group-btn to wrap the buttons. This is required due to default browser styles that cannot be overridden.

-
-
-
-
- - - - -
-
-
-
- - - - -
-
-
-
-{% highlight html %} -
-
-
- - - - -
-
-
-
- - - - -
-
-
-{% endhighlight %} - -

Buttons with dropdowns

-

-
-
-
-
- - -
-
-
-
- - -
-
-
-
-{% highlight html %} -
-
-
- - -
-
-
-
- - -
-
-
-{% endhighlight %} - -

Segmented buttons

-
-
-
-
-
- - - -
- -
-
-
-
- -
- - - -
-
-
-
-
-{% highlight html %} -
-
- -
- -
- -
- -
- -
-
-{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/jumbotron.html b/src/pretix/static/bootstrap/docs/_includes/components/jumbotron.html deleted file mode 100644 index b61ffe061c..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/jumbotron.html +++ /dev/null @@ -1,27 +0,0 @@ -
-

Jumbotron

- -

A lightweight, flexible component that can optionally extend the entire viewport to showcase key content on your site.

-
-
-

Hello, world!

-

This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.

-

Learn more

-
-
-{% highlight html %} -
-

Hello, world!

-

...

-

Learn more

-
-{% endhighlight %} -

To make the jumbotron full width, and without rounded corners, place it outside all .containers and instead add a .container within.

-{% highlight html %} -
-
- ... -
-
-{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/labels.html b/src/pretix/static/bootstrap/docs/_includes/components/labels.html deleted file mode 100644 index ef85cc67d4..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/labels.html +++ /dev/null @@ -1,40 +0,0 @@ -
-

Labels

- -

Example

-
-

Example heading New

-

Example heading New

-

Example heading New

-

Example heading New

-
Example heading New
-
Example heading New
-
-{% highlight html %} -

Example heading New

-{% endhighlight %} - -

Available variations

-

Add any of the below mentioned modifier classes to change the appearance of a label.

-
- Default - Primary - Success - Info - Warning - Danger -
-{% highlight html %} -Default -Primary -Success -Info -Warning -Danger -{% endhighlight %} - -
-

Have tons of labels?

-

Rendering problems can arise when you have dozens of inline labels within a narrow container, each containing its own inline-block element (like an icon). The way around this is setting display: inline-block;. For context and an example, see #13219.

-
-
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/list-group.html b/src/pretix/static/bootstrap/docs/_includes/components/list-group.html deleted file mode 100644 index 1d02b84f33..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/list-group.html +++ /dev/null @@ -1,167 +0,0 @@ -
-

List group

- -

List groups are a flexible and powerful component for displaying not only simple lists of elements, but complex ones with custom content.

- -

Basic example

-

The most basic list group is simply an unordered list with list items, and the proper classes. Build upon it with the options that follow, or your own CSS as needed.

-
-
    -
  • Cras justo odio
  • -
  • Dapibus ac facilisis in
  • -
  • Morbi leo risus
  • -
  • Porta ac consectetur ac
  • -
  • Vestibulum at eros
  • -
-
-{% highlight html %} -
    -
  • Cras justo odio
  • -
  • Dapibus ac facilisis in
  • -
  • Morbi leo risus
  • -
  • Porta ac consectetur ac
  • -
  • Vestibulum at eros
  • -
-{% endhighlight %} - -

Badges

-

Add the badges component to any list group item and it will automatically be positioned on the right.

-
-
    -
  • - 14 - Cras justo odio -
  • -
  • - 2 - Dapibus ac facilisis in -
  • -
  • - 1 - Morbi leo risus -
  • -
-
-{% highlight html %} -
    -
  • - 14 - Cras justo odio -
  • -
-{% endhighlight %} - -

Linked items

-

Linkify list group items by using anchor tags instead of list items (that also means a parent <div> instead of an <ul>). No need for individual parents around each element.

- -{% highlight html %} - -{% endhighlight %} - -

Disabled items

-

Add .disabled to a .list-group-item to gray it out to appear disabled.

- -{% highlight html %} - -{% endhighlight %} - -

Contextual classes

-

Use contextual classes to style list items, default or linked. Also includes .active state.

-
-
-
-
    -
  • Dapibus ac facilisis in
  • -
  • Cras sit amet nibh libero
  • -
  • Porta ac consectetur ac
  • -
  • Vestibulum at eros
  • -
-
- -
-
-{% highlight html %} -
    -
  • Dapibus ac facilisis in
  • -
  • Cras sit amet nibh libero
  • -
  • Porta ac consectetur ac
  • -
  • Vestibulum at eros
  • -
- -{% endhighlight %} - -

Custom content

-

Add nearly any HTML within, even for linked list groups like the one below.

- -{% highlight html %} - -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/media.html b/src/pretix/static/bootstrap/docs/_includes/components/media.html deleted file mode 100644 index 3d1f75dbe6..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/media.html +++ /dev/null @@ -1,207 +0,0 @@ -
-

Media object

- -

Abstract object styles for building various types of components (like blog comments, Tweets, etc) that feature a left- or right-aligned image alongside textual content.

- -

Default media

-

The default media displays a media object (images, video, audio) to the left or right of a content block.

-
-
-
- - Generic placeholder image - -
-
-

Media heading

- Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. -
-
-
-
- - Generic placeholder image - -
-
-

Media heading

- Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. -
-
- - Generic placeholder image - -
-
-

Nested media heading

- Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. -
-
-
-
-
-
-

Media heading

- Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. -
-
- - Generic placeholder image - -
-
-
-
- - Generic placeholder image - -
-
-

Media heading

- Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. -
-
- - Generic placeholder image - -
-
-
-{% highlight html %} -
-
- - ... - -
-
-

Media heading

- ... -
-
-{% endhighlight %} - -

The classes .pull-left and .pull-right also exist and were previously used as part of the media component, but are deprecated for that use as of v3.3.0. They are approximately equivalent to .media-left and .media-right, except that .media-right should be placed after the .media-body in the html.

-

Media alignment

-

The images or other media can be aligned top, middle, or bottom. The default is top aligned.

-
-
-
- - Generic placeholder image - -
-
-

Top aligned media

-

Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

-

Donec sed odio dui. Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

-
-
-
-
- - Generic placeholder image - -
-
-

Middle aligned media

-

Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

-

Donec sed odio dui. Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

-
-
-
-
- - Generic placeholder image - -
-
-

Bottom aligned media

-

Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

-

Donec sed odio dui. Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

-
-
-
-{% highlight html %} -
-
- - ... - -
-
-

Middle aligned media

- ... -
-
-{% endhighlight %} - -

Media list

-

With a bit of extra markup, you can use media inside list (useful for comment threads or articles lists).

-
-
    -
  • -
    - - Generic placeholder image - -
    -
    -

    Media heading

    -

    Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.

    - -
    -
    - - Generic placeholder image - -
    -
    -

    Nested media heading

    - Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. - -
    -
    - - Generic placeholder image - -
    -
    -

    Nested media heading

    - Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. -
    -
    -
    -
    - -
    -
    - - Generic placeholder image - -
    -
    -

    Nested media heading

    - Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. -
    -
    -
    -
  • -
-
-{% highlight html %} -
    -
  • -
    - - ... - -
    -
    -

    Media heading

    - ... -
    -
  • -
-{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/navbar.html b/src/pretix/static/bootstrap/docs/_includes/components/navbar.html deleted file mode 100644 index 6cd731ac6c..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/navbar.html +++ /dev/null @@ -1,461 +0,0 @@ -
-

Navbar

- - -

Navbars are responsive meta components that serve as navigation headers for your application or site. They begin collapsed (and are toggleable) in mobile views and become horizontal as the available viewport width increases.

-

Justified navbar nav links are currently not supported.

- -
-

Overflowing content

-

Since Bootstrap doesn't know how much space the content in your navbar needs, you might run into issues with content wrapping into a second row. To resolve this, you can:

-
    -
  1. Reduce the amount or width of navbar items.
  2. -
  3. Hide certain navbar items at certain screen sizes using responsive utility classes.
  4. -
  5. Change the point at which your navbar switches between collapsed and horizontal mode. Customize the @grid-float-breakpoint variable or add your own media query.
  6. -
-
-
-

Requires JavaScript plugin

-

If JavaScript is disabled and the viewport is narrow enough that the navbar collapses, it will be impossible to expand the navbar and view the content within the .navbar-collapse.

-

The responsive navbar requires the collapse plugin to be included in your version of Bootstrap.

-
-
-

Changing the collapsed mobile navbar breakpoint

-

The navbar collapses into its vertical mobile view when the viewport is narrower than @grid-float-breakpoint, and expands into its horizontal non-mobile view when the viewport is at least @grid-float-breakpoint in width. Adjust this variable in the Less source to control when the navbar collapses/expands. The default value is 768px (the smallest "small" or "tablet" screen).

-
-
-

Make navbars accessible

-

Be sure to use a <nav> element or, if using a more generic element such as a <div>, add a role="navigation" to every navbar to explicitly identify it as a landmark region for users of assistive technologies.

-
- -
- -
-{% highlight html %} - -{% endhighlight %} - - - -

Replace the navbar brand with your own image by swapping the text for an <img>. Since the .navbar-brand has its own padding and height, you may need to override some CSS depending on your image.

-
- -
-{% highlight html %} - -{% endhighlight %} - - - -

Place form content within .navbar-form for proper vertical alignment and collapsed behavior in narrow viewports. Use the alignment options to decide where it resides within the navbar content.

-

As a heads up, .navbar-form shares much of its code with .form-inline via mixin. Some form controls, like input groups, may require fixed widths to be show up properly within a navbar.

-
- -
-{% highlight html %} - -{% endhighlight %} - -
-

Mobile device caveats

-

There are some caveats regarding using form controls within fixed elements on mobile devices. See our browser support docs for details.

-
- -
-

Always add labels

-

Screen readers will have trouble with your forms if you don't include a label for every input. For these inline forms, you can hide the labels using the .sr-only class. There are further alternative methods of providing a label for assistive technologies, such as the aria-label, aria-labelledby or title attribute. If none of these is present, screen readers may resort to using the placeholder attribute, if present, but note that use of placeholder as a replacement for other labelling methods is not advised.

-
- - - -

Add the .navbar-btn class to <button> elements not residing in a <form> to vertically center them in the navbar.

-
- -
-{% highlight html %} - -{% endhighlight %} - -
-

Context-specific usage

-

Like the standard button classes, .navbar-btn can be used on <a> and <input> elements. However, neither .navbar-btn nor the standard button classes should be used on <a> elements within .navbar-nav.

-
- - -

Wrap strings of text in an element with .navbar-text, usually on a <p> tag for proper leading and color.

-
- -
-{% highlight html %} - -{% endhighlight %} - - - -

For folks using standard links that are not within the regular navbar navigation component, use the .navbar-link class to add the proper colors for the default and inverse navbar options.

-
- -
-{% highlight html %} - -{% endhighlight %} - - - -

Align nav links, forms, buttons, or text, using the .navbar-left or .navbar-right utility classes. Both classes will add a CSS float in the specified direction. For example, to align nav links, put them in a separate <ul> with the respective utility class applied.

-

These classes are mixin-ed versions of .pull-left and .pull-right, but they're scoped to media queries for easier handling of navbar components across device sizes.

-
-

Right aligning multiple components

-

Navbars currently have a limitation with multiple .navbar-right classes. To properly space content, we use negative margin on the last .navbar-right element. When there are multiple elements using that class, these margins don't work as intended.

-

We'll revisit this when we can rewrite that component in v4.

-
- - - -

Add .navbar-fixed-top and include a .container or .container-fluid to center and pad navbar content.

-
- -
-{% highlight html %} - -{% endhighlight %} - -
-

Body padding required

-

The fixed navbar will overlay your other content, unless you add padding to the top of the <body>. Try out your own values or use our snippet below. Tip: By default, the navbar is 50px high.

-{% highlight scss %} -body { padding-top: 70px; } -{% endhighlight %} -

Make sure to include this after the core Bootstrap CSS.

-
- - - -

Add .navbar-fixed-bottom and include a .container or .container-fluid to center and pad navbar content.

-
- -
-{% highlight html %} - -{% endhighlight %} - -
-

Body padding required

-

The fixed navbar will overlay your other content, unless you add padding to the bottom of the <body>. Try out your own values or use our snippet below. Tip: By default, the navbar is 50px high.

-{% highlight scss %} -body { padding-bottom: 70px; } -{% endhighlight %} -

Make sure to include this after the core Bootstrap CSS.

-
- - - -

Create a full-width navbar that scrolls away with the page by adding .navbar-static-top and include a .container or .container-fluid to center and pad navbar content.

-

Unlike the .navbar-fixed-* classes, you do not need to change any padding on the body.

-
- -
-{% highlight html %} - -{% endhighlight %} - - - -

Modify the look of the navbar by adding .navbar-inverse.

-
- -
-{% highlight html %} - -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/navs.html b/src/pretix/static/bootstrap/docs/_includes/components/navs.html deleted file mode 100644 index 4a0a4b6c39..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/navs.html +++ /dev/null @@ -1,189 +0,0 @@ -
-

Navs

- -

Navs available in Bootstrap have shared markup, starting with the base .nav class, as well as shared states. Swap modifier classes to switch between each style.

- -
-

Using navs for tab panels requires JavaScript tabs plugin

-

For tabs with tabbable areas, you must use the tabs JavaScript plugin. The markup will also require additional role and ARIA attributes – see the plugin's example markup for further details.

-
- -
-

Make navs used as navigation accessible

-

If you are using navs to provide a navigation bar, be sure to add a role="navigation" to the most logical parent container of the <ul>, or wrap a <nav> element around the whole navigation. Do not add the role to the <ul> itself, as this would prevent it from being announced as an actual list by assistive technologies.

-
- - -

Note the .nav-tabs class requires the .nav base class.

-
- -
-{% highlight html %} - -{% endhighlight %} - - - -

Take that same HTML, but use .nav-pills instead:

-
- -
-{% highlight html %} - -{% endhighlight %} -

Pills are also vertically stackable. Just add .nav-stacked.

-
- -
-{% highlight html %} - -{% endhighlight %} - - - -

Easily make tabs or pills equal widths of their parent at screens wider than 768px with .nav-justified. On smaller screens, the nav links are stacked.

-

Justified navbar nav links are currently not supported.

-
-

Safari and responsive justified navs

-

As of v8.0, Safari exhibits a bug in which resizing your browser horizontally causes rendering errors in the justified nav that are cleared upon refreshing. This bug is also shown in the justified nav example.

-
-
- -
- -
-{% highlight html %} - - -{% endhighlight %} - - - -

For any nav component (tabs or pills), add .disabled for gray links and no hover effects.

- -
-

Link functionality not impacted

-

This class will only change the <a>'s appearance, not its functionality. Use custom JavaScript to disable links here.

-
- - -{% highlight html %} - -{% endhighlight %} - - - -

Add dropdown menus with a little extra HTML and the dropdowns JavaScript plugin.

- -

Tabs with dropdowns

- -{% highlight html %} - -{% endhighlight %} - -

Pills with dropdowns

- -{% highlight html %} - -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/page-header.html b/src/pretix/static/bootstrap/docs/_includes/components/page-header.html deleted file mode 100644 index 3f7a8a0945..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/page-header.html +++ /dev/null @@ -1,15 +0,0 @@ -
-

Page header

- -

A simple shell for an h1 to appropriately space out and segment sections of content on a page. It can utilize the h1's default small element, as well as most other components (with additional styles).

-
- -
-{% highlight html %} - -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/pagination.html b/src/pretix/static/bootstrap/docs/_includes/components/pagination.html deleted file mode 100644 index 46ee1f1edb..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/pagination.html +++ /dev/null @@ -1,197 +0,0 @@ -
-

Pagination

- -

Provide pagination links for your site or app with the multi-page pagination component, or the simpler pager alternative.

- -

Default pagination

-

Simple pagination inspired by Rdio, great for apps and search results. The large block is hard to miss, easily scalable, and provides large click areas.

-
- -
-{% highlight html %} - -{% endhighlight %} - -

Disabled and active states

-

Links are customizable for different circumstances. Use .disabled for unclickable links and .active to indicate the current page.

-
- -
-{% highlight html %} - -{% endhighlight %} -

You can optionally swap out active or disabled anchors for <span>, or omit the anchor in the case of the previous/next arrows, to remove click functionality while retaining intended styles.

-{% highlight html %} - -{% endhighlight %} - - -

Sizing

-

Fancy larger or smaller pagination? Add .pagination-lg or .pagination-sm for additional sizes.

-
- - - -
-{% highlight html %} - - - -{% endhighlight %} - - -

Pager

-

Quick previous and next links for simple pagination implementations with light markup and styles. It's great for simple sites like blogs or magazines.

- -

Default example

-

By default, the pager centers links.

-
- -
-{% highlight html %} - -{% endhighlight %} - -

Aligned links

-

Alternatively, you can align each link to the sides:

-
- -
-{% highlight html %} - -{% endhighlight %} - - -

Optional disabled state

-

Pager links also use the general .disabled utility class from the pagination.

-
- -
-{% highlight html %} - -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/panels.html b/src/pretix/static/bootstrap/docs/_includes/components/panels.html deleted file mode 100644 index a0d4448c4e..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/panels.html +++ /dev/null @@ -1,279 +0,0 @@ -
-

Panels

- -

While not always necessary, sometimes you need to put your DOM in a box. For those situations, try the panel component.

- -

Basic example

-

By default, all the .panel does is apply some basic border and padding to contain some content.

-
-
-
- Basic panel example -
-
-
-{% highlight html %} -
-
- Basic panel example -
-
-{% endhighlight %} - -

Panel with heading

-

Easily add a heading container to your panel with .panel-heading. You may also include any <h1>-<h6> with a .panel-title class to add a pre-styled heading.

-

For proper link coloring, be sure to place links in headings within .panel-title.

-
-
-
Panel heading without title
-
- Panel content -
-
-
-
-

Panel title

-
-
- Panel content -
-
-
-{% highlight html %} -
-
Panel heading without title
-
- Panel content -
-
- -
-
-

Panel title

-
-
- Panel content -
-
-{% endhighlight %} - - -

Wrap buttons or secondary text in .panel-footer. Note that panel footers do not inherit colors and borders when using contextual variations as they are not meant to be in the foreground.

-
-
-
- Panel content -
- -
-
-{% highlight html %} -
-
- Panel content -
- -
-{% endhighlight %} - -

Contextual alternatives

-

Like other components, easily make a panel more meaningful to a particular context by adding any of the contextual state classes.

-
-
-
-

Panel title

-
-
- Panel content -
-
-
-
-

Panel title

-
-
- Panel content -
-
-
-
-

Panel title

-
-
- Panel content -
-
-
-
-

Panel title

-
-
- Panel content -
-
-
-
-

Panel title

-
-
- Panel content -
-
-
-{% highlight html %} -
...
-
...
-
...
-
...
-
...
-{% endhighlight %} - -

With tables

-

Add any non-bordered .table within a panel for a seamless design. If there is a .panel-body, we add an extra border to the top of the table for separation.

-
-
- -
Panel heading
-
-

Some default panel content here. Nulla vitae elit libero, a pharetra augue. Aenean lacinia bibendum nulla sed consectetur. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Nullam id dolor id nibh ultricies vehicula ut id elit.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-
-
-{% highlight html %} -
- -
Panel heading
-
-

...

-
- - - - ... -
-
-{% endhighlight %} - -

If there is no panel body, the component moves from panel header to table without interruption.

-
-
- -
Panel heading
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-
-
-{% highlight html %} -
- -
Panel heading
- - - - ... -
-
-{% endhighlight %} - - -

With list groups

-

Easily include full-width list groups within any panel.

-
-
- -
Panel heading
-
-

Some default panel content here. Nulla vitae elit libero, a pharetra augue. Aenean lacinia bibendum nulla sed consectetur. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Nullam id dolor id nibh ultricies vehicula ut id elit.

-
- - -
    -
  • Cras justo odio
  • -
  • Dapibus ac facilisis in
  • -
  • Morbi leo risus
  • -
  • Porta ac consectetur ac
  • -
  • Vestibulum at eros
  • -
-
-
-{% highlight html %} -
- -
Panel heading
-
-

...

-
- - -
    -
  • Cras justo odio
  • -
  • Dapibus ac facilisis in
  • -
  • Morbi leo risus
  • -
  • Porta ac consectetur ac
  • -
  • Vestibulum at eros
  • -
-
-{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/progress-bars.html b/src/pretix/static/bootstrap/docs/_includes/components/progress-bars.html deleted file mode 100644 index 68d87e090b..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/progress-bars.html +++ /dev/null @@ -1,209 +0,0 @@ -
-

Progress bars

- -

Provide up-to-date feedback on the progress of a workflow or action with simple yet flexible progress bars.

- -
-

Cross-browser compatibility

-

Progress bars use CSS3 transitions and animations to achieve some of their effects. These features are not supported in Internet Explorer 9 and below or older versions of Firefox. Opera 12 does not support animations.

-
- -

Basic example

-

Default progress bar.

-
-
-
- 60% Complete -
-
-
-{% highlight html %} -
-
- 60% Complete -
-
-{% endhighlight %} - -

With label

-

Remove the <span> with .sr-only class from within the progress bar to show a visible percentage.

-
-
-
- 60% -
-
-
-{% highlight html %} -
-
- 60% -
-
-{% endhighlight %} -

To ensure that the label text remains legible even for low percentages, consider adding a min-width to the progress bar.

-
-
-
- 0% -
-
-
-
- 2% -
-
-
-{% highlight html %} -
-
- 0% -
-
-
-
- 2% -
-
-{% endhighlight %} - - -

Contextual alternatives

-

Progress bars use some of the same button and alert classes for consistent styles.

-
-
-
- 40% Complete (success) -
-
-
-
- 20% Complete -
-
-
-
- 60% Complete (warning) -
-
-
-
- 80% Complete (danger) -
-
-
-{% highlight html %} -
-
- 40% Complete (success) -
-
-
-
- 20% Complete -
-
-
-
- 60% Complete (warning) -
-
-
-
- 80% Complete (danger) -
-
-{% endhighlight %} - -

Striped

-

Uses a gradient to create a striped effect. Not available in IE8.

-
-
-
- 40% Complete (success) -
-
-
-
- 20% Complete -
-
-
-
- 60% Complete (warning) -
-
-
-
- 80% Complete (danger) -
-
-
-{% highlight html %} -
-
- 40% Complete (success) -
-
-
-
- 20% Complete -
-
-
-
- 60% Complete (warning) -
-
-
-
- 80% Complete (danger) -
-
-{% endhighlight %} - -

Animated

-

Add .active to .progress-bar-striped to animate the stripes right to left. Not available in IE9 and below.

-
-
-
45% Complete
-
- -
-{% highlight html %} -
-
- 45% Complete -
-
-{% endhighlight %} - -

Stacked

-

Place multiple bars into the same .progress to stack them.

-
-
-
- 35% Complete (success) -
-
- 20% Complete (warning) -
-
- 10% Complete (danger) -
-
-
-{% highlight html %} -
-
- 35% Complete (success) -
-
- 20% Complete (warning) -
-
- 10% Complete (danger) -
-
-{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/responsive-embed.html b/src/pretix/static/bootstrap/docs/_includes/components/responsive-embed.html deleted file mode 100644 index bb79053ca2..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/responsive-embed.html +++ /dev/null @@ -1,23 +0,0 @@ -
-

Responsive embed

- -

Allow browsers to determine video or slideshow dimensions based on the width of their containing block by creating an intrinsic ratio that will properly scale on any device.

-

Rules are directly applied to <iframe>, <embed>, <video>, and <object> elements; optionally use an explicit descendant class .embed-responsive-item when you want to match the styling for other attributes.

-

Pro-Tip! You don't need to include frameborder="0" in your <iframe>s as we override that for you.

-
-
- -
-
-{% highlight html %} - -
- -
- - -
- -
-{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/thumbnails.html b/src/pretix/static/bootstrap/docs/_includes/components/thumbnails.html deleted file mode 100644 index 530ae50fb6..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/thumbnails.html +++ /dev/null @@ -1,94 +0,0 @@ -
-

Thumbnails

- -

Extend Bootstrap's grid system with the thumbnail component to easily display grids of images, videos, text, and more.

-

If you're looking for Pinterest-like presentation of thumbnails of varying heights and/or widths, you'll need to use a third-party plugin such as Masonry, Isotope, or Salvattore.

- -

Default example

-

By default, Bootstrap's thumbnails are designed to showcase linked images with minimal required markup.

-
-
-
- - Generic placeholder thumbnail - -
-
- - Generic placeholder thumbnail - -
-
- - Generic placeholder thumbnail - -
-
- - Generic placeholder thumbnail - -
-
-
-{% highlight html %} -
-
- - ... - -
- ... -
-{% endhighlight %} - -

Custom content

-

With a bit of extra markup, it's possible to add any kind of HTML content like headings, paragraphs, or buttons into thumbnails.

-
-
-
-
- Generic placeholder thumbnail -
-

Thumbnail label

-

Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

-

Button Button

-
-
-
-
-
- Generic placeholder thumbnail -
-

Thumbnail label

-

Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

-

Button Button

-
-
-
-
-
- Generic placeholder thumbnail -
-

Thumbnail label

-

Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.

-

Button Button

-
-
-
-
-
-{% highlight html %} -
-
-
- ... -
-

Thumbnail label

-

...

-

Button Button

-
-
-
-
-{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/components/wells.html b/src/pretix/static/bootstrap/docs/_includes/components/wells.html deleted file mode 100644 index 53eae2dde0..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/components/wells.html +++ /dev/null @@ -1,33 +0,0 @@ -
-

Wells

- -

Default well

-

Use the well as a simple effect on an element to give it an inset effect.

-
-
- Look, I'm in a well! -
-
-{% highlight html %} -
...
-{% endhighlight %} -

Optional classes

-

Control padding and rounded corners with two optional modifier classes.

-
-
- Look, I'm in a large well! -
-
-{% highlight html %} -
...
-{% endhighlight %} - -
-
- Look, I'm in a small well! -
-
-{% highlight html %} -
...
-{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/css/buttons.html b/src/pretix/static/bootstrap/docs/_includes/css/buttons.html deleted file mode 100644 index 78cd564877..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/css/buttons.html +++ /dev/null @@ -1,189 +0,0 @@ -
-

Buttons

- -

Button tags

-

Use the button classes on an <a>, <button>, or <input> element.

-
- Link - - - -
-{% highlight html %} -Link - - - -{% endhighlight %} - -
-

Context-specific usage

-

While button classes can be used on <a> and <button> elements, only <button> elements are supported within our nav and navbar components.

-
- -
-

Links acting as buttons

-

If the <a> elements are used to act as buttons – triggering in-page functionality, rather than navigating to another document or section within the current page – they should also be given an appropriate role="button".

-
- -
-

Cross-browser rendering

-

As a best practice, we highly recommend using the <button> element whenever possible to ensure matching cross-browser rendering.

-

Among other things, there's a bug in Firefox <30 that prevents us from setting the line-height of <input>-based buttons, causing them to not exactly match the height of other buttons on Firefox.

-
- -

Options

-

Use any of the available button classes to quickly create a styled button.

-
- - - - - - - -
-{% highlight html %} - - - - - - - - - - - - - - - - - - - - -{% endhighlight %} - -
-

Conveying meaning to assistive technologies

-

Using color to add meaning to a button only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (the visible text of the button), or is included through alternative means, such as additional text hidden with the .sr-only class.

-
- -

Sizes

-

Fancy larger or smaller buttons? Add .btn-lg, .btn-sm, or .btn-xs for additional sizes.

-
-

- - -

-

- - -

-

- - -

-

- - -

-
-{% highlight html %} -

- - -

-

- - -

-

- - -

-

- - -

-{% endhighlight %} - -

Create block level buttons—those that span the full width of a parent— by adding .btn-block.

-
-
- - -
-
-{% highlight html %} - - -{% endhighlight %} - - -

Active state

-

Buttons will appear pressed (with a darker background, darker border, and inset shadow) when active. For <button> elements, this is done via :active. For <a> elements, it's done with .active. However, you may use .active on <button>s (and include the aria-pressed="true" attribute) should you need to replicate the active state programmatically.

- -

Button element

-

No need to add :active as it's a pseudo-class, but if you need to force the same appearance, go ahead and add .active.

-

- - -

-{% highlight html %} - - -{% endhighlight %} - -

Anchor element

-

Add the .active class to <a> buttons.

-

- Primary link - Link -

-{% highlight html %} -Primary link -Link -{% endhighlight %} - - -

Disabled state

-

Make buttons look unclickable by fading them back with opacity.

- -

Button element

-

Add the disabled attribute to <button> buttons.

-

- - -

-{% highlight html %} - - -{% endhighlight %} - -
-

Cross-browser compatibility

-

If you add the disabled attribute to a <button>, Internet Explorer 9 and below will render text gray with a nasty text-shadow that we cannot fix.

-
- -

Anchor element

-

Add the .disabled class to <a> buttons.

-

- Primary link - Link -

-{% highlight html %} -Primary link -Link -{% endhighlight %} -

- We use .disabled as a utility class here, similar to the common .active class, so no prefix is required. -

-
-

Link functionality caveat

-

This class uses pointer-events: none to try to disable the link functionality of <a>s, but that CSS property is not yet standardized and isn't fully supported in Opera 18 and below, or in Internet Explorer 11. In addition, even in browsers that do support pointer-events: none, keyboard navigation remains unaffected, meaning that sighted keyboard users and users of assistive technologies will still be able to activate these links. So to be safe, use custom JavaScript to disable such links.

-
- -
diff --git a/src/pretix/static/bootstrap/docs/_includes/css/code.html b/src/pretix/static/bootstrap/docs/_includes/css/code.html deleted file mode 100644 index 02acb12387..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/css/code.html +++ /dev/null @@ -1,52 +0,0 @@ -
-

Code

- -

Inline

-

Wrap inline snippets of code with <code>.

-
- For example, <section> should be wrapped as inline. -
-{% highlight html %} -For example, <section> should be wrapped as inline. -{% endhighlight %} - -

User input

-

Use the <kbd> to indicate input that is typically entered via keyboard.

-
- To switch directories, type cd followed by the name of the directory.
- To edit settings, press ctrl + , -
-{% highlight html %} -To switch directories, type cd followed by the name of the directory.
-To edit settings, press ctrl + , -{% endhighlight %} - -

Basic block

-

Use <pre> for multiple lines of code. Be sure to escape any angle brackets in the code for proper rendering.

-
-
<p>Sample text here...</p>
-
-{% highlight html %} -
<p>Sample text here...</p>
-{% endhighlight %} - -

You may optionally add the .pre-scrollable class, which will set a max-height of 350px and provide a y-axis scrollbar.

-

Variables

-

For indicating variables use the <var> tag.

-
-

y = mx + b

- -
-{% highlight html %} -y = mx + b -{% endhighlight %} - -

Sample output

-

For indicating blocks sample output from a program use the <samp> tag.

-
-

This text is meant to be treated as sample output from a computer program.

-
-{% highlight html %} -This text is meant to be treated as sample output from a computer program. -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/css/forms.html b/src/pretix/static/bootstrap/docs/_includes/css/forms.html deleted file mode 100644 index 614b43f922..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/css/forms.html +++ /dev/null @@ -1,1025 +0,0 @@ -
-

Forms

- -

Basic example

-

Individual form controls automatically receive some global styling. All textual <input>, <textarea>, and <select> elements with .form-control are set to width: 100%; by default. Wrap labels and controls in .form-group for optimum spacing.

-
-
-
- - -
-
- - -
-
- - -

Example block-level help text here.

-
-
- -
- -
-
-{% highlight html %} -
-
- - -
-
- - -
-
- - -

Example block-level help text here.

-
-
- -
- -
-{% endhighlight %} -
-

Don't mix form groups with input groups

-

Do not mix form groups directly with input groups. Instead, nest the input group inside of the form group.

-
- - -

Inline form

-

Add .form-inline to your form (which doesn't have to be a <form>) for left-aligned and inline-block controls. This only applies to forms within viewports that are at least 768px wide.

-
-

May require custom widths

-

Inputs and selects have width: 100%; applied by default in Bootstrap. Within inline forms, we reset that to width: auto; so multiple controls can reside on the same line. Depending on your layout, additional custom widths may be required.

-
-
-

Always add labels

-

Screen readers will have trouble with your forms if you don't include a label for every input. For these inline forms, you can hide the labels using the .sr-only class. There are further alternative methods of providing a label for assistive technologies, such as the aria-label, aria-labelledby or title attribute. If none of these is present, screen readers may resort to using the placeholder attribute, if present, but note that use of placeholder as a replacement for other labelling methods is not advised.

-
- -
-
-
- - -
-
- - -
- -
-
-{% highlight html %} -
-
- - -
-
- - -
- -
-{% endhighlight %} - -
-
-
- - -
-
- - -
-
- -
- -
-
-{% highlight html %} -
-
- - -
-
- - -
-
- -
- -
-{% endhighlight %} - -
-
-
- -
-
$
- -
.00
-
-
- -
-
-{% highlight html %} -
-
- -
-
$
- -
.00
-
-
- -
-{% endhighlight %} - -

Horizontal form

-

Use Bootstrap's predefined grid classes to align labels and groups of form controls in a horizontal layout by adding .form-horizontal to the form (which doesn't have to be a <form>). Doing so changes .form-groups to behave as grid rows, so no need for .row.

-
-
-
- -
- -
-
-
- -
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-{% highlight html %} -
-
- -
- -
-
-
- -
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-{% endhighlight %} - - -

Supported controls

-

Examples of standard form controls supported in an example form layout.

- -

Inputs

-

Most common form control, text-based input fields. Includes support for all HTML5 types: text, password, datetime, datetime-local, date, month, time, week, number, email, url, search, tel, and color.

-
-

Type declaration required

-

Inputs will only be fully styled if their type is properly declared.

-
-
-
- -
-
-{% highlight html %} - -{% endhighlight %} -
-

Input groups

-

To add integrated text or buttons before and/or after any text-based <input>, check out the input group component.

-
- -

Textarea

-

Form control which supports multiple lines of text. Change rows attribute as necessary.

-
-
- -
-
-{% highlight html %} - -{% endhighlight %} - -

Checkboxes and radios

-

Checkboxes are for selecting one or several options in a list, while radios are for selecting one option from many.

-

A checkbox or radio with the disabled attribute will be styled appropriately. To have the <label> for the checkbox or radio also display a "not-allowed" cursor when the user hovers over the label, add the .disabled class to your .radio, .radio-inline, .checkbox, .checkbox-inline, or <fieldset>.

-

Default (stacked)

-
-
-
- -
-
- -
-
-
- -
-
- -
-
- -
-
-
-{% highlight html %} -
- -
-
- -
- -
- -
-
- -
-
- -
-{% endhighlight %} - -

Inline checkboxes and radios

-

Use the .checkbox-inline or .radio-inline classes on a series of checkboxes or radios for controls that appear on the same line.

-
-
- - - -
-
-
- - - -
-
-{% highlight html %} - - - - - - - -{% endhighlight %} - -

Checkboxes and radios without label text

-

Should you have no text within the <label>, the input is positioned as you'd expect. Currently only works on non-inline checkboxes and radios. Remember to still provide some form of label for assistive technologies (for instance, using aria-label).

-
-
-
- -
-
- -
-
-
-{% highlight html %} -
- -
-
- -
-{% endhighlight %} - -

Selects

-

Note that many native select menus—namely in Safari and Chrome—have rounded corners that cannot be modified via border-radius properties.

-
-
- -
-
-{% highlight html %} - -{% endhighlight %} - -

For <select> controls with the multiple attribute, multiple options are shown by default.

- -
-
- -
-
- -{% highlight html %} - -{% endhighlight %} - - -

Static control

-

When you need to place plain text next to a form label within a form, use the .form-control-static class on a <p>.

-
-
-
- -
-

email@example.com

-
-
-
- -
- -
-
-
-
-{% highlight html %} -
-
- -
-

email@example.com

-
-
-
- -
- -
-
-
-{% endhighlight %} -
-
-
- -

email@example.com

-
-
- - -
- -
-
-{% highlight html %} -
-
- -

email@example.com

-
-
- - -
- -
-{% endhighlight %} - -

Focus state

-

We remove the default outline styles on some form controls and apply a box-shadow in its place for :focus.

-
-
- -
-
-
-

Demo :focus state

-

The above example input uses custom styles in our documentation to demonstrate the :focus state on a .form-control.

-
- - -

Disabled state

-

Add the disabled boolean attribute on an input to prevent user input and trigger a slightly different look.

-
-
- -
-
-{% highlight html %} - -{% endhighlight %} - -

Disabled fieldsets

-

Add the disabled attribute to a <fieldset> to disable all the controls within the <fieldset> at once.

- -
-

Caveat about link functionality of <a>

-

By default, browsers will treat all native form controls (<input>, <select> and <button> elements) inside a <fieldset disabled> as disabled, preventing both keyboard and mouse interactions on them. However, if your form also includes <a ... class="btn btn-*"> elements, these will only be given a style of pointer-events: none. As noted in the section about disabled state for buttons (and specifically in the sub-section for anchor elements), this CSS property is not yet standardized and isn't fully supported in Opera 18 and below, or in Internet Explorer 11, and won't prevent keyboard users from being able to focus or activate these links. So to be safe, use custom JavaScript to disable such links.

-
- -
-

Cross-browser compatibility

-

While Bootstrap will apply these styles in all browsers, Internet Explorer 11 and below don't fully support the disabled attribute on a <fieldset>. Use custom JavaScript to disable the fieldset in these browsers.

-
- -
-
-
-
- - -
-
- - -
-
- -
- -
-
-
-{% highlight html %} -
-
-
- - -
-
- - -
-
- -
- -
-
-{% endhighlight %} - - -

Readonly state

-

Add the readonly boolean attribute on an input to prevent user input and style the input as disabled.

-
-
- -
-
-{% highlight html %} - -{% endhighlight %} - - -

Validation states

-

Bootstrap includes validation styles for error, warning, and success states on form controls. To use, add .has-warning, .has-error, or .has-success to the parent element. Any .control-label, .form-control, and .help-block within that element will receive the validation styles.

- -
-

Conveying validation state to assistive technologies

-

Using these validation styles to denote the state of a form control only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers.

-

Ensure that an alternative indication of state is also provided. For instance, you can include a hint about state in the form control's <label> text itself (as is the case in the following code example), or associate an additional element with textual information about the validation state with the form control using aria-describedby (see the example in the following section). In the case of an error, you could also use the aria-invalid="true" attribute on the form control.

-
- -
-
-
- - -
-
- - -
-
- - -
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
-{% highlight html %} -
- - -
-
- - -
-
- - -
-
-
- -
-
-
-
- -
-
-
-
- -
-
-{% endhighlight %} - -

With optional icons

-

You can also add optional feedback icons with the addition of .has-feedback and the right icon.

-

Feedback icons only work with textual <input class="form-control"> elements.

-
-

Icons, labels, and input groups

-

Manual positioning of feedback icons is required for inputs without a label and for input groups with an add-on on the right. You are strongly encouraged to provide labels for all inputs for accessibility reasons. If you wish to prevent labels from being displayed, hide them with the .sr-only class. If you must do without labels, adjust the top value of the feedback icon. For input groups, adjust the right value to an appropriate pixel value depending on the width of your addon.

-
-
-

Conveying the icon's meaning to assistive technologies

-

To ensure that assistive technologies – such as screen readers – correctly convey the meaning of an icon, additional hidden text should be included with the .sr-only class and explicitly associated with the form control it relates to using aria-describedby. Alternatively, ensure that the meaning (for instance, the fact that there is a warning for a particular text entry field) is conveyed in some other form, such as changing the text of the actual <label> associated with the form control.

-

Although the following examples already mention the validation state of their respective form controls in the <label> text itself, the above technique (using .sr-only text and aria-describedby) has been included for illustrative purposes.

-
-
-
-
- - - - (success) -
-
- - - - (warning) -
-
- - - - (error) -
-
- -
- @ - -
- - (success) -
-
-
-{% highlight html %} -
- - - - (success) -
-
- - - - (warning) -
-
- - - - (error) -
-
- -
- @ - -
- - (success) -
-{% endhighlight %} - -

Optional icons in horizontal and inline forms

-
-
-
- -
- - - (success) -
-
-
- -
-
- @ - -
- - (success) -
-
-
-
-{% highlight html %} -
-
- -
- - - (success) -
-
-
- -
-
- @ - -
- - (success) -
-
-
-{% endhighlight %} - -
-
-
- - - - (success) -
-
-
-
-
- -
- @ - -
- - (success) -
-
-
-{% highlight html %} -
-
- - - - (success) -
-
-
-
- -
- @ - -
- - (success) -
-
-{% endhighlight %} - -

Optional icons with hidden .sr-only labels

-

If you use the .sr-only class to hide a form control's <label> (rather than using other labelling options, such as the aria-label attribute), Bootstrap will automatically adjust the position of the icon once it's been added.

-
-
- - - - (success) -
-
- -
- @ - -
- - (success) -
-
-{% highlight html %} -
- - - - (success) -
-
- -
- @ - -
- - (success) -
-{% endhighlight %} - - -

Control sizing

-

Set heights using classes like .input-lg, and set widths using grid column classes like .col-lg-*.

- -

Height sizing

-

Create taller or shorter form controls that match button sizes.

-
-
-
- - - - - - - -
-
-
-{% highlight html %} - - - - - - - -{% endhighlight %} - -

Horizontal form group sizes

-

Quickly size labels and form controls within .form-horizontal by adding .form-group-lg or .form-group-sm.

-
-
-
- -
- -
-
-
- -
- -
-
-
-
-{% highlight html %} -
-
- -
- -
-
-
- -
- -
-
-
-{% endhighlight %} - - -

Column sizing

-

Wrap inputs in grid columns, or any custom parent element, to easily enforce desired widths.

-
-
-
-
- -
-
- -
-
- -
-
-
-
-{% highlight html %} -
-
- -
-
- -
-
- -
-
-{% endhighlight %} - -

Help text

-

Block level help text for form controls.

-
-

Associating help text with form controls

-

Help text should be explicitly associated with the form control it relates to using the aria-describedby attribute. This will ensure that assistive technologies – such as screen readers – will announce this help text when the user focuses or enters the control.

-
-
-
-
- - -
- A block of help text that breaks onto a new line and may extend beyond one line. -
-
-{% highlight html %} - - -... -A block of help text that breaks onto a new line and may extend beyond one line. -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/css/grid.html b/src/pretix/static/bootstrap/docs/_includes/css/grid.html deleted file mode 100644 index a6a4eaacb5..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/css/grid.html +++ /dev/null @@ -1,561 +0,0 @@ -
-

Grid system

- -

Bootstrap includes a responsive, mobile first fluid grid system that appropriately scales up to 12 columns as the device or viewport size increases. It includes predefined classes for easy layout options, as well as powerful mixins for generating more semantic layouts.

- -

Introduction

-

Grid systems are used for creating page layouts through a series of rows and columns that house your content. Here's how the Bootstrap grid system works:

-
    -
  • Rows must be placed within a .container (fixed-width) or .container-fluid (full-width) for proper alignment and padding.
  • -
  • Use rows to create horizontal groups of columns.
  • -
  • Content should be placed within columns, and only columns may be immediate children of rows.
  • -
  • Predefined grid classes like .row and .col-xs-4 are available for quickly making grid layouts. Less mixins can also be used for more semantic layouts.
  • -
  • Columns create gutters (gaps between column content) via padding. That padding is offset in rows for the first and last column via negative margin on .rows.
  • -
  • The negative margin is why the examples below are outdented. It's so that content within grid columns is lined up with non-grid content.
  • -
  • Grid columns are created by specifying the number of twelve available columns you wish to span. For example, three equal columns would use three .col-xs-4.
  • -
  • If more than 12 columns are placed within a single row, each group of extra columns will, as one unit, wrap onto a new line.
  • -
  • Grid classes apply to devices with screen widths greater than or equal to the breakpoint sizes, and override grid classes targeted at smaller devices. Therefore, e.g. applying any .col-md-* class to an element will not only affect its styling on medium devices but also on large devices if a .col-lg-* class is not present.
  • -
-

Look to the examples for applying these principles to your code.

- -

Media queries

-

We use the following media queries in our Less files to create the key breakpoints in our grid system.

-{% highlight scss %} -/* Extra small devices (phones, less than 768px) */ -/* No media query since this is the default in Bootstrap */ - -/* Small devices (tablets, 768px and up) */ -@media (min-width: @screen-sm-min) { ... } - -/* Medium devices (desktops, 992px and up) */ -@media (min-width: @screen-md-min) { ... } - -/* Large devices (large desktops, 1200px and up) */ -@media (min-width: @screen-lg-min) { ... } -{% endhighlight %} -

We occasionally expand on these media queries to include a max-width to limit CSS to a narrower set of devices.

-{% highlight scss %} -@media (max-width: @screen-xs-max) { ... } -@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { ... } -@media (min-width: @screen-md-min) and (max-width: @screen-md-max) { ... } -@media (min-width: @screen-lg-min) { ... } -{% endhighlight %} - -

Grid options

-

See how aspects of the Bootstrap grid system work across multiple devices with a handy table.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Extra small devices - Phones (<768px) - - Small devices - Tablets (≥768px) - - Medium devices - Desktops (≥992px) - - Large devices - Desktops (≥1200px) -
Grid behaviorHorizontal at all timesCollapsed to start, horizontal above breakpoints
Container widthNone (auto)750px970px1170px
Class prefix.col-xs-.col-sm-.col-md-.col-lg-
# of columns12
Column widthAuto~62px~81px~97px
Gutter width30px (15px on each side of a column)
NestableYes
OffsetsYes
Column orderingYes
-
- -

Example: Stacked-to-horizontal

-

Using a single set of .col-md-* grid classes, you can create a basic grid system that starts out stacked on mobile devices and tablet devices (the extra small to small range) before becoming horizontal on desktop (medium) devices. Place grid columns in any .row.

-
-
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
-
-
.col-md-8
-
.col-md-4
-
-
-
.col-md-4
-
.col-md-4
-
.col-md-4
-
-
-
.col-md-6
-
.col-md-6
-
-
-{% highlight html %} -
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
.col-md-1
-
-
-
.col-md-8
-
.col-md-4
-
-
-
.col-md-4
-
.col-md-4
-
.col-md-4
-
-
-
.col-md-6
-
.col-md-6
-
-{% endhighlight %} - -

Example: Fluid container

-

Turn any fixed-width grid layout into a full-width layout by changing your outermost .container to .container-fluid.

-{% highlight html %} -
-
- ... -
-
-{% endhighlight %} - -

Example: Mobile and desktop

-

Don't want your columns to simply stack in smaller devices? Use the extra small and medium device grid classes by adding .col-xs-* .col-md-* to your columns. See the example below for a better idea of how it all works.

-
-
-
.col-xs-12 .col-md-8
-
.col-xs-6 .col-md-4
-
-
-
.col-xs-6 .col-md-4
-
.col-xs-6 .col-md-4
-
.col-xs-6 .col-md-4
-
-
-
.col-xs-6
-
.col-xs-6
-
-
-{% highlight html %} - -
-
.col-xs-12 .col-md-8
-
.col-xs-6 .col-md-4
-
- - -
-
.col-xs-6 .col-md-4
-
.col-xs-6 .col-md-4
-
.col-xs-6 .col-md-4
-
- - -
-
.col-xs-6
-
.col-xs-6
-
-{% endhighlight %} - -

Example: Mobile, tablet, desktop

-

Build on the previous example by creating even more dynamic and powerful layouts with tablet .col-sm-* classes.

-
-
-
.col-xs-12 .col-sm-6 .col-md-8
-
.col-xs-6 .col-md-4
-
-
-
.col-xs-6 .col-sm-4
-
.col-xs-6 .col-sm-4
- -
-
.col-xs-6 .col-sm-4
-
-
-{% highlight html %} -
-
.col-xs-12 .col-sm-6 .col-md-8
-
.col-xs-6 .col-md-4
-
-
-
.col-xs-6 .col-sm-4
-
.col-xs-6 .col-sm-4
- -
-
.col-xs-6 .col-sm-4
-
-{% endhighlight %} - -

Example: Column wrapping

-

If more than 12 columns are placed within a single row, each group of extra columns will, as one unit, wrap onto a new line.

-
-
-
.col-xs-9
-
.col-xs-4
Since 9 + 4 = 13 > 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.
-
.col-xs-6
Subsequent columns continue along the new line.
-
-
-{% highlight html %} -
-
.col-xs-9
-
.col-xs-4
Since 9 + 4 = 13 > 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.
-
.col-xs-6
Subsequent columns continue along the new line.
-
-{% endhighlight %} - -

Responsive column resets

-

With the four tiers of grids available you're bound to run into issues where, at certain breakpoints, your columns don't clear quite right as one is taller than the other. To fix that, use a combination of a .clearfix and our responsive utility classes.

-
-
-
- .col-xs-6 .col-sm-3 -
- Resize your viewport or check it out on your phone for an example. -
-
.col-xs-6 .col-sm-3
- - -
- -
.col-xs-6 .col-sm-3
-
.col-xs-6 .col-sm-3
-
-
-{% highlight html %} -
-
.col-xs-6 .col-sm-3
-
.col-xs-6 .col-sm-3
- - -
- -
.col-xs-6 .col-sm-3
-
.col-xs-6 .col-sm-3
-
-{% endhighlight %} -

In addition to column clearing at responsive breakpoints, you may need to reset offsets, pushes, or pulls. See this in action in the grid example.

-{% highlight html %} -
-
.col-sm-5 .col-md-6
-
.col-sm-5 .col-sm-offset-2 .col-md-6 .col-md-offset-0
-
- -
-
.col-sm-6 .col-md-5 .col-lg-6
-
.col-sm-6 .col-md-5 .col-md-offset-2 .col-lg-6 .col-lg-offset-0
-
-{% endhighlight %} - - -

Offsetting columns

-

Move columns to the right using .col-md-offset-* classes. These classes increase the left margin of a column by * columns. For example, .col-md-offset-4 moves .col-md-4 over four columns.

-
-
-
.col-md-4
-
.col-md-4 .col-md-offset-4
-
-
-
.col-md-3 .col-md-offset-3
-
.col-md-3 .col-md-offset-3
-
-
-
.col-md-6 .col-md-offset-3
-
-
-{% highlight html %} -
-
.col-md-4
-
.col-md-4 .col-md-offset-4
-
-
-
.col-md-3 .col-md-offset-3
-
.col-md-3 .col-md-offset-3
-
-
-
.col-md-6 .col-md-offset-3
-
-{% endhighlight %} - - -

Nesting columns

-

To nest your content with the default grid, add a new .row and set of .col-sm-* columns within an existing .col-sm-* column. Nested rows should include a set of columns that add up to 12 or fewer (it is not required that you use all 12 available columns).

-
-
- Level 1: .col-sm-9 -
-
- Level 2: .col-xs-8 .col-sm-6 -
-
- Level 2: .col-xs-4 .col-sm-6 -
-
-
-
-{% highlight html %} -
-
- Level 1: .col-sm-9 -
-
- Level 2: .col-xs-8 .col-sm-6 -
-
- Level 2: .col-xs-4 .col-sm-6 -
-
-
-
-{% endhighlight %} - -

Column ordering

-

Easily change the order of our built-in grid columns with .col-md-push-* and .col-md-pull-* modifier classes.

-
-
.col-md-9 .col-md-push-3
-
.col-md-3 .col-md-pull-9
-
- -{% highlight html %} -
-
.col-md-9 .col-md-push-3
-
.col-md-3 .col-md-pull-9
-
-{% endhighlight %} - -

Less mixins and variables

-

In addition to prebuilt grid classes for fast layouts, Bootstrap includes Less variables and mixins for quickly generating your own simple, semantic layouts.

- -

Variables

-

Variables determine the number of columns, the gutter width, and the media query point at which to begin floating columns. We use these to generate the predefined grid classes documented above, as well as for the custom mixins listed below.

-{% highlight scss %} -@grid-columns: 12; -@grid-gutter-width: 30px; -@grid-float-breakpoint: 768px; -{% endhighlight %} - -

Mixins

-

Mixins are used in conjunction with the grid variables to generate semantic CSS for individual grid columns.

-{% highlight scss %} -// Creates a wrapper for a series of columns -.make-row(@gutter: @grid-gutter-width) { - // Then clear the floated columns - .clearfix(); - - @media (min-width: @screen-sm-min) { - margin-left: (@gutter / -2); - margin-right: (@gutter / -2); - } - - // Negative margin nested rows out to align the content of columns - .row { - margin-left: (@gutter / -2); - margin-right: (@gutter / -2); - } -} - -// Generate the extra small columns -.make-xs-column(@columns; @gutter: @grid-gutter-width) { - position: relative; - // Prevent columns from collapsing when empty - min-height: 1px; - // Inner gutter via padding - padding-left: (@gutter / 2); - padding-right: (@gutter / 2); - - // Calculate width based on number of columns available - @media (min-width: @grid-float-breakpoint) { - float: left; - width: percentage((@columns / @grid-columns)); - } -} - -// Generate the small columns -.make-sm-column(@columns; @gutter: @grid-gutter-width) { - position: relative; - // Prevent columns from collapsing when empty - min-height: 1px; - // Inner gutter via padding - padding-left: (@gutter / 2); - padding-right: (@gutter / 2); - - // Calculate width based on number of columns available - @media (min-width: @screen-sm-min) { - float: left; - width: percentage((@columns / @grid-columns)); - } -} - -// Generate the small column offsets -.make-sm-column-offset(@columns) { - @media (min-width: @screen-sm-min) { - margin-left: percentage((@columns / @grid-columns)); - } -} -.make-sm-column-push(@columns) { - @media (min-width: @screen-sm-min) { - left: percentage((@columns / @grid-columns)); - } -} -.make-sm-column-pull(@columns) { - @media (min-width: @screen-sm-min) { - right: percentage((@columns / @grid-columns)); - } -} - -// Generate the medium columns -.make-md-column(@columns; @gutter: @grid-gutter-width) { - position: relative; - // Prevent columns from collapsing when empty - min-height: 1px; - // Inner gutter via padding - padding-left: (@gutter / 2); - padding-right: (@gutter / 2); - - // Calculate width based on number of columns available - @media (min-width: @screen-md-min) { - float: left; - width: percentage((@columns / @grid-columns)); - } -} - -// Generate the medium column offsets -.make-md-column-offset(@columns) { - @media (min-width: @screen-md-min) { - margin-left: percentage((@columns / @grid-columns)); - } -} -.make-md-column-push(@columns) { - @media (min-width: @screen-md-min) { - left: percentage((@columns / @grid-columns)); - } -} -.make-md-column-pull(@columns) { - @media (min-width: @screen-md-min) { - right: percentage((@columns / @grid-columns)); - } -} - -// Generate the large columns -.make-lg-column(@columns; @gutter: @grid-gutter-width) { - position: relative; - // Prevent columns from collapsing when empty - min-height: 1px; - // Inner gutter via padding - padding-left: (@gutter / 2); - padding-right: (@gutter / 2); - - // Calculate width based on number of columns available - @media (min-width: @screen-lg-min) { - float: left; - width: percentage((@columns / @grid-columns)); - } -} - -// Generate the large column offsets -.make-lg-column-offset(@columns) { - @media (min-width: @screen-lg-min) { - margin-left: percentage((@columns / @grid-columns)); - } -} -.make-lg-column-push(@columns) { - @media (min-width: @screen-lg-min) { - left: percentage((@columns / @grid-columns)); - } -} -.make-lg-column-pull(@columns) { - @media (min-width: @screen-lg-min) { - right: percentage((@columns / @grid-columns)); - } -} -{% endhighlight %} - -

Example usage

-

You can modify the variables to your own custom values, or just use the mixins with their default values. Here's an example of using the default settings to create a two-column layout with a gap between.

-{% highlight scss %} -.wrapper { - .make-row(); -} -.content-main { - .make-lg-column(8); -} -.content-secondary { - .make-lg-column(3); - .make-lg-column-offset(1); -} -{% endhighlight %} -{% highlight html %} -
-
...
-
...
-
-{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/css/helpers.html b/src/pretix/static/bootstrap/docs/_includes/css/helpers.html deleted file mode 100644 index db60f0ad81..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/css/helpers.html +++ /dev/null @@ -1,208 +0,0 @@ -
-

Helper classes

- -

Contextual colors

-

Convey meaning through color with a handful of emphasis utility classes. These may also be applied to links and will darken on hover just like our default link styles.

-
-

Fusce dapibus, tellus ac cursus commodo, tortor mauris nibh.

-

Nullam id dolor id nibh ultricies vehicula ut id elit.

-

Duis mollis, est non commodo luctus, nisi erat porttitor ligula.

-

Maecenas sed diam eget risus varius blandit sit amet non magna.

-

Etiam porta sem malesuada magna mollis euismod.

-

Donec ullamcorper nulla non metus auctor fringilla.

-
-{% highlight html %} -

...

-

...

-

...

-

...

-

...

-

...

-{% endhighlight %} -
-

Dealing with specificity

-

Sometimes emphasis classes cannot be applied due to the specificity of another selector. In most cases, a sufficient workaround is to wrap your text in a <span> with the class.

-
-
-

Conveying meaning to assistive technologies

-

Using color to add meaning only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (the contextual colors are only used to reinforce meaning that is already present in the text/markup), or is included through alternative means, such as additional text hidden with the .sr-only class.

-
- -

Contextual backgrounds

-

Similar to the contextual text color classes, easily set the background of an element to any contextual class. Anchor components will darken on hover, just like the text classes.

-
-

Nullam id dolor id nibh ultricies vehicula ut id elit.

-

Duis mollis, est non commodo luctus, nisi erat porttitor ligula.

-

Maecenas sed diam eget risus varius blandit sit amet non magna.

-

Etiam porta sem malesuada magna mollis euismod.

-

Donec ullamcorper nulla non metus auctor fringilla.

-
-{% highlight html %} -

...

-

...

-

...

-

...

-

...

-{% endhighlight %} -
-

Dealing with specificity

-

Sometimes contextual background classes cannot be applied due to the specificity of another selector. In some cases, a sufficient workaround is to wrap your element's content in a <div> with the class.

-
-
-

Conveying meaning to assistive technologies

-

As with contextual colors, ensure that any meaning conveyed through color is also conveyed in a format that is not purely presentational.

-
- -

Close icon

-

Use the generic close icon for dismissing content like modals and alerts.

-
-

-
-{% highlight html %} - -{% endhighlight %} - - -

Carets

-

Use carets to indicate dropdown functionality and direction. Note that the default caret will reverse automatically in dropup menus.

-
- -
-{% highlight html %} - -{% endhighlight %} - - -

Quick floats

-

Float an element to the left or right with a class. !important is included to avoid specificity issues. Classes can also be used as mixins.

-{% highlight html %} -
...
-
...
-{% endhighlight %} -{% highlight scss %} -// Classes -.pull-left { - float: left !important; -} -.pull-right { - float: right !important; -} - -// Usage as mixins -.element { - .pull-left(); -} -.another-element { - .pull-right(); -} -{% endhighlight %} - -
-

Not for use in navbars

-

To align components in navbars with utility classes, use .navbar-left or .navbar-right instead. See the navbar docs for details.

-
- - -

Center content blocks

-

Set an element to display: block and center via margin. Available as a mixin and class.

-{% highlight html %} -
...
-{% endhighlight %} -{% highlight scss %} -// Classes -.center-block { - display: block; - margin-left: auto; - margin-right: auto; -} - -// Usage as mixins -.element { - .center-block(); -} -{% endhighlight %} - - -

Clearfix

-

Easily clear floats by adding .clearfix to the parent element. Utilizes the micro clearfix as popularized by Nicolas Gallagher. Can also be used as a mixin.

-{% highlight html %} - -
...
-{% endhighlight %} -{% highlight scss %} -// Mixin itself -.clearfix() { - &:before, - &:after { - content: " "; - display: table; - } - &:after { - clear: both; - } -} - -// Usage as a Mixin -.element { - .clearfix(); -} -{% endhighlight %} - - -

Showing and hiding content

-

Force an element to be shown or hidden (including for screen readers) with the use of .show and .hidden classes. These classes use !important to avoid specificity conflicts, just like the quick floats. They are only available for block level toggling. They can also be used as mixins.

-

.hide is available, but it does not always affect screen readers and is deprecated as of v3.0.1. Use .hidden or .sr-only instead.

-

Furthermore, .invisible can be used to toggle only the visibility of an element, meaning its display is not modified and the element can still affect the flow of the document.

-{% highlight html %} -
...
- -{% endhighlight %} -{% highlight scss %} -// Classes -.show { - display: block !important; -} -.hidden { - display: none !important; - visibility: hidden !important; -} -.invisible { - visibility: hidden; -} - -// Usage as mixins -.element { - .show(); -} -.another-element { - .hidden(); -} -{% endhighlight %} - - -

Screen reader and keyboard navigation content

-

Hide an element to all devices except screen readers with .sr-only. Combine .sr-only with .sr-only-focusable to show the element again when it's focused (e.g. by a keyboard-only user). Necessary for following accessibility best practices. Can also be used as mixins.

-{% highlight html %} -Skip to main content -{% endhighlight %} -{% highlight scss %} -// Usage as a Mixin -.skip-navigation { - .sr-only(); - .sr-only-focusable(); -} -{% endhighlight %} - - -

Image replacement

-

Utilize the .text-hide class or mixin to help replace an element's text content with a background image.

-{% highlight html %} -

Custom heading

-{% endhighlight %} - {% highlight scss %} -// Usage as a Mixin -.heading { - .text-hide(); -} -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/css/images.html b/src/pretix/static/bootstrap/docs/_includes/css/images.html deleted file mode 100644 index 73516afbae..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/css/images.html +++ /dev/null @@ -1,30 +0,0 @@ -
-

Images

- -

Responsive images

-

Images in Bootstrap 3 can be made responsive-friendly via the addition of the .img-responsive class. This applies max-width: 100%; and height: auto; to the image so that it scales nicely to the parent element.

-
-

SVG images and IE 8-10

-

In Internet Explorer 8-10, SVG images with .img-responsive are disproportionately sized. To fix this, add width: 100% \9; where necessary. Bootstrap doesn't apply this automatically as it causes complications to other image formats.

-
-{% highlight html %} -Responsive image -{% endhighlight %} - -

Image shapes

-

Add classes to an <img> element to easily style images in any project.

-
-

Cross-browser compatibility

-

Keep in mind that Internet Explorer 8 lacks support for rounded corners.

-
-
- A generic square placeholder image with rounded corners - A generic square placeholder image where only the portion within the circle circumscribed about said square is visible - A generic square placeholder image with a white border around it, making it resemble a photograph taken with an old instant camera -
-{% highlight html %} -... -... -... -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/css/less.html b/src/pretix/static/bootstrap/docs/_includes/css/less.html deleted file mode 100644 index a750286517..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/css/less.html +++ /dev/null @@ -1,499 +0,0 @@ -
-

Using Less

- -

Bootstrap's CSS is built on Less, a preprocessor with additional functionality like variables, mixins, and functions for compiling CSS. Those looking to use the source Less files instead of our compiled CSS files can make use of the numerous variables and mixins we use throughout the framework.

- -

Grid variables and mixins are covered within the Grid system section.

- - -

Compiling Bootstrap

-

Bootstrap can be used in at least two ways: with the compiled CSS or with the source Less files. To compile the Less files, consult the Getting Started section for how to setup your development environment to run the necessary commands.

-

Third party compilation tools may work with Bootstrap, but they are not supported by our core team.

- -

Variables

-

Variables are used throughout the entire project as a way to centralize and share commonly used values like colors, spacing, or font stacks. For a complete breakdown, please see the Customizer.

- -

Colors

-

Easily make use of two color schemes: grayscale and semantic. Grayscale colors provide quick access to commonly used shades of black while semantic include various colors assigned to meaningful contextual values.

-
-
-
-
-
-
-
-
-
-{% highlight scss %} -@gray-darker: lighten(#000, 13.5%); // #222 -@gray-dark: lighten(#000, 20%); // #333 -@gray: lighten(#000, 33.5%); // #555 -@gray-light: lighten(#000, 46.7%); // #777 -@gray-lighter: lighten(#000, 93.5%); // #eee -{% endhighlight %} - -
-
-
-
-
-
-
-
-
-{% highlight scss %} -@brand-primary: darken(#428bca, 6.5%); // #337ab7 -@brand-success: #5cb85c; -@brand-info: #5bc0de; -@brand-warning: #f0ad4e; -@brand-danger: #d9534f; -{% endhighlight %} - -

Use any of these color variables as they are or reassign them to more meaningful variables for your project.

-{% highlight scss %} -// Use as-is -.masthead { - background-color: @brand-primary; -} - -// Reassigned variables in Less -@alert-message-background: @brand-info; -.alert { - background-color: @alert-message-background; -} -{% endhighlight %} - -

Scaffolding

-

A handful of variables for quickly customizing key elements of your site's skeleton.

-{% highlight scss %} -// Scaffolding -@body-bg: #fff; -@text-color: @black-50; -{% endhighlight %} - - -

Easily style your links with the right color with only one value.

-{% highlight scss %} -// Variables -@link-color: @brand-primary; -@link-hover-color: darken(@link-color, 15%); - -// Usage -a { - color: @link-color; - text-decoration: none; - - &:hover { - color: @link-hover-color; - text-decoration: underline; - } -} -{% endhighlight %} -

Note that the @link-hover-color uses a function, another awesome tool from Less, to automagically create the right hover color. You can use darken, lighten, saturate, and desaturate.

- -

Typography

-

Easily set your type face, text size, leading, and more with a few quick variables. Bootstrap makes use of these as well to provide easy typographic mixins.

-{% highlight scss %} -@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif; -@font-family-serif: Georgia, "Times New Roman", Times, serif; -@font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace; -@font-family-base: @font-family-sans-serif; - -@font-size-base: 14px; -@font-size-large: ceil((@font-size-base * 1.25)); // ~18px -@font-size-small: ceil((@font-size-base * 0.85)); // ~12px - -@font-size-h1: floor((@font-size-base * 2.6)); // ~36px -@font-size-h2: floor((@font-size-base * 2.15)); // ~30px -@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px -@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px -@font-size-h5: @font-size-base; -@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px - -@line-height-base: 1.428571429; // 20/14 -@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px - -@headings-font-family: inherit; -@headings-font-weight: 500; -@headings-line-height: 1.1; -@headings-color: inherit; -{% endhighlight %} - -

Icons

-

Two quick variables for customizing the location and filename of your icons.

-{% highlight scss %} -@icon-font-path: "../fonts/"; -@icon-font-name: "glyphicons-halflings-regular"; -{% endhighlight %} - -

Components

-

Components throughout Bootstrap make use of some default variables for setting common values. Here are the most commonly used.

-{% highlight scss %} -@padding-base-vertical: 6px; -@padding-base-horizontal: 12px; - -@padding-large-vertical: 10px; -@padding-large-horizontal: 16px; - -@padding-small-vertical: 5px; -@padding-small-horizontal: 10px; - -@padding-xs-vertical: 1px; -@padding-xs-horizontal: 5px; - -@line-height-large: 1.33; -@line-height-small: 1.5; - -@border-radius-base: 4px; -@border-radius-large: 6px; -@border-radius-small: 3px; - -@component-active-color: #fff; -@component-active-bg: @brand-primary; - -@caret-width-base: 4px; -@caret-width-large: 5px; -{% endhighlight %} - - -

Vendor mixins

-

Vendor mixins are mixins to help support multiple browsers by including all relevant vendor prefixes in your compiled CSS.

- - -

Box-sizing

-

Reset your components' box model with a single mixin. For context, see this helpful article from Mozilla.

-

The mixin is deprecated as of v3.2.0, with the introduction of autoprefixer. To preserve backwards-compatibility, Bootstrap will continue to use the mixin internally until Bootstrap v4.

-{% highlight scss %} -.box-sizing(@box-model) { - -webkit-box-sizing: @box-model; // Safari <= 5 - -moz-box-sizing: @box-model; // Firefox <= 19 - box-sizing: @box-model; -} -{% endhighlight %} - -

Rounded corners

-

Today all modern browsers support the non-prefixed border-radius property. As such, there is no .border-radius() mixin, but Bootstrap does include shortcuts for quickly rounding two corners on a particular side of an object.

-{% highlight scss %} -.border-top-radius(@radius) { - border-top-right-radius: @radius; - border-top-left-radius: @radius; -} -.border-right-radius(@radius) { - border-bottom-right-radius: @radius; - border-top-right-radius: @radius; -} -.border-bottom-radius(@radius) { - border-bottom-right-radius: @radius; - border-bottom-left-radius: @radius; -} -.border-left-radius(@radius) { - border-bottom-left-radius: @radius; - border-top-left-radius: @radius; -} -{% endhighlight %} - -

Box (Drop) shadows

-

If your target audience is using the latest and greatest browsers and devices, be sure to just use the box-shadow property on its own. If you need support for older Android (pre-v4) and iOS devices (pre-iOS 5), use the deprecated mixin to pick up the required -webkit prefix.

-

The mixin is deprecated as of v3.1.0, since Bootstrap doesn't officially support the outdated platforms that don't support the standard property. To preserve backwards-compatibility, Bootstrap will continue to use the mixin internally until Bootstrap v4.

-

Be sure to use rgba() colors in your box shadows so they blend as seamlessly as possible with backgrounds.

-{% highlight scss %} -.box-shadow(@shadow: 0 1px 3px rgba(0,0,0,.25)) { - -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1 - box-shadow: @shadow; -} -{% endhighlight %} - -

Transitions

-

Multiple mixins for flexibility. Set all transition information with one, or specify a separate delay and duration as needed.

-

The mixins are deprecated as of v3.2.0, with the introduction of autoprefixer. To preserve backwards-compatibility, Bootstrap will continue to use the mixins internally until Bootstrap v4.

-{% highlight scss %} -.transition(@transition) { - -webkit-transition: @transition; - transition: @transition; -} -.transition-property(@transition-property) { - -webkit-transition-property: @transition-property; - transition-property: @transition-property; -} -.transition-delay(@transition-delay) { - -webkit-transition-delay: @transition-delay; - transition-delay: @transition-delay; -} -.transition-duration(@transition-duration) { - -webkit-transition-duration: @transition-duration; - transition-duration: @transition-duration; -} -.transition-timing-function(@timing-function) { - -webkit-transition-timing-function: @timing-function; - transition-timing-function: @timing-function; -} -.transition-transform(@transition) { - -webkit-transition: -webkit-transform @transition; - -moz-transition: -moz-transform @transition; - -o-transition: -o-transform @transition; - transition: transform @transition; -} -{% endhighlight %} - -

Transformations

-

Rotate, scale, translate (move), or skew any object.

-

The mixins are deprecated as of v3.2.0, with the introduction of autoprefixer. To preserve backwards-compatibility, Bootstrap will continue to use the mixins internally until Bootstrap v4.

-{% highlight scss %} -.rotate(@degrees) { - -webkit-transform: rotate(@degrees); - -ms-transform: rotate(@degrees); // IE9 only - transform: rotate(@degrees); -} -.scale(@ratio; @ratio-y...) { - -webkit-transform: scale(@ratio, @ratio-y); - -ms-transform: scale(@ratio, @ratio-y); // IE9 only - transform: scale(@ratio, @ratio-y); -} -.translate(@x; @y) { - -webkit-transform: translate(@x, @y); - -ms-transform: translate(@x, @y); // IE9 only - transform: translate(@x, @y); -} -.skew(@x; @y) { - -webkit-transform: skew(@x, @y); - -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+ - transform: skew(@x, @y); -} -.translate3d(@x; @y; @z) { - -webkit-transform: translate3d(@x, @y, @z); - transform: translate3d(@x, @y, @z); -} - -.rotateX(@degrees) { - -webkit-transform: rotateX(@degrees); - -ms-transform: rotateX(@degrees); // IE9 only - transform: rotateX(@degrees); -} -.rotateY(@degrees) { - -webkit-transform: rotateY(@degrees); - -ms-transform: rotateY(@degrees); // IE9 only - transform: rotateY(@degrees); -} -.perspective(@perspective) { - -webkit-perspective: @perspective; - -moz-perspective: @perspective; - perspective: @perspective; -} -.perspective-origin(@perspective) { - -webkit-perspective-origin: @perspective; - -moz-perspective-origin: @perspective; - perspective-origin: @perspective; -} -.transform-origin(@origin) { - -webkit-transform-origin: @origin; - -moz-transform-origin: @origin; - -ms-transform-origin: @origin; // IE9 only - transform-origin: @origin; -} -{% endhighlight %} - -

Animations

-

A single mixin for using all of CSS3's animation properties in one declaration and other mixins for individual properties.

-

The mixins are deprecated as of v3.2.0, with the introduction of autoprefixer. To preserve backwards-compatibility, Bootstrap will continue to use the mixins internally until Bootstrap v4.

-{% highlight scss %} -.animation(@animation) { - -webkit-animation: @animation; - animation: @animation; -} -.animation-name(@name) { - -webkit-animation-name: @name; - animation-name: @name; -} -.animation-duration(@duration) { - -webkit-animation-duration: @duration; - animation-duration: @duration; -} -.animation-timing-function(@timing-function) { - -webkit-animation-timing-function: @timing-function; - animation-timing-function: @timing-function; -} -.animation-delay(@delay) { - -webkit-animation-delay: @delay; - animation-delay: @delay; -} -.animation-iteration-count(@iteration-count) { - -webkit-animation-iteration-count: @iteration-count; - animation-iteration-count: @iteration-count; -} -.animation-direction(@direction) { - -webkit-animation-direction: @direction; - animation-direction: @direction; -} -{% endhighlight %} - -

Opacity

-

Set the opacity for all browsers and provide a filter fallback for IE8.

-{% highlight scss %} -.opacity(@opacity) { - opacity: @opacity; - // IE8 filter - @opacity-ie: (@opacity * 100); - filter: ~"alpha(opacity=@{opacity-ie})"; -} -{% endhighlight %} - -

Placeholder text

-

Provide context for form controls within each field.

-{% highlight scss %} -.placeholder(@color: @input-color-placeholder) { - &::-moz-placeholder { color: @color; } // Firefox - &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+ - &::-webkit-input-placeholder { color: @color; } // Safari and Chrome -} -{% endhighlight %} - -

Columns

-

Generate columns via CSS within a single element.

-{% highlight scss %} -.content-columns(@width; @count; @gap) { - -webkit-column-width: @width; - -moz-column-width: @width; - column-width: @width; - -webkit-column-count: @count; - -moz-column-count: @count; - column-count: @count; - -webkit-column-gap: @gap; - -moz-column-gap: @gap; - column-gap: @gap; -} -{% endhighlight %} - -

Gradients

-

Easily turn any two colors into a background gradient. Get more advanced and set a direction, use three colors, or use a radial gradient. With a single mixin you get all the prefixed syntaxes you'll need.

-{% highlight scss %} -#gradient > .vertical(#333; #000); -#gradient > .horizontal(#333; #000); -#gradient > .radial(#333; #000); -{% endhighlight %} -

You can also specify the angle of a standard two-color, linear gradient:

-{% highlight scss %} -#gradient > .directional(#333; #000; 45deg); -{% endhighlight %} -

If you need a barber-stripe style gradient, that's easy, too. Just specify a single color and we'll overlay a translucent white stripe.

-{% highlight scss %} -#gradient > .striped(#333; 45deg); -{% endhighlight %} -

Up the ante and use three colors instead. Set the first color, the second color, the second color's color stop (a percentage value like 25%), and the third color with these mixins:

-{% highlight scss %} -#gradient > .vertical-three-colors(#777; #333; 25%; #000); -#gradient > .horizontal-three-colors(#777; #333; 25%; #000); -{% endhighlight %} -

Heads up! Should you ever need to remove a gradient, be sure to remove any IE-specific filter you may have added. You can do that by using the .reset-filter() mixin alongside background-image: none;.

- - -

Utility mixins

-

Utility mixins are mixins that combine otherwise unrelated CSS properties to achieve a specific goal or task.

- -

Clearfix

-

Forget adding class="clearfix" to any element and instead add the .clearfix() mixin where appropriate. Uses the micro clearfix from Nicolas Gallagher.

-{% highlight scss %} -// Mixin -.clearfix() { - &:before, - &:after { - content: " "; - display: table; - } - &:after { - clear: both; - } -} - -// Usage -.container { - .clearfix(); -} -{% endhighlight %} - -

Horizontal centering

-

Quickly center any element within its parent. Requires width or max-width to be set.

-{% highlight scss %} -// Mixin -.center-block() { - display: block; - margin-left: auto; - margin-right: auto; -} - -// Usage -.container { - width: 940px; - .center-block(); -} -{% endhighlight %} - -

Sizing helpers

-

Specify the dimensions of an object more easily.

-{% highlight scss %} -// Mixins -.size(@width; @height) { - width: @width; - height: @height; -} -.square(@size) { - .size(@size; @size); -} - -// Usage -.image { .size(400px; 300px); } -.avatar { .square(48px); } -{% endhighlight %} - -

Resizable textareas

-

Easily configure the resize options for any textarea, or any other element. Defaults to normal browser behavior (both).

-{% highlight scss %} -.resizable(@direction: both) { - // Options: horizontal, vertical, both - resize: @direction; - // Safari fix - overflow: auto; -} -{% endhighlight %} - -

Truncating text

-

Easily truncate text with an ellipsis with a single mixin. Requires element to be block or inline-block level.

-{% highlight scss %} -// Mixin -.text-overflow() { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -// Usage -.branch-name { - display: inline-block; - max-width: 200px; - .text-overflow(); -} -{% endhighlight %} - -

Retina images

-

Specify two image paths and the @1x image dimensions, and Bootstrap will provide an @2x media query. If you have many images to serve, consider writing your retina image CSS manually in a single media query.

-{% highlight scss %} -.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) { - background-image: url("@{file-1x}"); - - @media - only screen and (-webkit-min-device-pixel-ratio: 2), - only screen and ( min--moz-device-pixel-ratio: 2), - only screen and ( -o-min-device-pixel-ratio: 2/1), - only screen and ( min-device-pixel-ratio: 2), - only screen and ( min-resolution: 192dpi), - only screen and ( min-resolution: 2dppx) { - background-image: url("@{file-2x}"); - background-size: @width-1x @height-1x; - } -} - -// Usage -.jumbotron { - .img-retina("/img/bg-1x.png", "/img/bg-2x.png", 100px, 100px); -} -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/css/overview.html b/src/pretix/static/bootstrap/docs/_includes/css/overview.html deleted file mode 100644 index 86a5b45b0e..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/css/overview.html +++ /dev/null @@ -1,52 +0,0 @@ -
-

Overview

- -

Get the lowdown on the key pieces of Bootstrap's infrastructure, including our approach to better, faster, stronger web development.

- -

HTML5 doctype

-

Bootstrap makes use of certain HTML elements and CSS properties that require the use of the HTML5 doctype. Include it at the beginning of all your projects.

-{% highlight html %} - - - ... - -{% endhighlight %} - -

Mobile first

-

With Bootstrap 2, we added optional mobile friendly styles for key aspects of the framework. With Bootstrap 3, we've rewritten the project to be mobile friendly from the start. Instead of adding on optional mobile styles, they're baked right into the core. In fact, Bootstrap is mobile first. Mobile first styles can be found throughout the entire library instead of in separate files.

-

To ensure proper rendering and touch zooming, add the viewport meta tag to your <head>.

-{% highlight html %} - -{% endhighlight %} -

You can disable zooming capabilities on mobile devices by adding user-scalable=no to the viewport meta tag. This disables zooming, meaning users are only able to scroll, and results in your site feeling a bit more like a native application. Overall, we don't recommend this on every site, so use caution!

-{% highlight html %} - -{% endhighlight %} - - -

Bootstrap sets basic global display, typography, and link styles. Specifically, we:

-
    -
  • Set background-color: #fff; on the body
  • -
  • Use the @font-family-base, @font-size-base, and @line-height-base attributes as our typographic base
  • -
  • Set the global link color via @link-color and apply link underlines only on :hover
  • -
-

These styles can be found within scaffolding.less.

- -

Normalize.css

-

For improved cross-browser rendering, we use Normalize.css, a project by Nicolas Gallagher and Jonathan Neal.

- -

Containers

-

Bootstrap requires a containing element to wrap site contents and house our grid system. You may choose one of two containers to use in your projects. Note that, due to padding and more, neither container is nestable.

-

Use .container for a responsive fixed width container.

-{% highlight html %} -
- ... -
-{% endhighlight %} -

Use .container-fluid for a full width container, spanning the entire width of your viewport.

-{% highlight html %} -
- ... -
-{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/css/responsive-utilities.html b/src/pretix/static/bootstrap/docs/_includes/css/responsive-utilities.html deleted file mode 100644 index ac73bf645f..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/css/responsive-utilities.html +++ /dev/null @@ -1,258 +0,0 @@ -
-

Responsive utilities

- -

For faster mobile-friendly development, use these utility classes for showing and hiding content by device via media query. Also included are utility classes for toggling content when printed.

-

Try to use these on a limited basis and avoid creating entirely different versions of the same site. Instead, use them to complement each device's presentation.

- - -

Available classes

-

Use a single or combination of the available classes for toggling content across viewport breakpoints.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Extra small devices - Phones (<768px) - - Small devices - Tablets (≥768px) - - Medium devices - Desktops (≥992px) - - Large devices - Desktops (≥1200px) -
.visible-xs-*Visible
.visible-sm-*Visible
.visible-md-*Visible
.visible-lg-*Visible
.hidden-xsVisibleVisibleVisible
.hidden-smVisibleVisibleVisible
.hidden-mdVisibleVisibleVisible
.hidden-lgVisibleVisibleVisible
-
- -

As of v3.2.0, the .visible-*-* classes for each breakpoint come in three variations, one for each CSS display property value listed below.

-
- - - - - - - - - - - - - - - - - - - - - -
Group of classesCSS display
.visible-*-blockdisplay: block;
.visible-*-inlinedisplay: inline;
.visible-*-inline-blockdisplay: inline-block;
-
-

So, for extra small (xs) screens for example, the available .visible-*-* classes are: .visible-xs-block, .visible-xs-inline, and .visible-xs-inline-block.

-

The classes .visible-xs, .visible-sm, .visible-md, and .visible-lg also exist, but are deprecated as of v3.2.0. They are approximately equivalent to .visible-*-block, except with additional special cases for toggling <table>-related elements.

- -

Print classes

-

Similar to the regular responsive classes, use these for toggling content for print.

-
- - - - - - - - - - - - - - - - - - - - -
ClassesBrowserPrint
- .visible-print-block
- .visible-print-inline
- .visible-print-inline-block -
Visible
.hidden-printVisible
-
-

The class .visible-print also exists but is deprecated as of v3.2.0. It is approximately equivalent to .visible-print-block, except with additional special cases for <table>-related elements.

- - -

Test cases

-

Resize your browser or load on different devices to test the responsive utility classes.

- -

Visible on...

-

Green checkmarks indicate the element is visible in your current viewport.

-
-
- - ✔ Visible on x-small -
-
- - ✔ Visible on small -
-
-
- Medium - ✔ Visible on medium -
-
- - ✔ Visible on large -
-
-
-
- - ✔ Visible on x-small and small -
-
- - ✔ Visible on medium and large -
-
-
- - ✔ Visible on x-small and medium -
-
- - ✔ Visible on small and large -
-
-
- - ✔ Visible on x-small and large -
-
- - ✔ Visible on small and medium -
-
- -

Hidden on...

-

Here, green checkmarks also indicate the element is hidden in your current viewport.

-
-
- - ✔ Hidden on x-small -
-
- - ✔ Hidden on small -
-
-
- Medium - ✔ Hidden on medium -
-
- - ✔ Hidden on large -
-
-
-
- - ✔ Hidden on x-small and small -
-
- - ✔ Hidden on medium and large -
-
-
- - ✔ Hidden on x-small and medium -
-
- - ✔ Hidden on small and large -
-
-
- - ✔ Hidden on x-small and large -
-
- - ✔ Hidden on small and medium -
-
-
diff --git a/src/pretix/static/bootstrap/docs/_includes/css/sass.html b/src/pretix/static/bootstrap/docs/_includes/css/sass.html deleted file mode 100644 index 35739ddc6d..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/css/sass.html +++ /dev/null @@ -1,52 +0,0 @@ -
-

Using Sass

-

While Bootstrap is built on Less, it also has an official Sass port. We maintain it in a separate GitHub repository and handle updates with a conversion script.

- -

What's included

-

Since the Sass port has a separate repo and serves a slightly different audience, the contents of the project differ greatly from the main Bootstrap project. This ensures the Sass port is as compatible with as many Sass-based systems as possible.

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathDescription
lib/Ruby gem code (Sass configuration, Rails and Compass integrations)
tasks/Converter scripts (turning upstream Less to Sass)
test/Compilation tests
templates/Compass package manifest
vendor/assets/Sass, JavaScript, and font files
RakefileInternal tasks, such as rake and convert
-
-

Visit the Sass port's GitHub repository to see these files in action.

- - -

Installation

-

For information on how to install and use Bootstrap for Sass, consult the GitHub repository readme. It's the most up to date source and includes information for use with Rails, Compass, and standard Sass projects.

-

- Bootstrap for Sass -

-
diff --git a/src/pretix/static/bootstrap/docs/_includes/css/tables.html b/src/pretix/static/bootstrap/docs/_includes/css/tables.html deleted file mode 100644 index ac84e81584..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/css/tables.html +++ /dev/null @@ -1,467 +0,0 @@ -
-

Tables

- -

Basic example

-

For basic styling—light padding and only horizontal dividers—add the base class .table to any <table>. It may seem super redundant, but given the widespread use of tables for other plugins like calendars and date pickers, we've opted to isolate our custom table styles.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Optional table caption.
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-
-{% highlight html %} - - ... -
-{% endhighlight %} - - -

Striped rows

-

Use .table-striped to add zebra-striping to any table row within the <tbody>.

-
-

Cross-browser compatibility

-

Striped tables are styled via the :nth-child CSS selector, which is not available in Internet Explorer 8.

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-
-{% highlight html %} - - ... -
-{% endhighlight %} - - -

Bordered table

-

Add .table-bordered for borders on all sides of the table and cells.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-
-{% highlight html %} - - ... -
-{% endhighlight %} - - -

Hover rows

-

Add .table-hover to enable a hover state on table rows within a <tbody>.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
-
-{% highlight html %} - - ... -
-{% endhighlight %} - - -

Condensed table

-

Add .table-condensed to make tables more compact by cutting cell padding in half.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larry the Bird@twitter
-
-{% highlight html %} - - ... -
-{% endhighlight %} - - -

Contextual classes

-

Use contextual classes to color table rows or individual cells.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClassDescription
- .active - Applies the hover color to a particular row or cell
- .success - Indicates a successful or positive action
- .info - Indicates a neutral informative change or action
- .warning - Indicates a warning that might need attention
- .danger - Indicates a dangerous or potentially negative action
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#Column headingColumn headingColumn heading
1Column contentColumn contentColumn content
2Column contentColumn contentColumn content
3Column contentColumn contentColumn content
4Column contentColumn contentColumn content
5Column contentColumn contentColumn content
6Column contentColumn contentColumn content
7Column contentColumn contentColumn content
8Column contentColumn contentColumn content
9Column contentColumn contentColumn content
-
-{% highlight html %} - -... -... -... -... -... - - - - ... - ... - ... - ... - ... - -{% endhighlight %} -
-

Conveying meaning to assistive technologies

-

Using color to add meaning to a table row or individual cell only provides a visual indication, which will not be conveyed to users of assistive technologies – such as screen readers. Ensure that information denoted by the color is either obvious from the content itself (the visible text in the relevant table row/cell), or is included through alternative means, such as additional text hidden with the .sr-only class.

-
- -

Responsive tables

-

Create responsive tables by wrapping any .table in .table-responsive to make them scroll horizontally on small devices (under 768px). When viewing on anything larger than 768px wide, you will not see any difference in these tables.

- -
-

Vertical clipping/truncation

-

Responsive tables make use of overflow-y: hidden, which clips off any content that goes beyond the bottom or top edges of the table. In particular, this can clip off dropdown menus and other third-party widgets.

-
-
-

Firefox and fieldsets

-

Firefox has some awkward fieldset styling involving width that interferes with the responsive table. This cannot be overriden without a Firefox-specific hack that we don't provide in Bootstrap:

-{% highlight css %} -@-moz-document url-prefix() { - fieldset { display: table-cell; } -} -{% endhighlight %} -

For more information, read this Stack Overflow answer.

-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#Table headingTable headingTable headingTable headingTable headingTable heading
1Table cellTable cellTable cellTable cellTable cellTable cell
2Table cellTable cellTable cellTable cellTable cellTable cell
3Table cellTable cellTable cellTable cellTable cellTable cell
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#Table headingTable headingTable headingTable headingTable headingTable heading
1Table cellTable cellTable cellTable cellTable cellTable cell
2Table cellTable cellTable cellTable cellTable cellTable cell
3Table cellTable cellTable cellTable cellTable cellTable cell
-
-
-{% highlight html %} -
- - ... -
-
-{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/css/type.html b/src/pretix/static/bootstrap/docs/_includes/css/type.html deleted file mode 100644 index 294a1df292..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/css/type.html +++ /dev/null @@ -1,461 +0,0 @@ -
-

Typography

- - -

Headings

-

All HTML headings, <h1> through <h6>, are available. .h1 through .h6 classes are also available, for when you want to match the font styling of a heading but still want your text to be displayed inline.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -

h1. Bootstrap heading

Semibold 36px

h2. Bootstrap heading

Semibold 30px

h3. Bootstrap heading

Semibold 24px

h4. Bootstrap heading

Semibold 18px
h5. Bootstrap heading
Semibold 14px
h6. Bootstrap heading
Semibold 12px
-
-{% highlight html %} -

h1. Bootstrap heading

-

h2. Bootstrap heading

-

h3. Bootstrap heading

-

h4. Bootstrap heading

-
h5. Bootstrap heading
-
h6. Bootstrap heading
-{% endhighlight %} - -

Create lighter, secondary text in any heading with a generic <small> tag or the .small class.

-
- - - - - - - - - - - - - - - - - - - - - -

h1. Bootstrap heading Secondary text

h2. Bootstrap heading Secondary text

h3. Bootstrap heading Secondary text

h4. Bootstrap heading Secondary text

h5. Bootstrap heading Secondary text
h6. Bootstrap heading Secondary text
-
-{% highlight html %} -

h1. Bootstrap heading Secondary text

-

h2. Bootstrap heading Secondary text

-

h3. Bootstrap heading Secondary text

-

h4. Bootstrap heading Secondary text

-
h5. Bootstrap heading Secondary text
-
h6. Bootstrap heading Secondary text
-{% endhighlight %} - - - -

Body copy

-

Bootstrap's global default font-size is 14px, with a line-height of 1.428. This is applied to the <body> and all paragraphs. In addition, <p> (paragraphs) receive a bottom margin of half their computed line-height (10px by default).

-
-

Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.

-

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec ullamcorper nulla non metus auctor fringilla.

-

Maecenas sed diam eget risus varius blandit sit amet non magna. Donec id elit non mi porta gravida at eget metus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.

-
-{% highlight html %} -

...

-{% endhighlight %} - - -

Lead body copy

-

Make a paragraph stand out by adding .lead.

-
-

Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus.

-
-{% highlight html %} -

...

-{% endhighlight %} - - -

Built with Less

-

The typographic scale is based on two Less variables in variables.less: @font-size-base and @line-height-base. The first is the base font-size used throughout and the second is the base line-height. We use those variables and some simple math to create the margins, paddings, and line-heights of all our type and more. Customize them and Bootstrap adapts.

- - -

Inline text elements

-

Marked text

-

For highlighting a run of text due to its relevance in another context, use the <mark> tag.

-
-

You can use the mark tag to highlight text.

-
-{% highlight html %} -You can use the mark tag to highlight text. -{% endhighlight %} - - -

Deleted text

-

For indicating blocks of text that have been deleted use the <del> tag.

-
-

This line of text is meant to be treated as deleted text.

-
-{% highlight html %} -This line of text is meant to be treated as deleted text. -{% endhighlight %} - -

Strikethrough text

-

For indicating blocks of text that are no longer relevant use the <s> tag.

-
-

This line of text is meant to be treated as no longer accurate.

-
-{% highlight html %} -This line of text is meant to be treated as no longer accurate. -{% endhighlight %} - -

Inserted text

-

For indicating additions to the document use the <ins> tag.

-
-

This line of text is meant to be treated as an addition to the document.

-
-{% highlight html %} -This line of text is meant to be treated as an addition to the document. -{% endhighlight %} - -

Underlined text

-

To underline text use the <u> tag.

-
-

This line of text will render as underlined

-
-{% highlight html %} -This line of text will render as underlined -{% endhighlight %} - -

Make use of HTML's default emphasis tags with lightweight styles.

- -

Small text

-

For de-emphasizing inline or blocks of text, use the <small> tag to set text at 85% the size of the parent. Heading elements receive their own font-size for nested <small> elements.

-

You may alternatively use an inline element with .small in place of any <small>.

-
-

This line of text is meant to be treated as fine print.

-
-{% highlight html %} -This line of text is meant to be treated as fine print. -{% endhighlight %} - - -

Bold

-

For emphasizing a snippet of text with a heavier font-weight.

-
-

The following snippet of text is rendered as bold text.

-
-{% highlight html %} -rendered as bold text -{% endhighlight %} - -

Italics

-

For emphasizing a snippet of text with italics.

-
-

The following snippet of text is rendered as italicized text.

-
-{% highlight html %} -rendered as italicized text -{% endhighlight %} - -
-

Alternate elements

-

Feel free to use <b> and <i> in HTML5. <b> is meant to highlight words or phrases without conveying additional importance while <i> is mostly for voice, technical terms, etc.

-
- -

Alignment classes

-

Easily realign text to components with text alignment classes.

-
-

Left aligned text.

-

Center aligned text.

-

Right aligned text.

-

Justified text.

-

No wrap text.

-
-{% highlight html %} -

Left aligned text.

-

Center aligned text.

-

Right aligned text.

-

Justified text.

-

No wrap text.

-{% endhighlight %} - -

Transformation classes

-

Transform text in components with text capitalization classes.

-
-

Lowercased text.

-

Uppercased text.

-

Capitalized text.

-
-{% highlight html %} -

Lowercased text.

-

Uppercased text.

-

Capitalized text.

-{% endhighlight %} - - -

Abbreviations

-

Stylized implementation of HTML's <abbr> element for abbreviations and acronyms to show the expanded version on hover. Abbreviations with a title attribute have a light dotted bottom border and a help cursor on hover, providing additional context on hover and to users of assistive technologies.

- -

Basic abbreviation

-
-

An abbreviation of the word attribute is attr.

-
-{% highlight html %} -attr -{% endhighlight %} - -

Initialism

-

Add .initialism to an abbreviation for a slightly smaller font-size.

-
-

HTML is the best thing since sliced bread.

-
-{% highlight html %} -HTML -{% endhighlight %} - - - -

Addresses

-

Present contact information for the nearest ancestor or the entire body of work. Preserve formatting by ending all lines with <br>.

-
-
- Twitter, Inc.
- 795 Folsom Ave, Suite 600
- San Francisco, CA 94107
- P: (123) 456-7890 -
-
- Full Name
- first.last@example.com -
-
-{% highlight html %} -
- Twitter, Inc.
- 795 Folsom Ave, Suite 600
- San Francisco, CA 94107
- P: (123) 456-7890 -
- -
- Full Name
- first.last@example.com -
-{% endhighlight %} - - - -

Blockquotes

-

For quoting blocks of content from another source within your document.

- -

Default blockquote

-

Wrap <blockquote> around any HTML as the quote. For straight quotes, we recommend a <p>.

-
-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

-
-
-{% highlight html %} -
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

-
-{% endhighlight %} - -

Blockquote options

-

Style and content changes for simple variations on a standard <blockquote>.

- -

Naming a source

-

Add a <footer> for identifying the source. Wrap the name of the source work in <cite>.

-
-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

-
Someone famous in Source Title
-
-
-{% highlight html %} -
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

-
Someone famous in Source Title
-
-{% endhighlight %} - -

Alternate displays

-

Add .blockquote-reverse for a blockquote with right-aligned content.

-
-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

-
Someone famous in Source Title
-
-
-{% highlight html %} -
- ... -
-{% endhighlight %} - - - -

Lists

- -

Unordered

-

A list of items in which the order does not explicitly matter.

-
-
    -
  • Lorem ipsum dolor sit amet
  • -
  • Consectetur adipiscing elit
  • -
  • Integer molestie lorem at massa
  • -
  • Facilisis in pretium nisl aliquet
  • -
  • Nulla volutpat aliquam velit -
      -
    • Phasellus iaculis neque
    • -
    • Purus sodales ultricies
    • -
    • Vestibulum laoreet porttitor sem
    • -
    • Ac tristique libero volutpat at
    • -
    -
  • -
  • Faucibus porta lacus fringilla vel
  • -
  • Aenean sit amet erat nunc
  • -
  • Eget porttitor lorem
  • -
-
-{% highlight html %} -
    -
  • ...
  • -
-{% endhighlight %} - -

Ordered

-

A list of items in which the order does explicitly matter.

-
-
    -
  1. Lorem ipsum dolor sit amet
  2. -
  3. Consectetur adipiscing elit
  4. -
  5. Integer molestie lorem at massa
  6. -
  7. Facilisis in pretium nisl aliquet
  8. -
  9. Nulla volutpat aliquam velit
  10. -
  11. Faucibus porta lacus fringilla vel
  12. -
  13. Aenean sit amet erat nunc
  14. -
  15. Eget porttitor lorem
  16. -
-
-{% highlight html %} -
    -
  1. ...
  2. -
-{% endhighlight %} - -

Unstyled

-

Remove the default list-style and left margin on list items (immediate children only). This only applies to immediate children list items, meaning you will need to add the class for any nested lists as well.

-
-
    -
  • Lorem ipsum dolor sit amet
  • -
  • Consectetur adipiscing elit
  • -
  • Integer molestie lorem at massa
  • -
  • Facilisis in pretium nisl aliquet
  • -
  • Nulla volutpat aliquam velit -
      -
    • Phasellus iaculis neque
    • -
    • Purus sodales ultricies
    • -
    • Vestibulum laoreet porttitor sem
    • -
    • Ac tristique libero volutpat at
    • -
    -
  • -
  • Faucibus porta lacus fringilla vel
  • -
  • Aenean sit amet erat nunc
  • -
  • Eget porttitor lorem
  • -
-
-{% highlight html %} -
    -
  • ...
  • -
-{% endhighlight %} - -

Inline

-

Place all list items on a single line with display: inline-block; and some light padding.

-
-
    -
  • Lorem ipsum
  • -
  • Phasellus iaculis
  • -
  • Nulla volutpat
  • -
-
-{% highlight html %} -
    -
  • ...
  • -
-{% endhighlight %} - -

Description

-

A list of terms with their associated descriptions.

-
-
-
Description lists
-
A description list is perfect for defining terms.
-
Euismod
-
Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
-
Donec id elit non mi porta gravida at eget metus.
-
Malesuada porta
-
Etiam porta sem malesuada magna mollis euismod.
-
-
-{% highlight html %} -
-
...
-
...
-
-{% endhighlight %} - -

Horizontal description

-

Make terms and descriptions in <dl> line up side-by-side. Starts off stacked like default <dl>s, but when the navbar expands, so do these.

-
-
-
Description lists
-
A description list is perfect for defining terms.
-
Euismod
-
Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.
-
Donec id elit non mi porta gravida at eget metus.
-
Malesuada porta
-
Etiam porta sem malesuada magna mollis euismod.
-
Felis euismod semper eget lacinia
-
Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.
-
-
-{% highlight html %} -
-
...
-
...
-
-{% endhighlight %} - -
-

Auto-truncating

-

Horizontal description lists will truncate terms that are too long to fit in the left column with text-overflow. In narrower viewports, they will change to the default stacked layout.

-
-
diff --git a/src/pretix/static/bootstrap/docs/_includes/customizer-variables.html b/src/pretix/static/bootstrap/docs/_includes/customizer-variables.html deleted file mode 100644 index 5445b4db25..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/customizer-variables.html +++ /dev/null @@ -1,1862 +0,0 @@ - - -

Colors

-

Gray and brand colors for use across Bootstrap.

-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
-

Scaffolding

-

Settings for some of the most global styles.

-
-
- - -

Background color for <body>.

-
-
- - -

Global text color on <body>.

-
-
- - - -
-
-
- - - -
-
- - - -
-
-

Typography

-

Font, line-height, and color for body text, headings, and more.

-
-
- - -
-
- - -
-
- - -

Default monospace fonts for <code>, <kbd>, and <pre>.

-
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -

Unit-less line-height for use in components like buttons.

-
-
- - -

Computed "line-height" (font-size * line-height) for use with margin, padding, etc.

-
-
-
- - -

By default, this inherits from the <body>.

-
-
- - -
-
- - -
-
-
- - -
-
-

Iconography

-

Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.

-
-
- - -

Load fonts from this directory.

-
-
- - -

File name for all font files.

-
-
- - -

Element ID within SVG icon file.

-
-
-

Components

-

Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).

-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -

Global color for active items (e.g., navs or dropdowns).

-
-
- - -

Global background color for active items (e.g., navs or dropdowns).

-
-
-
- - -

Width of the border for generating carets that indicator dropdowns.

-
-
- - -

Carets increase slightly in size for larger components.

-
-
-

Tables

-

Customizes the .table component with basic values, each used across all table variations.

-
-
- - -

Padding for <th>s and <td>s.

-
-
- - -

Padding for cells in .table-condensed.

-
-
- - -

Default background color used for all tables.

-
-
-
- - -

Background color used for .table-striped.

-
-
- - -

Background color used for .table-hover.

-
-
- - -
-
-
- - -

Border color for table and cell borders.

-
-
-

Buttons

-

For each of Bootstrap's buttons, define text, background and border color.

-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
-

Forms

-
-
- - -

<input> background color

-
-
- - -

<input disabled> background color

-
-
- - -

Text color for <input>s

-
-
-
- - -

<input> border color

-
-
- - -

Default .form-control border radius

-
-
- - -

Large .form-control border radius

-
-
-
- - -

Small .form-control border radius

-
-
- - -

Border color for inputs on focus

-
-
- - -

Placeholder text color

-
-
-
- - -

Default .form-control height

-
-
- - -

Large .form-control height

-
-
- - -

Small .form-control height

-
-
-
- - -
-
- - -
-
- - -

Background color for textual input addons

-
-
-
- - -

Border color for textual input addons

-
-
- - -

Disabled cursor for form controls and buttons.

-
-
- -

Dropdown menu container and contents.

-
-
- - -

Background for the dropdown menu.

-
-
- - -

Dropdown menu border-color.

-
-
- - -

Dropdown menu border-color for IE8.

-
-
-
- - -

Divider color for between dropdown items.

-
-
- - - -
-
- - - -
-
-
- - - -
-
- - - -
-
- - - -
-
-
- - - -
-
- - -

Text color for headers within dropdown menus.

-
-
- - -

Deprecated @dropdown-caret-color as of v3.1.0

-
-
-

Media queries breakpoints

-

Define the breakpoints at which your layout will change, adapting to different screen sizes.

-
-
- - -

Deprecated @screen-xs as of v3.0.1

-
-
- - -

Deprecated @screen-xs-min as of v3.2.0

-
-
- - -

Deprecated @screen-phone as of v3.0.1

-
-
-
- - -

Deprecated @screen-sm as of v3.0.1

-
-
- - -
-
- - -

Deprecated @screen-tablet as of v3.0.1

-
-
-
- - -

Deprecated @screen-md as of v3.0.1

-
-
- - -
-
- - -

Deprecated @screen-desktop as of v3.0.1

-
-
-
- - -

Deprecated @screen-lg as of v3.0.1

-
-
- - -
-
- - -

Deprecated @screen-lg-desktop as of v3.0.1

-
-
-
- - -
-
- - -
-
- - -
-
-

Grid system

-

Define your custom responsive grid.

-
-
- - -

Number of columns in the grid.

-
-
- - -

Padding between columns. Gets divided in half for the left and right.

-
-
- - -

Point at which the navbar becomes uncollapsed.

-
-
-
- - -

Point at which the navbar begins collapsing.

-
-
-

Container sizes

-

Define the maximum width of .container for different screen sizes.

-
-
- - -
-
- - -

For @screen-sm-min and up.

-
-
- - -
-
-
- - -

For @screen-md-min and up.

-
-
- - -
-
- - -

For @screen-lg-min and up.

-
-
- -
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- -

Shared nav styles

-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
-

Tabs

-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
-

Pills

-
-
- - -
-
- - -
-
- - -
-
-

Pagination

-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-

Pager

-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
-

Jumbotron

-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
-

Form states and alerts

-

Define colors for form feedback states and, by default, alerts.

-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-

Tooltips

-
-
- - -

Tooltip max width

-
-
- - -

Tooltip text color

-
-
- - -

Tooltip background color

-
-
-
- - -
-
- - -

Tooltip arrow width

-
-
- - -

Tooltip arrow color

-
-
-

Popovers

-
-
- - -

Popover body background color

-
-
- - -

Popover maximum width

-
-
- - -

Popover border color

-
-
-
- - -

Popover fallback border color

-
-
- - -

Popover title background color

-
-
- - -

Popover arrow width

-
-
-
- - -

Popover arrow color

-
-
- - -

Popover outer arrow width

-
-
- - -

Popover outer arrow color

-
-
-
- - -

Popover outer arrow fallback color

-
-
-

Labels

-
-
- - -

Default label background color

-
-
- - -

Primary label background color

-
-
- - -

Success label background color

-
-
-
- - -

Info label background color

-
-
- - -

Warning label background color

-
-
- - -

Danger label background color

-
-
-
- - -

Default label text color

-
-
- - - -
-
-

Modals

-
-
- - -

Padding applied to the modal body

-
-
- - -

Padding applied to the modal title

-
-
- - -

Modal title line-height

-
-
-
- - -

Background color of modal content area

-
-
- - -

Modal content border color

-
-
- - -

Modal content border color for IE8

-
-
-
- - -

Modal backdrop background color

-
-
- - -

Modal backdrop opacity

-
-
- - -

Modal header border color

-
-
-
- - - -
-
- - -
-
- - -
-
-
- - -
-
-

Alerts

-

Define alert colors, border radius, and padding.

-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-

Progress bars

-
-
- - -

Background color of the whole progress component

-
-
- - -

Progress bar text color

-
-
- - -

Variable for setting rounded corners on progress bar.

-
-
-
- - -

Default progress bar color

-
-
- - -

Success progress bar color

-
-
- - -

Warning progress bar color

-
-
-
- - -

Danger progress bar color

-
-
- - -

Info progress bar color

-
-
-

List group

-
-
- - -

Background color on .list-group-item

-
-
- - -

.list-group-item border color

-
-
- - -

List group border radius

-
-
-
- - -

Background color of single list items on hover

-
-
- - -

Text color of active list items

-
-
- - -

Background color of active list items

-
-
-
- - -

Border color of active list elements

-
-
- - -

Text color for content within active list items

-
-
- - -

Text color of disabled list items

-
-
-
- - -

Background color of disabled list items

-
-
- - -

Text color for content within disabled list items

-
-
- - -
-
-
- - -
-
- - -
-
-

Panels

-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -

Border color for elements within panels

-
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
-

Thumbnails

-
-
- - -

Padding around the thumbnail image

-
-
- - -

Thumbnail background color

-
-
- - -

Thumbnail border color

-
-
-
- - -

Thumbnail border radius

-
-
- - -

Custom text color for thumbnail captions

-
-
- - -

Padding around the thumbnail caption

-
-
-

Wells

-
-
- - -
-
- - -
-
-

Badges

-
-
- - -
-
- - - -
-
- - -
-
-
- - -

Badge text color in active nav link

-
-
- - -

Badge background color in active nav link

-
-
- - -
-
-
- - -
-
- - -
-
- -
-
- - -
-
- - -
-
- - -

Breadcrumb background color

-
-
-
- - -

Breadcrumb text color

-
-
- - -

Text color of current page in the breadcrumb

-
-
- - -

Textual separator for between breadcrumb elements

-
-
- -
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
-

Close

-
-
- - -
-
- - -
-
- - -
-
-

Code

-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
- - -
-
-
- - -
-
- - -
-
-

Type

-
-
- - -

Horizontal offset for forms and lists.

-
-
- - -

Text muted color

-
-
- - -

Abbreviations and acronyms border color

-
-
-
- - -

Headings small color

-
-
- - -

Blockquote small color

-
-
- - -

Blockquote font size

-
-
-
- - -

Blockquote border color

-
-
- - -

Page header border color

-
-
- - -

Width of horizontal description list titles

-
-
-
- - -

Horizontal line color.

-
-
- \ No newline at end of file diff --git a/src/pretix/static/bootstrap/docs/_includes/footer.html b/src/pretix/static/bootstrap/docs/_includes/footer.html deleted file mode 100644 index bc5cb866e8..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/footer.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -{% if site.github %} - -{% else %} - -{% endif %} - -{% if site.github %} - -{% else %} - {% for file in site.data.configBridge.paths.docsJs %} - - {% endfor %} -{% endif %} - -{% if page.slug == "customize" %} - - {% if site.github %} - - {% else %} - {% for file in site.data.configBridge.paths.customizerJs %} - - {% endfor %} - {% endif %} -{% endif %} - - - - -{% comment %} - Inject Twitter widgets asynchronously. Snippet snipped from Twitter's - JS interface site: https://dev.twitter.com/docs/tfw-javascript - - * "js.async=1;" added to add async attribute to the generated script tag. -{% endcomment %} - - - - diff --git a/src/pretix/static/bootstrap/docs/_includes/getting-started/accessibility.html b/src/pretix/static/bootstrap/docs/_includes/getting-started/accessibility.html deleted file mode 100644 index cbb528dce2..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/getting-started/accessibility.html +++ /dev/null @@ -1,32 +0,0 @@ -
-

Accessibility

-

Bootstrap follows common web standards and—with minimal extra effort—can be used to create sites that are accessible to those using AT.

- -

Skip navigation

-

If your navigation contains many links and comes before the main content in the DOM, add a Skip to main content link before the navigation (read why). Using the .sr-only class will visually hide the skip link, and the .sr-only-focusable class will ensure that the link becomes visible once focused (for sighted keyboard users).

-{% highlight html %} - - Skip to main content - ... -
- -
- -{% endhighlight %} - -

Nested headings

-

When nesting headings (<h1> - <h6>), your primary document header should be an <h1>. Subsequent headings should make logical use of <h2> - <h6> such that screen readers can construct a table of contents for your pages.

-

Learn more at HTML CodeSniffer and Penn State's AccessAbility.

- -

Color contrast

-

Currently, some of the default color combinations available in Bootstrap (such as the various styled button classes, some of the code highlighting colors used for basic code blocks, the .bg-primary contextual background helper class, and the default link color when used on a white background) have a low contrast ratio (below the recommended ratio of 4.5:1). This can cause problems to users with low vision or who are color blind. These default colors may need to be modified to increase their contrast and legibility.

- -

Additional resources

- -
diff --git a/src/pretix/static/bootstrap/docs/_includes/getting-started/browser-device-support.html b/src/pretix/static/bootstrap/docs/_includes/getting-started/browser-device-support.html deleted file mode 100644 index b5a2d892d2..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/getting-started/browser-device-support.html +++ /dev/null @@ -1,205 +0,0 @@ -
-

Browser and device support

-

Bootstrap is built to work best in the latest desktop and mobile browsers, meaning older browsers might display differently styled, though fully functional, renderings of certain components.

- -

Supported browsers

-

Specifically, we support the latest versions of the following browsers and platforms. On Windows, we support Internet Explorer 8-11. More specific support information is provided below.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ChromeFirefoxInternet ExplorerOperaSafari
Android Supported SupportedN/A Not SupportedN/A
iOS SupportedN/A Not Supported Supported
Mac OS X Supported Supported Supported Supported
Windows Supported Supported Supported Supported Not Supported
-
-

Unofficially, Bootstrap should look and behave well enough in Chromium and Chrome for Linux, Firefox for Linux, and Internet Explorer 7, though they are not officially supported.

-

For a list of some of the browser bugs that Bootstrap has to grapple with, see our Wall of browser bugs.

- -

Internet Explorer 8 and 9

-

Internet Explorer 8 and 9 are also supported, however, please be aware that some CSS3 properties and HTML5 elements are not fully supported by these browsers. In addition, Internet Explorer 8 requires the use of Respond.js to enable media query support.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureInternet Explorer 8Internet Explorer 9
border-radius Not supported Supported
box-shadow Not supported Supported
transform Not supported Supported, with -ms prefix
transition Not supported
placeholder Not supported
-
- -

Visit Can I use... for details on browser support of CSS3 and HTML5 features.

- -

Internet Explorer 8 and Respond.js

-

Beware of the following caveats when using Respond.js in your development and production environments for Internet Explorer 8.

-

Respond.js and cross-domain CSS

-

Using Respond.js with CSS hosted on a different (sub)domain (for example, on a CDN) requires some additional setup. See the Respond.js docs for details.

-

Respond.js and file://

-

Due to browser security rules, Respond.js doesn't work with pages viewed via the file:// protocol (like when opening a local HTML file). To test responsive features in IE8, view your pages over HTTP(S). See the Respond.js docs for details.

-

Respond.js and @import

-

Respond.js doesn't work with CSS that's referenced via @import. In particular, some Drupal configurations are known to use @import. See the Respond.js docs for details.

- -

Internet Explorer 8 and box-sizing

-

IE8 does not fully support box-sizing: border-box; when combined with min-width, max-width, min-height, or max-height. For that reason, as of v3.0.1, we no longer use max-width on .containers.

- -

Internet Explorer 8 and @font-face

-

IE8 has some issues with @font-face when combined with :before. Bootstrap uses that combination with its Glyphicons. If a page is cached, and loaded without the mouse over the window (i.e. hit the refresh button or load something in an iframe) then the page gets rendered before the font loads. Hovering over the page (body) will show some of the icons and hovering over the remaining icons will show those as well. See issue #13863 for details.

- -

IE Compatibility modes

-

Bootstrap is not supported in the old Internet Explorer compatibility modes. To be sure you're using the latest rendering mode for IE, consider including the appropriate <meta> tag in your pages:

-{% highlight html %} - -{% endhighlight %} -

Confirm the document mode by opening the debugging tools: press F12 and check the "Document Mode".

-

This tag is included in all of Bootstrap's documentation and examples to ensure the best rendering possible in each supported version of Internet Explorer.

-

See this StackOverflow question for more information.

- -

Internet Explorer 10 in Windows 8 and Windows Phone 8

-

Internet Explorer 10 doesn't differentiate device width from viewport width, and thus doesn't properly apply the media queries in Bootstrap's CSS. Normally you'd just add a quick snippet of CSS to fix this:

-{% highlight scss %} -@-ms-viewport { width: device-width; } -{% endhighlight %} -

However, this doesn't work for devices running Windows Phone 8 versions older than Update 3 (a.k.a. GDR3), as it causes such devices to show a mostly desktop view instead of narrow "phone" view. To address this, you'll need to include the following CSS and JavaScript to work around the bug.

-{% highlight scss %} -@-webkit-viewport { width: device-width; } -@-moz-viewport { width: device-width; } -@-ms-viewport { width: device-width; } -@-o-viewport { width: device-width; } -@viewport { width: device-width; } -{% endhighlight %} - -{% highlight js %} -if (navigator.userAgent.match(/IEMobile\/10\.0/)) { - var msViewportStyle = document.createElement('style') - msViewportStyle.appendChild( - document.createTextNode( - '@-ms-viewport{width:auto!important}' - ) - ) - document.querySelector('head').appendChild(msViewportStyle) -} -{% endhighlight %} -

For more information and usage guidelines, read Windows Phone 8 and Device-Width.

-

As a heads up, we include this in all of Bootstrap's documentation and examples as a demonstration.

- -

Safari percent rounding

-

The rendering engine of versions of Safari prior to v7.1 for OS X and Safari for iOS v8.0 had some trouble with the number of decimal places used in our .col-*-1 grid classes. So if you had 12 individual grid columns, you'd notice that they came up short compared to other rows of columns. Besides upgrading Safari/iOS, you have some options for workarounds:

-
    -
  • Add .pull-right to your last grid column to get the hard-right alignment
  • -
  • Tweak your percentages manually to get the perfect rounding for Safari (more difficult than the first option)
  • -
- -

Modals, navbars, and virtual keyboards

-

Overflow and scrolling

-

Support for overflow: hidden on the <body> element is quite limited in iOS and Android. To that end, when you scroll past the top or bottom of a modal in either of those devices' browsers, the <body> content will begin to scroll.

-

Virtual keyboards

-

Also, note that if you're using a fixed navbar or using inputs within a modal, iOS has a rendering bug that doesn't update the position of fixed elements when the virtual keyboard is triggered. A few workarounds for this include transforming your elements to position: absolute or invoking a timer on focus to try to correct the positioning manually. This is not handled by Bootstrap, so it is up to you to decide which solution is best for your application.

-

Navbar Dropdowns

-

The .dropdown-backdrop element isn't used on iOS in the nav because of the complexity of z-indexing. Thus, to close dropdowns in navbars, you must directly click the dropdown element (or any other element which will fire a click event in iOS).

- -

Browser zooming

-

Page zooming inevitably presents rendering artifacts in some components, both in Bootstrap and the rest of the web. Depending on the issue, we may be able to fix it (search first and then open an issue if need be). However, we tend to ignore these as they often have no direct solution other than hacky workarounds.

- -

Printing

-

Even in some modern browsers, printing can be quirky.

-

In particular, as of Chrome v32 and regardless of margin settings, Chrome uses a viewport width significantly narrower than the physical paper size when resolving media queries while printing a webpage. This can result in Bootstrap's extra-small grid being unexpectedly activated when printing. See #12078 for some details. Suggested workarounds:

-
    -
  • Embrace the extra-small grid and make sure your page looks acceptable under it.
  • -
  • Customize the values of the @screen-* Less variables so that your printer paper is considered larger than extra-small.
  • -
  • Add custom media queries to change the grid size breakpoints for print media only.
  • -
-

Also, as of Safari v8.0, fixed-width .containers can cause Safari to use an unusually small font size when printing. See #14868 for more details. One potential workaround for this is adding the following CSS:

- {% highlight css %} -@media print { - .container { - width: auto; - } -} - {% endhighlight %} - -

Android stock browser

-

Out of the box, Android 4.1 (and even some newer releases apparently) ship with the Browser app as the default web browser of choice (as opposed to Chrome). Unfortunately, the Browser app has lots of bugs and inconsistencies with CSS in general.

-

Select menus

-

On <select> elements, the Android stock browser will not display the side controls if there is a border-radius and/or border applied. (See this StackOverflow question for details.) Use the snippet of code below to remove the offending CSS and render the <select> as an unstyled element on the Android stock browser. The user agent sniffing avoids interference with Chrome, Safari, and Mozilla browsers.

-{% highlight html %} - -{% endhighlight %} -

Want to see an example? Check out this JS Bin demo.

- -

Validators

-

In order to provide the best possible experience to old and buggy browsers, Bootstrap uses CSS browser hacks in several places to target special CSS to certain browser versions in order to work around bugs in the browsers themselves. These hacks understandably cause CSS validators to complain that they are invalid. In a couple places, we also use bleeding-edge CSS features that aren't yet fully standardized, but these are used purely for progressive enhancement.

-

These validation warnings don't matter in practice since the non-hacky portion of our CSS does fully validate and the hacky portions don't interfere with the proper functioning of the non-hacky portion, hence why we deliberately ignore these particular warnings.

-

Our HTML docs likewise have some trivial and inconsequential HTML validation warnings due to our inclusion of a workaround for a certain Firefox bug.

-
diff --git a/src/pretix/static/bootstrap/docs/_includes/getting-started/community.html b/src/pretix/static/bootstrap/docs/_includes/getting-started/community.html deleted file mode 100644 index 4b209a8289..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/getting-started/community.html +++ /dev/null @@ -1,12 +0,0 @@ -
-

Community

- -

Stay up to date on the development of Bootstrap and reach out to the community with these helpful resources.

- -

You can also follow @twbootstrap on Twitter for the latest gossip and awesome music videos.

-
diff --git a/src/pretix/static/bootstrap/docs/_includes/getting-started/disabling-responsiveness.html b/src/pretix/static/bootstrap/docs/_includes/getting-started/disabling-responsiveness.html deleted file mode 100644 index 6102e02f3c..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/getting-started/disabling-responsiveness.html +++ /dev/null @@ -1,22 +0,0 @@ -
-

Disabling responsiveness

- -

Bootstrap automatically adapts your pages for various screen sizes. - Here's how to disable this feature so your page works like this non-responsive example.

- -

Steps to disable page responsiveness

-
    -
  1. Omit the viewport <meta> mentioned in the CSS docs
  2. -
  3. Override the width on the .container for each grid tier with a single width, for example width: 970px !important; Be sure that this comes after the default Bootstrap CSS. You can optionally avoid the !important with media queries or some selector-fu.
  4. -
  5. If using navbars, remove all navbar collapsing and expanding behavior.
  6. -
  7. For grid layouts, use .col-xs-* classes in addition to, or in place of, the medium/large ones. Don't worry, the extra-small device grid scales to all resolutions.
  8. -
-

You'll still need Respond.js for IE8 (since our media queries are still there and need to be processed). - This disables the "mobile site" aspects of Bootstrap.

- -

Bootstrap template with responsiveness disabled

-

We've applied these steps to an example. Read its source code to see the specific changes implemented.

-

- View non-responsive example -

-
diff --git a/src/pretix/static/bootstrap/docs/_includes/getting-started/download.html b/src/pretix/static/bootstrap/docs/_includes/getting-started/download.html deleted file mode 100644 index 13a56bebd9..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/getting-started/download.html +++ /dev/null @@ -1,59 +0,0 @@ -
-

Download

- -

Bootstrap (currently v{{ site.current_version }}) has a few easy ways to quickly get started, each one appealing to a different skill level and use case. Read through to see what suits your particular needs.

- -
-
-

Bootstrap

-

Compiled and minified CSS, JavaScript, and fonts. No docs or original source files are included.

-

- Download Bootstrap -

-
-
-

Source code

-

Source Less, JavaScript, and font files, along with our docs. Requires a Less compiler and some setup.

-

- Download source -

-
-
-

Sass

-

Bootstrap ported from Less to Sass for easy inclusion in Rails, Compass, or Sass-only projects.

-

- Download Sass -

-
-
- -

Bootstrap CDN

-

The folks over at MaxCDN graciously provide CDN support for Bootstrap's CSS and JavaScript. Just use these Bootstrap CDN links.

-{% highlight html %} - - - - - - - - -{% endhighlight %} - -

Install with Bower

-

You can also install and manage Bootstrap's Less, CSS, JavaScript, and fonts using Bower:

- {% highlight bash %}$ bower install bootstrap{% endhighlight %} - -

Install with npm

-

You can also install Bootstrap using npm:

- {% highlight bash %}$ npm install bootstrap{% endhighlight %} -

require('bootstrap') will load all of Bootstrap's jQuery plugins onto the jQuery object. The bootstrap module itself does not export anything. You can manually load Bootstrap's jQuery plugins individually by loading the /js/*.js files under the package's top-level directory.

-

Bootstrap's package.json contains some additional metadata under the following keys:

-
    -
  • less - path to Bootstrap's main Less source file
  • -
  • style - path to Bootstrap's non-minified CSS that's been precompiled using the default settings (no customization)
  • -
- -

Autoprefixer required for Less/Sass

-

Bootstrap uses Autoprefixer to deal with CSS vendor prefixes. If you're compiling Bootstrap from its Less/Sass source and not using our Gruntfile, you'll need to integrate Autoprefixer into your build process yourself. If you're using precompiled Bootstrap or using our Gruntfile, you don't need to worry about this because Autoprefixer is already integrated into our Gruntfile.

-
diff --git a/src/pretix/static/bootstrap/docs/_includes/getting-started/examples.html b/src/pretix/static/bootstrap/docs/_includes/getting-started/examples.html deleted file mode 100644 index 2b750a10f9..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/getting-started/examples.html +++ /dev/null @@ -1,159 +0,0 @@ -
-

Examples

- -

Build on the basic template above with Bootstrap's many components. We encourage you to customize and adapt Bootstrap to suit your individual project's needs.

- -

Using the framework

-
-
- - Starter template example - -

Starter template

-

Nothing but the basics: compiled CSS and JavaScript along with a container.

-
-
- - Bootstrap theme example - -

Bootstrap theme

-

Load the optional Bootstrap theme for a visually enhanced experience.

-
-
- -
- - Multiple grids example - -

Grids

-

Multiple examples of grid layouts with all four tiers, nesting, and more.

-
-
- - Jumbotron example - -

Jumbotron

-

Build around the jumbotron with a navbar and some basic grid columns.

-
-
- -
- - Narrow jumbotron example - -

Narrow jumbotron

-

Build a more custom page by narrowing the default container and jumbotron.

-
-
- -

Navbars in action

-
-
- - Navbar example - -

Navbar

-

Super basic template that includes the navbar along with some additional content.

-
-
- - Static top navbar example - -

Static top navbar

-

Super basic template with a static top navbar along with some additional content.

-
-
- -
- - Fixed navbar example - -

Fixed navbar

-

Super basic template with a fixed top navbar along with some additional content.

-
-
- -

Custom components

-
-
- - A one-page template example - -

Cover

-

A one-page template for building simple and beautiful home pages.

-
-
- - Carousel example - -

Carousel

-

Customize the navbar and carousel, then add some new components.

-
-
- -
- - Blog layout example - -

Blog

-

Simple two-column blog layout with custom navigation, header, and type.

-
-
- - Dashboard example - -

Dashboard

-

Basic structure for an admin dashboard with fixed sidebar and navbar.

-
-
- -
- - Sign-in page example - -

Sign-in page

-

Custom form layout and design for a simple sign in form.

-
-
- - Justified nav example - -

Justified nav

-

Create a custom navbar with justified links. Heads up! Not too Safari friendly.

-
-
- -
- - Sticky footer example - -

Sticky footer

-

Attach a footer to the bottom of the viewport when the content is shorter than it.

-
-
- - Sticky footer with navbar example - -

Sticky footer with navbar

-

Attach a footer to the bottom of the viewport with a fixed navbar at the top.

-
-
- -

Experiments

-
-
- - Non-responsive example - -

Non-responsive Bootstrap

-

Easily disable the responsiveness of Bootstrap per our docs.

-
-
- - Off-canvas navigation example - -

Offcanvas

-

Build a toggleable off-canvas navigation menu for use with Bootstrap.

-
-
-
diff --git a/src/pretix/static/bootstrap/docs/_includes/getting-started/grunt.html b/src/pretix/static/bootstrap/docs/_includes/getting-started/grunt.html deleted file mode 100644 index e5d4121eb0..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/getting-started/grunt.html +++ /dev/null @@ -1,35 +0,0 @@ -
-

Compiling CSS and JavaScript

- -

Bootstrap uses Grunt for its build system, with convenient methods for working with the framework. It's how we compile our code, run tests, and more.

- -

Installing Grunt

-

To install Grunt, you must first download and install node.js (which includes npm). npm stands for node packaged modules and is a way to manage development dependencies through node.js.

- - Then, from the command line: -
    -
  1. Install grunt-cli globally with npm install -g grunt-cli.
  2. -
  3. Navigate to the root /bootstrap/ directory, then run npm install. npm will look at the package.json file and automatically install the necessary local dependencies listed there.
  4. -
- -

When completed, you'll be able to run the various Grunt commands provided from the command line.

- -

Available Grunt commands

-

grunt dist (Just compile CSS and JavaScript)

-

Regenerates the /dist/ directory with compiled and minified CSS and JavaScript files. As a Bootstrap user, this is normally the command you want.

- -

grunt watch (Watch)

-

Watches the Less source files and automatically recompiles them to CSS whenever you save a change.

- -

grunt test (Run tests)

-

Runs JSHint and runs the QUnit tests headlessly in PhantomJS.

- -

grunt docs (Build & test the docs assets)

-

Builds and tests CSS, JavaScript, and other assets which are used when running the documentation locally via jekyll serve.

- -

grunt (Build absolutely everything and run tests)

-

Compiles and minifies CSS and JavaScript, builds the documentation website, runs the HTML5 validator against the docs, regenerates the Customizer assets, and more. Requires Jekyll. Usually only necessary if you're hacking on Bootstrap itself.

- -

Troubleshooting

-

Should you encounter problems with installing dependencies or running Grunt commands, first delete the /node_modules/ directory generated by npm. Then, rerun npm install.

-
diff --git a/src/pretix/static/bootstrap/docs/_includes/getting-started/license.html b/src/pretix/static/bootstrap/docs/_includes/getting-started/license.html deleted file mode 100644 index 9181d0fd8d..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/getting-started/license.html +++ /dev/null @@ -1,34 +0,0 @@ -
-

License FAQs

-

Bootstrap is released under the MIT license and is copyright {{ site.time | date: "%Y" }} Twitter. Boiled down to smaller chunks, it can be described with the following conditions.

- -

It requires you to:

-
    -
  • Include the license and copyright notice in your works
  • -
- -

It permits you to:

-
    -
  • Freely download and use Bootstrap, in whole or in part, for personal, private, company internal, or commercial purposes
  • -
  • Use Bootstrap in packages or distributions that you create
  • -
  • Modify the source code
  • -
  • Grant a sublicense to modify and distribute Bootstrap to third parties not included in the license
  • -
- -

It forbids you to:

-
    -
  • Hold the authors and license owners liable for damages as Bootstrap is provided without warranty
  • -
  • Hold the creators or copyright holders of Bootstrap liable
  • -
  • Redistribute any piece of Bootstrap without proper attribution
  • -
  • Use any marks owned by Twitter in any way that might state or imply that Twitter endorses your distribution
  • -
  • Use any marks owned by Twitter in any way that might state or imply that you created the Twitter software in question
  • -
- -

It does not require you to:

-
    -
  • Include the source of Bootstrap itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it
  • -
  • Submit changes that you make to Bootstrap back to the Bootstrap project (though such feedback is encouraged)
  • -
- -

The full Bootstrap license is located in the project repository for more information.

-
diff --git a/src/pretix/static/bootstrap/docs/_includes/getting-started/template.html b/src/pretix/static/bootstrap/docs/_includes/getting-started/template.html deleted file mode 100644 index 84e0098857..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/getting-started/template.html +++ /dev/null @@ -1,36 +0,0 @@ -
-

Basic template

- -

Start with this basic HTML template, or modify these examples. We hope you'll customize our templates and examples, adapting them to suit your needs.

- -

Copy the HTML below to begin working with a minimal Bootstrap document.

-{% highlight html %} - - - - - - - Bootstrap 101 Template - - - - - - - - - -

Hello, world!

- - - - - - - -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/getting-started/third-party-support.html b/src/pretix/static/bootstrap/docs/_includes/getting-started/third-party-support.html deleted file mode 100644 index 77d869c536..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/getting-started/third-party-support.html +++ /dev/null @@ -1,51 +0,0 @@ -
-

Third party support

-

While we don't officially support any third party plugins or add-ons, we do offer some useful advice to help avoid potential issues in your projects.

- -

Box-sizing

-

Some third party software, including Google Maps and Google Custom Search Engine, conflict with Bootstrap due to * { box-sizing: border-box; }, a rule which makes it so padding does not affect the final computed width of an element. Learn more about box model and sizing at CSS Tricks.

-

Depending on the context, you may override as-needed (Option 1) or reset the box-sizing for entire regions (Option 2).

-{% highlight scss %} -/* Box-sizing resets - * - * Reset individual elements or override regions to avoid conflicts due to - * global box model settings of Bootstrap. Two options, individual overrides and - * region resets, are available as plain CSS and uncompiled Less formats. - */ - -/* Option 1A: Override a single element's box model via CSS */ -.element { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -/* Option 1B: Override a single element's box model by using a Bootstrap Less mixin */ -.element { - .box-sizing(content-box); -} - -/* Option 2A: Reset an entire region via CSS */ -.reset-box-sizing, -.reset-box-sizing *, -.reset-box-sizing *:before, -.reset-box-sizing *:after { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -/* Option 2B: Reset an entire region with a custom Less mixin */ -.reset-box-sizing { - &, - *, - *:before, - *:after { - .box-sizing(content-box); - } -} -.element { - .reset-box-sizing(); -} -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/getting-started/tools.html b/src/pretix/static/bootstrap/docs/_includes/getting-started/tools.html deleted file mode 100644 index 2a38643fa8..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/getting-started/tools.html +++ /dev/null @@ -1,6 +0,0 @@ -
-

Tools

- -

Bootlint

-

Bootlint is the official Bootstrap HTML linter tool. It automatically checks for several common HTML mistakes in webpages that are using Bootstrap in a fairly "vanilla" way. Vanilla Bootstrap's components/widgets require their parts of the DOM to conform to certain structures. Bootlint checks that instances of Bootstrap components have correctly-structured HTML. Consider adding Bootlint to your Bootstrap web development toolchain so that none of the common mistakes slow down your project's development.

-
diff --git a/src/pretix/static/bootstrap/docs/_includes/getting-started/translations.html b/src/pretix/static/bootstrap/docs/_includes/getting-started/translations.html deleted file mode 100644 index 215f790de2..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/getting-started/translations.html +++ /dev/null @@ -1,12 +0,0 @@ -
-

Translations

- -

Community members have translated Bootstrap's documentation into various languages. None are officially supported and they may not always be up to date.

- -

We don't help organize or host translations, we just link to them.

-

Finished a new or better translation? Open a pull request to add it to our list.

-
diff --git a/src/pretix/static/bootstrap/docs/_includes/getting-started/whats-included.html b/src/pretix/static/bootstrap/docs/_includes/getting-started/whats-included.html deleted file mode 100644 index 8aa8cf2a96..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/getting-started/whats-included.html +++ /dev/null @@ -1,53 +0,0 @@ -
-

What's included

- -

Bootstrap is downloadable in two forms, within which you'll find the following directories and files, logically grouping common resources and providing both compiled and minified variations.

- -
-

jQuery required

-

Please note that all JavaScript plugins require jQuery to be included, as shown in the starter template. Consult our bower.json to see which versions of jQuery are supported.

-
- -

Precompiled Bootstrap

-

Once downloaded, unzip the compressed folder to see the structure of (the compiled) Bootstrap. You'll see something like this:

- -{% highlight bash %} -bootstrap/ -├── css/ -│ ├── bootstrap.css -│ ├── bootstrap.css.map -│ ├── bootstrap.min.css -│ ├── bootstrap-theme.css -│ ├── bootstrap-theme.css.map -│ └── bootstrap-theme.min.css -├── js/ -│ ├── bootstrap.js -│ └── bootstrap.min.js -└── fonts/ - ├── glyphicons-halflings-regular.eot - ├── glyphicons-halflings-regular.svg - ├── glyphicons-halflings-regular.ttf - ├── glyphicons-halflings-regular.woff - └── glyphicons-halflings-regular.woff2 -{% endhighlight %} - -

This is the most basic form of Bootstrap: precompiled files for quick drop-in usage in nearly any web project. We provide compiled CSS and JS (bootstrap.*), as well as compiled and minified CSS and JS (bootstrap.min.*). CSS source maps (bootstrap.*.map) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme.

- -

Bootstrap source code

-

The Bootstrap source code download includes the precompiled CSS, JavaScript, and font assets, along with source Less, JavaScript, and documentation. More specifically, it includes the following and more:

-{% highlight bash %} -bootstrap/ -├── less/ -├── js/ -├── fonts/ -├── dist/ -│ ├── css/ -│ ├── js/ -│ └── fonts/ -└── docs/ - └── examples/ -{% endhighlight %} -

The less/, js/, and fonts/ are the source code for our CSS, JS, and icon fonts (respectively). The dist/ folder includes everything listed in the precompiled download section above. The docs/ folder includes the source code for our documentation, and examples/ of Bootstrap usage. Beyond that, any other included file provides support for packages, license information, and development.

-
diff --git a/src/pretix/static/bootstrap/docs/_includes/header.html b/src/pretix/static/bootstrap/docs/_includes/header.html deleted file mode 100644 index bf536fc4d2..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/header.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - {% if page.layout == "home" %} - {{ page.title }} - {% else %} - {{ page.title }} · Bootstrap - {% endif %} - - - -{% if site.github %} - -{% else %} - -{% endif %} -{% if page.slug == "css" or page.slug == "components" or page.slug == "js" %} - -{% if site.github %} - -{% else %} - -{% endif %} -{% endif %} - - -{% if site.github %} - -{% else %} - - -{% endif %} - - - - - - - - - - - diff --git a/src/pretix/static/bootstrap/docs/_includes/js/affix.html b/src/pretix/static/bootstrap/docs/_includes/js/affix.html deleted file mode 100644 index 3cb846ea90..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/js/affix.html +++ /dev/null @@ -1,115 +0,0 @@ -
-

Affix affix.js

- -

Example

-

The subnavigation on the right is a live demo of the affix plugin.

- -
- -

Usage

-

Use the affix plugin via data attributes or manually with your own JavaScript. In both situations, you must provide CSS for the positioning and width of your affixed content.

- -

Positioning via CSS

-

The affix plugin toggles between three classes, each representing a particular state: .affix, .affix-top, and .affix-bottom. You must provide the styles for these classes yourself (independent of this plugin) to handle the actual positions.

-

Here's how the affix plugin works:

-
    -
  1. To start, the plugin adds .affix-top to indicate the element is in its top-most position. At this point no CSS positioning is required.
  2. -
  3. Scrolling past the element you want affixed should trigger the actual affixing. This is where .affix replaces .affix-top and sets position: fixed; (provided by Bootstrap's CSS).
  4. -
  5. If a bottom offset is defined, scrolling past it should replace .affix with .affix-bottom. Since offsets are optional, setting one requires you to set the appropriate CSS. In this case, add position: absolute; when necessary. The plugin uses the data attribute or JavaScript option to determine where to position the element from there.
  6. -
-

Follow the above steps to set your CSS for either of the usage options below.

- -

Via data attributes

-

To easily add affix behavior to any element, just add data-spy="affix" to the element you want to spy on. Use offsets to define when to toggle the pinning of an element.

- -{% highlight html %} -
- ... -
-{% endhighlight %} - -

Via JavaScript

-

Call the affix plugin via JavaScript:

-{% highlight js %} -$('#myAffix').affix({ - offset: { - top: 100, - bottom: function () { - return (this.bottom = $('.footer').outerHeight(true)) - } - } -}) -{% endhighlight %} - - -

Options

-

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-offset-top="200".

- -
- - - - - - - - - - - - - - - - - - - - - - - - -
Nametypedefaultdescription
offsetnumber | function | object10Pixels to offset from screen when calculating position of scroll. If a single number is provided, the offset will be applied in both top and bottom directions. To provide a unique, bottom and top offset just provide an object offset: { top: 10 } or offset: { top: 10, bottom: 5 }. Use a function when you need to dynamically calculate an offset.
targetselector | node | jQuery elementthe window objectSpecifies the target element of the affix.
-
- - -

Events

-

Bootstrap's affix plugin exposes a few events for hooking into affix functionality.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Event TypeDescription
affix.bs.affixThis event fires immediately before the element has been affixed.
affixed.bs.affixThis event is fired after the element has been affixed.
affix-top.bs.affixThis event fires immediately before the element has been affixed-top.
affixed-top.bs.affixThis event is fired after the element has been affixed-top.
affix-bottom.bs.affixThis event fires immediately before the element has been affixed-bottom.
affixed-bottom.bs.affixThis event is fired after the element has been affixed-bottom.
-
-
diff --git a/src/pretix/static/bootstrap/docs/_includes/js/alerts.html b/src/pretix/static/bootstrap/docs/_includes/js/alerts.html deleted file mode 100644 index 399cd732f3..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/js/alerts.html +++ /dev/null @@ -1,73 +0,0 @@ -
-

Alert messages alert.js

- -

Example alerts

-

Add dismiss functionality to all alert messages with this plugin.

-

When using a .close button, it must be the first child of the .alert-dismissible and no text content may come before it in the markup.

-
- - - -
- - -

Usage

- -

Just add data-dismiss="alert" to your close button to automatically give an alert close functionality. Closing an alert removes it from the DOM.

- -{% highlight html %} - -{% endhighlight %} - -

To have your alerts use animation when closing, make sure they have the .fade and .in classes already applied to them.

- -

Methods

- -

$().alert()

-

Makes an alert listen for click events on descendant elements which have the data-dismiss="alert" attribute. (Not necessary when using the data-api's auto-initialization.)

- -

$().alert('close')

-

Closes an alert by removing it from the DOM. If the .fade and .in classes are present on the element, the alert will fade out before it is removed.

- - -

Events

-

Bootstrap's alert plugin exposes a few events for hooking into alert functionality.

-
- - - - - - - - - - - - - - - - - -
Event TypeDescription
close.bs.alertThis event fires immediately when the close instance method is called.
closed.bs.alertThis event is fired when the alert has been closed (will wait for CSS transitions to complete).
-
-{% highlight js %} -$('#myAlert').on('closed.bs.alert', function () { - // do something… -}) -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/js/buttons.html b/src/pretix/static/bootstrap/docs/_includes/js/buttons.html deleted file mode 100644 index 83bf0bfaae..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/js/buttons.html +++ /dev/null @@ -1,138 +0,0 @@ -
-

Buttons button.js

- -

Do more with buttons. Control button states or create groups of buttons for more components like toolbars.

- -
-

Cross-browser compatibility

-

Firefox persists form control states (disabledness and checkedness) across page loads. A workaround for this is to use autocomplete="off". See Mozilla bug #654072.

-
- -

Stateful

-

Add data-loading-text="Loading..." to use a loading state on a button.

-
-

Use whichever state you like!

-

For the sake of this demonstration, we are using data-loading-text and $().button('loading'), but that's not the only state you can use. See more on this below in the $().button(string) documentation.

-
-
- -
-{% highlight html %} - - - -{% endhighlight %} - -

Single toggle

-

Add data-toggle="button" to activate toggling on a single button.

-
-

Pre-toggled buttons need .active and aria-pressed="true"

-

For pre-toggled buttons, you must add the .active class and the aria-pressed="true" attribute to the button yourself.

-
-
- -
-{% highlight html %} - -{% endhighlight %} - -

Checkbox / Radio

-

Add data-toggle="buttons" to a .btn-group containing checkbox or radio inputs to enable toggling in their respective styles.

-
-

Preselected options need .active

-

For preselected options, you must add the .active class to the input's label yourself.

-
-
-

Visual checked state only updated on click

-

If the checked state of a checkbox button is updated without firing a click event on the button (e.g. via <input type="reset"> or via setting the checked property of the input), you will need to toggle the .active class on the input's label yourself.

-
-
-
- - - -
-
-{% highlight html %} -
- - - -
-{% endhighlight %} - -
-
- - - -
-
-{% highlight html %} -
- - - -
-{% endhighlight %} - -

Methods

- -

$().button('toggle')

-

Toggles push state. Gives the button the appearance that it has been activated.

- -

$().button('reset')

-

Resets button state - swaps text to original text.

- -

$().button(string)

-

Swaps text to any data defined text state.

-{% highlight html %} - - - -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/js/carousel.html b/src/pretix/static/bootstrap/docs/_includes/js/carousel.html deleted file mode 100644 index bf2fbececc..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/js/carousel.html +++ /dev/null @@ -1,254 +0,0 @@ -
-

Carousel carousel.js

- -

A slideshow component for cycling through elements, like a carousel. Nested carousels are not supported.

- - -
- -
-{% highlight html %} - -{% endhighlight %} - - - - - - - -

Optional captions

-

Add captions to your slides easily with the .carousel-caption element within any .item. Place just about any optional HTML within there and it will be automatically aligned and formatted.

-
- -
-{% highlight html %} -
- ... - -
-{% endhighlight %} - - - -

Multiple carousels

-

Carousels require the use of an id on the outermost container (the .carousel) for carousel controls to function properly. When adding multiple carousels, or when changing a carousel's id, be sure to update the relevant controls.

- -

Via data attributes

-

Use data attributes to easily control the position of the carousel. data-slide accepts the keywords prev or next, which alters the slide position relative to its current position. Alternatively, use data-slide-to to pass a raw slide index to the carousel data-slide-to="2", which shifts the slide position to a particular index beginning with 0.

-

The data-ride="carousel" attribute is used to mark a carousel as animating starting at page load. It cannot be used in combination with (redundant and unnecessary) explicit JavaScript initialization of the same carousel.

- -

Via JavaScript

-

Call carousel manually with:

-{% highlight js %} -$('.carousel').carousel() -{% endhighlight %} - - -

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-interval="".

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Nametypedefaultdescription
intervalnumber5000The amount of time to delay between automatically cycling an item. If false, carousel will not automatically cycle.
pausestring"hover"Pauses the cycling of the carousel on mouseenter and resumes the cycling of the carousel on mouseleave.
wrapbooleantrueWhether the carousel should cycle continuously or have hard stops.
keyboardbooleantrueWhether the carousel should react to keyboard events.
-
- - - -

.carousel(options)

-

Initializes the carousel with an optional options object and starts cycling through items.

-{% highlight js %} -$('.carousel').carousel({ - interval: 2000 -}) -{% endhighlight %} - -

.carousel('cycle')

-

Cycles through the carousel items from left to right.

- -

.carousel('pause')

-

Stops the carousel from cycling through items.

- - -

.carousel(number)

-

Cycles the carousel to a particular frame (0 based, similar to an array).

- -

.carousel('prev')

-

Cycles to the previous item.

- -

.carousel('next')

-

Cycles to the next item.

- - -

Bootstrap's carousel class exposes two events for hooking into carousel functionality.

-

Both events have the following additional properties:

-
    -
  • direction: The direction in which the carousel is sliding (either "left" or "right").
  • -
  • relatedTarget: The DOM element that is being slid into place as the active item.
  • -
-
- - - - - - - - - - - - - - - - - -
Event TypeDescription
slide.bs.carouselThis event fires immediately when the slide instance method is invoked.
slid.bs.carouselThis event is fired when the carousel has completed its slide transition.
-
-{% highlight js %} -$('#myCarousel').on('slide.bs.carousel', function () { - // do something… -}) -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/js/collapse.html b/src/pretix/static/bootstrap/docs/_includes/js/collapse.html deleted file mode 100644 index ca84ac857c..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/js/collapse.html +++ /dev/null @@ -1,277 +0,0 @@ -
-

Collapse collapse.js

- -

Flexible plugin that utilizes a handful of classes for easy toggle behavior.

- -
-

Plugin dependency

-

Collapse requires the transitions plugin to be included in your version of Bootstrap.

-
- -

Example

-

Click the buttons below to show and hide another element via class changes:

-
    -
  • .collapse hides content
  • -
  • .collapsing is applied during transitions
  • -
  • .collapse.in shows content
  • -
-

You can use a link with the href attribute, or a button with the data-target attribute. In both cases, the data-toggle="collapse" is required.

- -
-

- - -

-
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. -
-
-
-{% highlight html %} - - -
-
- ... -
-
-{% endhighlight %} - -

Accordion example

-

Extend the default collapse behavior to create an accordion with the panel component.

- -
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
-
-{% highlight html %} -
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
- -
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. -
-
-
-
-{% endhighlight %} - -

It's also possible to swap out .panel-bodys with .list-groups.

- -
-
- -
-
    -
  • Bootply
  • -
  • One itmus ac facilin
  • -
  • Second eros
  • -
- -
-
-
- -
-

Make expand/collapse controls accessible

-

Be sure to add aria-expanded to the control element. This attribute explicitly defines the current state of the collapsible element to screen readers and similar assistive technologies. If the collapsible element is closed by default, it should have a value of aria-expanded="false". If you've set the collapsible element to be open by default using the in class, set aria-expanded="true" on the control instead. The plugin will automatically toggle this attribute based on whether or not the collapsible element has been opened or closed.

-

Additionally, if your control element is targetting a single collapsible element – i.e. the data-target attribute is pointing to an id selector – you may add an additional aria-controls attribute to the control element, containing the id of the collapsible element. Modern screen readers and similar assistive technologies make use of this attribute to provide users with additional shortcuts to navigate directly to the collapsible element itself.

-
- -

Usage

-

The collapse plugin utilizes a few classes to handle the heavy lifting:

-
    -
  • .collapse hides the content
  • -
  • .collapse.in shows the content
  • -
  • .collapsing is added when the transition starts, and removed when it finishes
  • -
-

These classes can be found in component-animations.less.

- -

Via data attributes

-

Just add data-toggle="collapse" and a data-target to the element to automatically assign control of a collapsible element. The data-target attribute accepts a CSS selector to apply the collapse to. Be sure to add the class collapse to the collapsible element. If you'd like it to default open, add the additional class in.

-

To add accordion-like group management to a collapsible control, add the data attribute data-parent="#selector". Refer to the demo to see this in action.

- -

Via JavaScript

-

Enable manually with:

-{% highlight js %} -$('.collapse').collapse() -{% endhighlight %} - -

Options

-

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-parent="".

-
- - - - - - - - - - - - - - - - - - - - - - - -
Nametypedefaultdescription
parentselectorfalseIf a selector is provided, then all collapsible elements under the specified parent will be closed when this collapsible item is shown. (similar to traditional accordion behavior - this is dependent on the panel class)
togglebooleantrueToggles the collapsible element on invocation
-
- -

Methods

- -

.collapse(options)

-

Activates your content as a collapsible element. Accepts an optional options object. -{% highlight js %} -$('#myCollapsible').collapse({ - toggle: false -}) -{% endhighlight %} - -

.collapse('toggle')

-

Toggles a collapsible element to shown or hidden.

- -

.collapse('show')

-

Shows a collapsible element.

- -

.collapse('hide')

-

Hides a collapsible element.

- -

Events

-

Bootstrap's collapse class exposes a few events for hooking into collapse functionality.

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
Event TypeDescription
show.bs.collapseThis event fires immediately when the show instance method is called.
shown.bs.collapseThis event is fired when a collapse element has been made visible to the user (will wait for CSS transitions to complete).
hide.bs.collapse - This event is fired immediately when the hide method has been called. -
hidden.bs.collapseThis event is fired when a collapse element has been hidden from the user (will wait for CSS transitions to complete).
-
-{% highlight js %} -$('#myCollapsible').on('hidden.bs.collapse', function () { - // do something… -}) -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/js/dropdowns.html b/src/pretix/static/bootstrap/docs/_includes/js/dropdowns.html deleted file mode 100644 index 683453096d..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/js/dropdowns.html +++ /dev/null @@ -1,201 +0,0 @@ -
-

Dropdowns dropdown.js

- - -

Add dropdown menus to nearly anything with this simple plugin, including the navbar, tabs, and pills.

- -

Within a navbar

- - -

Within pills

- - - - -

Via data attributes or JavaScript, the dropdown plugin toggles hidden content (dropdown menus) by toggling the .open class on the parent list item.

-

On mobile devices, opening a dropdown adds a .dropdown-backdrop as a tap area for closing dropdown menus when tapping outside the menu, a requirement for proper iOS support. This means that switching from an open dropdown menu to a different dropdown menu requires an extra tap on mobile.

-

Note: The data-toggle="dropdown" attribute is relied on for closing dropdown menus at an application level, so it's a good idea to always use it.

- -

Via data attributes

-

Add data-toggle="dropdown" to a link or button to toggle a dropdown.

-{% highlight html %} - -{% endhighlight %} -

To keep URLs intact with link buttons, use the data-target attribute instead of href="#".

-{% highlight html %} - -{% endhighlight %} - -

Via JavaScript

-

Call the dropdowns via JavaScript:

-{% highlight js %} -$('.dropdown-toggle').dropdown() -{% endhighlight %} -
-

data-toggle="dropdown" still required

-

Regardless of whether you call your dropdown via JavaScript or instead use the data-api, data-toggle="dropdown" is always required to be present on the dropdown's trigger element.

-
- - -

None

- - -

$().dropdown('toggle')

-

Toggles the dropdown menu of a given navbar or tabbed navigation.

- - -

All dropdown events are fired at the .dropdown-menu's parent element.

-

All dropdown events have a relatedTarget property, whose value is the toggling anchor element.

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
Event TypeDescription
show.bs.dropdownThis event fires immediately when the show instance method is called.
shown.bs.dropdownThis event is fired when the dropdown has been made visible to the user (will wait for CSS transitions, to complete).
hide.bs.dropdownThis event is fired immediately when the hide instance method has been called.
hidden.bs.dropdownThis event is fired when the dropdown has finished being hidden from the user (will wait for CSS transitions, to complete).
-
-{% highlight js %} -$('#myDropdown').on('show.bs.dropdown', function () { - // do something… -}) -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/js/modal.html b/src/pretix/static/bootstrap/docs/_includes/js/modal.html deleted file mode 100644 index f5861f4a5f..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/js/modal.html +++ /dev/null @@ -1,422 +0,0 @@ -
-

Modals modal.js

-

Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults.

- -
-

Overlapping modals not supported

-

Be sure not to open a modal while another is still visible. Showing more than one modal at a time requires custom code.

-
-
-

Modal markup placement

-

Always try to place a modal's HTML code in a top-level position in your document to avoid other components affecting the modal's appearance and/or functionality.

-
-
-

Mobile device caveats

-

There are some caveats regarding using modals on mobile devices. See our browser support docs for details.

-
- -

Due to how HTML5 defines its semantics, the autofocus HTML attribute has no effect in Bootstrap modals. To achieve the same effect, use some custom JavaScript:

- {% highlight js %} - $('#myModal').on('shown.bs.modal', function () { - $('#myInput').focus() - }) - {% endhighlight %} - -

Examples

- -

Static example

-

A rendered modal with header, body, and set of actions in the footer.

-
- -
-{% highlight html %} - -{% endhighlight %} - -

Live demo

-

Toggle a modal via JavaScript by clicking the button below. It will slide down and fade in from the top of the page.

- - - -
- -
-{% highlight html %} - - - - - -{% endhighlight %} - -
-

Make modals accessible

-

Be sure to add role="dialog" to .modal, aria-labelledby="myModalLabel" attribute to reference the modal title, and aria-hidden="true" to tell assistive technologies to skip the modal's DOM elements.

-

Additionally, you may give a description of your modal dialog with aria-describedby on .modal.

-
- -
-

Embedding YouTube videos

-

Embedding YouTube videos in modals requires additional JavaScript not in Bootstrap to automatically stop playback and more. See this helpful Stack Overflow post for more information.

-
- -

Optional sizes

-

Modals have two optional sizes, available via modifier classes to be placed on a .modal-dialog.

-
- - -
-{% highlight html %} - - - - - - - - - -{% endhighlight %} - - - - - -

Remove animation

-

For modals that simply appear rather than fade in to view, remove the .fade class from your modal markup.

-{% highlight html %} - -{% endhighlight %} - - -

Have a bunch of buttons that all trigger the same modal, just with slightly different contents? Use event.relatedTarget and HTML data-* attributes (possibly via jQuery) to vary the contents of the modal depending on which button was clicked. See the Modal Events docs for details on relatedTarget,

-
- - - - ...more buttons... - - -
-{% highlight html %} - - - -...more buttons... - - -{% endhighlight %} -{% highlight js %} -$('#exampleModal').on('show.bs.modal', function (event) { - var button = $(event.relatedTarget) // Button that triggered the modal - var recipient = button.data('whatever') // Extract info from data-* attributes - // If necessary, you could initiate an AJAX request here (and then do the updating in a callback). - // Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead. - var modal = $(this) - modal.find('.modal-title').text('New message to ' + recipient) - modal.find('.modal-body input').val(recipient) -}) -{% endhighlight %} - -

Usage

-

The modal plugin toggles your hidden content on demand, via data attributes or JavaScript. It also adds .modal-open to the <body> to override default scrolling behavior and generates a .modal-backdrop to provide a click area for dismissing shown modals when clicking outside the modal.

- -

Via data attributes

-

Activate a modal without writing JavaScript. Set data-toggle="modal" on a controller element, like a button, along with a data-target="#foo" or href="#foo" to target a specific modal to toggle.

-{% highlight html %} - -{% endhighlight %} - -

Via JavaScript

-

Call a modal with id myModal with a single line of JavaScript:

- {% highlight js %}$('#myModal').modal(options){% endhighlight %} - -

Options

-

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-backdrop="".

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Nametypedefaultdescription
backdropboolean or the string 'static'trueIncludes a modal-backdrop element. Alternatively, specify static for a backdrop which doesn't close the modal on click.
keyboardbooleantrueCloses the modal when escape key is pressed
showbooleantrueShows the modal when initialized.
remotepathfalse -

This option is deprecated since v3.3.0 and will be removed in v4. We recommend instead using client-side templating or a data binding framework, or calling jQuery.load yourself.

-

If a remote URL is provided, content will be loaded one time via jQuery's load method and injected into the .modal-content div. If you're using the data-api, you may alternatively use the href attribute to specify the remote source. An example of this is shown below:

-{% highlight html %} -Click me -{% endhighlight %} -
-
- -

Methods

- -

.modal(options)

-

Activates your content as a modal. Accepts an optional options object.

-{% highlight js %} -$('#myModal').modal({ - keyboard: false -}) -{% endhighlight %} - -

.modal('toggle')

-

Manually toggles a modal. Returns to the caller before the modal has actually been shown or hidden (i.e. before the shown.bs.modal or hidden.bs.modal event occurs).

- {% highlight js %}$('#myModal').modal('toggle'){% endhighlight %} - -

.modal('show')

-

Manually opens a modal. Returns to the caller before the modal has actually been shown (i.e. before the shown.bs.modal event occurs).

- {% highlight js %}$('#myModal').modal('show'){% endhighlight %} - -

.modal('hide')

-

Manually hides a modal. Returns to the caller before the modal has actually been hidden (i.e. before the hidden.bs.modal event occurs).

- {% highlight js %}$('#myModal').modal('hide'){% endhighlight %} - -

Events

-

Bootstrap's modal class exposes a few events for hooking into modal functionality.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Event TypeDescription
show.bs.modalThis event fires immediately when the show instance method is called. If caused by a click, the clicked element is available as the relatedTarget property of the event.
shown.bs.modalThis event is fired when the modal has been made visible to the user (will wait for CSS transitions to complete). If caused by a click, the clicked element is available as the relatedTarget property of the event.
hide.bs.modalThis event is fired immediately when the hide instance method has been called.
hidden.bs.modalThis event is fired when the modal has finished being hidden from the user (will wait for CSS transitions to complete).
loaded.bs.modalThis event is fired when the modal has loaded content using the remote option.
-
-{% highlight js %} -$('#myModal').on('hidden.bs.modal', function (e) { - // do something... -}) -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/js/overview.html b/src/pretix/static/bootstrap/docs/_includes/js/overview.html deleted file mode 100644 index 89030966c9..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/js/overview.html +++ /dev/null @@ -1,86 +0,0 @@ -
-

Overview

- -

Individual or compiled

-

Plugins can be included individually (using Bootstrap's individual *.js files), or all at once (using bootstrap.js or the minified bootstrap.min.js).

- -
-

Using the compiled JavaScript

-

Both bootstrap.js and bootstrap.min.js contain all plugins in a single file. Include only one.

-
- -
-

Plugin dependencies

-

Some plugins and CSS components depend on other plugins. If you include plugins individually, make sure to check for these dependencies in the docs. Also note that all plugins depend on jQuery (this means jQuery must be included before the plugin files). Consult our bower.json to see which versions of jQuery are supported.

-
- -

Data attributes

-

You can use all Bootstrap plugins purely through the markup API without writing a single line of JavaScript. This is Bootstrap's first-class API and should be your first consideration when using a plugin.

- -

That said, in some situations it may be desirable to turn this functionality off. Therefore, we also provide the ability to disable the data attribute API by unbinding all events on the document namespaced with data-api. This looks like this:

-{% highlight js %} -$(document).off('.data-api') -{% endhighlight %} - -

Alternatively, to target a specific plugin, just include the plugin's name as a namespace along with the data-api namespace like this:

-{% highlight js %} -$(document).off('.alert.data-api') -{% endhighlight %} - -
-

Only one plugin per element via data attributes

-

Don't use data attributes from multiple plugins on the same element. For example, a button cannot both have a tooltip and toggle a modal. To accomplish this, use a wrapping element.

-
- -

Programmatic API

-

We also believe you should be able to use all Bootstrap plugins purely through the JavaScript API. All public APIs are single, chainable methods, and return the collection acted upon.

-{% highlight js %} -$('.btn.danger').button('toggle').addClass('fat') -{% endhighlight %} - -

All methods should accept an optional options object, a string which targets a particular method, or nothing (which initiates a plugin with default behavior):

-{% highlight js %} -$('#myModal').modal() // initialized with defaults -$('#myModal').modal({ keyboard: false }) // initialized with no keyboard -$('#myModal').modal('show') // initializes and invokes show immediately -{% endhighlight %} - -

Each plugin also exposes its raw constructor on a Constructor property: $.fn.popover.Constructor. If you'd like to get a particular plugin instance, retrieve it directly from an element: $('[rel="popover"]').data('popover').

- -

Default settings

-

You can change the default settings for a plugin by modifying the plugin's Constructor.DEFAULTS object:

-{% highlight js %} -$.fn.modal.Constructor.DEFAULTS.keyboard = false // changes default for the modal plugin's `keyboard` option to false -{% endhighlight %} - -

No conflict

-

Sometimes it is necessary to use Bootstrap plugins with other UI frameworks. In these circumstances, namespace collisions can occasionally occur. If this happens, you may call .noConflict on the plugin you wish to revert the value of.

-{% highlight js %} -var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value -$.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality -{% endhighlight %} - -

Events

-

Bootstrap provides custom events for most plugins' unique actions. Generally, these come in an infinitive and past participle form - where the infinitive (ex. show) is triggered at the start of an event, and its past participle form (ex. shown) is triggered on the completion of an action.

-

As of 3.0.0, all Bootstrap events are namespaced.

-

All infinitive events provide preventDefault functionality. This provides the ability to stop the execution of an action before it starts.

-{% highlight js %} -$('#myModal').on('show.bs.modal', function (e) { - if (!data) return e.preventDefault() // stops modal from being shown -}) -{% endhighlight %} - -

Version numbers

-

The version of each of Bootstrap's jQuery plugins can be accessed via the VERSION property of the plugin's constructor. For example, for the tooltip plugin:

-{% highlight js %} -$.fn.tooltip.Constructor.VERSION // => "{{ site.current_version }}" -{% endhighlight %} - -

No special fallbacks when JavaScript is disabled

-

Bootstrap's plugins don't fall back particularly gracefully when JavaScript is disabled. If you care about the user experience in this case, use <noscript> to explain the situation (and how to re-enable JavaScript) to your users, and/or add your own custom fallbacks.

- -
-

Third-party libraries

-

Bootstrap does not officially support third-party JavaScript libraries like Prototype or jQuery UI. Despite .noConflict and namespaced events, there may be compatibility problems that you need to fix on your own.

-
-
diff --git a/src/pretix/static/bootstrap/docs/_includes/js/popovers.html b/src/pretix/static/bootstrap/docs/_includes/js/popovers.html deleted file mode 100644 index 7e96464d6c..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/js/popovers.html +++ /dev/null @@ -1,304 +0,0 @@ -
-

Popovers popover.js

- -

Add small overlays of content, like those on the iPad, to any element for housing secondary information.

-

Popovers whose both title and content are zero-length are never displayed.

- -
-

Plugin dependency

-

Popovers require the tooltip plugin to be included in your version of Bootstrap.

-
-
-

Opt-in functionality

-

For performance reasons, the Tooltip and Popover data-apis are opt-in, meaning you must initialize them yourself.

-

One way to initialize all popovers on a page would be to select them by their data-toggle attribute:

-{% highlight js %} -$(function () { - $('[data-toggle="popover"]').popover() -}) -{% endhighlight %} -
-
-

Popovers in button groups and input groups require special setting

-

When using popovers on elements within a .btn-group or an .input-group, you'll have to specify the option container: 'body' (documented below) to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the popover is triggered).

-
-
-

Don't try to show popovers on hidden elements

-

Invoking $(...).popover('show') when the target element is display: none; will cause the popover to be incorrectly positioned.

-
-
-

Popovers on disabled elements require wrapper elements

-

To add a popover to a disabled or .disabled element, put the element inside of a <div> and apply the popover to that <div> instead.

-
-
-

Multiple-line links

-

Sometimes you want to add a popover to a hyperlink that wraps multiple lines. The default behavior of the popover plugin is to center it horizontally and vertically. Add white-space: nowrap; to your anchors to avoid this.

-
- -

Examples

-

Static popover

-

Four options are available: top, right, bottom, and left aligned.

-
-
-
-

Popover top

-
-

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

-
-
- -
-
-

Popover right

-
-

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

-
-
- -
-
-

Popover bottom

- -
-

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

-
-
- -
-
-

Popover left

-
-

Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.

-
-
- -
-
- -

Live demo

-
- -
-{% highlight html %} - -{% endhighlight %} - -

Four directions

-
-
- - - - -
-
-{% highlight html %} - - - - - - - -{% endhighlight %} - -

Dismiss on next click

-

Use the focus trigger to dismiss popovers on the next click that the user makes.

-
-

Specific markup required for dismiss-on-next-click

-

For proper cross-browser and cross-platform behavior, you must use the <a> tag, not the <button> tag, and you also must include a tabindex attribute.

-
- -{% highlight html %} -Dismissible popover -{% endhighlight %} - - -

Usage

-

Enable popovers via JavaScript:

- {% highlight js %}$('#example').popover(options){% endhighlight %} - -

Options

-

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-animation="".

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
animationbooleantrueApply a CSS fade transition to the popover
containerstring | falsefalse -

Appends the popover to a specific element. Example: container: 'body'. This option is particularly useful in that it allows you to position the popover in the flow of the document near the triggering element - which will prevent the popover from floating away from the triggering element during a window resize.

-
contentstring | function'' -

Default content value if data-content attribute isn't present.

-

If a function is given, it will be called with its this reference set to the element that the popover is attached to.

-
delaynumber | object0 -

Delay showing and hiding the popover (ms) - does not apply to manual trigger type

-

If a number is supplied, delay is applied to both hide/show

-

Object structure is: delay: { "show": 500, "hide": 100 }

-
htmlbooleanfalseInsert HTML into the popover. If false, jQuery's text method will be used to insert content into the DOM. Use text if you're worried about XSS attacks.
placementstring | function'right' -

How to position the popover - top | bottom | left | right | auto.
When "auto" is specified, it will dynamically reorient the popover. For example, if placement is "auto left", the popover will display to the left when possible, otherwise it will display right.

-

When a function is used to determine the placement, it is called with the popover DOM node as its first argument and the triggering element DOM node as its second. The this context is set to the popover instance.

-
selectorstringfalseIf a selector is provided, popover objects will be delegated to the specified targets. In practice, this is used to enable dynamic HTML content to have popovers added. See this and an informative example.
templatestring'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' -

Base HTML to use when creating the popover.

-

The popover's title will be injected into the .popover-title.

-

The popover's content will be injected into the .popover-content.

-

.arrow will become the popover's arrow.

-

The outermost wrapper element should have the .popover class.

-
titlestring | function'' -

Default title value if title attribute isn't present.

-

If a function is given, it will be called with its this reference set to the element that the popover is attached to.

-
triggerstring'click'How popover is triggered - click | hover | focus | manual. You may pass multiple triggers; separate them with a space.
viewportstring | object{ selector: 'body', padding: 0 } -

Keeps the popover within the bounds of this element. Example: viewport: '#viewport' or { "selector": "#viewport", "padding": 0 }

-
-
-
-

Data attributes for individual popovers

-

Options for individual popovers can alternatively be specified through the use of data attributes, as explained above.

-
- -

Methods

-

$().popover(options)

-

Initializes popovers for an element collection.

- -

.popover('show')

-

Reveals an element's popover. Returns to the caller before the popover has actually been shown (i.e. before the shown.bs.popover event occurs). This is considered a "manual" triggering of the popover. Popovers whose both title and content are zero-length are never displayed.

- {% highlight js %}$('#element').popover('show'){% endhighlight %} - -

.popover('hide')

-

Hides an element's popover. Returns to the caller before the popover has actually been hidden (i.e. before the hidden.bs.popover event occurs). This is considered a "manual" triggering of the popover.

- {% highlight js %}$('#element').popover('hide'){% endhighlight %} - -

.popover('toggle')

-

Toggles an element's popover. Returns to the caller before the popover has actually been shown or hidden (i.e. before the shown.bs.popover or hidden.bs.popover event occurs). This is considered a "manual" triggering of the popover.

- {% highlight js %}$('#element').popover('toggle'){% endhighlight %} - -

.popover('destroy')

-

Hides and destroys an element's popover.

- {% highlight js %}$('#element').popover('destroy'){% endhighlight %} - -

Events

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
Event TypeDescription
show.bs.popoverThis event fires immediately when the show instance method is called.
shown.bs.popoverThis event is fired when the popover has been made visible to the user (will wait for CSS transitions to complete).
hide.bs.popoverThis event is fired immediately when the hide instance method has been called.
hidden.bs.popoverThis event is fired when the popover has finished being hidden from the user (will wait for CSS transitions to complete).
-
-{% highlight js %} -$('#myPopover').on('hidden.bs.popover', function () { - // do something… -}) -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/js/scrollspy.html b/src/pretix/static/bootstrap/docs/_includes/js/scrollspy.html deleted file mode 100644 index 6023731725..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/js/scrollspy.html +++ /dev/null @@ -1,151 +0,0 @@ -
-

ScrollSpy scrollspy.js

- -

Example in navbar

-

The ScrollSpy plugin is for automatically updating nav targets based on scroll position. Scroll the area below the navbar and watch the active class change. The dropdown sub items will be highlighted as well.

-
- -
-

@fat

-

Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

-

@mdo

-

Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis gentrify. Brooklyn adipisicing craft beer vice keytar deserunt.

-

one

-

Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. Cred ex in, sustainable delectus consectetur fanny pack iphone.

-

two

-

In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn nesciunt.

-

three

-

Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

-

Keytar twee blog, culpa messenger bag marfa whatever delectus food truck. Sapiente synth id assumenda. Locavore sed helvetica cliche irony, thundercats you probably haven't heard of them consequat hoodie gluten-free lo-fi fap aliquip. Labore elit placeat before they sold out, terry richardson proident brunch nesciunt quis cosby sweater pariatur keffiyeh ut helvetica artisan. Cardigan craft beer seitan readymade velit. VHS chambray laboris tempor veniam. Anim mollit minim commodo ullamco thundercats. -

-
-
- - -

Usage

- -
-

Requires Bootstrap nav

-

Scrollspy currently requires the use of a Bootstrap nav component for proper highlighting of active links.

-
-
-

Resolvable ID targets required

-

Navbar links must have resolvable id targets. For example, a <a href="#home">home</a> must correspond to something in the DOM like <div id="home"></div>.

-
-
-

Non-:visible target elements ignored

-

Target elements that are not :visible according to jQuery will be ignored and their corresponding nav items will never be highlighted.

-
- -

Requires relative positioning

-

No matter the implementation method, scrollspy requires the use of position: relative; on the element you're spying on. In most cases this is the <body>.

- -

Via data attributes

-

To easily add scrollspy behavior to your topbar navigation, add data-spy="scroll" to the element you want to spy on (most typically this would be the <body>). Then add the data-target attribute with the ID or class of the parent element of any Bootstrap .nav component.

-{% highlight css %} -body { - position: relative; -} -{% endhighlight %} -{% highlight html %} - - ... - - ... - -{% endhighlight %} - -

Via JavaScript

-

After adding position: relative; in your CSS, call the scrollspy via JavaScript:

-{% highlight js %} -$('body').scrollspy({ target: '.navbar-example' }) -{% endhighlight %} - - -

Methods

-

.scrollspy('refresh')

-

When using scrollspy in conjunction with adding or removing of elements from the DOM, you'll need to call the refresh method like so:

-{% highlight js %} -$('[data-spy="scroll"]').each(function () { - var $spy = $(this).scrollspy('refresh') -}) -{% endhighlight %} - - -

Options

-

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-offset="".

-
- - - - - - - - - - - - - - - - - -
Nametypedefaultdescription
offsetnumber10Pixels to offset from top when calculating position of scroll.
-
- -

Events

-
- - - - - - - - - - - - - -
Event TypeDescription
activate.bs.scrollspyThis event fires whenever a new item becomes activated by the scrollspy.
-
-{% highlight js %} -$('#myScrollspy').on('activate.bs.scrollspy', function () { - // do something… -}) -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/js/tabs.html b/src/pretix/static/bootstrap/docs/_includes/js/tabs.html deleted file mode 100644 index ffb20345d7..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/js/tabs.html +++ /dev/null @@ -1,164 +0,0 @@ -
-

Togglable tabs tab.js

- -

Example tabs

-

Add quick, dynamic tab functionality to transition through panes of local content, even via dropdown menus.

-
- -
-
-

Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

-
-
-

Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.

-
- - -
-
- -
-

Extends tabbed navigation

-

This plugin extends the tabbed navigation component to add tabbable areas.

-
- - -

Usage

-

Enable tabbable tabs via JavaScript (each tab needs to be activated individually):

- -{% highlight js %} -$('#myTab a').click(function (e) { - e.preventDefault() - $(this).tab('show') -}) -{% endhighlight %} - -

You can activate individual tabs in several ways:

- -{% highlight js %} -$('#myTab a[href="#profile"]').tab('show') // Select tab by name -$('#myTab a:first').tab('show') // Select first tab -$('#myTab a:last').tab('show') // Select last tab -$('#myTab li:eq(2) a').tab('show') // Select third tab (0-indexed) -{% endhighlight %} - -

Markup

-

You can activate a tab or pill navigation without writing any JavaScript by simply specifying data-toggle="tab" or data-toggle="pill" on an element. Adding the nav and nav-tabs classes to the tab ul will apply the Bootstrap tab styling, while adding the nav and nav-pills classes will apply pill styling.

-{% highlight html %} -
- - - - - -
-
...
-
...
-
...
-
...
-
- -
-{% endhighlight %} - -

Fade effect

-

To make tabs fade in, add .fade to each .tab-pane. The first tab pane must also have .in to properly fade in initial content.

-{% highlight html %} -
-
...
-
...
-
...
-
...
-
-{% endhighlight %} - -

Methods

-

$().tab

-

- Activates a tab element and content container. Tab should have either a data-target or an href targeting a container node in the DOM. -

-{% highlight html %} - - -
-
...
-
...
-
...
-
...
-
- - -{% endhighlight %} - -

Events

-

When showing a new tab, the events fire in the following order:

-
    -
  1. hide.bs.tab (on the current active tab)
  2. -
  3. show.bs.tab (on the to-be-shown tab)
  4. -
  5. hidden.bs.tab (on the previous active tab, the same one as for the hide.bs.tab event)
  6. -
  7. shown.bs.tab (on the newly-active just-shown tab, the same one as for the show.bs.tab event)
  8. -
-

If no tab was already active, then the hide.bs.tab and hidden.bs.tab events will not be fired.

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
Event TypeDescription
show.bs.tabThis event fires on tab show, but before the new tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.
shown.bs.tabThis event fires on tab show after a tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively.
hide.bs.tabThis event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). Use event.target and event.relatedTarget to target the current active tab and the new soon-to-be-active tab, respectively.
hidden.bs.tabThis event fires after a new tab is shown (and thus the previous active tab is hidden). Use event.target and event.relatedTarget to target the previous active tab and the new active tab, respectively.
-
-{% highlight js %} -$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { - e.target // newly activated tab - e.relatedTarget // previous active tab -}) -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/js/tooltips.html b/src/pretix/static/bootstrap/docs/_includes/js/tooltips.html deleted file mode 100644 index 90fa37208e..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/js/tooltips.html +++ /dev/null @@ -1,265 +0,0 @@ -
-

Tooltips tooltip.js

-

Inspired by the excellent jQuery.tipsy plugin written by Jason Frame; Tooltips are an updated version, which don't rely on images, use CSS3 for animations, and data-attributes for local title storage.

-

Tooltips with zero-length titles are never displayed.

- -

Examples

-

Hover over the links below to see tooltips:

-
-

Tight pants next level keffiyeh you probably haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel have a terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan whatever keytar, scenester farm-to-table banksy Austin twitter handle freegan cred raw denim single-origin coffee viral.

-
- -

Static tooltip

-

Four options are available: top, right, bottom, and left aligned.

-
- - - - -
- -

Four directions

-
-
- - - - -
-
-{% highlight html %} - - - - - - - -{% endhighlight %} - -
-

Opt-in functionality

-

For performance reasons, the Tooltip and Popover data-apis are opt-in, meaning you must initialize them yourself.

-

One way to initialize all tooltips on a page would be to select them by their data-toggle attribute:

-{% highlight js %} -$(function () { - $('[data-toggle="tooltip"]').tooltip() -}) -{% endhighlight %} - -
-
-

Tooltips in button groups and input groups require special setting

-

When using tooltips on elements within a .btn-group or an .input-group, you'll have to specify the option container: 'body' (documented below) to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the tooltip is triggered).

-
-
-

Don't try to show tooltips on hidden elements

-

Invoking $(...).tooltip('show') when the target element is display: none; will cause the tooltip to be incorrectly positioned.

-
-
-

Tooltips on disabled elements require wrapper elements

-

To add a tooltip to a disabled or .disabled element, put the element inside of a <div> and apply the tooltip to that <div> instead.

-
- -

Usage

-

The tooltip plugin generates content and markup on demand, and by default places tooltips after their trigger element.

-

Trigger the tooltip via JavaScript:

-{% highlight js %} -$('#example').tooltip(options) -{% endhighlight %} - -

Markup

-

The required markup for a tooltip is only a data attribute and title on the HTML element you wish to have a tooltip. The generated markup of a tooltip is rather simple, though it does require a position (by default, set to top by the plugin).

-
-

Multiple-line links

-

Sometimes you want to add a tooltip to a hyperlink that wraps multiple lines. The default behavior of the tooltip plugin is to center it horizontally and vertically. Add white-space: nowrap; to your anchors to avoid this.

-
-{% highlight html %} - -Hover over me - - - -{% endhighlight %} - -

Options

-

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-animation="".

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
animationbooleantrueApply a CSS fade transition to the tooltip
containerstring | falsefalse -

Appends the tooltip to a specific element. Example: container: 'body'. This option is particularly useful in that it allows you to position the tooltip in the flow of the document near the triggering element - which will prevent the tooltip from floating away from the triggering element during a window resize.

-
delaynumber | object0 -

Delay showing and hiding the tooltip (ms) - does not apply to manual trigger type

-

If a number is supplied, delay is applied to both hide/show

-

Object structure is: delay: { "show": 500, "hide": 100 }

-
htmlbooleanfalseInsert HTML into the tooltip. If false, jQuery's text method will be used to insert content into the DOM. Use text if you're worried about XSS attacks.
placementstring | function'top' -

How to position the tooltip - top | bottom | left | right | auto.
When "auto" is specified, it will dynamically reorient the tooltip. For example, if placement is "auto left", the tooltip will display to the left when possible, otherwise it will display right.

-

When a function is used to determine the placement, it is called with the tooltip DOM node as its first argument and the triggering element DOM node as its second. The this context is set to the tooltip instance.

-
selectorstringfalseIf a selector is provided, tooltip objects will be delegated to the specified targets. In practice, this is used to enable dynamic HTML content to have tooltips added. See this and an informative example.
templatestring'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' -

Base HTML to use when creating the tooltip.

-

The tooltip's title will be injected into the .tooltip-inner.

-

.tooltip-arrow will become the tooltip's arrow.

-

The outermost wrapper element should have the .tooltip class.

-
titlestring | function'' -

Default title value if title attribute isn't present.

-

If a function is given, it will be called with its this reference set to the element that the tooltip is attached to.

-
triggerstring'hover focus'How tooltip is triggered - click | hover | focus | manual. You may pass multiple triggers; separate them with a space.
viewportstring | object{ selector: 'body', padding: 0 } -

Keeps the tooltip within the bounds of this element. Example: viewport: '#viewport' or { "selector": "#viewport", "padding": 0 }

-
-
-
-

Data attributes for individual tooltips

-

Options for individual tooltips can alternatively be specified through the use of data attributes, as explained above.

-
- -

Methods

- -

$().tooltip(options)

-

Attaches a tooltip handler to an element collection.

- -

.tooltip('show')

-

Reveals an element's tooltip. Returns to the caller before the tooltip has actually been shown (i.e. before the shown.bs.tooltip event occurs). This is considered a "manual" triggering of the tooltip. Tooltips with zero-length titles are never displayed.

- {% highlight js %}$('#element').tooltip('show'){% endhighlight %} - -

.tooltip('hide')

-

Hides an element's tooltip. Returns to the caller before the tooltip has actually been hidden (i.e. before the hidden.bs.tooltip event occurs). This is considered a "manual" triggering of the tooltip.

- {% highlight js %}$('#element').tooltip('hide'){% endhighlight %} - -

.tooltip('toggle')

-

Toggles an element's tooltip. Returns to the caller before the tooltip has actually been shown or hidden (i.e. before the shown.bs.tooltip or hidden.bs.tooltip event occurs). This is considered a "manual" triggering of the tooltip.

- {% highlight js %}$('#element').tooltip('toggle'){% endhighlight %} - -

.tooltip('destroy')

-

Hides and destroys an element's tooltip.

- {% highlight js %}$('#element').tooltip('destroy'){% endhighlight %} - -

Events

-
- - - - - - - - - - - - - - - - - - - - - - - - - -
Event TypeDescription
show.bs.tooltipThis event fires immediately when the show instance method is called.
shown.bs.tooltipThis event is fired when the tooltip has been made visible to the user (will wait for CSS transitions to complete).
hide.bs.tooltipThis event is fired immediately when the hide instance method has been called.
hidden.bs.tooltipThis event is fired when the tooltip has finished being hidden from the user (will wait for CSS transitions to complete).
-
-{% highlight js %} -$('#myTooltip').on('hidden.bs.tooltip', function () { - // do something… -}) -{% endhighlight %} -
diff --git a/src/pretix/static/bootstrap/docs/_includes/js/transitions.html b/src/pretix/static/bootstrap/docs/_includes/js/transitions.html deleted file mode 100644 index cce018805c..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/js/transitions.html +++ /dev/null @@ -1,8 +0,0 @@ -
-

Transitions transition.js

- -

About transitions

-

For simple transition effects, include transition.js once alongside the other JS files. If you're using the compiled (or minified) bootstrap.js, there is no need to include this—it's already there.

-

What's inside

-

Transition.js is a basic helper for transitionEnd events as well as a CSS transition emulator. It's used by the other plugins to check for CSS transition support and to catch hanging transitions.

-
diff --git a/src/pretix/static/bootstrap/docs/_includes/nav/about.html b/src/pretix/static/bootstrap/docs/_includes/nav/about.html deleted file mode 100644 index bf6b684e9d..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/nav/about.html +++ /dev/null @@ -1,9 +0,0 @@ -
  • - History -
  • -
  • - Team -
  • -
  • - Brand guidelines -
  • diff --git a/src/pretix/static/bootstrap/docs/_includes/nav/components.html b/src/pretix/static/bootstrap/docs/_includes/nav/components.html deleted file mode 100644 index 49c8040c53..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/nav/components.html +++ /dev/null @@ -1,143 +0,0 @@ -
  • - Glyphicons - -
  • -
  • - Dropdowns - -
  • -
  • - Button groups - -
  • -
  • - Button dropdowns - -
  • -
  • - Input groups - -
  • -
  • - Navs - -
  • -
  • - Navbar - -
  • -
  • Breadcrumbs
  • -
  • - Pagination - -
  • -
  • Labels
  • -
  • Badges
  • -
  • Jumbotron
  • -
  • Page header
  • -
  • - Thumbnails - -
  • -
  • - Alerts - -
  • -
  • - Progress bars - -
  • -
  • - Media object - -
  • -
  • - List group - -
  • -
  • - Panels - -
  • -
  • Responsive embed
  • -
  • Wells
  • diff --git a/src/pretix/static/bootstrap/docs/_includes/nav/css.html b/src/pretix/static/bootstrap/docs/_includes/nav/css.html deleted file mode 100644 index 02becfe680..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/nav/css.html +++ /dev/null @@ -1,136 +0,0 @@ -
  • - Overview - -
  • -
  • - Grid system - -
  • -
  • - Typography - -
  • -
  • - Code - -
  • -
  • - Tables - -
  • -
  • - Forms - -
  • -
  • - Buttons - -
  • -
  • - Images - -
  • -
  • - Helper classes - -
  • -
  • - Responsive utilities - -
  • -
  • - Using Less - -
  • -
  • - Using Sass - -
  • diff --git a/src/pretix/static/bootstrap/docs/_includes/nav/customize.html b/src/pretix/static/bootstrap/docs/_includes/nav/customize.html deleted file mode 100644 index fc3733d22b..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/nav/customize.html +++ /dev/null @@ -1,47 +0,0 @@ - - -
  • Import
  • -
  • Less components
  • -
  • jQuery plugins
  • -
  • Less variables - -
  • -
  • Download
  • - \ No newline at end of file diff --git a/src/pretix/static/bootstrap/docs/_includes/nav/getting-started.html b/src/pretix/static/bootstrap/docs/_includes/nav/getting-started.html deleted file mode 100644 index b06dcce9b2..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/nav/getting-started.html +++ /dev/null @@ -1,75 +0,0 @@ -
  • - Download -
  • -
  • - What's included - -
  • -
  • - Compiling CSS and JavaScript - -
  • -
  • - Basic template -
  • -
  • - Examples - -
  • -
  • - Tools - -
  • -
  • - Community -
  • -
  • - Disabling responsiveness -
  • -
  • - Migrating from 2.x to 3.0 -
  • -
  • - Browser and device support - -
  • -
  • - Third party support -
  • -
  • - Accessibility -
  • -
  • - License FAQs -
  • -
  • - Translations -
  • diff --git a/src/pretix/static/bootstrap/docs/_includes/nav/javascript.html b/src/pretix/static/bootstrap/docs/_includes/nav/javascript.html deleted file mode 100644 index eba53771b0..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/nav/javascript.html +++ /dev/null @@ -1,122 +0,0 @@ -
  • - Overview - -
  • -
  • Transitions
  • -
  • - Modal - -
  • -
  • - Dropdown - -
  • -
  • - Scrollspy - -
  • -
  • - Tab - -
  • -
  • - Tooltip - -
  • -
  • - Popover - -
  • -
  • - Alert - -
  • -
  • - Button - -
  • -
  • - Collapse - -
  • -
  • - Carousel - -
  • -
  • - Affix - -
  • diff --git a/src/pretix/static/bootstrap/docs/_includes/nav/main.html b/src/pretix/static/bootstrap/docs/_includes/nav/main.html deleted file mode 100644 index 5304306150..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/nav/main.html +++ /dev/null @@ -1,36 +0,0 @@ - diff --git a/src/pretix/static/bootstrap/docs/_includes/nav/migration.html b/src/pretix/static/bootstrap/docs/_includes/nav/migration.html deleted file mode 100644 index 10128a87ec..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/nav/migration.html +++ /dev/null @@ -1,12 +0,0 @@ -
  • - Major class changes -
  • -
  • - What's new -
  • -
  • - What's removed -
  • -
  • - Additional notes -
  • diff --git a/src/pretix/static/bootstrap/docs/_includes/social-buttons.html b/src/pretix/static/bootstrap/docs/_includes/social-buttons.html deleted file mode 100644 index 9e0a1505e4..0000000000 --- a/src/pretix/static/bootstrap/docs/_includes/social-buttons.html +++ /dev/null @@ -1,16 +0,0 @@ -
    - -
    diff --git a/src/pretix/static/bootstrap/docs/_jade/customizer-nav.jade b/src/pretix/static/bootstrap/docs/_jade/customizer-nav.jade deleted file mode 100644 index 3657675c45..0000000000 --- a/src/pretix/static/bootstrap/docs/_jade/customizer-nav.jade +++ /dev/null @@ -1,17 +0,0 @@ -// NOTE: DO NOT EDIT THE FOLLOWING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-nav.jade template. -li - a(href='#import-drop-target') Import -li - a(href='#less') Less components -li - a(href='#plugins') jQuery plugins -li - a(href='#less-variables') Less variables - ul.nav - each section in sections - if section.customizable - li - a(href='#'+section.id)= section.heading -li - a(href='#download') Download -// NOTE: DO NOT EDIT THE PRECEDING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-nav.jade template. diff --git a/src/pretix/static/bootstrap/docs/_jade/customizer-variables.jade b/src/pretix/static/bootstrap/docs/_jade/customizer-variables.jade deleted file mode 100644 index fbbddcba42..0000000000 --- a/src/pretix/static/bootstrap/docs/_jade/customizer-variables.jade +++ /dev/null @@ -1,25 +0,0 @@ -// NOTE: DO NOT EDIT THE FOLLOWING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-variables.jade template. -each section in sections - if section.customizable - h2(id=section.id)= section.heading - if section.docstring - p!= section.docstring.html - each subsection in section.subsections - if subsection.heading - h3(id=subsection.id)= subsection.heading - div.row - each variable, index in subsection.variables - if index > 0 && index % 3 === 0 - div.clearfix - div.col-xs-4 - label(for="input-" + variable.name)= variable.name - - var helpId = "help-block-" + variable.name - input.form-control( - id="input-" + variable.name - type="text" - aria-describedby=variable.docstring ? helpId : undefined - value=variable.defaultValue - data-var=variable.name) - if variable.docstring - p.help-block(id=helpId)!= variable.docstring.html -// NOTE: DO NOT EDIT THE PRECEDING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-variables.jade template. diff --git a/src/pretix/static/bootstrap/docs/_layouts/default.html b/src/pretix/static/bootstrap/docs/_layouts/default.html deleted file mode 100644 index ea69962ee3..0000000000 --- a/src/pretix/static/bootstrap/docs/_layouts/default.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - {% include header.html %} - - -
    Skip to main content
    - - - {% include nav/main.html %} - - -
    -
    -

    {{ page.title }}

    -

    {{ page.lead }}

    - {% include ads.html %} -
    -
    - -
    - -
    -
    - {{ content }} -
    - {% unless page.fullwidth == true %} - - {% endunless %} -
    -
    - - {% include footer.html %} - - diff --git a/src/pretix/static/bootstrap/docs/_layouts/home.html b/src/pretix/static/bootstrap/docs/_layouts/home.html deleted file mode 100644 index 15a78adee7..0000000000 --- a/src/pretix/static/bootstrap/docs/_layouts/home.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - {% include header.html %} - - -
    Skip to main content
    - - - {% include nav/main.html %} - - - {{ content }} - - {% include footer.html %} - - diff --git a/src/pretix/static/bootstrap/docs/_plugins/bridge.rb b/src/pretix/static/bootstrap/docs/_plugins/bridge.rb deleted file mode 100644 index 450a6cce3e..0000000000 --- a/src/pretix/static/bootstrap/docs/_plugins/bridge.rb +++ /dev/null @@ -1,9 +0,0 @@ -require 'yaml' - -module Bridge - class Generator < Jekyll::Generator - def generate(site) - site.data["configBridge"] = YAML.load_file("./grunt/configBridge.json") - end - end -end \ No newline at end of file diff --git a/src/pretix/static/bootstrap/docs/_plugins/bugify.rb b/src/pretix/static/bootstrap/docs/_plugins/bugify.rb deleted file mode 100644 index 3cee9e43f5..0000000000 --- a/src/pretix/static/bootstrap/docs/_plugins/bugify.rb +++ /dev/null @@ -1,25 +0,0 @@ -module Jekyll - module BugFilter - def bugify(input) - upstream_map = { - "Bootstrap" => "https://github.com/twbs/bootstrap/issues/", - "IE" => ["https://connect.microsoft.com/IE/feedback/details/", "IE bug"], - "Mozilla" => ["https://bugzilla.mozilla.org/show_bug.cgi?id=", "Mozilla bug"], - "Chromium" => ["https://code.google.com/p/chromium/issues/detail?id=", "Chromium issue"], - "WebKit" => ["https://bugs.webkit.org/show_bug.cgi?id=", "WebKit bug"], - "Safari" => ["https://openradar.appspot.com/", "Apple Safari Radar"], - "Normalize" => ["https://github.com/necolas/normalize.css/issues/", "Normalize"] - } - - upstream_map.each do |key, data| - url = data.is_a?(Array) ? data[0] : data - label = data.is_a?(Array) ? "#{data[1]} " : "" - input = input.gsub(/#{key}#(\d+)/, "#{label}#\\1") - end - - return input - end - end -end - -Liquid::Template.register_filter(Jekyll::BugFilter) \ No newline at end of file diff --git a/src/pretix/static/bootstrap/docs/about.html b/src/pretix/static/bootstrap/docs/about.html deleted file mode 100644 index 80daba5d1a..0000000000 --- a/src/pretix/static/bootstrap/docs/about.html +++ /dev/null @@ -1,127 +0,0 @@ ---- -layout: default -title: About -slug: about -lead: "Learn about the project's history, meet the maintaining teams, and find out how to use the Bootstrap brand." ---- - - - -
    -

    History

    - -

    Originally created by a designer and a developer at Twitter, Bootstrap has become one of the most popular front-end frameworks and open source projects in the world.

    -

    Bootstrap was created at Twitter in mid-2010 by @mdo and @fat. Prior to being an open-sourced framework, Bootstrap was known as Twitter Blueprint. A few months into development, Twitter held its first Hack Week and the project exploded as developers of all skill levels jumped in without any external guidance. It served as the style guide for internal tools development at the company for over a year before its public release, and continues to do so today.

    -

    Originally released on , we've since had over twenty releases, including two major rewrites with v2 and v3. With Bootstrap 2, we added responsive functionality to the entire framework as an optional stylesheet. Building on that with Bootstrap 3, we rewrote the library once more to make it responsive by default with a mobile first approach.

    -
    - - - -
    -

    Team

    - -

    Bootstrap is maintained by the founding team and a small group of invaluable core contributors, with the massive support and involvement of our community.

    - -

    Core team

    -
    - {% for member in site.data.core-team %} - - {% endfor %} -
    -

    Get involved with Bootstrap development by opening an issue or submitting a pull request. Read our contributing guidelines for information on how we develop.

    - -

    Sass team

    -
    - {% for member in site.data.sass-team %} - - {% endfor %} -
    -

    The official Sass port of Bootstrap was created and is maintained by this team. It became part of Bootstrap's organization with v3.1.0. Read the Sass contributing guidelines for information on how the Sass port is developed.

    -
    - - - -
    -

    Brand guidelines

    - -

    Have a need for Bootstrap's brand resources? Great! We have only a few guidelines we follow, and in turn ask you to follow as well. These guidelines were inspired by MailChimp's Brand Assets.

    - -

    Mark and logo

    -

    Use either the Bootstrap mark (a capital B) or the standard logo (just Bootstrap). It should always appear in Helvetica Neue Bold. Do not use the Twitter bird in association with Bootstrap.

    -
    -
    -
    B
    -
    -
    -
    B
    -
    -
    -
    -
    -

    Bootstrap

    -
    -
    -

    Bootstrap

    -
    -
    - -

    Download mark

    -

    Download the Bootstrap mark in one of three styles, each available as an SVG file. Right click, Save as.

    -
    -
    - Bootstrap -
    -
    - Bootstrap -
    -
    - Bootstrap -
    -
    - -

    Name

    -

    The project and framework should always be referred to as Bootstrap. No Twitter before it, no capital s, and no abbreviations except for one, a capital B.

    -
    -
    -

    Bootstrap

    - - (correct) -
    -
    -

    BootStrap

    - - (incorrect) -
    -
    -

    Twitter Bootstrap

    - - (incorrect) -
    -
    - -

    Colors

    -

    Our docs and branding use a handful of primary colors to differentiate what is Bootstrap from what is in Bootstrap. In other words, if it's purple, it's representative of Bootstrap.

    -
    -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/src/pretix/static/bootstrap/docs/apple-touch-icon.png b/src/pretix/static/bootstrap/docs/apple-touch-icon.png deleted file mode 100644 index b6b1e843bb9fe36a98988f0fdc02436abc95c396..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6140 zcmXAtdpuMBAICSt+$};iGm7R;lH0IJ7jiA-lFO(_E-81?HghY9N3@JufPBL zhR18im1K=1{7HEOOP30tPBFbex8l}*fny`5v|#g3)m@tor=ikr>IeyD2I4kXhq2jW zuV{2j_Yb|RN8L|(e>%L@*v9tKxU!btrMKKP&!jtu+H2U`*azA_wlA~)5zi?;)wo}> zxV{o8u>I1mVu&Y{Tv0%gIn_$XIEY@gT(~Vle8VvsSn{LGR zWgj(p$_U+|?B|tuKP~6Fw8m)<-Od$)IGKG$$F9PxsTU=K`;>n~_mkR=)@oJ@s{2?i z{&>N3z9_5B=gW1?WmYc=jvA65`i*L7b6ywiy`|j}(b>dlW>E3*uueDZ*m3Zx zwf07AAyVPYtlfdlHCAt0q2|C}%yf3PKmVDn2PdCMAJN-3)9Ria#2k-w3A}h(- zp3K~-Opu%Ci~YeIIExXO!d^ZbkrJe2>dN6Zp|{vjIRje?+>ISv^yJJ%Y1@!o1Jwod=qY0=)bst?x6b{gP+kY4n>U zV()0sNd}%zFs{tv$qz!?FybpSWWHQ(_wRMatOPlkS2>Rvb6e&74D2T`p{{jEkEf7o_AcLdu587b=CFa;;H5JNNHO>QZnDH zq~eyi>ywHeW-fd`s6Du-`8rR$wje=(M_Lh37m6Jnmjv(Uaf3>S6 ze=El4N0t_6Ds9qT^y=Tla89(G_dT_GNW#~oxFasVA{w5LDM(ba;-&jB1(2)iKnZHFa#T}J># zO0nr;0=NGB!dc5|cVl{|QJgyig6QFk%kNj6N6+b}vhl%e4`$L|TR$lC)j7cfbk8u;_ivq;n?dM&2i&4REQ$ zsFCTvX4Q773^3_kMFvdhm8^C^l^i`(Ft)s^SgOirSsW+e-hAUxjDv@Yu&KL3^>Lhr z!x!}@{Sn`8L~`ujG)#bL^Y@kJV;pD+ImjOeQ*KpuPhx zyF>ih#?e@HnyrS%O?~xVM@+sLT|7Rqu2yV}zxFz*G#64q!+ZJ96%Un7Psr3Did!OG zGO;cyO6ArNEQm&@=i%gs`OhX*;AgBY4N`%YXg>nk+Kdv+APHt0-mPpR`}qDX{X<#S z;@Gdjf_x?9brn2y;B~i+OJcAdWc_coB_lVcdKUVbEoQsW-Ye{fsDrx8Xk~?fEu}{h zP0^-WOK!HZCdWD+af-F<^_diUhYj*=6v{JKbTCYJum>07dD+{HQswn0t-ov?71?Ik zi-H{K2Nh!42Vr71?nKUi_F6@@Iq7-1=c&-%TkO~h^NGd#uiG*rEZl_S;hw|C=jKI= zuBI8#2*cmA9Vq`*eD}rXZP3J1k_n4q5cSsI0~t8Mi)jdB!(hXRMZ&=_m{sqD75gK< zwId|H%mC2eW)H)Y!(Fw#LuHWyYBWV?WwRv=!w1FpGmmn9Tw<>R?SZ&{%V*u;itrB zR#X1tdB)R${>o1D2owDKuh_0w_xoqs+68e^Y>_^Y!tqv^1=|0=TSM9>mkZ|(La7LpZ)KNtbk!t{D5QTo`bqAEdBw&7X0VDtJbniWoQ zppzO)?lzem$=Xg6ug?_PYJ%S_0j6KCUm6pkA6ji18fU=YGrlN_-^aVW>bmYuw#ntt z(^@p3BW%Ut;I*w=^-M5LU)RaRtAr_3tL_VC&E1Qz3M?JI#MnOM#6+;~nx~5v90wv& z%$YG0guiVl_H_F`3NB@ptrH$w&XU9d6WcPT8L$8kGL|8(mZzDi6Y-_qgF$CT2G`sk zMyLj;l>Z5wJsl5h_!IWVfyvDLPiof4}g82|f)H86tevQuvH|E=iz)D%5?0 zSaUlKW%GNdkTFz*sI&x9^(+&p6sj1|K?v_^-75ZhO{p(#<7_dKG!^=ps4H^Yw|PbIu8pF#5d+)^9fxsVjEhSO7mwHV1+oj2H%Lg{ zy77X-xnz8p5ON)VbwZk(BKYH%YSKEhlYPGyxk3yYDqiJHIU;j*5OuKuHEOxnQ5R$0 zIM*7oXIfnD_A%y)(KP0_9tYhcI)5REXMD*{%!zeAvj-yVV!Vmu*4sa9ET$gy9A1Qh zhr;FQugmF_`LXl-aV4uP zP=UfKBs@3?;01aZjQf;Yk2BXdVdrkZl!+;v)0*y|j!FkFe7myDxpphFq>q*UCl*6h z!JLllqUm3*!qE}uC1>G8>H8Sv48Cf|&wY8-ET!C_?Hr3B0|ZwGYNF5kh<8ICq|!1I zv~MQ9Tl6sz%-)*p%fE<70h}&41o8_L(^g$ev-g(#qoYAX$UOj@7>a4yV zbvx%@KHMU{ww~GMk?72#p*^n?8zO|vMw1D>N-fP8Kh!~rNaxsI57%|H-{C<2NiM=( zZluYCYC4sBq#u@)zVK@CexzyhB9S5N1EhjZINN0$4Aoq9x}7d(mrAA#xUwzd_`*nn zL51goHu-wSWA@k4qa;?MqYUl+djD$niQSl}Uew0|=znpq3Dy@#QD$nU$ur44IW-m@ zt41#m3Ivn-MqIgBgdh`nQ%-~)THD4KjHmL`B54GlRv~6-j0vu+=?dfNQQ{P>Z%!~d z^`t@%$aWIrO8&UUUdD?o@0~ETOXEVCcM53#2+st**${Wda32;M9pZQ;gjHQZMgn~-CNhsK6&4g)uPc$zR9*Un~v!i;nFVkJPIx6NsCVL!bWo~%DcmM`I5Fp z6NOu}F_l-q{rLPfQvNRtJMqH~BGq(y1=hvv^PC(<8xb@BTwy=F9t4y2N2>Ef#yIo? z%cIxu6D-gHS9!_jz#@M?66u|??`wF8aTIHfbJ>n)Aj28(yZ(LgTP_tZrS1%m+Z$fYMfPau|uKgYG0-asxs zo$vq+kCEc>)?b*|2Lo04uM9ZOGqs(Qp7oKNlrPL~RPhK&8o?@)v|WyUa+lAnWvYT( zMw=}3L-qalmrDQhoA8ME2h~jycg|yDlm-4e2RwHQ7u+z13MPxtr#U8zW!WESTx#Gg zRl%e)?Ym-$(mbz+Q-QCK{3Fxm)U5_L1KiJT*Qm0WQc<)2jQ9(W`XaPlWwFCnURLV* zw?7q7Zs}5!OlB6S)FkF(MK(Ge!5-rm7)wsdb)KoXGMAhhUj<63^WuU`oaM;~sC*_R z1#PCLB|~3^_J|7S>(1IYqehdN^CS^2FL5*1Bbtuy;S5#zC0ZZ#7o4qBV{b_oK7D`Z zt>~e;pV=%RxV#l6GQHC*71c8L)s zgo~9ilxH|!OT=zuiwQ!0CHDufK$G%csGv<_b`4`256H_v|y2 z_Vq5znIHxD3(Y%Ss4YPO=?8}4X{;ruJ*CHMLC$10BYl5o-SDXNCB52q7zf|&LMet7 zI+eBh4nW%&-LokuOzXWaVC54npYqTy6j{w<77~&XbSI#9q{ETXmE~o2Z_aMcBz*q4 z^Vg~bXcJehvNd`3m&%K_PkQy$eQ~UA7S{tiPY-KOucYG026$7Elp{!jTVZ+KUfGQ_ce-j~ z_}-WXKIg9O|Izu|^i}cjPB>rL5@4z1aEfj0@%Ux-na9&)Zk8KOS&7S(Fj(4mP@6tQ3zAw?TDp@?M$p96^ zYSe9_-_M_mhi~*X+S9QsAJqif{h*!h= z^Qs)QuYD-qC&yP@K0uy20?Mj|E{HY<4#-8(Vq?D;0kUeBS(<$1R`q|)-z6B zD8DA;oloDnerm>f+h#mtr}#hm z-Ijli5(%!KIQ4P(3jZ$r;a9wn5uS%APajQ}@`pw8(xDkkN-uIz8|g2QB2qa-?hLD8hzuo?@>)u7!Et{sBW}v+e(GM1LE)j)#;>Bm31meH`cw5=18Y6Y0wETWAC>`h=)hZM| z<|zAsdLWtF#@)S%G5;3qw*rFv8a21P*uS5V{5KZy$nJlgh!tR6O3QzX z^1aW{+A13{b-l_SsG77!N=&}YJJVs@MpVK%+3xVhhL)^moXjtTOB<0ihnh?;BTX6f z`OR;uQkMNg1MBz1%)LEp(!o7zX)z#PoGr`Ugk6BMbQQ>+&`t z2t`q)s0$v&QpqR@H~de^9dqT~1bpl%M)geBi^n?)iz7dZ>SX`^J{k;=_$BZyIc)It zqBvHw$AqGKYkp^p5tSEdaZtHK^oGHm4#w*RaW;seeE-b&5Ti_G_ol}U_wCXq2v*_+sr)HTFy zy>8|#A*(l5&!4(I;>}StdgBy=UZ>w5wra#|g?uP`h6fa3uK8dPY zd;B>Hw-u6l_rpciTeyJUMVn1gDL+Abzad=Modt1hugWaP=S_Ou_(7JlZ}RNVNOU4f zC-o$dF#VWGN>P*N0 diff --git a/src/pretix/static/bootstrap/docs/assets/brand/bootstrap-outline.svg b/src/pretix/static/bootstrap/docs/assets/brand/bootstrap-outline.svg deleted file mode 100644 index 9f9794c237..0000000000 --- a/src/pretix/static/bootstrap/docs/assets/brand/bootstrap-outline.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/pretix/static/bootstrap/docs/assets/brand/bootstrap-punchout.svg b/src/pretix/static/bootstrap/docs/assets/brand/bootstrap-punchout.svg deleted file mode 100644 index 7368058bcc..0000000000 --- a/src/pretix/static/bootstrap/docs/assets/brand/bootstrap-punchout.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - diff --git a/src/pretix/static/bootstrap/docs/assets/brand/bootstrap-solid.svg b/src/pretix/static/bootstrap/docs/assets/brand/bootstrap-solid.svg deleted file mode 100644 index 6c2211d867..0000000000 --- a/src/pretix/static/bootstrap/docs/assets/brand/bootstrap-solid.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - diff --git a/src/pretix/static/bootstrap/docs/assets/css/docs.min.css b/src/pretix/static/bootstrap/docs/assets/css/docs.min.css deleted file mode 100644 index 74584dc87c..0000000000 --- a/src/pretix/static/bootstrap/docs/assets/css/docs.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap Docs (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under the Creative Commons Attribution 3.0 Unported License. For - * details, see http://creativecommons.org/licenses/by/3.0/. - */body{position:relative}.table code{font-size:13px;font-weight:400}.btn-outline{color:#563d7c;background-color:transparent;border-color:#563d7c}.btn-outline:active,.btn-outline:focus,.btn-outline:hover{color:#fff;background-color:#563d7c;border-color:#563d7c}.btn-outline-inverse{color:#fff;background-color:transparent;border-color:#cdbfe3}.btn-outline-inverse:active,.btn-outline-inverse:focus,.btn-outline-inverse:hover{color:#563d7c;text-shadow:none;background-color:#fff;border-color:#fff}.bs-docs-booticon{display:block;font-weight:500;color:#fff;text-align:center;cursor:default;background-color:#563d7c;border-radius:15%}.bs-docs-booticon-sm{width:30px;height:30px;font-size:20px;line-height:28px}.bs-docs-booticon-lg{width:144px;height:144px;font-size:108px;line-height:140px}.bs-docs-booticon-inverse{color:#563d7c;background-color:#fff}.bs-docs-booticon-outline{background-color:transparent;border:1px solid #cdbfe3}#skippy{display:block;padding:1em;color:#fff;background-color:#6f5499;outline:0}#skippy .skiplink-text{padding:.5em;outline:1px dotted}.bs-docs-nav{margin-bottom:0;background-color:#fff;border-bottom:0}.bs-home-nav .bs-nav-b{display:none}.bs-docs-nav .navbar-brand,.bs-docs-nav .navbar-nav>li>a{font-weight:500;color:#563d7c}.bs-docs-nav .navbar-nav>.active>a,.bs-docs-nav .navbar-nav>.active>a:hover,.bs-docs-nav .navbar-nav>li>a:hover{color:#463265;background-color:#f9f9f9}.bs-docs-nav .navbar-toggle .icon-bar{background-color:#563d7c}.bs-docs-nav .navbar-header .navbar-toggle{border-color:#fff}.bs-docs-nav .navbar-header .navbar-toggle:focus,.bs-docs-nav .navbar-header .navbar-toggle:hover{background-color:#f9f9f9;border-color:#f9f9f9}.bs-docs-footer{padding-top:40px;padding-bottom:40px;margin-top:100px;color:#767676;text-align:center;border-top:1px solid #e5e5e5}.bs-docs-footer-links{padding-left:0;margin-top:20px}.bs-docs-footer-links li{display:inline;padding:0 2px}.bs-docs-footer-links li:first-child{padding-left:0}@media (min-width:768px){.bs-docs-footer p{margin-bottom:0}}.bs-docs-social{margin-bottom:20px;text-align:center}.bs-docs-social-buttons{display:inline-block;padding-left:0;margin-bottom:0;list-style:none}.bs-docs-social-buttons li{display:inline-block;padding:5px 8px;line-height:1}.bs-docs-social-buttons .twitter-follow-button{width:225px!important}.bs-docs-social-buttons .twitter-share-button{width:98px!important}.github-btn{overflow:hidden;border:0}.bs-docs-header,.bs-docs-masthead{position:relative;padding:30px 15px;color:#cdbfe3;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,.1);background-color:#6f5499;background-image:-webkit-gradient(linear,left top,left bottom,from(#563d7c),to(#6f5499));background-image:-webkit-linear-gradient(top,#563d7c 0,#6f5499 100%);background-image:-o-linear-gradient(top,#563d7c 0,#6f5499 100%);background-image:linear-gradient(to bottom,#563d7c 0,#6f5499 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#563d7c', endColorstr='#6F5499', GradientType=0);background-repeat:repeat-x}.bs-docs-masthead .bs-docs-booticon{margin:0 auto 30px}.bs-docs-masthead h1{font-weight:300;line-height:1;color:#fff}.bs-docs-masthead .lead{margin:0 auto 30px;font-size:20px;color:#fff}.bs-docs-masthead .version{margin-top:-15px;margin-bottom:30px;color:#9783b9}.bs-docs-masthead .btn{width:100%;padding:15px 30px;font-size:20px}@media (min-width:480px){.bs-docs-masthead .btn{width:auto}}@media (min-width:768px){.bs-docs-masthead{padding:80px 0}.bs-docs-masthead h1{font-size:60px}.bs-docs-masthead .lead{font-size:24px}}@media (min-width:992px){.bs-docs-masthead .lead{width:80%;font-size:30px}}.bs-docs-header{margin-bottom:40px;font-size:20px}.bs-docs-header h1{margin-top:0;color:#fff}.bs-docs-header p{margin-bottom:0;font-weight:300;line-height:1.4}.bs-docs-header .container{position:relative}@media (min-width:768px){.bs-docs-header{padding-top:60px;padding-bottom:60px;font-size:24px;text-align:left}.bs-docs-header h1{font-size:60px;line-height:1}}@media (min-width:992px){.bs-docs-header h1,.bs-docs-header p{margin-right:380px}}.carbonad{width:auto!important;height:auto!important;padding:20px!important;margin:30px -30px -31px!important;overflow:hidden;font-size:13px!important;line-height:16px!important;text-align:left;background:0 0!important;border:solid #866ab3!important;border-width:1px 0!important}.carbonad-img{margin:0!important}.carbonad-tag,.carbonad-text{display:block!important;float:none!important;width:auto!important;height:auto!important;margin-left:145px!important;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif!important}.carbonad-text{padding-top:0!important}.carbonad-tag{color:inherit!important;text-align:left!important}.carbonad-tag a,.carbonad-text a{color:#fff!important}.carbonad #azcarbon>img{display:none}@media (min-width:480px){.carbonad{width:330px!important;margin:20px auto!important;border-width:1px!important;border-radius:4px}.bs-docs-masthead .carbonad{margin:50px auto 0!important}}@media (min-width:768px){.carbonad{margin-right:0!important;margin-left:0!important}}@media (min-width:992px){.carbonad{position:absolute;top:0;right:15px;width:330px!important;padding:15px!important;margin:0!important}.bs-docs-masthead .carbonad{position:static}}.bs-docs-featurette{padding-top:40px;padding-bottom:40px;font-size:16px;line-height:1.5;color:#555;text-align:center;background-color:#fff;border-bottom:1px solid #e5e5e5}.bs-docs-featurette+.bs-docs-footer{margin-top:0;border-top:0}.bs-docs-featurette-title{margin-bottom:5px;font-size:30px;font-weight:400;color:#333}.half-rule{width:100px;margin:40px auto}.bs-docs-featurette h3{margin-bottom:5px;font-weight:400;color:#333}.bs-docs-featurette-img{display:block;margin-bottom:20px;color:#333}.bs-docs-featurette-img:hover{color:#337ab7;text-decoration:none}.bs-docs-featurette-img img{display:block;margin-bottom:15px}@media (min-width:480px){.bs-docs-featurette .img-responsive{margin-top:30px}}@media (min-width:768px){.bs-docs-featurette{padding-top:100px;padding-bottom:100px}.bs-docs-featurette-title{font-size:40px}.bs-docs-featurette .lead{max-width:80%;margin-right:auto;margin-left:auto}.bs-docs-featurette .img-responsive{margin-top:0}}.bs-docs-featured-sites{margin-right:-1px;margin-left:-1px}.bs-docs-featured-sites .col-xs-6{padding:1px}.bs-docs-featured-sites .img-responsive{margin-top:0}@media (min-width:768px){.bs-docs-featured-sites .col-sm-3:first-child img{border-top-left-radius:4px;border-bottom-left-radius:4px}.bs-docs-featured-sites .col-sm-3:last-child img{border-top-right-radius:4px;border-bottom-right-radius:4px}}.bs-examples .thumbnail{margin-bottom:10px}.bs-examples h4{margin-bottom:5px}.bs-examples p{margin-bottom:20px}@media (max-width:480px){.bs-examples{margin-right:-10px;margin-left:-10px}.bs-examples>[class^=col-]{padding-right:10px;padding-left:10px}}.bs-docs-sidebar.affix{position:static}@media (min-width:768px){.bs-docs-sidebar{padding-left:20px}}.bs-docs-sidenav{margin-top:20px;margin-bottom:20px}.bs-docs-sidebar .nav>li>a{display:block;padding:4px 20px;font-size:13px;font-weight:500;color:#767676}.bs-docs-sidebar .nav>li>a:focus,.bs-docs-sidebar .nav>li>a:hover{padding-left:19px;color:#563d7c;text-decoration:none;background-color:transparent;border-left:1px solid #563d7c}.bs-docs-sidebar .nav>.active:focus>a,.bs-docs-sidebar .nav>.active:hover>a,.bs-docs-sidebar .nav>.active>a{padding-left:18px;font-weight:700;color:#563d7c;background-color:transparent;border-left:2px solid #563d7c}.bs-docs-sidebar .nav .nav{display:none;padding-bottom:10px}.bs-docs-sidebar .nav .nav>li>a{padding-top:1px;padding-bottom:1px;padding-left:30px;font-size:12px;font-weight:400}.bs-docs-sidebar .nav .nav>li>a:focus,.bs-docs-sidebar .nav .nav>li>a:hover{padding-left:29px}.bs-docs-sidebar .nav .nav>.active:focus>a,.bs-docs-sidebar .nav .nav>.active:hover>a,.bs-docs-sidebar .nav .nav>.active>a{padding-left:28px;font-weight:500}.back-to-top,.bs-docs-theme-toggle{display:none;padding:4px 10px;margin-top:10px;margin-left:10px;font-size:12px;font-weight:500;color:#999}.back-to-top:hover,.bs-docs-theme-toggle:hover{color:#563d7c;text-decoration:none}.bs-docs-theme-toggle{margin-top:0}@media (min-width:768px){.back-to-top,.bs-docs-theme-toggle{display:block}}@media (min-width:992px){.bs-docs-sidebar .nav>.active>ul{display:block}.bs-docs-sidebar.affix,.bs-docs-sidebar.affix-bottom{width:213px}.bs-docs-sidebar.affix{position:fixed;top:20px}.bs-docs-sidebar.affix-bottom{position:absolute}.bs-docs-sidebar.affix .bs-docs-sidenav,.bs-docs-sidebar.affix-bottom .bs-docs-sidenav{margin-top:0;margin-bottom:0}}@media (min-width:1200px){.bs-docs-sidebar.affix,.bs-docs-sidebar.affix-bottom{width:263px}}.bs-docs-section{margin-bottom:60px}.bs-docs-section:last-child{margin-bottom:0}h1[id]{padding-top:20px;margin-top:0}.bs-callout{padding:20px;margin:20px 0;border:1px solid #eee;border-left-width:5px;border-radius:3px}.bs-callout h4{margin-top:0;margin-bottom:5px}.bs-callout p:last-child{margin-bottom:0}.bs-callout code{border-radius:3px}.bs-callout+.bs-callout{margin-top:-5px}.bs-callout-danger{border-left-color:#ce4844}.bs-callout-danger h4{color:#ce4844}.bs-callout-warning{border-left-color:#aa6708}.bs-callout-warning h4{color:#aa6708}.bs-callout-info{border-left-color:#1b809e}.bs-callout-info h4{color:#1b809e}.color-swatches{margin:0 -5px;overflow:hidden}.color-swatch{float:left;width:60px;height:60px;margin:0 5px;border-radius:3px}@media (min-width:768px){.color-swatch{width:100px;height:100px}}.color-swatches .gray-darker{background-color:#222}.color-swatches .gray-dark{background-color:#333}.color-swatches .gray{background-color:#555}.color-swatches .gray-light{background-color:#999}.color-swatches .gray-lighter{background-color:#eee}.color-swatches .brand-primary{background-color:#337ab7}.color-swatches .brand-success{background-color:#5cb85c}.color-swatches .brand-warning{background-color:#f0ad4e}.color-swatches .brand-danger{background-color:#d9534f}.color-swatches .brand-info{background-color:#5bc0de}.color-swatches .bs-purple{background-color:#563d7c}.color-swatches .bs-purple-light{background-color:#c7bfd3}.color-swatches .bs-purple-lighter{background-color:#e5e1ea}.color-swatches .bs-gray{background-color:#f9f9f9}.bs-team .team-member{line-height:32px;color:#555}.bs-team .team-member:hover{color:#333;text-decoration:none}.bs-team .github-btn{float:right;width:180px;height:20px;margin-top:6px}.bs-team img{float:left;width:32px;margin-right:10px;border-radius:4px}.bs-docs-browser-bugs td p{margin-bottom:0}.bs-docs-browser-bugs th:first-child{width:18%}.show-grid{margin-bottom:15px}.show-grid [class^=col-]{padding-top:10px;padding-bottom:10px;background-color:#eee;background-color:rgba(86,61,124,.15);border:1px solid #ddd;border:1px solid rgba(86,61,124,.2)}.bs-example{position:relative;padding:45px 15px 15px;margin:0 -15px 15px;border-color:#e5e5e5 #eee #eee;border-style:solid;border-width:1px 0;-webkit-box-shadow:inset 0 3px 6px rgba(0,0,0,.05);box-shadow:inset 0 3px 6px rgba(0,0,0,.05)}.bs-example:after{position:absolute;top:15px;left:15px;font-size:12px;font-weight:700;color:#959595;text-transform:uppercase;letter-spacing:1px;content:"Example"}.bs-example+.highlight,.bs-example+.zero-clipboard+.highlight{margin:-15px -15px 15px;border-width:0 0 1px;border-radius:0}@media (min-width:768px){.bs-example{margin-right:0;margin-left:0;background-color:#fff;border-color:#ddd;border-width:1px;border-radius:4px 4px 0 0;-webkit-box-shadow:none;box-shadow:none}.bs-example+.highlight,.bs-example+.zero-clipboard+.highlight{margin-top:-16px;margin-right:0;margin-left:0;border-width:1px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.bs-example-standalone{border-radius:4px}}.bs-example .container{width:auto}.bs-example>.alert:last-child,.bs-example>.form-control:last-child,.bs-example>.jumbotron:last-child,.bs-example>.list-group:last-child,.bs-example>.navbar:last-child,.bs-example>.panel:last-child,.bs-example>.progress:last-child,.bs-example>.table-responsive:last-child>.table,.bs-example>.table:last-child,.bs-example>.well:last-child,.bs-example>blockquote:last-child,.bs-example>ol:last-child,.bs-example>p:last-child,.bs-example>ul:last-child{margin-bottom:0}.bs-example>p>.close{float:none}.bs-example-type .table .type-info{color:#767676;vertical-align:middle}.bs-example-type .table td{padding:15px 0;border-color:#eee}.bs-example-type .table tr:first-child td{border-top:0}.bs-example-type h1,.bs-example-type h2,.bs-example-type h3,.bs-example-type h4,.bs-example-type h5,.bs-example-type h6{margin:0}.bs-example-bg-classes p{padding:15px}.bs-example>.img-circle,.bs-example>.img-rounded,.bs-example>.img-thumbnail{margin:5px}.bs-example>.table-responsive>.table{background-color:#fff}.bs-example>.btn,.bs-example>.btn-group{margin-top:5px;margin-bottom:5px}.bs-example>.btn-toolbar+.btn-toolbar{margin-top:10px}.bs-example-control-sizing input[type=text]+input[type=text],.bs-example-control-sizing select{margin-top:10px}.bs-example-form .input-group{margin-bottom:10px}.bs-example>textarea.form-control{resize:vertical}.bs-example>.list-group{max-width:400px}.bs-example .navbar:last-child{margin-bottom:0}.bs-navbar-bottom-example,.bs-navbar-top-example{z-index:1;padding:0;overflow:hidden}.bs-navbar-bottom-example .navbar-header,.bs-navbar-top-example .navbar-header{margin-left:0}.bs-navbar-bottom-example .navbar-fixed-bottom,.bs-navbar-top-example .navbar-fixed-top{position:relative;margin-right:0;margin-left:0}.bs-navbar-top-example{padding-bottom:45px}.bs-navbar-top-example:after{top:auto;bottom:15px}.bs-navbar-top-example .navbar-fixed-top{top:-1px}.bs-navbar-bottom-example{padding-top:45px}.bs-navbar-bottom-example .navbar-fixed-bottom{bottom:-1px}.bs-navbar-bottom-example .navbar{margin-bottom:0}@media (min-width:768px){.bs-navbar-bottom-example .navbar-fixed-bottom,.bs-navbar-top-example .navbar-fixed-top{position:absolute}}.bs-example .pagination{margin-top:10px;margin-bottom:10px}.bs-example>.pager{margin-top:0}.bs-example-modal{background-color:#f5f5f5}.bs-example-modal .modal{position:relative;top:auto;right:auto;bottom:auto;left:auto;z-index:1;display:block}.bs-example-modal .modal-dialog{left:auto;margin-right:auto;margin-left:auto}.bs-example>.dropdown>.dropdown-toggle{float:left}.bs-example>.dropdown>.dropdown-menu{position:static;display:block;margin-bottom:5px;clear:left}.bs-example-tabs .nav-tabs{margin-bottom:15px}.bs-example-tooltips{text-align:center}.bs-example-tooltips>.btn{margin-top:5px;margin-bottom:5px}.bs-example-tooltip .tooltip{position:relative;display:inline-block;margin:10px 20px;opacity:1}.bs-example-popover{padding-bottom:24px;background-color:#f9f9f9}.bs-example-popover .popover{position:relative;display:block;float:left;width:260px;margin:20px}.scrollspy-example{position:relative;height:200px;margin-top:10px;overflow:auto}#collapseExample .well{margin-bottom:0}.bs-events-table>tbody>tr>td:first-child,.bs-events-table>thead>tr>th:first-child{white-space:nowrap}.highlight{padding:9px 14px;margin-bottom:14px;background-color:#f7f7f9;border:1px solid #e1e1e8;border-radius:4px}.highlight pre{padding:0;margin-top:0;margin-bottom:0;word-break:normal;white-space:nowrap;background-color:transparent;border:0}.highlight pre code{font-size:inherit;color:#333}.highlight pre code:first-child{display:inline-block;padding-right:45px}.table-responsive .highlight pre{white-space:normal}.bs-table th small,.responsive-utilities th small{display:block;font-weight:400;color:#999}.responsive-utilities tbody th{font-weight:400}.responsive-utilities td{text-align:center}.responsive-utilities td.is-visible{color:#468847;background-color:#dff0d8!important}.responsive-utilities td.is-hidden{color:#ccc;background-color:#f9f9f9!important}.responsive-utilities-test{margin-top:5px}.responsive-utilities-test .col-xs-6{margin-bottom:10px}.responsive-utilities-test span{display:block;padding:15px 10px;font-size:14px;font-weight:700;line-height:1.1;text-align:center;border-radius:4px}.hidden-on .col-xs-6 .hidden-lg,.hidden-on .col-xs-6 .hidden-md,.hidden-on .col-xs-6 .hidden-sm,.hidden-on .col-xs-6 .hidden-xs,.visible-on .col-xs-6 .hidden-lg,.visible-on .col-xs-6 .hidden-md,.visible-on .col-xs-6 .hidden-sm,.visible-on .col-xs-6 .hidden-xs{color:#999;border:1px solid #ddd}.hidden-on .col-xs-6 .visible-lg-block,.hidden-on .col-xs-6 .visible-md-block,.hidden-on .col-xs-6 .visible-sm-block,.hidden-on .col-xs-6 .visible-xs-block,.visible-on .col-xs-6 .visible-lg-block,.visible-on .col-xs-6 .visible-md-block,.visible-on .col-xs-6 .visible-sm-block,.visible-on .col-xs-6 .visible-xs-block{color:#468847;background-color:#dff0d8;border:1px solid #d6e9c6}.bs-glyphicons{margin:0 -10px 20px;overflow:hidden}.bs-glyphicons-list{padding-left:0;list-style:none}.bs-glyphicons li{float:left;width:25%;height:115px;padding:10px;font-size:10px;line-height:1.4;text-align:center;background-color:#f9f9f9;border:1px solid #fff}.bs-glyphicons .glyphicon{margin-top:5px;margin-bottom:10px;font-size:24px}.bs-glyphicons .glyphicon-class{display:block;text-align:center;word-wrap:break-word}.bs-glyphicons li:hover{color:#fff;background-color:#563d7c}@media (min-width:768px){.bs-glyphicons{margin-right:0;margin-left:0}.bs-glyphicons li{width:12.5%;font-size:12px}}.bs-customizer .toggle{float:right;margin-top:25px}.bs-customizer label{margin-top:10px;font-weight:500;color:#555}.bs-customizer h2{padding-top:30px;margin-top:0;margin-bottom:5px}.bs-customizer h3{margin-bottom:0}.bs-customizer h4{margin-top:15px;margin-bottom:0}.bs-customizer .bs-callout h4{margin-top:0;margin-bottom:5px}.bs-customizer input[type=text]{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;background-color:#fafafa}.bs-customizer .help-block{margin-bottom:5px;font-size:12px}#less-section label{font-weight:400}.bs-customize-download .btn-outline{padding:20px}.bs-customizer-alert{position:fixed;top:0;right:0;left:0;z-index:1030;padding:15px 0;color:#fff;background-color:#d9534f;border-bottom:1px solid #b94441;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25);box-shadow:inset 0 1px 0 rgba(255,255,255,.25)}.bs-customizer-alert .close{margin-top:-4px;font-size:24px}.bs-customizer-alert p{margin-bottom:0}.bs-customizer-alert .glyphicon{margin-right:5px}.bs-customizer-alert pre{margin:10px 0 0;color:#fff;background-color:#a83c3a;border-color:#973634;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 2px 4px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}.bs-dropzone{position:relative;padding:20px;margin-bottom:20px;color:#777;text-align:center;border:2px dashed #eee;border-radius:4px}.bs-dropzone .import-header{margin-bottom:5px}.bs-dropzone .glyphicon-download-alt{font-size:40px}.bs-dropzone hr{width:100px}.bs-dropzone .lead{margin-bottom:10px;font-weight:400;color:#333}#import-manual-trigger{cursor:pointer}.bs-dropzone p:last-child{margin-bottom:0}.bs-brand-logos{display:table;width:100%;margin-bottom:15px;overflow:hidden;color:#563d7c;background-color:#f9f9f9;border-radius:4px}.bs-brand-item{padding:60px 0;text-align:center}.bs-brand-item+.bs-brand-item{border-top:1px solid #fff}.bs-brand-logos .inverse{color:#fff;background-color:#563d7c}.bs-brand-item h1,.bs-brand-item h3{margin-top:0;margin-bottom:0}.bs-brand-item .bs-docs-booticon{margin-right:auto;margin-left:auto}.bs-brand-item .glyphicon{width:30px;height:30px;margin:10px auto -10px;line-height:30px;color:#fff;border-radius:50%}.bs-brand-item .glyphicon-ok{background-color:#5cb85c}.bs-brand-item .glyphicon-remove{background-color:#d9534f}@media (min-width:768px){.bs-brand-item{display:table-cell;width:1%}.bs-brand-item+.bs-brand-item{border-top:0;border-left:1px solid #fff}.bs-brand-item h1{font-size:60px}}.zero-clipboard{position:relative;display:none}.btn-clipboard{position:absolute;top:0;right:0;z-index:10;display:block;padding:5px 8px;font-size:12px;color:#767676;cursor:pointer;background-color:#fff;border:1px solid #e1e1e8;border-radius:0 4px 0 4px}.btn-clipboard-hover{color:#fff;background-color:#563d7c;border-color:#563d7c}@media (min-width:768px){.zero-clipboard{display:block}.bs-example+.zero-clipboard .btn-clipboard{top:-16px;border-top-right-radius:0}}#focusedInput{border-color:#ccc;border-color:rgba(82,168,236,.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:0 0 8px rgba(82,168,236,.6);box-shadow:0 0 8px rgba(82,168,236,.6)}.hll{background-color:#ffc}.c{color:#999}.err{color:#A00;background-color:#FAA}.k{color:#069}.o{color:#555}.cm{color:#999}.cp{color:#099}.c1{color:#999}.cs{color:#999}.gd{background-color:#FCC;border:1px solid #C00}.ge{font-style:italic}.gr{color:red}.gh{color:#030}.gi{background-color:#CFC;border:1px solid #0C0}.go{color:#AAA}.gp{color:#009}.gu{color:#030}.gt{color:#9C6}.kc{color:#069}.kd{color:#069}.kn{color:#069}.kp{color:#069}.kr{color:#069}.kt{color:#078}.m{color:#F60}.s{color:#d44950}.na{color:#4f9fcf}.nb{color:#366}.nc{color:#0A8}.no{color:#360}.nd{color:#99F}.ni{color:#999}.ne{color:#C00}.nf{color:#C0F}.nl{color:#99F}.nn{color:#0CF}.nt{color:#2f6f9f}.nv{color:#033}.ow{color:#000}.w{color:#bbb}.mf{color:#F60}.mh{color:#F60}.mi{color:#F60}.mo{color:#F60}.sb{color:#C30}.sc{color:#C30}.sd{color:#C30;font-style:italic}.s2{color:#C30}.se{color:#C30}.sh{color:#C30}.si{color:#A00}.sx{color:#C30}.sr{color:#3AA}.s1{color:#C30}.ss{color:#FC3}.bp{color:#366}.vc{color:#033}.vg{color:#033}.vi{color:#033}.il{color:#F60}.css .nt+.nt,.css .o,.css .o+.nt{color:#999} \ No newline at end of file diff --git a/src/pretix/static/bootstrap/docs/assets/css/src/docs.css b/src/pretix/static/bootstrap/docs/assets/css/src/docs.css deleted file mode 100644 index 934ff59f1d..0000000000 --- a/src/pretix/static/bootstrap/docs/assets/css/src/docs.css +++ /dev/null @@ -1,1580 +0,0 @@ -/*! - * Bootstrap Docs (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under the Creative Commons Attribution 3.0 Unported License. For - * details, see http://creativecommons.org/licenses/by/3.0/. - */ - - -/* - * Bootstrap Documentation - * Special styles for presenting Bootstrap's documentation and code examples. - */ - - -/* - * Scaffolding - * - * Update the basics of our documents to prep for docs content. - */ - -body { - position: relative; /* For scrollspy */ -} - -/* Keep code small in tables on account of limited space */ -.table code { - font-size: 13px; - font-weight: normal; -} - -/* Outline button for use within the docs */ -.btn-outline { - color: #563d7c; - background-color: transparent; - border-color: #563d7c; -} -.btn-outline:hover, -.btn-outline:focus, -.btn-outline:active { - color: #fff; - background-color: #563d7c; - border-color: #563d7c; -} - -/* Inverted outline button (white on dark) */ -.btn-outline-inverse { - color: #fff; - background-color: transparent; - border-color: #cdbfe3; -} -.btn-outline-inverse:hover, -.btn-outline-inverse:focus, -.btn-outline-inverse:active { - color: #563d7c; - text-shadow: none; - background-color: #fff; - border-color: #fff; -} - -/* Bootstrap "B" icon */ -.bs-docs-booticon { - display: block; - font-weight: 500; - color: #fff; - text-align: center; - cursor: default; - background-color: #563d7c; - border-radius: 15%; -} -.bs-docs-booticon-sm { - width: 30px; - height: 30px; - font-size: 20px; - line-height: 28px; -} -.bs-docs-booticon-lg { - width: 144px; - height: 144px; - font-size: 108px; - line-height: 140px; -} -.bs-docs-booticon-inverse { - color: #563d7c; - background-color: #fff; -} -.bs-docs-booticon-outline { - background-color: transparent; - border: 1px solid #cdbfe3; -} - - -/* - * Fancy skip link - * - * Make it look a bit less "bare bones" - */ - -#skippy { - display: block; - padding: 1em; - color: #fff; - background-color: #6f5499; - outline: 0; -} - -#skippy .skiplink-text { - padding: .5em; - outline: 1px dotted; -} - - -/* - * Main navigation - * - * Turn the `.navbar` at the top of the docs purple. - */ - -.bs-docs-nav { - margin-bottom: 0; - background-color: #fff; - border-bottom: 0; -} -.bs-home-nav .bs-nav-b { - display: none; -} -.bs-docs-nav .navbar-brand, -.bs-docs-nav .navbar-nav > li > a { - font-weight: 500; - color: #563d7c; -} -.bs-docs-nav .navbar-nav > li > a:hover, -.bs-docs-nav .navbar-nav > .active > a, -.bs-docs-nav .navbar-nav > .active > a:hover { - color: #463265; - background-color: #f9f9f9; -} -.bs-docs-nav .navbar-toggle .icon-bar { - background-color: #563d7c; -} -.bs-docs-nav .navbar-header .navbar-toggle { - border-color: #fff; -} -.bs-docs-nav .navbar-header .navbar-toggle:hover, -.bs-docs-nav .navbar-header .navbar-toggle:focus { - background-color: #f9f9f9; - border-color: #f9f9f9; -} - - -/* - * Footer - * - * Separated section of content at the bottom of all pages, save the homepage. - */ - -.bs-docs-footer { - padding-top: 40px; - padding-bottom: 40px; - margin-top: 100px; - color: #767676; - text-align: center; - border-top: 1px solid #e5e5e5; -} -.bs-docs-footer-links { - padding-left: 0; - margin-top: 20px; -} -.bs-docs-footer-links li { - display: inline; - padding: 0 2px; -} -.bs-docs-footer-links li:first-child { - padding-left: 0; -} - -@media (min-width: 768px) { - .bs-docs-footer p { - margin-bottom: 0; - } -} - - -/* - * Social buttons - * - * Twitter and GitHub social action buttons (for homepage and footer). - */ - -.bs-docs-social { - margin-bottom: 20px; - text-align: center; -} -.bs-docs-social-buttons { - display: inline-block; - padding-left: 0; - margin-bottom: 0; - list-style: none; -} -.bs-docs-social-buttons li { - display: inline-block; - padding: 5px 8px; - line-height: 1; -} -.bs-docs-social-buttons .twitter-follow-button { - width: 225px !important; -} -.bs-docs-social-buttons .twitter-share-button { - width: 98px !important; -} -/* Style the GitHub buttons via CSS instead of inline attributes */ -.github-btn { - overflow: hidden; - border: 0; -} - - -/* - * Homepage - * - * Tweaks to the custom homepage and the masthead (main jumbotron). - */ - -/* Share masthead with page headers */ -.bs-docs-masthead, -.bs-docs-header { - position: relative; - padding: 30px 15px; - color: #cdbfe3; - text-align: center; - text-shadow: 0 1px 0 rgba(0,0,0,.1); - background-color: #6f5499; - background-image: -webkit-gradient(linear, left top, left bottom, from(#563d7c), to(#6f5499)); - background-image: -webkit-linear-gradient(top, #563d7c 0%, #6f5499 100%); - background-image: -o-linear-gradient(top, #563d7c 0%, #6f5499 100%); - background-image: linear-gradient(to bottom, #563d7c 0%, #6f5499 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#563d7c', endColorstr='#6F5499', GradientType=0); - background-repeat: repeat-x; -} - -/* Masthead (headings and download button) */ -.bs-docs-masthead .bs-docs-booticon { - margin: 0 auto 30px; -} -.bs-docs-masthead h1 { - font-weight: 300; - line-height: 1; - color: #fff; -} -.bs-docs-masthead .lead { - margin: 0 auto 30px; - font-size: 20px; - color: #fff; -} -.bs-docs-masthead .version { - margin-top: -15px; - margin-bottom: 30px; - color: #9783b9; -} -.bs-docs-masthead .btn { - width: 100%; - padding: 15px 30px; - font-size: 20px; -} - -@media (min-width: 480px) { - .bs-docs-masthead .btn { - width: auto; - } -} - -@media (min-width: 768px) { - .bs-docs-masthead { - padding: 80px 0; - } - .bs-docs-masthead h1 { - font-size: 60px; - } - .bs-docs-masthead .lead { - font-size: 24px; - } -} - -@media (min-width: 992px) { - .bs-docs-masthead .lead { - width: 80%; - font-size: 30px; - } -} - - -/* - * Page headers - * - * Jumbotron-esque headers at the top of every page that's not the homepage. - */ - -/* Page headers */ -.bs-docs-header { - margin-bottom: 40px; - font-size: 20px; -} -.bs-docs-header h1 { - margin-top: 0; - color: #fff; -} -.bs-docs-header p { - margin-bottom: 0; - font-weight: 300; - line-height: 1.4; -} -.bs-docs-header .container { - position: relative; -} - -@media (min-width: 768px) { - .bs-docs-header { - padding-top: 60px; - padding-bottom: 60px; - font-size: 24px; - text-align: left; - } - .bs-docs-header h1 { - font-size: 60px; - line-height: 1; - } -} - -@media (min-width: 992px) { - .bs-docs-header h1, - .bs-docs-header p { - margin-right: 380px; - } -} - - -/* - * Carbon ads - * - * Single display ad that shows on all pages (except homepage) in page headers. - * The hella `!important` is required for any pre-set property. - */ - -.carbonad { - width: auto !important; - height: auto !important; - padding: 20px !important; - margin: 30px -30px -31px !important; - overflow: hidden; /* clearfix */ - font-size: 13px !important; - line-height: 16px !important; - text-align: left; - background: transparent !important; - border: solid #866ab3 !important; - border-width: 1px 0 !important; -} -.carbonad-img { - margin: 0 !important; -} -.carbonad-text, -.carbonad-tag { - display: block !important; - float: none !important; - width: auto !important; - height: auto !important; - margin-left: 145px !important; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important; -} -.carbonad-text { - padding-top: 0 !important; -} -.carbonad-tag { - color: inherit !important; - text-align: left !important; -} -.carbonad-text a, -.carbonad-tag a { - color: #fff !important; -} -.carbonad #azcarbon > img { - display: none; /* hide what I assume are tracking images */ -} - -@media (min-width: 480px) { - .carbonad { - width: 330px !important; - margin: 20px auto !important; - border-width: 1px !important; - border-radius: 4px; - } - .bs-docs-masthead .carbonad { - margin: 50px auto 0 !important; - } -} - -@media (min-width: 768px) { - .carbonad { - margin-right: 0 !important; - margin-left: 0 !important; - } -} - -@media (min-width: 992px) { - .carbonad { - position: absolute; - top: 0; - right: 15px; /* 15px instead of 0 since box-sizing */ - width: 330px !important; - padding: 15px !important; - margin: 0 !important; - } - .bs-docs-masthead .carbonad { - position: static; - } -} - - -/* - * Homepage featurettes - * - * Reasons to use Bootstrap, entries from the Expo, and more. - */ - -.bs-docs-featurette { - padding-top: 40px; - padding-bottom: 40px; - font-size: 16px; - line-height: 1.5; - color: #555; - text-align: center; - background-color: #fff; - border-bottom: 1px solid #e5e5e5; -} -.bs-docs-featurette + .bs-docs-footer { - margin-top: 0; - border-top: 0; -} - -.bs-docs-featurette-title { - margin-bottom: 5px; - font-size: 30px; - font-weight: normal; - color: #333; -} -.half-rule { - width: 100px; - margin: 40px auto; -} -.bs-docs-featurette h3 { - margin-bottom: 5px; - font-weight: normal; - color: #333; -} -.bs-docs-featurette-img { - display: block; - margin-bottom: 20px; - color: #333; -} -.bs-docs-featurette-img:hover { - color: #337ab7; - text-decoration: none; -} -.bs-docs-featurette-img img { - display: block; - margin-bottom: 15px; -} - -@media (min-width: 480px) { - .bs-docs-featurette .img-responsive { - margin-top: 30px; - } -} -@media (min-width: 768px) { - .bs-docs-featurette { - padding-top: 100px; - padding-bottom: 100px; - } - .bs-docs-featurette-title { - font-size: 40px; - } - .bs-docs-featurette .lead { - max-width: 80%; - margin-right: auto; - margin-left: auto; - } - .bs-docs-featurette .img-responsive { - margin-top: 0; - } -} - - -/* - * Featured sites - * - * Homepage thumbnails from the Expo. - */ - -.bs-docs-featured-sites { - margin-right: -1px; - margin-left: -1px; -} -.bs-docs-featured-sites .col-xs-6 { - padding: 1px; -} -.bs-docs-featured-sites .img-responsive { - margin-top: 0; -} - -@media (min-width: 768px) { - .bs-docs-featured-sites .col-sm-3:first-child img { - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; - } - .bs-docs-featured-sites .col-sm-3:last-child img { - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - } -} - - -/* - * Examples - * - * Linked docs examples. - */ - -.bs-examples .thumbnail { - margin-bottom: 10px; -} -.bs-examples h4 { - margin-bottom: 5px; -} -.bs-examples p { - margin-bottom: 20px; -} - -@media (max-width: 480px) { - .bs-examples { - margin-right: -10px; - margin-left: -10px; - } - .bs-examples > [class^="col-"] { - padding-right: 10px; - padding-left: 10px; - } -} - - -/* - * Side navigation - * - * Scrollspy and affixed enhanced navigation to highlight sections and secondary - * sections of docs content. - */ - -/* By default it's not affixed in mobile views, so undo that */ -.bs-docs-sidebar.affix { - position: static; -} -@media (min-width: 768px) { - .bs-docs-sidebar { - padding-left: 20px; - } -} - -/* First level of nav */ -.bs-docs-sidenav { - margin-top: 20px; - margin-bottom: 20px; -} - -/* All levels of nav */ -.bs-docs-sidebar .nav > li > a { - display: block; - padding: 4px 20px; - font-size: 13px; - font-weight: 500; - color: #767676; -} -.bs-docs-sidebar .nav > li > a:hover, -.bs-docs-sidebar .nav > li > a:focus { - padding-left: 19px; - color: #563d7c; - text-decoration: none; - background-color: transparent; - border-left: 1px solid #563d7c; -} -.bs-docs-sidebar .nav > .active > a, -.bs-docs-sidebar .nav > .active:hover > a, -.bs-docs-sidebar .nav > .active:focus > a { - padding-left: 18px; - font-weight: bold; - color: #563d7c; - background-color: transparent; - border-left: 2px solid #563d7c; -} - -/* Nav: second level (shown on .active) */ -.bs-docs-sidebar .nav .nav { - display: none; /* Hide by default, but at >768px, show it */ - padding-bottom: 10px; -} -.bs-docs-sidebar .nav .nav > li > a { - padding-top: 1px; - padding-bottom: 1px; - padding-left: 30px; - font-size: 12px; - font-weight: normal; -} -.bs-docs-sidebar .nav .nav > li > a:hover, -.bs-docs-sidebar .nav .nav > li > a:focus { - padding-left: 29px; -} -.bs-docs-sidebar .nav .nav > .active > a, -.bs-docs-sidebar .nav .nav > .active:hover > a, -.bs-docs-sidebar .nav .nav > .active:focus > a { - padding-left: 28px; - font-weight: 500; -} - -/* Back to top (hidden on mobile) */ -.back-to-top, -.bs-docs-theme-toggle { - display: none; - padding: 4px 10px; - margin-top: 10px; - margin-left: 10px; - font-size: 12px; - font-weight: 500; - color: #999; -} -.back-to-top:hover, -.bs-docs-theme-toggle:hover { - color: #563d7c; - text-decoration: none; -} -.bs-docs-theme-toggle { - margin-top: 0; -} - -@media (min-width: 768px) { - .back-to-top, - .bs-docs-theme-toggle { - display: block; - } -} - -/* Show and affix the side nav when space allows it */ -@media (min-width: 992px) { - .bs-docs-sidebar .nav > .active > ul { - display: block; - } - /* Widen the fixed sidebar */ - .bs-docs-sidebar.affix, - .bs-docs-sidebar.affix-bottom { - width: 213px; - } - .bs-docs-sidebar.affix { - position: fixed; /* Undo the static from mobile first approach */ - top: 20px; - } - .bs-docs-sidebar.affix-bottom { - position: absolute; /* Undo the static from mobile first approach */ - } - .bs-docs-sidebar.affix-bottom .bs-docs-sidenav, - .bs-docs-sidebar.affix .bs-docs-sidenav { - margin-top: 0; - margin-bottom: 0; - } -} -@media (min-width: 1200px) { - /* Widen the fixed sidebar again */ - .bs-docs-sidebar.affix-bottom, - .bs-docs-sidebar.affix { - width: 263px; - } -} - - -/* - * Docs sections - * - * Content blocks for each component or feature. - */ - -/* Space things out */ -.bs-docs-section { - margin-bottom: 60px; -} -.bs-docs-section:last-child { - margin-bottom: 0; -} - -h1[id] { - padding-top: 20px; - margin-top: 0; -} - - -/* - * Callouts - * - * Not quite alerts, but custom and helpful notes for folks reading the docs. - * Requires a base and modifier class. - */ - -/* Common styles for all types */ -.bs-callout { - padding: 20px; - margin: 20px 0; - border: 1px solid #eee; - border-left-width: 5px; - border-radius: 3px; -} -.bs-callout h4 { - margin-top: 0; - margin-bottom: 5px; -} -.bs-callout p:last-child { - margin-bottom: 0; -} -.bs-callout code { - border-radius: 3px; -} - -/* Tighten up space between multiple callouts */ -.bs-callout + .bs-callout { - margin-top: -5px; -} - -/* Variations */ -.bs-callout-danger { - border-left-color: #ce4844; -} -.bs-callout-danger h4 { - color: #ce4844; -} -.bs-callout-warning { - border-left-color: #aa6708; -} -.bs-callout-warning h4 { - color: #aa6708; -} -.bs-callout-info { - border-left-color: #1b809e; -} -.bs-callout-info h4 { - color: #1b809e; -} - - -/* - * Color swatches - * - * Color swatches and associated values for our grayscale and brand colors. - */ - -.color-swatches { - margin: 0 -5px; - overflow: hidden; /* clearfix */ -} -.color-swatch { - float: left; - width: 60px; - height: 60px; - margin: 0 5px; - border-radius: 3px; -} - -@media (min-width: 768px) { - .color-swatch { - width: 100px; - height: 100px; - } -} - -/* Framework colors */ -.color-swatches .gray-darker { - background-color: #222; -} -.color-swatches .gray-dark { - background-color: #333; -} -.color-swatches .gray { - background-color: #555; -} -.color-swatches .gray-light { - background-color: #999; -} -.color-swatches .gray-lighter { - background-color: #eee; -} -.color-swatches .brand-primary { - background-color: #337ab7; -} -.color-swatches .brand-success { - background-color: #5cb85c; -} -.color-swatches .brand-warning { - background-color: #f0ad4e; -} -.color-swatches .brand-danger { - background-color: #d9534f; -} -.color-swatches .brand-info { - background-color: #5bc0de; -} - -/* Docs colors */ -.color-swatches .bs-purple { - background-color: #563d7c; -} -.color-swatches .bs-purple-light { - background-color: #c7bfd3; -} -.color-swatches .bs-purple-lighter { - background-color: #e5e1ea; -} -.color-swatches .bs-gray { - background-color: #f9f9f9; -} - - -/* - * Team members - * - * Avatars, names, and usernames for core team. - */ - -.bs-team .team-member { - line-height: 32px; - color: #555; -} -.bs-team .team-member:hover { - color: #333; - text-decoration: none; -} -.bs-team .github-btn { - float: right; - width: 180px; - height: 20px; - margin-top: 6px; -} -.bs-team img { - float: left; - width: 32px; - margin-right: 10px; - border-radius: 4px; -} - - -/* - * Wall of Browser Bugs - * - * Better display for the responsive table on the Wall of Browser Bugs. - */ - -.bs-docs-browser-bugs td p { - margin-bottom: 0; -} - -.bs-docs-browser-bugs th:first-child { - width: 18%; -} - - -/* - * Grid examples - * - * Highlight the grid columns within the docs so folks can see their padding, - * alignment, sizing, etc. - */ - -.show-grid { - margin-bottom: 15px; -} -.show-grid [class^="col-"] { - padding-top: 10px; - padding-bottom: 10px; - background-color: #eee; - background-color: rgba(86,61,124,.15); - border: 1px solid #ddd; - border: 1px solid rgba(86,61,124,.2); -} - - -/* - * Examples - * - * Isolated sections of example content for each component or feature. Usually - * followed by a code snippet. - */ - -.bs-example { - position: relative; - padding: 45px 15px 15px; - margin: 0 -15px 15px; - border-color: #e5e5e5 #eee #eee; - border-style: solid; - border-width: 1px 0; - -webkit-box-shadow: inset 0 3px 6px rgba(0,0,0,.05); - box-shadow: inset 0 3px 6px rgba(0,0,0,.05); -} -/* Echo out a label for the example */ -.bs-example:after { - position: absolute; - top: 15px; - left: 15px; - font-size: 12px; - font-weight: bold; - color: #959595; - text-transform: uppercase; - letter-spacing: 1px; - content: "Example"; -} - -/* Tweak display of the code snippets when following an example */ -.bs-example + .highlight, -.bs-example + .zero-clipboard + .highlight { - margin: -15px -15px 15px; - border-width: 0 0 1px; - border-radius: 0; -} - -/* Make the examples and snippets not full-width */ -@media (min-width: 768px) { - .bs-example { - margin-right: 0; - margin-left: 0; - background-color: #fff; - border-color: #ddd; - border-width: 1px; - border-radius: 4px 4px 0 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .bs-example + .highlight, - .bs-example + .zero-clipboard + .highlight { - margin-top: -16px; - margin-right: 0; - margin-left: 0; - border-width: 1px; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; - } - .bs-example-standalone { - border-radius: 4px; - } -} - -/* Undo width of container */ -.bs-example .container { - width: auto; -} - -/* Tweak content of examples for optimum awesome */ -.bs-example > p:last-child, -.bs-example > ul:last-child, -.bs-example > ol:last-child, -.bs-example > blockquote:last-child, -.bs-example > .form-control:last-child, -.bs-example > .table:last-child, -.bs-example > .navbar:last-child, -.bs-example > .jumbotron:last-child, -.bs-example > .alert:last-child, -.bs-example > .panel:last-child, -.bs-example > .list-group:last-child, -.bs-example > .well:last-child, -.bs-example > .progress:last-child, -.bs-example > .table-responsive:last-child > .table { - margin-bottom: 0; -} -.bs-example > p > .close { - float: none; -} - -/* Typography */ -.bs-example-type .table .type-info { - color: #767676; - vertical-align: middle; -} -.bs-example-type .table td { - padding: 15px 0; - border-color: #eee; -} -.bs-example-type .table tr:first-child td { - border-top: 0; -} -.bs-example-type h1, -.bs-example-type h2, -.bs-example-type h3, -.bs-example-type h4, -.bs-example-type h5, -.bs-example-type h6 { - margin: 0; -} - -/* Contextual background colors */ -.bs-example-bg-classes p { - padding: 15px; -} - -/* Images */ -.bs-example > .img-circle, -.bs-example > .img-rounded, -.bs-example > .img-thumbnail { - margin: 5px; -} - -/* Tables */ -.bs-example > .table-responsive > .table { - background-color: #fff; -} - -/* Buttons */ -.bs-example > .btn, -.bs-example > .btn-group { - margin-top: 5px; - margin-bottom: 5px; -} -.bs-example > .btn-toolbar + .btn-toolbar { - margin-top: 10px; -} - -/* Forms */ -.bs-example-control-sizing select, -.bs-example-control-sizing input[type="text"] + input[type="text"] { - margin-top: 10px; -} -.bs-example-form .input-group { - margin-bottom: 10px; -} -.bs-example > textarea.form-control { - resize: vertical; -} - -/* List groups */ -.bs-example > .list-group { - max-width: 400px; -} - -/* Navbars */ -.bs-example .navbar:last-child { - margin-bottom: 0; -} -.bs-navbar-top-example, -.bs-navbar-bottom-example { - z-index: 1; - padding: 0; - overflow: hidden; /* cut the drop shadows off */ -} -.bs-navbar-top-example .navbar-header, -.bs-navbar-bottom-example .navbar-header { - margin-left: 0; -} -.bs-navbar-top-example .navbar-fixed-top, -.bs-navbar-bottom-example .navbar-fixed-bottom { - position: relative; - margin-right: 0; - margin-left: 0; -} -.bs-navbar-top-example { - padding-bottom: 45px; -} -.bs-navbar-top-example:after { - top: auto; - bottom: 15px; -} -.bs-navbar-top-example .navbar-fixed-top { - top: -1px; -} -.bs-navbar-bottom-example { - padding-top: 45px; -} -.bs-navbar-bottom-example .navbar-fixed-bottom { - bottom: -1px; -} -.bs-navbar-bottom-example .navbar { - margin-bottom: 0; -} -@media (min-width: 768px) { - .bs-navbar-top-example .navbar-fixed-top, - .bs-navbar-bottom-example .navbar-fixed-bottom { - position: absolute; - } -} - -/* Pagination */ -.bs-example .pagination { - margin-top: 10px; - margin-bottom: 10px; -} - -/* Pager */ -.bs-example > .pager { - margin-top: 0; -} - -/* Example modals */ -.bs-example-modal { - background-color: #f5f5f5; -} -.bs-example-modal .modal { - position: relative; - top: auto; - right: auto; - bottom: auto; - left: auto; - z-index: 1; - display: block; -} -.bs-example-modal .modal-dialog { - left: auto; - margin-right: auto; - margin-left: auto; -} - -/* Example dropdowns */ -.bs-example > .dropdown > .dropdown-toggle { - float: left; -} -.bs-example > .dropdown > .dropdown-menu { - position: static; - display: block; - margin-bottom: 5px; - clear: left; -} - -/* Example tabbable tabs */ -.bs-example-tabs .nav-tabs { - margin-bottom: 15px; -} - -/* Tooltips */ -.bs-example-tooltips { - text-align: center; -} -.bs-example-tooltips > .btn { - margin-top: 5px; - margin-bottom: 5px; -} -.bs-example-tooltip .tooltip { - position: relative; - display: inline-block; - margin: 10px 20px; - opacity: 1; -} - -/* Popovers */ -.bs-example-popover { - padding-bottom: 24px; - background-color: #f9f9f9; -} -.bs-example-popover .popover { - position: relative; - display: block; - float: left; - width: 260px; - margin: 20px; -} - -/* Scrollspy demo on fixed height div */ -.scrollspy-example { - position: relative; - height: 200px; - margin-top: 10px; - overflow: auto; -} - -/* Simple collapse example */ -#collapseExample .well { - margin-bottom: 0; -} - -/* Don't wrap event names in Events tables in JS plugin docs */ -.bs-events-table > thead > tr > th:first-child, -.bs-events-table > tbody > tr > td:first-child { - white-space: nowrap; -} - -/* - * Code snippets - * - * Generated via Pygments and Jekyll, these are snippets of HTML, CSS, and JS. - */ - -.highlight { - padding: 9px 14px; - margin-bottom: 14px; - background-color: #f7f7f9; - border: 1px solid #e1e1e8; - border-radius: 4px; -} -.highlight pre { - padding: 0; - margin-top: 0; - margin-bottom: 0; - word-break: normal; - white-space: nowrap; - background-color: transparent; - border: 0; -} -.highlight pre code { - font-size: inherit; - color: #333; /* Effectively the base text color */ -} -.highlight pre code:first-child { - display: inline-block; - padding-right: 45px; -} - - -/* - * Responsive tests - * - * Generate a set of tests to show the responsive utilities in action. - */ - -/* Responsive (scrollable) doc tables */ -.table-responsive .highlight pre { - white-space: normal; -} - -/* Utility classes table */ -.bs-table th small, -.responsive-utilities th small { - display: block; - font-weight: normal; - color: #999; -} -.responsive-utilities tbody th { - font-weight: normal; -} -.responsive-utilities td { - text-align: center; -} -.responsive-utilities td.is-visible { - color: #468847; - background-color: #dff0d8 !important; -} -.responsive-utilities td.is-hidden { - color: #ccc; - background-color: #f9f9f9 !important; -} - -/* Responsive tests */ -.responsive-utilities-test { - margin-top: 5px; -} -.responsive-utilities-test .col-xs-6 { - margin-bottom: 10px; -} -.responsive-utilities-test span { - display: block; - padding: 15px 10px; - font-size: 14px; - font-weight: bold; - line-height: 1.1; - text-align: center; - border-radius: 4px; -} -.visible-on .col-xs-6 .hidden-xs, -.visible-on .col-xs-6 .hidden-sm, -.visible-on .col-xs-6 .hidden-md, -.visible-on .col-xs-6 .hidden-lg, -.hidden-on .col-xs-6 .hidden-xs, -.hidden-on .col-xs-6 .hidden-sm, -.hidden-on .col-xs-6 .hidden-md, -.hidden-on .col-xs-6 .hidden-lg { - color: #999; - border: 1px solid #ddd; -} -.visible-on .col-xs-6 .visible-xs-block, -.visible-on .col-xs-6 .visible-sm-block, -.visible-on .col-xs-6 .visible-md-block, -.visible-on .col-xs-6 .visible-lg-block, -.hidden-on .col-xs-6 .visible-xs-block, -.hidden-on .col-xs-6 .visible-sm-block, -.hidden-on .col-xs-6 .visible-md-block, -.hidden-on .col-xs-6 .visible-lg-block { - color: #468847; - background-color: #dff0d8; - border: 1px solid #d6e9c6; -} - - -/* - * Glyphicons - * - * Special styles for displaying the icons and their classes in the docs. - */ - -.bs-glyphicons { - margin: 0 -10px 20px; - overflow: hidden; -} -.bs-glyphicons-list { - padding-left: 0; - list-style: none; -} -.bs-glyphicons li { - float: left; - width: 25%; - height: 115px; - padding: 10px; - font-size: 10px; - line-height: 1.4; - text-align: center; - background-color: #f9f9f9; - border: 1px solid #fff; -} -.bs-glyphicons .glyphicon { - margin-top: 5px; - margin-bottom: 10px; - font-size: 24px; -} -.bs-glyphicons .glyphicon-class { - display: block; - text-align: center; - word-wrap: break-word; /* Help out IE10+ with class names */ -} -.bs-glyphicons li:hover { - color: #fff; - background-color: #563d7c; -} - -@media (min-width: 768px) { - .bs-glyphicons { - margin-right: 0; - margin-left: 0; - } - .bs-glyphicons li { - width: 12.5%; - font-size: 12px; - } -} - - -/* - * Customizer - * - * Since this is so form control heavy, we have quite a few styles to customize - * the display of inputs, headings, and more. Also included are all the download - * buttons and actions. - */ - -.bs-customizer .toggle { - float: right; - margin-top: 25px; -} - -/* Headings and form contrls */ -.bs-customizer label { - margin-top: 10px; - font-weight: 500; - color: #555; -} -.bs-customizer h2 { - padding-top: 30px; - margin-top: 0; - margin-bottom: 5px; -} -.bs-customizer h3 { - margin-bottom: 0; -} -.bs-customizer h4 { - margin-top: 15px; - margin-bottom: 0; -} -.bs-customizer .bs-callout h4 { - margin-top: 0; /* lame, but due to specificity we have to duplicate */ - margin-bottom: 5px; -} -.bs-customizer input[type="text"] { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - background-color: #fafafa; -} -.bs-customizer .help-block { - margin-bottom: 5px; - font-size: 12px; -} - -/* For the variables, use regular weight */ -#less-section label { - font-weight: normal; -} - -/* Downloads */ -.bs-customize-download .btn-outline { - padding: 20px; -} - -/* Error handling */ -.bs-customizer-alert { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030; - padding: 15px 0; - color: #fff; - background-color: #d9534f; - border-bottom: 1px solid #b94441; - -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.25); - box-shadow: inset 0 1px 0 rgba(255,255,255,.25); -} -.bs-customizer-alert .close { - margin-top: -4px; - font-size: 24px; -} -.bs-customizer-alert p { - margin-bottom: 0; -} -.bs-customizer-alert .glyphicon { - margin-right: 5px; -} -.bs-customizer-alert pre { - margin: 10px 0 0; - color: #fff; - background-color: #a83c3a; - border-color: #973634; - -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1); - box-shadow: inset 0 2px 4px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1); -} - -.bs-dropzone { - position: relative; - padding: 20px; - margin-bottom: 20px; - color: #777; - text-align: center; - border: 2px dashed #eee; - border-radius: 4px; -} -.bs-dropzone .import-header { - margin-bottom: 5px; -} -.bs-dropzone .glyphicon-download-alt { - font-size: 40px; -} -.bs-dropzone hr { - width: 100px; -} -.bs-dropzone .lead { - margin-bottom: 10px; - font-weight: normal; - color: #333; -} -/*.bs-dropzone*/ #import-manual-trigger { - cursor: pointer; -} -.bs-dropzone p:last-child { - margin-bottom: 0; -} - -/* - * Brand guidelines - * - * Extra styles for displaying wordmarks, logos, etc. - */ - -/* Logo series wrapper */ -.bs-brand-logos { - display: table; - width: 100%; - margin-bottom: 15px; - overflow: hidden; - color: #563d7c; - background-color: #f9f9f9; - border-radius: 4px; -} - -/* Individual items */ -.bs-brand-item { - padding: 60px 0; - text-align: center; -} -.bs-brand-item + .bs-brand-item { - border-top: 1px solid #fff; -} -.bs-brand-logos .inverse { - color: #fff; - background-color: #563d7c; -} - -/* Heading content within */ -.bs-brand-item h1, -.bs-brand-item h3 { - margin-top: 0; - margin-bottom: 0; -} -.bs-brand-item .bs-docs-booticon { - margin-right: auto; - margin-left: auto; -} - -/* Make the icons stand out on what is/isn't okay */ -.bs-brand-item .glyphicon { - width: 30px; - height: 30px; - margin: 10px auto -10px; - line-height: 30px; - color: #fff; - border-radius: 50%; -} -.bs-brand-item .glyphicon-ok { - background-color: #5cb85c; -} -.bs-brand-item .glyphicon-remove { - background-color: #d9534f; -} - -@media (min-width: 768px) { - .bs-brand-item { - display: table-cell; - width: 1%; - } - .bs-brand-item + .bs-brand-item { - border-top: 0; - border-left: 1px solid #fff; - } - .bs-brand-item h1 { - font-size: 60px; - } -} - - -/* - * ZeroClipboard styles - */ - -.zero-clipboard { - position: relative; - display: none; -} -.btn-clipboard { - position: absolute; - top: 0; - right: 0; - z-index: 10; - display: block; - padding: 5px 8px; - font-size: 12px; - color: #767676; - cursor: pointer; - background-color: #fff; - border: 1px solid #e1e1e8; - border-radius: 0 4px 0 4px; -} -.btn-clipboard-hover { - color: #fff; - background-color: #563d7c; - border-color: #563d7c; -} - -@media (min-width: 768px) { - .zero-clipboard { - display: block; - } - .bs-example + .zero-clipboard .btn-clipboard { - top: -16px; - border-top-right-radius: 0; - } -} - - -/* - * Miscellaneous - * - * Odds and ends for optimum docs display. - */ - -/* Pseudo :focus state for showing how it looks in the docs */ -#focusedInput { - border-color: rgb(204,204,204); /* Restate unfocused value to make CSSLint happy that there's a pre-CSS3 fallback*/ - border-color: rgba(82,168,236,.8); - outline: 0; - outline: thin dotted \9; /* IE6-9 */ - -webkit-box-shadow: 0 0 8px rgba(82,168,236,.6); - box-shadow: 0 0 8px rgba(82,168,236,.6); -} diff --git a/src/pretix/static/bootstrap/docs/assets/css/src/pygments-manni.css b/src/pretix/static/bootstrap/docs/assets/css/src/pygments-manni.css deleted file mode 100644 index 1b3c92cb27..0000000000 --- a/src/pretix/static/bootstrap/docs/assets/css/src/pygments-manni.css +++ /dev/null @@ -1,66 +0,0 @@ -.hll { background-color: #ffffcc } - /*{ background: #f0f3f3; }*/ -.c { color: #999; } /* Comment */ -.err { color: #AA0000; background-color: #FFAAAA } /* Error */ -.k { color: #006699; } /* Keyword */ -.o { color: #555555 } /* Operator */ -.cm { color: #999; } /* Comment.Multiline */ /* Edited to remove italics and make into comment */ -.cp { color: #009999 } /* Comment.Preproc */ -.c1 { color: #999; } /* Comment.Single */ -.cs { color: #999; } /* Comment.Special */ -.gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */ -.ge { font-style: italic } /* Generic.Emph */ -.gr { color: #FF0000 } /* Generic.Error */ -.gh { color: #003300; } /* Generic.Heading */ -.gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */ -.go { color: #AAAAAA } /* Generic.Output */ -.gp { color: #000099; } /* Generic.Prompt */ -.gs { } /* Generic.Strong */ -.gu { color: #003300; } /* Generic.Subheading */ -.gt { color: #99CC66 } /* Generic.Traceback */ -.kc { color: #006699; } /* Keyword.Constant */ -.kd { color: #006699; } /* Keyword.Declaration */ -.kn { color: #006699; } /* Keyword.Namespace */ -.kp { color: #006699 } /* Keyword.Pseudo */ -.kr { color: #006699; } /* Keyword.Reserved */ -.kt { color: #007788; } /* Keyword.Type */ -.m { color: #FF6600 } /* Literal.Number */ -.s { color: #d44950 } /* Literal.String */ -.na { color: #4f9fcf } /* Name.Attribute */ -.nb { color: #336666 } /* Name.Builtin */ -.nc { color: #00AA88; } /* Name.Class */ -.no { color: #336600 } /* Name.Constant */ -.nd { color: #9999FF } /* Name.Decorator */ -.ni { color: #999999; } /* Name.Entity */ -.ne { color: #CC0000; } /* Name.Exception */ -.nf { color: #CC00FF } /* Name.Function */ -.nl { color: #9999FF } /* Name.Label */ -.nn { color: #00CCFF; } /* Name.Namespace */ -.nt { color: #2f6f9f; } /* Name.Tag */ -.nv { color: #003333 } /* Name.Variable */ -.ow { color: #000000; } /* Operator.Word */ -.w { color: #bbbbbb } /* Text.Whitespace */ -.mf { color: #FF6600 } /* Literal.Number.Float */ -.mh { color: #FF6600 } /* Literal.Number.Hex */ -.mi { color: #FF6600 } /* Literal.Number.Integer */ -.mo { color: #FF6600 } /* Literal.Number.Oct */ -.sb { color: #CC3300 } /* Literal.String.Backtick */ -.sc { color: #CC3300 } /* Literal.String.Char */ -.sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */ -.s2 { color: #CC3300 } /* Literal.String.Double */ -.se { color: #CC3300; } /* Literal.String.Escape */ -.sh { color: #CC3300 } /* Literal.String.Heredoc */ -.si { color: #AA0000 } /* Literal.String.Interpol */ -.sx { color: #CC3300 } /* Literal.String.Other */ -.sr { color: #33AAAA } /* Literal.String.Regex */ -.s1 { color: #CC3300 } /* Literal.String.Single */ -.ss { color: #FFCC33 } /* Literal.String.Symbol */ -.bp { color: #336666 } /* Name.Builtin.Pseudo */ -.vc { color: #003333 } /* Name.Variable.Class */ -.vg { color: #003333 } /* Name.Variable.Global */ -.vi { color: #003333 } /* Name.Variable.Instance */ -.il { color: #FF6600 } /* Literal.Number.Integer.Long */ - -.css .o, -.css .o + .nt, -.css .nt + .nt { color: #999; } diff --git a/src/pretix/static/bootstrap/docs/assets/flash/ZeroClipboard.swf b/src/pretix/static/bootstrap/docs/assets/flash/ZeroClipboard.swf deleted file mode 100644 index 55ccf9608ed3cf01db575de40c0be1bfc5440a80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2157 zcmV-z2$J_hS5pr43;+Ol+I?2tQ`^`TzgL!YC1D%efJ4Zavmqf6femD{3n3(6;{X9n zFeKYFAHJ5aY$ZZ+C7F+QI?e2Kr+-1;voC$x_N9IAAJCbOOlEiA`_Sq1t^YvNBbfl+ zZmU7Z=lpcO&$$u@i2oZx@!ugdh*2SV9wGFrzQ16E=A4>7yHzM=4t7n;odxOMNW=4* zv)Sza{{F=N^n~ryvy(G3Guhl!c4}%IG{)US%cBS5mV0evK6FrEuI3m`&#{_lP_CUOI)A228dy(g_HMT6 z*tM1hIqBdkG(Kw*xM;Sjrr|c2GvBh_SoVG=#3>r+Xbz*E-L3Hv3!a!p)0c zKSSZQ_^&_wGY=F0tMZIFcHT6aRhv3B^ymIRDG0#>q&sw%O`-&vK-}AZ|4~F7I=)OK zmOaO?>SC$-nrU7%oWum%3&y9c+bx$Z1w6lJ8#S_M+a{xyxY63JGAGs*F4nQE8E(_0 zhhn+u7#B$F-dREgL^)QV^GVS|hnp+FD;&dsSE|Z!T=-mzTEEU1?5yRJ^!a zezjgI?5r)ldb+i+xw%w0V-t6&Wq9DX(;R7+d9*-1sx+zNvd1mv97gNRD+VP$0qDj} zy=7_PDY+T;PR&rK?y8y7dPg(AP;O;1d(_EvC6u|BaoEpVhQn^2QNF8;WHLXV_}KuU z$Nh3t++y{mgC_U~%CmYI={@VNXY~@r)XW_Ut%pscRn2@IAHVi$;7vC4a*6;)uHjVMGZNri~ z4lL$Hced7Gdz1YVAD&uKw-YbD318|JP)5WFc5mCo@A;>6$(oUXl8cWAR=Xs%pk;H+qvrV?iQ)Tnulo{(K;M!n%l zHHYqRLEE5!W`jz!R?9aGvnJ%%R`QP$Ach@WGaxk>jIv(ZDKEV$Jz3h4kJ+8=W3W(q zx*>Jgoz3|16b_&~i<-%$V4(rtuM1qQ{RC~h*O%cnT<$@D?veXhRXw!ri@m_GW z;Z;bt;4rYDPr`msi`WRu;Gy4U?+=C@>)MOte{E6v$Cs}!jnjNu8I%Pi-AIoL=p0Uu z56MFlL)oF+(B#lmdM5pxiwjtkWKQ9GqOo{yVw+%&;0WOaf<=M}!4knTiS!U5N`x2@ z;zZ~rLV^fMBBY4WM{qyE0|cjuaE=IrL>MB%1tMG|!X+YHCiof=M+g}s_!hyctYU(v z+_wE(<|~a?Z&ohpmv``6?)!Esh0y!9euZX$UZtM^y+((JktQ5{ zsfmd`gygDN6)uC>`zn7_<@M|I`jjXn|Nh~FBuc`2@EzeIk~|K+-*VrzQyGNX>ZipU zco-K)FmN~VSKqc%(32OV?bT6;`rQ#2@ex^)e~rV81h~Z=1o_lVd{jISI%682(h!0~ zNc&4oN~{HmNL2!f2<@s+9K)#@gg_kx{dxuerg#p6lPVuR+Z#*4j7Q;d0O;4@VO9Jl zNubuMP!*v9i6nmy6-W{ZDi8!-R=(zf5^jC(ub_&m&eL(A59q{;tgq+v$zm42&3+pM z)Ti3|ba99a3ej&vC<#IV_gi)On^ZqSz^W_7PcgWv+|fVFyf1yu9qBVCiZh`iY>p3n zqsMZ`xlQi^5aS}U(t8Z7 z13jV}0LKM@M+3Mg1)E=40jGMpeFSo;#3!O3p@H^MsT2W&UJhgFnxA8+!sRNPxys{Q jWh+-H=PDBXeSt28SA&3RsxNr4bpJQ|0FeIxQ+=8*M*tao diff --git a/src/pretix/static/bootstrap/docs/assets/img/components.png b/src/pretix/static/bootstrap/docs/assets/img/components.png deleted file mode 100644 index 2cbee5463731bc501d158bdebea61b43c6568d40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3110 zcmdT`eNaV~jWe^MoL_inO@DL?x3|Oh=0YapCfC+@`eFU|;JDu5oH}mq|+;h%7=iJ}< z-E(i&PJi#kMixeTdU}g#+o^$idh-!IJ^ddH=L3l{(8d-F40iekdx7B|_w@g-=SKM* ztyX(9;upFvcVb+H{xSYxQe9JiXWtI4sP;iqZ71C?L-B4*F`_KwR3=6Ja`?Nv&eq-p z@V@(Wzh6dtXx@XCC(-^H!^mi3O~>tDJG!3_3**O4 z(x_X5k422g4u%BL2zP$Vh%)#V$~>ru3viQk&QV;#Gw4!v)3^DpgH@EFP%YTjt zq1|s&Bi`hltPEa z!s7Z3y$R!G@7&QDYojmfr&h$(PwYx2s$-WfJgX)5j{fnK)8v$!SvHnKTmP#4gWal( zIAAi0nJ{})9p!fKe?1uGMjz>Qdob#$@M=32xO}-cl{_aPdQlUJ*+)$AWw~{GC+!+d z+%B(aKY9Lwwr*um^ywv#ImIv>v1agpg1Mz8d}AvPiGdTsTM=l%>;OIfN&VSY?)gzY zXR9DU>@-V(Gs_<3&F2%nH|KL_60K3YEXh0H?*>J zwL$Z3W)t}w>94X9>oWc?!}O(i+k(4yHsKR({{xV=ZTDVWOFJVw-9*59bJM@M+gX|tnQ67Sb3xIV*gusXs&Tfe_4)@XS`^i`SA`*}KY&@uaqs=0D7**Jq!QVjrc3IlQc zT*#$$H-1#^0bbLA*S=8c?KE<>{^TYntem254Y!t(iyuqK#gCTM zly={p$cMXz09`iBzlZN`Jmlm;C6_5>3tS)%I)>s3j5D1FYCUr|PC-zt!*uE+woGkC+2T-T#J z`k&`DOkd-a1|a(}PuAkGP()@%Sy2*mw#i&hIiw*pO8+L%G~8)|xg_*viTv!$5!^Wo zS6>Mgfy~u?3Dkr^6Z#riA@JU#t{!>!_+p#ymyjYCJ}6CP4JPt68jbB(eo0~po)YiU zMRp^hGwgwp+~GL`V(_sWDaRU8ZlrBR2-R=qj9AE+*yN^&NFcc5nD;sUQn7LekNC_* z?rkWdLlyCImEdB3Dm@Y*p4P>YyL!5~y2?9>X9Hc~w)zu}vv2e#P0`v4MoioT-VSW0 zfOJQv$TcIQ-;(8I28V=hz3{?ADX#+yWAH;7HZI{CYg&p@+z#QHUM>S*kJ4@ZtlFLc ztBGURtg+dznhE>4O&2ZFerkz`b^VID6*y^``cMn?%V;sjg)ZLwuNnM{Q@mtCn`=fs z%q8%W#mVmHW}OXmv?_|zP4iS~`9RZm?8h6;YiVBY_Ge-G_cirPmxT&z8h&Oi!q)VMPcZ$>+iOoOKzKH8_bpjKJm_-O+oI0~?Eq_u zYt3}FXg(i2*V(Ut28@nhRu<4!M>q+pE0O`aY54V}!E{T!=n2S2ZMVvQ%~R*B%w4gd zL%UtBB;Y|h<7QY=h9VaBw&F_yu=m#tP6Sp!kn^zZZ01Z2mOs;vQ>tzEY0AoUfyhO$ zlIIg;iC+nk&%jC(kJsocfgeAFhU{&iCUXqm{Qka&-^~5yCeo1br>k&3;l86YOX`P2y7GqKPv z^4?3n;TaKiUHgW**qeJ)k@O*DumvBq9+e=50k(&+=VfIB| zQ3nzRXvnk@G^@O~$+5OmW#?9Q6r1=aZQ?qbQlh8;hm#P_A&VZ0t6r{C3P%@jj1+ff z6p^_s*5K4ZF~n9en9Q)_a)7&v5cwVU z#gIqW>hQzK+o$)+ax)za4CU-DTj@%^-z}=&l9Y zck;3mxht8SCgDi)hv+T$7K0C{RIWg&4+E*uV!Fd(bx*B83+mR zTLIw2HX@jYX+%+20YM7@=6@1f@p+uSdnHRey^;QJg43&?qlRli;n?~lD2-zTy~b7X+EJ{wh!6yEv{y}{d%6LAHd2H0`_ j@tnsF|NreqaEGnuk+m^v@ozTK*qxH*Vxi diff --git a/src/pretix/static/bootstrap/docs/assets/img/devices.png b/src/pretix/static/bootstrap/docs/assets/img/devices.png deleted file mode 100644 index 34c65a0a3f4a9f0349bd600c3d036ce3d14d002c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6654 zcmd5=X;f25_J0COi;64K?A;PU1VKUe)v*NvBvBC%K_aqsK#c6NLo@0$J7M3U*<_cn z3m97sm_QN)1X&|nSY=7rLy~z(&p9(6dglB;{O6o`AKs~VU){R5?ydUO@7Aw3;U>p~ z#DxF=I0iNS={5lH&jY}LpT9c2X5;HV((rmhmbBL|k^Q07_MSqT}TH`=ZtA&rUTRp@p@1UfhQA*}}h|ou| zuw^%?_ObfQ*MxH-hdioRgYxS0J2<;FCBe91%d}IV&Hulr!Aur-SzYZp{u4(=0BD4| zV=)IBDypkVX22^r=69$+T=fEU?&^KuvMyl_a$LUkM}jVj21E+Kvc@oyLv&-x%ggU; zRrC)4MoWV(M@%XQ80ipsNM?$NK!Kj3@LNYH8Q#Z=+Mc6L*u9t|yg>HMYs$N_+Yh2D zfCA4pjo|`h?W1PK+2K&!H59dQY83h=XGR`cW1+^U6(#)S#{GghwC28=CUX0MD=8zH zb_jUw`z-@4yckx0mVwL-amfpvYP=c%ydrH$%oVF0S0tC# zCYlQVocsLXTJ8-mHseQ}#}zMO0B=zJrCEg8^1AZFn`Akm6Z3#na!wLNG$+W@AsA(U z?-X!h%M))uSxhVJPa*2he`OIl@UR zE34M^3T7YXfKgqo;#MFu-t=~ooB%jB)eI9(W!@=;=VhiH1y%3YQ7Y@hvrZTl@EZ?{1KW+ z366!ebVmLR4N@i_C>zI@-og(6y&8l_sPTDigE%3sTW{T=%BJ3q;!<4qB7THTTj=mw zK9~(e(e(mQp+$w|hVtdv-$L)(pk%pI`Z>MW{2w}7|M*G7x}WAwx%yrs@m@#U*`kfm z^ZZ;By>*s1;M%Ke`|C~pF}FfgF4_GGW&!|~8P)f(-{AZ{(;@+)MLQ1nnl>WnO7fr^ zk@@2n(CvB}Lr5>A(CBhYAj-C;MN{!G*NKRAr!wc>^kzcZ=!SXW>RyNHz6{0nJRjH6 zlcju4lBYp)AbE%7rO@*-$Le0wsYoM10C*ZO)*u=DReSj1QkX*f&RBM)x)a=5m6xL% ziH7?W(Z0)XEyw;OS^p-3X-7bFD=u9nV9t*nWbeOdqxVeLx{7hTM{H`|lRtL&;>D5D z!|%_pfHC>gLH-*;qrkL7p2-_ftT9H&MtUE)#^NW>`x4^HoNs`0izEj@;pVDZ1b5qW z4@OdKZEpd9QGw6T7<0^>Vz3SRsjWb0MO_7(PfaD6S0CqqdHSJu0W)(Pbq5rF=gZcG zCS1J;HU)I3up&OLzGYf5(%O&r7tsL5+NhxaqM{h@8+`FX9Kp>2aNKwrcW4!pCNNTE zo#zTlz%g_mI4|6jcN(1h4(GY66PpWRq@#GVq9dPQF8N{kHaAdVVNW^aDxoS zYVYFa`x>40YKCM-kBMiDvpvchs(%iCg1L_gF(i!JO7pfk^RYypL`}P9zaq7}t7yk0 zCJFyE%=d8{J6|m1%gV4P^;&51Sn3QG()HH{vMT5#h;bSqY{SAhmDy=m$O^Q|jOK^z z=s*i^UrYzKNFNKC1#1b@1Ox>+IyAXdmgIudRI{ za<;kzJYQ%zC|~=X>0`c~qbV7^t3*>L1VrByoi{%S;?wm>SB-hg5d~U(#*hy6#C-mD zAO@7lh^2}U+l5d4@#%#|kcC_vnos}nIjm;*5&UFUE%Jbu2VDhvFc2UB&(S8rA&E`+ z=U*0M!<-&gR90FdR~y?(hDJPGZDAn+_vG5`GC4fJHmWrkr!yD{#F3>I(SR{WjbVYDA(3?iFOHANF&DXa@TRk8E&h1;)n3a*g`ON$( z=uBZ9n(eHV`FKv`+i2R<{)C+j`4uyt+&3~?IqJI2@>g!+AR^3x(SQ4q#*>Ajw!7g9yj9+^)rWI?A2&qktxqtWj7#sLk+WsUQ?#(lhKxC~in5JL zoXf38Hjg+myzUumaF?(rU$qx-gpu-!3bI6PJmT{&6-qTN;rlz+$xzC~IJQa-@zOqv zNjb>{{hn;5qp^XZ4u{Y-U7Bj#ZM3wH1jT>s`+sKPU%=p>!UDZ~F4vp&B=&chq$^33 z!ZTAV4qBm3@K)$KvI=gqK}jNhY_-8c5}7H|$wSot)5w2n?!^2C)%lyG?}rubIqbCe z?6)%7I}b$9y8Ll+e7;QL=aD9YkO0?pw@q~&+K2w*WOR*K7VG$^tcy!EgMI{E;=S0j zy!Nb`p6rv*gBI=Fi?}pI!E$FyR}y)>ZLjafUiq?dugruUgx7DKi#JgV9a$bw$knF$ zzkt!le`M0Cy2CPj!a@S2r8HEJfwq81cwnF{TyHvYW4T|yOt@8xqQ4om$b7>7<#r-Y z)%#JH|3uR6Cly@!;TJjCSI{ss5SD?r=T|}=rym&heSotMA|nl=8CWc~q4KWhr=9r; z#zN}q>{xQG8Mx9VeS0RLmDVUw2hfTlOH=nlR)?yYqETCDB zG5<0)yjk@aS2vPe^xoK&auQ9OFBEiMoDlC6~^Lib`ekAE)YjR1Is#*j0OGFYoLg&|XcDFXp%|%?=s1 zU38krN;$+`dusD%YGJwyFOPWdcrj^qFII2G_H`^IciEI)FN=Qk#){LhdJ~)=ya$oM zh8e%PET_nIkzAlwLR z-Q9Wvr#}anJDmjEPY!WI&qHq>0PqOfANlwn6!P}<|IF#lTeW}UQUq9h@KEmGb@)#; z!oSQe#jO?0jmdJbJB`G=d`UF?_1tpRDbOH}h4)kNuuKC>hzij=Zh@q%-7qeqlcYgy zho@Vlt7wo_NOSoC&pqz3Rmwj|64nhb{T{#FhfV#XxackM=;D#_p?9BZe)Bx5iC)2#2y&OgyN%Ho=Rl$5kPsZ>y z{(g|zg4=pyvY3y*IY~)NY#H zW_R>-`5skkM{(G3sQNZ_`nZ0+T`kkZA$T^o;RKoM#hLYSmpFKNt;hD~`Y@bBNu6s# zO?mAXS7I^osuGb%^zJ{Aw$lFr>AlD7L%hl&6b8h z_E__JZLk5->)J>M&xxUWcL10O+09*UdDtNM6yTXOKz2MV{)@f z_d#}?&o=CR-z%;8m-<-h??}S?ZNuE|@L)Uc#Q|P__hWY}>-h`snRTWs=lzzcZ8qKB zhmd=%AbDm>;(5vW$mlIkn?jKA@n#qw6q zNtIag%Q@=DfP_&^mAI#s8{&;#PG+*^*p);2F@7Ny0q+h2@6?Xxl~uOyDAmdrkT z*zu6{uy2MjlICRe+F`1g=gf(TxizwvKqmIP9_#l!Wqk;@!^=-jY z&Bw}NvJoV~nsk`pqeQT%hLDCUWlh|Y4@eZ-ZIjD$baXFC0cV))@wp@ETakvG%_J1r zSZ{Oj-Om!a>Bg}n>;;Em^_j0e^^|6Rg2Rz6IC4bp8D8d8K)3q#Ts%%#ah!kr)%-wt zsF06qc;cQzD9WBjVqN}r(b_x|zZcVlt`N|%LJ9nh;iGK$<0S$aITDom^u#$Jgxy{8 z{UsK^pHK5=|LoGWX;})AW~%azInupCj5~5YB#Pb9?-xf_=*ck9Euv;5?lR6g!1p~hH>W(A;ot6t)=DS^V8lLXICW; zIf$pf`{lT3@sssU`7-iUx8Xh9<-#v-4xgU4&zs&7t1jZcX#?&e{ETB zlV^6{-n22|W80BtG*LhYhw!$?NZaxOJ0qHcE<^fF-SX3g!FgaAB`pnDkEO;8A^qLL zf+jwR?RV7DvdmYBW7~6cpB!ZwUeTLD)%~(=xle7Aar9dSZ9Sob@4Ckl%)Eos06@oo zB{2+)38J$$RgBy(D;##pm+D7P z8{mV1(5G!DgD z=d1SzZpJI9D0Wv=RlL@zcOw&u*Zb*%OVer|G$tx6f+8%w_H|ZtOao&6t{e4RwBQDd z7Q4jQc_r%e^;7U{hRktz=xS_cV*Lw;ysj4s?rC1iy*KvMkI07J#q?v2!m;-j0i%-z zTxyMZ*l-lk53b#vcsKpk1`CNr^p!Cdzo`Y&1YvZGJtvNICikRzv$SoxYT!|7nJyfN z9%Po3H6}=?l|ZRJ4m}>Z>wK)~zire(g{#|CIuICj%$=(P)dybTnFHVA9srAb{GoSy{OA12u^;Pk+7Un)6mtQ;A+dRIYCbs$T zx}XleeNb%WN3Xbp8A%Wj7y7;jfJLd8o{wFVX%KErZrkC}b(L2sH)`jL!bb|reJm_n@P8@b?}7ySx8(}b zQW)_T+j;k~zj4h<;_FPjj$&qpZ~t)V*b3a+c4@GhZiv&m$_edb+ZNfCDd|V=UZhoL z;2uiH>{@u+WPx1D0)a(iChZ=zL6!Fyi2Bi?CZwZV{{g^_6yp>(l~JU%b$7#;4(YE~ z%6TxXNNAawbWNvvy9>);5r-Z%UVE*ye!%+-L-j%TW=!BklFbz~wDU7*`ierKRdS%M z{>{7@I)n?2A|0Y!i__Dvl!H@dplXcYnG7rh z0KVxqm{S_95eW_+&PAlbZV+2_I+$Bk;h9^zP-(O41vVHoL@dR*4H9Z8GmX)^AAs+K zLFG!tPR_p_gbJIfULa`L{sQur*ObMo5s)xdcP|>)%{uAXiJF9)(d`XHK(-<=@N6$0 zssY2=VjkP70ue-rihSUCf|H-4fsUf&552!fN!z(t2?7J95Oq{q1pTU;5zJZ|T#g=t gAZh$B7XdpQ#7Pp2>_~D3Z2{05@Ske_^5B=h19>Z2(f|Me diff --git a/src/pretix/static/bootstrap/docs/assets/img/sass-less.png b/src/pretix/static/bootstrap/docs/assets/img/sass-less.png deleted file mode 100644 index 24cfaf8471282e12699ffc4928ef35f4d56070f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14588 zcmeHuRajg-wD#Z>3KST;Kq;kIaVrjk`@rB7DDF^-yACeJT?W@uiWRp~9HzKad~h4w z4&T*(d+z^}XI~^M$;!J|_R7kWygL%CDu;(di30!t@D${wH2?rK1OR|yjg9s!IoF_L zd=>z}%9=9IMQt&^|9k$=0{?$nV7)k6?AZsNTs2f702EX-bPP-^>=!t=FY)jRUJ()z z14&59$SEkPUQ^T1zM*?d|Bm53BNHjyS=4o)s^9$r3vfscYh!Xlz#;u4Y|DQOv5 zIe7&|C1n*=HL$t{L{m#!M^{hZ;FF<|@n;iLGjj_|D{C8DJ9`I5r!UT5U0mJVJv_a< zeSH1=0|JABLqefp;SrHh(J`@c@!t{>laf zYkt)JtgCNmZ2HyQ(%RPE(b?7A)BC&cPyfK+(D2CU*f{*}#N^cU%u>b5V$|hE^lbM3RSL|KzMv6g@Nw%d zF~nl6sHovZILz8ss`@v14By`0B!#=Bw2}f=|78q|U$3WGI*ebOReQOFOAi}jNOZ<5 ztw+6YC_Y;3*})oG21ulp+g*NwOXNJ6s~7yD2n@A~R<(xvv&hF1382CSHy#x6QZhla z(?WqJg2il<`kmVh5e9%070(*Q-nE${-gv+lBTZYA>ag)zFENyVOylW2lz4TM<6ann zW|*6gRS94&L%_!Z$faa#x~Kx`n+cH({^cq8it$)NK*E%dOtI`Iub+Sjpp(8roe<2w zRt_KynzbmM;xbrAmzWdns5Q!Q{U`|tO>t7q5URdaM|mZ-?BWk0`^BpW2vs->6LJf; zE5wla7_(e_q%N!r!VA1A*KkX5@na|g{5H?gY!aN31Yt=W^wjNvWQbS*>uK6{*3&O4PDhVz$3MMz0XSu4w=J8Zoxl8pTOKKPTG~rLsqOFE zCd1Y;1p%OQxDU$UMMC;mOW%9zhg``Go;g$Zm0a7<&e-0) z#}3Sww#u3QoU_8op@6!Xg|ta(-1s2}K&N|3`ZlwdT;rWM@p|?31%kRvEsvRcyV@Lo&2n~1@N^6Ikdt2zt3H{!xoGEP} zqOXCnEG%)pmdLvU^`a71H;3`28iaOXp>6dd$t#vlI3A7ja~dYX{!xlZ7UEbzyZ9R) za8>nvGLY9^>0HrM#X-HU@-J#vOT8lAK*p@M{B?Vkf6Oa@_66Ha;6V-zL&CrLYD--7 zK)w~3Szds^3_-H|E~Hd83q6n_1m7Akw&R+D?G1^I!vWy>R#HxN5NB`^skdiNZg_hU8jis&a&H~NDKAI>hbLQnl@7*gK&%mPA!CsPAd#Tl;ZEZ>A+^Djd1^gIpodNS zLW8(WwnoW&4n-=!JKtjW6jk6(Tjl#o^uPcfj!KoSq~8j-)9-Wu*Te=z{90pY5rrDl z=GA}`vjOLZQg8qIkM?DmRm41ic{khPlLQ z9hfPYzQg5IjQHN6D0fu3C&!bedCslVPzMSaAC`?FqYPreNj9ke#E+K0^Yga*b^hvq z$>*gEsGq6%;mCY-D@xfhVDnqF-MZ{!6PlvuN*~y^EgDGQU`t2`D>7lo5Rynz zX|?E7AaVavGr)+-i_kTQ65bt>DQKX-#dQd7sKsq{ceh&U#EKRbb}`(^o)@g+vAPm@ zLh0*pAIsiv5u2UDuya3H4G=keIc&Ydro3?aaOY8_$9Yj4?$r6VWX`>#gS}_g z2dEcp%FwY`x%zIBLmLqVKUaF(o_0L#`*H4^fNgwA0i=jA?VZ`aP?@rXvJ)7ZPwqR| zGvQS1ABYt5^vuggnfJre%Xru`GV7(9KxFbXI;GcbPERnL9z9nanN*mkb!YOze^qIE z3pCrLohdDCltDi(MW9F0&Tvx(8(oAp!j!cpG*YIflxA1-)yhzb`lja#pdXi0D+Ll> z4d3+_#b^_X^?`1f4Z=WdLVberz&OC7?gBM=S3t0F}G19gOs zjdXApCrp`TQ?EG+LQ@L|d?H>tK993a%e)jXWR52>*P3H0P*_Ga@-N&G>Ub7QQ9TY` ztZl^haemUUuEUf0RGJOKU&awFB~~t3ptHSerR!O>kGhZ~^sr&U6?A2FEiuA@FxLhx z@asrk@2k{Oy8|5>kM$5R1DFdG&+-hVp*mLPx-wO)^O8qyUl{}~kwDTohru?lR$ChQL;(vK$33MX>_vI40t@Yt7bGXSJz@o4|qk5*h8S!!h)Z_~L{c%$5-Hj;D+PGkvMk!?>`E{mgeQbrQ zaTKSA8}~F)#+fSyl#3nmj09{?-ZNXLd4<}O^^jp-;f2%p#~P=&3jt?i22#fUAUP$_ zqGpQxp}iqjK^eKe!G?1vAmTdgkJAqQF`ct_B%|B9gRT`T#l;;7%EBX9{+R(vdexW; z)=ES(saklepR?mNjwAXT)=Ab;{%ce?b>(sHMWst|hBkr@->*ckKk#W^dd{{nh|V+K z8tN#kjp$ULKF8MCD%}R>+&Kezw4c92BEIq=EtIvv8%;{SUq=$oX3tK?&J|N3Ca3#z z`IM~T^>LtSKh83a;oF3YmcoCTo#KG*zkbAghu`DZ`*93MaN0L1Dg;R*QCoRKvMobS zg=$J0wVav4s^EQ9aHpb*d8S|fl6u-Pzg+0u(#a#&2mb5xkn(Sta#jEvcbimH zNcz+q%5Dkm$gW^1{6~3~UCXI_c>1Is?+^=C)`Las!Dve|*|2}pQs z4wYp7*MAC^GgBqIKW1HeJ?7k0dK`(TyYC$Y96hpClD0i9pczt1lhnfZ!PC>&1O08E zhgF!$ZhL1TO}*`eLfQzDqsPx#;i&!E?O)A!Q8lWckZkNjuWw8y{-vs37j}Oeci#bT z9~W=j8q%nngF1sN)(O9{FnazS+Fuj5x|?l;h>zDRy<*WuG=x8a_%f7eBc!_L7L@1Y z9Q5`XR}JyJrQL53*bO=N&Pxu?GH;PHnl3mfl*&-N7Yu7y1{*LXwMp8}CfNvGSXzry zbuLloo@vOcZCk4H!{yj(U6j2{6;auT#`eX+`dz8cFkAOGV3#sid;NZFg!*3C)7|@& zM?v1XIQS1x&Hc9XUcFrevA@kJG~EBp{SCRVA{2|pK*FZdQb2`wkAa?Jk-cm8S|kY#(<3U@9jfv!Fju7RTucRK!w^n zE8jTM$bl9r68?1Ucp0NW+^?L8{9EM|pfXmJn9{5V>fCa=9e=O{y8iMOz-8%02{Mw? z15=so!Lu+#T|c!XNu~(Br|DL|Z3$mV&->-}R9jzN%Hh22bP=~Q;BsyAvM!C_!$q#1@4OL7qaCS z^sx;O&9>ONv&^SeB)1rUSGmCuhi?(OBZ2oA9JPz&-#A8SZogD~1oX}wDHWUW$J+*f z{`nvkNve(5>3h%p#Yt)%4|AJ%)5>6|OT^(4o~5B;L(X_q{eiNp&V9~;ZjrnVOB>N_ z>JKB#4FU^bA|yAjM9^Gg=cW3MDy(17Yvqwz?_r5|w2A~fRsF$G(?*PG@rLebV1|dU;nANA0i~xT=-d3sm4s)NTPFEJQsu&E+8AO) zqom%=klPvY7>~h}_VD)8!LwN5N7do?3Lg4|zhd4sJay8kY+&Zo}{UwFUj_jMGB8B6T>;~6|BVyz> zGj4J5RAPh6%?=NvS|)O3WPUhcIZMGQpm&zwC&tx}3;wORk0$PysyvUyX)#=?@>-?8 z@34J_nd%1y;CZmr_Q@kV9WF|V`LHI@C%=+_MXf`uviEnbj0Q4vd0*M?+J4?Mo!f_N zKwnn~HvH@UgTD!BKI}TJRO251bgeH9v%ogs`^x0OsQi6{J?g_x$!&H;q{Q4^2#5#o zW&0&Xh0vom+9rg1&8p(I7ayvvd3wxq`mM}wb%}n2k6JOL+*A(4`};s8oLvz1^OiRW z6p)UH&Y7T0H-M1!d4nvu`#u#DUQRIa4tBxQG)Bt_3%<127iWrrJrgwa=oKYm+oy*Y z6~2Bu*^lX}^*ID@wAq}A|70djVonY_(VCQLt~9YVV?Hff9eyQFcQ9Qv_hkcgEX#+> zDmid!iofL_(xW)^x}9<%v%^0WFW)tkTi6zq)V_?x2!(tIv!iw4nJ&rL;%sn8{=UD@nd$cF@eb)VSw+q$9Qu50iVl32arVnZ6oUu;On>RX3z=`3`5(dk6`7^SyNLWoWG& zQ`0>D`JPl{+CuQr-+Ej8ROj_h$U)I_JfBaQh)^sO}^D=YPw~nhj%;#@W>*F*iqz><7~!iR24)NCi0gTMV{j>Hy@q;j`VS0W<^ zdSeZ_hWj_!87BP5(wHac4d8NAEOwKWXaOtD7*i1uhS}$-A6dgv9I28iuhpjelRu)u zxXU%`uuQ^*K7^{n;!8qV|3pN$9H%_gF|$>?>~tuK8sx(M4cZI*viV7|89BoQoYqly zY{hFy7MFVBr;jfQ4qy31X!-I1?9~f0mW`Y~31L&(pq59SE)w4g&08tR+!W&ne!A&> zk7u~iv4Cu3Lchw*&&^|kC{UzxpJ*Su+4W)@gOZGDKNxLh*UPihny^x}P*$b*Mg#*I# z>f`3B3&S49|8x^1JgN7lN~$xJ-6>NEnNBNuEXV${Jz?a#r}|fc^F)A}!c)$v`a|u6 z?i~8~ItI6$-eRwZcDVjgkGPC^<6#)Kif$`(yHL!Ozcz&mNgcC#rQB2mfk+{K%#4dV z(r!LUkhKNpnKr_g)w;Uiv<0EVCIfWDO?b`OgHtBGgf3%LO#*z& zaPOSf&glm#ZQmYe#K-nI449mAuQ z_r6^Le0ihrvpr&;!hF`6z>!4PLk-9)D!aV2>RQ)ptiG}Q-z@g>HBiUwd{Xu!m7LVA zAjfrT#MAuvnx2N`*KcW;%DGSXy|%TRAHT{+dHs z_}A~<(0Q*3vbwA51`57g@rrZ|ClBy0VYVA<`<5oxWZ_-O!k@4s({C4DGF-w4g7Jbz zu+BdDgY$N;?1|K&ie?C>hunLuww+Me+m3>{-N9IZwC|=GLaJ;#;ACC70F+2<)z`f1 zP@e&^S{RiLGfM1sCpeqBi+{YiP!*n9N>+LLa0qC3R4rr)ZRM9MGj*^aAGl=hv()?} z*l>@%+?Zs0*)yEfQ?pKmU}G5iG;A009BPR|*idk))h5-1Z_7$n#-+p=RK}nnV_PlIbJRQ%Rq-G zT32i%B?p~GX8CCF7E!+c>qMa@E1^=UY#YqH8Xk|SXD`Ux1fTD{Oi@m*n&(dDXrOS#U zX4=|*zwB%~cRu)U4~CsX`@C>sVH%+Nerk>OcOht!-1`o^J=~{Y4ndZ##Al6i`c zj$nuysg<-zIdiPE6I;&sc^=(e+`wV-k(BLM#Ff>ivwd+-B+k!h=RVq9LI>IEL73{| zpN2q~$kZC88OX`VbJz}tLDq7@DY}r(ZSaof)*+bMbQX+7puDm6q2k(@0lnaqDC(XR zkHHF)qvDL+CFeB+RV+KaoRg5rIn3zm5X<9g8M1Br`#8GH7IkScT-?W~<0WQP)tqgY zPk_d>cb%`?F-ig@&jW{xpU7q=N9pReFkO9ag?rm84T0d?Yo@YI2`a_x`ao4LX4m>&4e3wNV?jRX~h7ArBqO|{|#^7E#mddhSw|n z5EH0ptUoimr`n+u!wN&|6_4c!CaLbkE5;ZtFT$-{B$>R#{l|Tti)i1rJi!kJoYWbhKKS#J96P4HofY{$DVaqW6`?nJ zNVUjRGWn0VM^75cA^eA=N5oP8E9Tiz&RPwgvUPK(>#c>n`wY5C_2Y)E3sFsSx-7YL z(vUiDhz*f%l?mL}h$5^dje9>9o0>U!PJECY-`e`@C}4`Mm7#u4Xk@I&u{`CXGpdzr zdqyCK<&TU+lQ(YpI+bTuna9{JFUv2M^=vW*0@S|&5IP1@F>fBv39KG4Eu;ss5&>_5 zn9}2@L<*-imru$H*Y}B?@LXg@-VgaOopOzQ-?pu|?s$zX|Hu%|^3%3=(KxyJwc=@p zW;&zs(S84me_Er)y_Y#J3phA}f`(ofNvqL=p5ln)!08pSOLBggptL{4kn-pq#m&iR zBCO#qo|3i4$(W-|3l9dRp zB10V5q;lbNuQ_8XgszoP`nAFoo6GU`Z(346F_*OhlE{7cM>*;-B;U_KL!c7xTjW}@ zO-PTn+X0vD^ZtVG@l8^uNCONh9(7n>C?Amv61=Jd&-!6CybO-lN^UmZT8P2=(v61X z+jM7%h0cXcrM8()JWx}4r>#|ewMfJ24`>$6vX$-mcm?^e907MK9ieCPEv8W@NZmS- zx=}Bm;-*pDT@X)vKYQ_J%TkDL_A4LX;g>E0K>-U}$?nEcyR175Esj;}q zjNfYaw#I6~TW#wrHd)Kb8TKLSig_iv3}_%HiHr-ujk)(^rHAA{+jwIuc&(aY+7~h(C*bKz{deYzsz7K zFH#nyY~D}5llVS?iL(@mT5&SL^_QoF>!6egSwaZADjivM4^u`Rva zTVNKB%Eau{cz>?Vw2Z{MXhG}fC>arA(sWig;W@KWBv}Q0*W;EUg>{)ea>N>Oe-Gqp zgjhdo(c#9~)Sr$*N1p?K(dJHc=&a_I zjGtOL@ig5uR}M(endz6(%9x42&rsK^VP>Qj3aAFfNg-K58oS}bx^3=aHYB+sHoBt# z{uL-w?XJYV; z&4=Uy2Py{tACm98RWdNJBg~}ZF2m!WEN>qol`^RQ9a<_n#7H2fN=H5dHME=76D>)aMbph%M)ft=Da&iA6=Cram83lsN3Q`y7HU19^`960vw9il89r7tp|mtovKzTO?+U0 zep*=5QO@DXFkW&qfz|RN(W6%|clBpzTtuYisS9qkpKbrai8_DCl=EOOk5DNperXMD zz1Zz)w_xF}1?NkyI5I!lV0d1^Qib(kGg`CCtYqhcniH`I{|AdRRyaES%2u4lmEJp`+SJ7pIm_rAW@j8+vaMo zmiqux#(BO<)8NQ0(7g=h&J5@Hy>>6#ocSxCHYGPS=8y_U1e>Gyifg=Eae!|I4(}^p zHoS%z%ku4xr-J+^%WYQeVqrsGqb^FS14d!mJ6-{?PGm1s)FDi6Oi!!Ff7Epr^2?XF z6{`bDTFzlo$=4lpZPW!dmH%dSdft7iPrxbX`bJT5e0cVf#Wi`%&=ZKMH;OCv;U0cy zqnRRBZ1xVgu2J6mnDHVOnxg&da&4Dttn6^OImAo#1LXu9lO*9GiAi8}=k_64?M^2= zGrd%US)gDp{D?eJIU_ssL_4A5r&3pcYw{iV%<@rYp#H1+J06^yCE2yaSq<-IT+HSS zvV-T*YLoR<{hlTcFJ32B=579L^1WG!z`8~LYVK7L^CtK3PkL2YGqCEap6Z<{j)2iDfw;K4? znCk1v|2~50Vlnm65E6tht8nP_zG-A@d-L-|iuOCtBH5P}0bb3R+`lXHtsM`@SSzfH zgTLic;rNC=OQM_8Y617*luIdJX4G-a9dEXKoz?IT{uY{r<5Ra>ke|%$yUfxQhlO0O zQ+r<>YPty-jR#-Ko&3#XVJBIw{7A`N$8`EOd4)7yHPUTT$%cH3%LoiRk?PFUSog?F z(XcK`9q9K@l+}x?v;E8IRPZr;#g?z(Jbw@?&A{Wul2scvjqNS%^@&4nkkR}(^ zPRe*uPvy6=EY*wvi_T9XX_X@qIWISS$Irhr-NU&CkL3;sdEp;7dA`Xi{M@KIBDJCzxfPBSG3O2iz2r|$@(QLe!XrsjoZ(pMwX8S zbYCQ_F??(oNV z#?EO%{x6Non2os@qscmU|G#Rn*hS z3Jcm!Tz`*zxDlJ+Frvrueekzytc7#`cR`x6&q%(u@~q34gU;=)6+H``fC~l-wKI3=|d` zcrRwv^CW3g5Eqnl`Jf3Q+(Ay%4vW4uF1Z^v>EK0Hk8G5~J}T_>xljiadoRO7JXR`L@P55R-&S zBB)uin{loojhZ^~ICh#Wo_Lsxl!-acI2&b-bm*B!`6!KV)R+bEP7FV=TPx5jM?dRp zcYNEI=oAK0IL*+wao~3v+BqLQR%lMa30DMdny}yz;oe^QIUFP;B0VNigEsk9^b zJpv4k`>SuPE~BVAVAAyo|I<_)W;%ILG>yr>Pw}XIY_7W&gSpHW-_%&ncV9wR8?gRN ze}RlLbr2Y1F?An*!fb9Lt{?&(U6rjOujcMk8V-71Ex2gC=Y|6&Z`Pr=j zpXiQZi=S!4yvx1uKcqA9z{Pp(jm&Ju{F5|y#75bkd-gOGXHXTJSFyAwj0n(C*kn84 zHezLs;&_v`5;p_=i^(-R@G2~>WuIx5oT%~fiBm%K%U==9y^XKng)u;m7X!{S*hQ&Q zrp*jsvD=6jH}GSyKL~`RBM;=|Q^*rX0QYyG*X)!(5>OQEWA7iG1klzpJSf0Rpqd|{rgsayvm)C( z#;iyWO-E_hNrS3!tXoGc-xOUXXjS7nX{yvoYydsn6a}~R{Hvab6)}iX2z*u^z*J9S zn|*cvCs>fL#^>Fc4d+)@+`UEo6B9cgx(tkD(Mm4x0qEE})ReX#@vGjuK^u`*F%q?? z%s~P8Y*2H<@Rc;>7EJ=uVfp1-!YyNlF0 z!xB{jCuog|MYKVk z7unqrizCpjqsB5?tKc5?ZdW{AlpaU&But&>bCAMg7(40T`vjZHc-)n=@@Q)wUoRoP zUmkv^rtyk!?c>LBcWybOSL%FH^ZM@#z~NU-Ss&G+7M?3Qa{cX-?CHjQXl`h5nYY`q zT>t1N9H#@!;1SZZ7G39HsSk}G z!YVtF`vCaluKCT0!LN0{xlk||HsYA;QsH=VL?Rl|L+Uo)(6sabhnp125zyXRgL>Gi z?PTZy#de0%qPI|()Ugu6U**A*3Wxo>>i+i!q9bY{0;9FPZ0iB^?xHI;4k(?HE!((*ol=_tZ|Z*1!8@c-MXn5z)Aw*uVb(|IaTXl z3$09tb{^a7Rews$U4>M6kjdO9M0LwPRnoh9K*|_j+jl&jQX3p{Kcr(v*97O)x|kS5 zCWb>}%pax*qC@HL5KfBzbqS&V9ON11nO9azRli=7`j`tz+me)_>V>3y--^G^IX3xsL5ox& zlb6vhTo#$VpX_NN18(%LH_{sdhB|u_kaNsqHK;LVy@PGU+rb2djAPa=?9>WY=A_-g z=9mIqRM*IliW~xO^AbzTdhuIlv@T04akLW~EIQYv2^+#Ru(0M#UTBV-Y$WTWxim+c zn!(g`yeo^vY!okM6@kS@WL5h%O7_8T?SNVbzPB2>sNnT58yih7oRSG7FEn*7fBciT zAa&5ax4Jkgq!pkKv5;WmuEU$Q zhWu3Y>S%9%x$ZPST#Jbno3H{7F&^n>(xug(Ug;s~5_pF-Vk%9Hva4Thp=OEW%j;4J zZ|VqMh0+KgttTcRZW0LiOvHSbKFAy8233t)Zm~?gC}~+4IL|0sVt-}Vn6~n0z?uI# zDq4{d^dDt2Qjs&E#1Y32s~vN&sewu6AV2ehKh~LsK(b_$zOv3M*Jt&L_}Io=%K1$B zKQ3ngrsdBFQ0_LI`Ih#U96Lx%(*-Yi=I&;N{^#Sgz!hQv=4F8uMcW_tD%26$(TzfE zqgv|)w|niU1--Q6nU>e6)ec0M6e`3JU_gUIjdwZfRQ~UW9PG6*-sIBsL=pS{3V1! zvQ`+?n^1FkJVoSteRn@SV>+vqx1jY85l5&|8B81>QhQhe)_;MRd^cP}FKQ?P6x4iy zdOH5TgnK`}wgEOe!7+)`4hM}NV7b^x)e_{Z?Hc;ylh7&z#iaf~KNvE6#sa+k&T7I< z%rt}7GS^Wgq0cNoUxE`pN8Uvw%G{6B{t7gn0mQ4Dm!i{QMx13oQK20kPYlCmIK#Hi zwzLtF1b#PLoH;E(18VrMs21?FI8^a`sFyR9-*{UWhQ)=<=2!$4%Vb2t3lAxxK7@qL zF$$cv)vFowfKw^yJq%!2%*bVWyRPJIbZ+MFZbH!SL5VmG{GwIJ8qX3C^akhxH#QN`C2 z+UKm-f0vtg@^m;EZw35J-gUZTIWMzeTgRg522EwLCQJz8$9^Fhf?uM$_cJt+r6M_4 zxpElAm3TDJI_h<~Zep{h)ug3m(*%3d1~c~V%3bWv=+(Kn?>hZp{I2qQ14-8cE1nFF z@=f{sKN*ENR8)N~tOjq-Ucu*KYCKzxCH#8zDtwJXjWU-# zN$I=y3PAI#dOA8BJ&-`(s$OyOIm3u=>qb+L4R8{fVriSF2Z#{)mZvDv+Pnf7>19kr z`5qdu0DSAbm4~nBKrUTMtYHlzH~oevDE~^kBE8rS9b97pC%TKpFWBA-P~zbNR{0JN zl$34hR%L5k1%{tcyDG-anurFc?2Q73ef{}-uQr2JP`EJuSN{Y3zee|{OA;^QB1-f= P{3lb8QI-A<`W*Z}y|Ka+ diff --git a/src/pretix/static/bootstrap/docs/assets/js/customize.min.js b/src/pretix/static/bootstrap/docs/assets/js/customize.min.js deleted file mode 100644 index 75d0e10455..0000000000 --- a/src/pretix/static/bootstrap/docs/assets/js/customize.min.js +++ /dev/null @@ -1,61 +0,0 @@ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.autoprefixer=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g 1%","last 2 versions","Firefox ESR","Opera 12.1"],f.loadDefault=function(){return this.defaultCache||(this.defaultCache=f({browsers:this["default"]}))},f.process=function(a,b){return null==b&&(b={}),this.loadDefault().process(a,b)},f.postcss=function(a){return f.loadDefault().postcss(a)},f.info=function(){return this.loadDefault().info()},b.exports=f}).call(this)},{"../data/browsers":2,"../data/prefixes":3,"./browsers":4,"./info":33,"./prefixes":38,postcss:92}],2:[function(a,b){(function(){var c,d,e,f,g,h,i,j;h=["firefox","chrome","safari","ios_saf","opera","ie","bb","android"],f=["firefox","chrome","safari","ios_saf","opera","android","ie","ie_mob"],i=function(a){return a.reverse().filter(function(a){return a})},e=function(a){var b,c,d,e,f,g,h;for(d=[],g=0,h=a.length;h>g;g++)c=a[g],e=c.split("-"),e=e.sort().reverse(),f=function(){var a,d,f;for(f=[],a=0,d=e.length;d>a;a++)b=e[a],f.push([b,c,e.length]);return f}(),d=d.concat(f);return d},c=function(a,b){var c,d,g;return c=i(b.versions.slice(-3)),g=e(i(b.versions.slice(0,-3))),d={},d.prefix="opera"===a?"-o-":"-"+b.prefix+"-",-1===f.indexOf(a)&&(d.minor=!0),c.length&&(d.future=c),d.versions=g.map(function(a){return a[0]}),d.popularity=g.map(function(a){return b.usage_global[a[1]]/a[2]}),d},b.exports={},j=a("caniuse-db/data").agents;for(g in j)d=j[g],b.exports[g]=c(g,d)}).call(this)},{"caniuse-db/data":51}],3:[function(a,b){(function(){var c,d,e,f,g,h=[].slice;c=a("./browsers"),d=function(a,b,d){var e,f,g,h,i,j,k,l,m,n,o,p,q;d||(o=[b,{}],d=o[0],b=o[1]),g=b.full?/y\sx($|\s)/:/\sx($|\s)/,h=[],p=a.stats;for(e in p){l=p[e];for(f in l)for(j=l[f],q=f.split("-"),m=0,n=q.length;n>m;m++)k=q[m],c[e]&&j.match(g)&&(k=k.replace(/\.0$/,""),h.push(e+" "+k))}return i=h.sort(function(a,b){return a=a.split(" "),b=b.split(" "),a[0]>b[0]?1:a[0]f;f++)c=a[f],h=c.split(" "),d=h[0],e=h[1],e=parseFloat(e),i.push(b(c,d,e));return i},f=function(){var a,c,d,e,f,g,i;for(d=2<=arguments.length?h.call(arguments,0,e=arguments.length-1):(e=0,[]),a=arguments[e++],i=[],f=0,g=d.length;g>f;f++)c=d[f],i.push(b.exports[c]=a);return i},b.exports={},d(a("caniuse-db/features-json/border-radius"),function(a){return f("border-radius","border-top-left-radius","border-top-right-radius","border-bottom-right-radius","border-bottom-left-radius",{mistakes:["-ms-"],browsers:a,transition:!0})}),d(a("caniuse-db/features-json/css-boxshadow"),function(a){return f("box-shadow",{browsers:a,transition:!0})}),d(a("caniuse-db/features-json/css-animation"),function(a){return f("animation","animation-name","animation-duration","animation-delay","animation-direction","animation-fill-mode","animation-iteration-count","animation-play-state","animation-timing-function","@keyframes",{browsers:a})}),d(a("caniuse-db/features-json/css-transitions"),function(a){return f("transition","transition-property","transition-duration","transition-delay","transition-timing-function",{mistakes:["-ms-"],browsers:a})}),d(a("caniuse-db/features-json/transforms2d"),function(a){return f("transform","transform-origin",{browsers:a,transition:!0})}),d(a("caniuse-db/features-json/transforms3d"),function(a){return f("perspective","perspective-origin",{browsers:a,transition:!0}),f("transform-style","backface-visibility",{browsers:a})}),d(a("caniuse-db/features-json/css-gradients"),function(a){return a=e(a,function(a,b,c){return"android"===b&&4>c||"ios_saf"===b&&5>c||"safari"===b&&5.1>c?a+" old":a}),f("linear-gradient","repeating-linear-gradient","radial-gradient","repeating-radial-gradient",{props:["background","background-image","border-image"],mistakes:["-ms-"],browsers:a})}),d(a("caniuse-db/features-json/css3-boxsizing"),function(a){return f("box-sizing",{browsers:a})}),d(a("caniuse-db/features-json/css-filters"),function(a){return f("filter",{browsers:a,transition:!0})}),d(a("caniuse-db/features-json/multicolumn"),function(a){return f("columns","column-width","column-gap","column-rule","column-rule-color","column-rule-width",{browsers:a,transition:!0}),f("column-count","column-rule-style","column-span","column-fill","break-before","break-after","break-inside",{browsers:a})}),d(a("caniuse-db/features-json/user-select-none"),function(a){return f("user-select",{browsers:a})}),d(a("caniuse-db/features-json/flexbox"),function(a){return a=e(a,function(a,b,c){return"safari"===b&&6.1>c?a+" 2009":"ios_saf"===b&&7>c?a+" 2009":"chrome"===b&&21>c?a+" 2009":"android"===b&&4.4>c?a+" 2009":a}),f("display-flex","inline-flex",{props:["display"],browsers:a}),f("flex","flex-grow","flex-shrink","flex-basis",{transition:!0,browsers:a}),f("flex-direction","flex-wrap","flex-flow","justify-content","order","align-items","align-self","align-content",{browsers:a})}),d(a("caniuse-db/features-json/calc"),function(a){return f("calc",{props:["*"],browsers:a})}),d(a("caniuse-db/features-json/background-img-opts"),function(a){return f("background-clip","background-origin","background-size",{browsers:a})}),d(a("caniuse-db/features-json/font-feature"),function(a){return f("font-feature-settings","font-variant-ligatures","font-language-override","font-kerning",{browsers:a})}),d(a("caniuse-db/features-json/border-image"),function(a){return f("border-image",{browsers:a})}),d(a("caniuse-db/features-json/css-selection"),function(a){return f("::selection",{selector:!0,browsers:a})}),d(a("caniuse-db/features-json/css-placeholder"),function(a){return a=e(a,function(a,b,c){return"firefox"===b&&18>=c?a+" old":a}),f("::placeholder",{selector:!0,browsers:a})}),d(a("caniuse-db/features-json/css-hyphens"),function(a){return f("hyphens",{browsers:a})}),d(a("caniuse-db/features-json/fullscreen"),function(a){return f(":fullscreen",{selector:!0,browsers:a})}),d(a("caniuse-db/features-json/css3-tabsize"),function(a){return f("tab-size",{browsers:a})}),d(a("caniuse-db/features-json/intrinsic-width"),function(a){return f("max-content","min-content","fit-content","fill-available",{props:["width","min-width","max-width","height","min-height","max-height"],browsers:a})}),d(a("caniuse-db/features-json/css3-cursors-newer"),function(a){return f("zoom-in","zoom-out",{props:["cursor"],browsers:a.concat(["chrome 3"])}),f("grab","grabbing",{props:["cursor"],browsers:a.concat(["firefox 24","firefox 25","firefox 26"])})}),d(a("caniuse-db/features-json/css-sticky"),function(a){return f("sticky",{props:["position"],browsers:a})}),d(a("caniuse-db/features-json/pointer"),function(a){return f("touch-action",{browsers:a})}),g=a("caniuse-db/features-json/text-decoration"),d(g,function(a){return f("text-decoration-style",{browsers:a})}),d(g,{full:!0},function(a){return f("text-decoration-line","text-decoration-color",{browsers:a})}),d(a("caniuse-db/features-json/text-size-adjust"),function(a){return f("text-size-adjust",{browsers:a})}),d(a("caniuse-db/features-json/css-masks"),function(a){return f("clip-path","mask","mask-clip","mask-composite","mask-image","mask-origin","mask-position","mask-repeat","mask-size",{browsers:a})}),d(a("caniuse-db/features-json/css-boxdecorationbreak"),function(a){return f("box-decoration-break",{browsers:a})})}).call(this)},{"./browsers":2,"caniuse-db/features-json/background-img-opts":52,"caniuse-db/features-json/border-image":53,"caniuse-db/features-json/border-radius":54,"caniuse-db/features-json/calc":55,"caniuse-db/features-json/css-animation":56,"caniuse-db/features-json/css-boxdecorationbreak":57,"caniuse-db/features-json/css-boxshadow":58,"caniuse-db/features-json/css-filters":59,"caniuse-db/features-json/css-gradients":60,"caniuse-db/features-json/css-hyphens":61,"caniuse-db/features-json/css-masks":62,"caniuse-db/features-json/css-placeholder":63,"caniuse-db/features-json/css-selection":64,"caniuse-db/features-json/css-sticky":65,"caniuse-db/features-json/css-transitions":66,"caniuse-db/features-json/css3-boxsizing":67,"caniuse-db/features-json/css3-cursors-newer":68,"caniuse-db/features-json/css3-tabsize":69,"caniuse-db/features-json/flexbox":70,"caniuse-db/features-json/font-feature":71,"caniuse-db/features-json/fullscreen":72,"caniuse-db/features-json/intrinsic-width":73,"caniuse-db/features-json/multicolumn":74,"caniuse-db/features-json/pointer":75,"caniuse-db/features-json/text-decoration":76,"caniuse-db/features-json/text-size-adjust":77,"caniuse-db/features-json/transforms2d":78,"caniuse-db/features-json/transforms3d":79,"caniuse-db/features-json/user-select-none":80}],4:[function(a,b){(function(){var c,d;d=a("./utils"),c=function(){function b(a,b){this.data=a,this.selected=this.parse(b)}return b.prefixes=function(){var b,c,e;return this.prefixesCache?this.prefixesCache:(b=a("../data/browsers"),this.prefixesCache=d.uniq(function(){var a;a=[];for(e in b)c=b[e],a.push(c.prefix);return a}()).sort(function(a,b){return b.length-a.length}))},b.withPrefix=function(a){return this.prefixesRegexp||(this.prefixesRegexp=RegExp(""+this.prefixes().join("|"))),this.prefixesRegexp.test(a)},b.prototype.parse=function(a){var b;return a instanceof Array||(a=[a]),b=[],a.map(function(a){return function(c){var e,f,g,h;h=a.requirements;for(g in h)if(e=h[g],f=c.match(e.regexp))return void(b=b.concat(e.select.apply(a,f.slice(1))));return d.error("Unknown browser requirement `"+c+"`")}}(this)),d.uniq(b)},b.prototype.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"},b.prototype.requirements={none:{regexp:/^none$/i,select:function(){return"undefined"!=typeof console&&null!==console&&console.warn("autoprefixer('none') is deprecated and will be removed in 3.1. Use autoprefixer({ browsers: [] })"),[]}},lastVersions:{regexp:/^last (\d+) versions?$/i,select:function(a){return this.browsers(function(b){return b.minor?[]:b.versions.slice(0,a)})}},lastByBrowser:{regexp:/^last (\d+) (\w+) versions?$/i,select:function(a,b){var c;return c=this.byName(b),c.versions.slice(0,a).map(function(a){return""+c.name+" "+a})}},globalStatistics:{regexp:/^> (\d+(\.\d+)?)%$/,select:function(a){return this.browsers(function(b){return b.minor?[]:b.versions.filter(function(c,d){return b.popularity[d]>a})})}},newerThan:{regexp:/^(\w+) (>=?)\s*([\d\.]+)/,select:function(a,b,c){var d,e;return d=this.byName(a),c=parseFloat(c),">"===b?e=function(a){return a>c}:">="===b&&(e=function(a){return a>=c}),d.versions.filter(e).map(function(a){return""+d.name+" "+a})}},olderThan:{regexp:/^(\w+) (<=?)\s*([\d\.]+)/,select:function(a,b,c){var d,e;return d=this.byName(a),c=parseFloat(c),"<"===b?e=function(a){return c>a}:"<="===b&&(e=function(a){return c>=a}),d.versions.filter(e).map(function(a){return""+d.name+" "+a})}},esr:{regexp:/^(firefox|ff|fx) esr$/i,select:function(){return["firefox 31"]}},direct:{regexp:/^(\w+) ([\d\.]+)$/,select:function(a,b){var c,d,e;return c=this.byName(a),b=parseFloat(b),e=c.future?c.future[0]:c.versions[0],d=c.versions[c.versions.length-1],b>e?b=e:d>b&&(b=d),[""+c.name+" "+b]}}},b.prototype.browsers=function(a){var b,c,d,e,f;d=[],f=this.data;for(b in f)c=f[b],e=a(c).map(function(a){return""+b+" "+a}),d=d.concat(e);return d},b.prototype.prefix=function(a){var b,c,d;return d=a.split(" "),b=d[0],c=d[1],"opera"===b&&parseFloat(c)>=15?"-webkit-":this.data[b].prefix},b.prototype.isSelected=function(a){return-1!==this.selected.indexOf(a)},b.prototype.byName=function(a){var b;return a=a.toLowerCase(),a=this.aliases[a]||a,b=this.data[a],b||d.error("Unknown browser "+browser),b.name=a,b},b}(),b.exports=c}).call(this)},{"../data/browsers":2,"./utils":42}],5:[function(a,b){(function(){var c,d,e,f,g,h={}.hasOwnProperty,i=function(a,b){function c(){this.constructor=a}for(var d in b)h.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};e=a("./prefixer"),c=a("./browsers"),g=a("postcss/lib/vendor"),f=a("./utils"),d=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return i(b,a),b.prototype.check=function(){return!0},b.prototype.prefixed=function(a,b){return b+a},b.prototype.normalize=function(a){return a},b.prototype.otherPrefixes=function(a,b){var d,e,f,g;for(g=c.prefixes(),e=0,f=g.length;f>e;e++)if(d=g[e],d!==b&&-1!==a.indexOf(d))return!0;return!1},b.prototype.set=function(a,b){return a.prop=this.prefixed(a.prop,b),a},b.prototype.needCascade=function(a){return a._autoprefixerCascade||(a._autoprefixerCascade=this.all.options.cascade!==!1&&-1!==a.before.indexOf("\n"))},b.prototype.maxPrefixed=function(a,b){var c,d,e,g;if(b._autoprefixerMax)return b._autoprefixerMax;for(c=0,e=0,g=a.length;g>e;e++)d=a[e],d=f.removeNote(d),d.length>c&&(c=d.length);return b._autoprefixerMax=c},b.prototype.calcBefore=function(a,b,c){var d,e,g,h,i;for(null==c&&(c=""),d=b.before,h=this.maxPrefixed(a,b),e=h-f.removeNote(c).length,g=i=0;e>=0?e>i:i>e;g=e>=0?++i:--i)d+=" ";return d},b.prototype.restoreBefore=function(a){var b,c;return b=a.before.split("\n"),c=b[b.length-1],this.all.group(a).up(function(a){var b,d;return b=a.before.split("\n"),d=b[b.length-1],d.lengthh;h++)for(g=l[h],m=["left","right"],i=0,k=m.length;k>i;i++)c=m[i],e="border-"+g+"-"+c+"-radius",d="border-radius-"+g+c,b.names.push(e),b.names.push(d),b.toMozilla[e]=d,b.toNormal[d]=e;return b.prototype.prefixed=function(a,c){return"-moz-"===c?c+(b.toMozilla[a]||a):b.__super__.prefixed.apply(this,arguments)},b.prototype.normalize=function(a){return b.toNormal[a]||a},b}(d),b.exports=c}).call(this)},{"../declaration":5}],12:[function(a,b){(function(){var c,d,e={}.hasOwnProperty,f=function(a,b){function c(){this.constructor=a}for(var d in b)e.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};d=a("../declaration"),c=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return f(b,a),b.names=["break-inside","page-break-inside","column-break-inside"],b.prototype.prefixed=function(a,c){return"-webkit-"===c?c+"column-break-inside":"-moz-"===c?"page-break-inside":b.__super__.prefixed.apply(this,arguments)},b.prototype.normalize=function(){return"break-inside"},b.prototype.set=function(a){return("avoid-column"===a.value||"avoid-page"===a.value)&&(a.value="avoid"),b.__super__.set.apply(this,arguments)},b.prototype.insert=function(a,c){if("avoid-region"===a.value);else if("avoid-page"!==a.value||"-webkit-"!==c)return b.__super__.insert.apply(this,arguments)},b}(d),b.exports=c}).call(this)},{"../declaration":5}],13:[function(a,b){(function(){var c,d,e,f,g,h={}.hasOwnProperty,i=function(a,b){function c(){this.constructor=a}for(var d in b)h.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};g=a("./flex-spec"),e=a("../old-value"),f=a("../value"),d=function(a){function b(a){this.name=a}return i(b,a),b.prototype.check=function(a){return a===this.name},b}(e),c=function(a){function b(a){b.__super__.constructor.apply(this,arguments),"display-flex"===a&&(this.name="flex")}return i(b,a),b.names=["display-flex","inline-flex"],b.prototype.check=function(a){return a.value===this.name},b.prototype.prefixed=function(a){var b,c;return c=g(a),b=c[0],a=c[1],a+(2009===b?"flex"===this.name?"box":"inline-box":2012===b?"flex"===this.name?"flexbox":"inline-flexbox":"final"===b?this.name:void 0)},b.prototype.replace=function(a,b){return this.prefixed(b)},b.prototype.old=function(a){var b;return b=this.prefixed(a),b?new e(b):void 0},b}(f),b.exports=c}).call(this)},{"../old-value":36,"../value":43,"./flex-spec":22}],14:[function(a,b){(function(){var c,d,e,f={}.hasOwnProperty,g=function(a,b){function c(){this.constructor=a}for(var d in b)f.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};d=a("../old-value"),e=a("../value"),c=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return g(b,a),b.names=["fill-available"],b.prototype.replace=function(a,c){return"-moz-"===c?a.replace(this.regexp(),"$1-moz-available$3"):b.__super__.replace.apply(this,arguments)},b.prototype.old=function(a){return"-moz-"===a?new d("-moz-available"):b.__super__.old.apply(this,arguments)},b}(e),b.exports=c}).call(this)},{"../old-value":36,"../value":43}],15:[function(a,b){(function(){var c,d,e={}.hasOwnProperty,f=function(a,b){function c(){this.constructor=a}for(var d in b)e.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};d=a("../value"),c=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return f(b,a),b.names=["filter"],b.prototype.replace=function(a,c){return"-webkit-"===c?-1===a.indexOf("-webkit-filter")?b.__super__.replace.apply(this,arguments)+", "+a:a:b.__super__.replace.apply(this,arguments)},b}(d),b.exports=c}).call(this)},{"../value":43}],16:[function(a,b){(function(){var c,d,e={}.hasOwnProperty,f=function(a,b){function c(){this.constructor=a}for(var d in b)e.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};c=a("../declaration"),d=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return f(b,a),b.names=["filter"],b.prototype.check=function(a){var b;return b=a.value,-1===b.toLowerCase().indexOf("alpha(")&&-1===b.indexOf("DXImageTransform.Microsoft")&&-1===b.indexOf("data:image/svg+xml")},b}(c),b.exports=d}).call(this)},{"../declaration":5}],17:[function(a,b){(function(){var c,d,e,f={}.hasOwnProperty,g=function(a,b){function c(){this.constructor=a}for(var d in b)f.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};e=a("./flex-spec"),c=a("../declaration"),d=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return g(b,a),b.names=["flex-basis","flex-preferred-size"],b.prototype.normalize=function(){return"flex-basis"},b.prototype.prefixed=function(a,c){var d,f;return f=e(c),d=f[0],c=f[1],2012===d?c+"flex-preferred-size":b.__super__.prefixed.apply(this,arguments)},b.prototype.set=function(a,c){var d,f;return f=e(c),d=f[0],c=f[1],2012===d||"final"===d?b.__super__.set.apply(this,arguments):void 0},b}(c),b.exports=d}).call(this)},{"../declaration":5,"./flex-spec":22}],18:[function(a,b){(function(){var c,d,e,f={}.hasOwnProperty,g=function(a,b){function c(){this.constructor=a}for(var d in b)f.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};e=a("./flex-spec"),c=a("../declaration"),d=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return g(b,a),b.names=["flex-direction","box-direction","box-orient"],b.prototype.normalize=function(){return"flex-direction"},b.prototype.insert=function(a,c,d){var f,g,h,i,j,k,l;if(l=e(c),j=l[0],c=l[1],2009===j){if(f=a.parent.some(function(a){return a.prop===c+"box-orient"||a.prop===c+"box-direction"}))return;return k=a.value,i=-1!==k.indexOf("row")?"horizontal":"vertical",h=-1!==k.indexOf("reverse")?"reverse":"normal",g=this.clone(a),g.prop=c+"box-orient",g.value=i,this.needCascade(a)&&(g.before=this.calcBefore(d,a,c)),a.parent.insertBefore(a,g),g=this.clone(a),g.prop=c+"box-direction",g.value=h,this.needCascade(a)&&(g.before=this.calcBefore(d,a,c)),a.parent.insertBefore(a,g)}return b.__super__.insert.apply(this,arguments)},b.prototype.old=function(a,c){var d,f;return f=e(c),d=f[0],c=f[1],2009===d?[c+"box-orient",c+"box-direction"]:b.__super__.old.apply(this,arguments)},b}(c),b.exports=d}).call(this)},{"../declaration":5,"./flex-spec":22}],19:[function(a,b){(function(){var c,d,e,f={}.hasOwnProperty,g=function(a,b){function c(){this.constructor=a}for(var d in b)f.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};e=a("./flex-spec"),c=a("../declaration"),d=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return g(b,a),b.names=["flex-flow"],b.prototype.set=function(a,c){var d,f;return f=e(c),d=f[0],c=f[1],2012===d?b.__super__.set.apply(this,arguments):"final"===d?b.__super__.set.apply(this,arguments):void 0},b}(c),b.exports=d}).call(this)},{"../declaration":5,"./flex-spec":22}],20:[function(a,b){(function(){var c,d,e,f={}.hasOwnProperty,g=function(a,b){function c(){this.constructor=a}for(var d in b)f.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};e=a("./flex-spec"),c=a("../declaration"),d=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return g(b,a),b.names=["flex-grow","flex-positive"],b.prototype.normalize=function(){return"flex"},b.prototype.prefixed=function(a,c){var d,f;return f=e(c),d=f[0],c=f[1],2009===d?c+"box-flex":2012===d?c+"flex-positive":b.__super__.prefixed.apply(this,arguments)},b}(c),b.exports=d}).call(this)},{"../declaration":5,"./flex-spec":22}],21:[function(a,b){(function(){var c,d,e,f={}.hasOwnProperty,g=function(a,b){function c(){this.constructor=a}for(var d in b)f.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};e=a("./flex-spec"),c=a("../declaration"),d=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return g(b,a),b.names=["flex-shrink","flex-negative"],b.prototype.normalize=function(){return"flex-shrink"},b.prototype.prefixed=function(a,c){var d,f;return f=e(c),d=f[0],c=f[1],2012===d?c+"flex-negative":b.__super__.prefixed.apply(this,arguments)},b.prototype.set=function(a,c){var d,f;return f=e(c),d=f[0],c=f[1],2012===d||"final"===d?b.__super__.set.apply(this,arguments):void 0},b}(c),b.exports=d}).call(this)},{"../declaration":5,"./flex-spec":22}],22:[function(a,b){(function(){b.exports=function(a){var b;return b="-webkit- 2009"===a||"-moz-"===a?2009:"-ms-"===a?2012:"-webkit-"===a?"final":void 0,"-webkit- 2009"===a&&(a="-webkit-"),[b,a]}}).call(this)},{}],23:[function(a,b){(function(){var c,d,e,f={}.hasOwnProperty,g=function(a,b){function c(){this.constructor=a}for(var d in b)f.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};e=a("./flex-spec"),c=a("../declaration"),d=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return g(b,a),b.names=["flex-wrap"],b.prototype.set=function(a,c){var d;return d=e(c)[0],2009!==d?b.__super__.set.apply(this,arguments):void 0},b}(c),b.exports=d}).call(this)},{"../declaration":5,"./flex-spec":22}],24:[function(a,b){(function(){var c,d,e,f={}.hasOwnProperty,g=function(a,b){function c(){this.constructor=a}for(var d in b)f.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};e=a("./flex-spec"),c=a("../declaration"),d=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return g(b,a),b.names=["flex","box-flex"],b.oldValues={auto:"1",none:"0"},b.prototype.prefixed=function(a,c){var d,f;return f=e(c),d=f[0],c=f[1],2009===d?c+"box-flex":b.__super__.prefixed.apply(this,arguments)},b.prototype.normalize=function(){return"flex"},b.prototype.set=function(a,c){var d;return d=e(c)[0],2009===d?(a.value=a.value.split(" ")[0],a.value=b.oldValues[a.value]||a.value,b.__super__.set.call(this,a,c)):b.__super__.set.apply(this,arguments)},b}(c),b.exports=d}).call(this)},{"../declaration":5,"./flex-spec":22}],25:[function(a,b){(function(){var c,d,e={}.hasOwnProperty,f=function(a,b){function c(){this.constructor=a}for(var d in b)e.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};d=a("../selector"),c=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return f(b,a),b.names=[":fullscreen"],b.prototype.prefixed=function(a){return"-webkit-"===a?":-webkit-full-screen":"-moz-"===a?":-moz-full-screen":":"+a+"fullscreen"},b}(d),b.exports=c}).call(this)},{"../selector":40}],26:[function(a,b){(function(){var c,d,e,f,g,h,i={}.hasOwnProperty,j=function(a,b){function c(){this.constructor=a}for(var d in b)i.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};d=a("../old-value"),e=a("../value"),h=a("../utils"),g=a("postcss/lib/list"),f=/top|left|right|bottom/gi,c=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return j(b,a),b.names=["linear-gradient","repeating-linear-gradient","radial-gradient","repeating-radial-gradient"],b.prototype.replace=function(a,b){return g.space(a).map(function(a){return function(c){var d,e,f,h;return c.slice(0,+a.name.length+1||9e9)!==a.name+"("?c:(f=c.lastIndexOf(")"),d=c.slice(f+1),e=c.slice(a.name.length+1,+(f-1)+1||9e9),h=g.comma(e),h=a.newDirection(h),"-webkit- old"!==b?(a.convertDirection(h),b+a.name+"("+h.join(", ")+")"+d):-1===e.indexOf("px")?a.oldWebkit(c,e,h,d):void 0) -}}(this)).join(" ")},b.prototype.directions={top:"bottom",left:"right",bottom:"top",right:"left"},b.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"},b.prototype.newDirection=function(a){var b,c;return b=a[0],-1===b.indexOf("to ")&&f.test(b)&&(b=b.split(" "),b=function(){var a,d,e;for(e=[],a=0,d=b.length;d>a;a++)c=b[a],e.push(this.directions[c.toLowerCase()]||c);return e}.call(this),a[0]="to "+b.join(" ")),a},b.prototype.oldWebkit=function(a,b,c,d){return"linear-gradient"!==this.name?a:c[0]&&-1!==c[0].indexOf("deg")?a:-1!==b.indexOf("-corner")?a:-1!==b.indexOf("-side")?a:(c=this.oldDirection(c),c=this.colorStops(c),"-webkit-gradient(linear, "+c.join(", ")+")"+d)},b.prototype.convertDirection=function(a){if(a.length>0){if("to "===a[0].slice(0,3))return a[0]=this.fixDirection(a[0]);if(-1!==a[0].indexOf("deg"))return a[0]=this.fixAngle(a[0]);if(-1!==a[0].indexOf(" at "))return this.fixRadial(a)}},b.prototype.fixDirection=function(a){var b;return a=a.split(" "),a.splice(0,1),a=function(){var c,d,e;for(e=[],c=0,d=a.length;d>c;c++)b=a[c],e.push(this.directions[b.toLowerCase()]||b);return e}.call(this),a.join(" ")},b.prototype.roundFloat=function(a,b){return parseFloat(a.toFixed(b))},b.prototype.fixAngle=function(a){return a=parseFloat(a),a=Math.abs(450-a)%360,a=this.roundFloat(a,3),""+a+"deg"},b.prototype.oldDirection=function(a){var b;return 0===a.length,-1!==a[0].indexOf("to ")?(b=a[0].replace(/^to\s+/,""),b=this.oldDirections[b],a[0]=b,a):(b=this.oldDirections.bottom,[b].concat(a))},b.prototype.colorStops=function(a){return a.map(function(b,c){var d,e,f,h;return 0===c?b:(h=g.space(b),d=h[0],f=h[1],null==f&&(e=b.match(/^(.*\))(\d.*)$/),e&&(d=e[1],f=e[2])),f&&-1!==f.indexOf(")")&&(d+=" "+f,f=void 0),1!==c||void 0!==f&&"0%"!==f?c!==a.length-1||void 0!==f&&"100%"!==f?f?"color-stop("+f+", "+d+")":"color-stop("+d+")":"to("+d+")":"from("+d+")")})},b.prototype.fixRadial=function(a){var b;return b=a[0].split(/\s+at\s+/),a.splice(0,1,b[1],b[0])},b.prototype.old=function(a){var c,e,f;return"-webkit-"===a?(f="linear-gradient"===this.name?"linear":"radial",e="-gradient",c=h.regexp("-webkit-("+f+"-gradient|gradient\\(\\s*"+f+")",!1),new d(a+this.name,e,c)):b.__super__.old.apply(this,arguments)},b}(e),b.exports=c}).call(this)},{"../old-value":36,"../utils":42,"../value":43,"postcss/lib/list":87}],27:[function(a,b){(function(){var c,d,e,f={}.hasOwnProperty,g=function(a,b){function c(){this.constructor=a}for(var d in b)f.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};e=a("./flex-spec"),c=a("../declaration"),d=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return g(b,a),b.names=["justify-content","flex-pack","box-pack"],b.oldValues={"flex-end":"end","flex-start":"start","space-between":"justify","space-around":"distribute"},b.prototype.prefixed=function(a,c){var d,f;return f=e(c),d=f[0],c=f[1],2009===d?c+"box-pack":2012===d?c+"flex-pack":b.__super__.prefixed.apply(this,arguments)},b.prototype.normalize=function(){return"justify-content"},b.prototype.set=function(a,c){var d,f;if(d=e(c)[0],2009===d||2012===d){if(f=b.oldValues[a.value]||a.value,a.value=f,2009!==d||"distribute"!==f)return b.__super__.set.call(this,a,c)}else if("final"===d)return b.__super__.set.apply(this,arguments)},b}(c),b.exports=d}).call(this)},{"../declaration":5,"./flex-spec":22}],28:[function(a,b){(function(){var c,d,e,f={}.hasOwnProperty,g=function(a,b){function c(){this.constructor=a}for(var d in b)f.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};e=a("./flex-spec"),c=a("../declaration"),d=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return g(b,a),b.names=["order","flex-order","box-ordinal-group"],b.prototype.prefixed=function(a,c){var d,f;return f=e(c),d=f[0],c=f[1],2009===d?c+"box-ordinal-group":2012===d?c+"flex-order":b.__super__.prefixed.apply(this,arguments)},b.prototype.normalize=function(){return"order"},b.prototype.set=function(a,c){var d;return d=e(c)[0],2009===d?(a.value=(parseInt(a.value)+1).toString(),b.__super__.set.call(this,a,c)):b.__super__.set.apply(this,arguments)},b}(c),b.exports=d}).call(this)},{"../declaration":5,"./flex-spec":22}],29:[function(a,b){(function(){var c,d,e={}.hasOwnProperty,f=function(a,b){function c(){this.constructor=a}for(var d in b)e.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};d=a("../selector"),c=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return f(b,a),b.names=["::placeholder"],b.prototype.possible=function(){return b.__super__.possible.apply(this,arguments).concat("-moz- old")},b.prototype.prefixed=function(a){return"-webkit-"===a?"::-webkit-input-placeholder":"-ms-"===a?":-ms-input-placeholder":"-moz- old"===a?":-moz-placeholder":"::"+a+"placeholder"},b}(d),b.exports=c}).call(this)},{"../selector":40}],30:[function(a,b){(function(){var c,d,e={}.hasOwnProperty,f=function(a,b){function c(){this.constructor=a}for(var d in b)e.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};c=a("../declaration"),d=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return f(b,a),b.names=["transform","transform-origin"],b.functions3d=["matrix3d","translate3d","translateZ","scale3d","scaleZ","rotate3d","rotateX","rotateY","rotateZ","perspective"],b.prototype.keykrameParents=function(a){var b;for(b=a.parent;b;){if("atrule"===b.type&&"keyframes"===b.name)return!0;b=b.parent}return!1},b.prototype.contain3d=function(a){var c,d,e,f;if("transform-origin"===a.prop)return!1;for(f=b.functions3d,d=0,e=f.length;e>d;d++)if(c=f[d],-1!==a.value.indexOf(""+c+"("))return!0;return!1},b.prototype.insert=function(a,c){if("-ms-"===c){if(!this.contain3d(a)&&!this.keykrameParents(a))return b.__super__.insert.apply(this,arguments)}else{if("-o-"!==c)return b.__super__.insert.apply(this,arguments);if(!this.contain3d(a))return b.__super__.insert.apply(this,arguments)}},b}(c),b.exports=d}).call(this)},{"../declaration":5}],31:[function(a,b){(function(){var c,d,e={}.hasOwnProperty,f=function(a,b){function c(){this.constructor=a}for(var d in b)e.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};d=a("../value"),c=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return f(b,a),b.names=["transform"],b.prototype.replace=function(a,c){return"-ms-"===c?a:b.__super__.replace.apply(this,arguments)},b}(d),b.exports=c}).call(this)},{"../value":43}],32:[function(a,b){(function(){var c,d,e,f={}.hasOwnProperty,g=function(a,b){function c(){this.constructor=a}for(var d in b)f.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};c=a("../old-value"),e=a("../value"),d=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return g(b,a),b.names=["flex","flex-grow","flex-shrink","flex-basis"],b.prototype.prefixed=function(a){return this.all.prefixed(this.name,a)},b.prototype.replace=function(a,b){return a.replace(this.regexp(),"$1"+this.prefixed(b)+"$3")},b.prototype.old=function(a){return new c(this.prefixed(a))},b}(e),b.exports=d}).call(this)},{"../old-value":36,"../value":43}],33:[function(a,b){(function(){var a,c,d;a=function(a){return a.slice(0,1).toUpperCase()+a.slice(1)},c={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"},d=function(a,b,c){var d;return d=" "+a+(b?"*":"")+": ",d+=c.map(function(a){return a.replace(/^-(.*)-$/g,"$1")}).join(", "),d+="\n"},b.exports=function(b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H;if(0===b.browsers.selected.length)return"No browsers selected";for(u=[],B=b.browsers.selected,v=0,y=B.length;y>v;v++)f=B[v],C=f.split(" "),i=C[0],t=C[1],i=c[i]||a(i),u[i]?u[i].push(t):u[i]=[t];k="Browsers:\n";for(f in u)h=u[f],h=h.sort(function(a,b){return parseFloat(b)-parseFloat(a)}),k+=" "+f+": "+h.join(", ")+"\n";e="",D=b.add;for(i in D)g=D[i],"@"===i[0]&&g.prefixes&&(e+=d(i,!1,g.prefixes));for(""!==e&&(k+="\nAt-Rules:\n"+e),n="",E=b.add.selectors,w=0,z=E.length;z>w;w++)m=E[w],m.prefixes&&(n+=d(m.name,!1,m.prefixes));""!==n&&(k+="\nSelectors:\n"+n),s="",l="",q=!1,j=null!=(F=b.add.transition)?F.prefixes:void 0,G=b.add;for(i in G)if(g=G[i],"@"!==i[0]&&g.prefixes&&(p=j&&b.data[i].transition,p&&(q=!0),l+=d(i,p,g.prefixes)),g.values&&!b.transitionProps.some(function(a){return a===i}))for(H=g.values,x=0,A=H.length;A>x;x++)r=H[x],o=d(r.name,!1,r.prefixes),-1===s.indexOf(o)&&(s+=o);return q&&(l+=" * - can be used in transition\n"),""!==l&&(k+="\nProperties:\n"+l),""!==s&&(k+="\nValues:\n"+s),""===e&&""===n&&""===l&&""===s&&(k+="\nAwesome! Your browsers don't require any vendor prefixes.\nNow you can remove Autoprefixer from build steps."),k}}).call(this)},{}],34:[function(a,b){(function(){var c,d,e={}.hasOwnProperty,f=function(a,b){function c(){this.constructor=a}for(var d in b)e.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};d=a("./prefixer"),c=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return f(b,a),b.prototype.add=function(a,b){var c,d,e;return e=b+a.name,(c=a.parent.some(function(b){return b.name===e&&b.params===a.params}))?void 0:(d=this.clone(a,{name:e}),a.parent.insertBefore(a,d))},b.prototype.process=function(a){var b,c,d,e,f,g;for(b=this.parentPrefix(a),f=this.prefixes,g=[],d=0,e=f.length;e>d;d++)c=f[d],b&&b!==c||g.push(this.add(a,c));return g},b}(d),b.exports=c}).call(this)},{"./prefixer":37}],35:[function(a,b){(function(){var a;a=function(){function a(a,b){var c,d,e;for(this.prefix=b,this.prefixed=a.prefixed(this.prefix),this.regexp=a.regexp(this.prefix),this.prefixeds=[],e=a.possible(),c=0,d=e.length;d>c;c++)b=e[c],this.prefixeds.push([a.prefixed(b),a.regexp(b)]);this.unprefixed=a.name,this.nameRegexp=a.regexp()}return a.prototype.isHack=function(a){var b,c,d,e,f,g,h,i,j,k;for(c=a.parent.index(a)+1,e=a.parent.childs;ch;h++)if(k=j[h],g=k[0],d=k[1],-1!==b.indexOf(g)&&b.match(d)){f=!0;break}if(!f)return!0;c+=1}return!0},a.prototype.check=function(a){return-1===a.selector.indexOf(this.prefixed)?!1:a.selector.match(this.regexp)?this.isHack(a)?!1:!0:!1},a}(),b.exports=a}).call(this)},{}],36:[function(a,b){(function(){var c,d;d=a("./utils"),c=function(){function a(a,b,c){this.name=a,this.string=b,this.regexp=c,this.regexp||(this.regexp=d.regexp(this.name)),this.string||(this.string=this.name)}return a.prototype.check=function(a){return-1!==a.indexOf(this.string)?!!a.match(this.regexp):!1},a}(),b.exports=c}).call(this)},{"./utils":42}],37:[function(a,b){(function(){var c,d,e,f;c=a("./browsers"),f=a("postcss/lib/vendor"),e=a("./utils"),d=function(){function a(a,b,c){this.name=a,this.prefixes=b,this.all=c}return a.hack=function(a){var b,c,d,e,f;for(this.hacks||(this.hacks={}),e=a.names,f=[],c=0,d=e.length;d>c;c++)b=e[c],f.push(this.hacks[b]=a);return f},a.load=function(a,b,c){var d,e;return d=null!=(e=this.hacks)?e[a]:void 0,d?new d(a,b,c):new this(a,b,c)},a.clone=function(a,b){var c;return c=a.clone(b),"decl"===a.type&&(c.between=a.between),delete c._autoprefixerPrefix,delete c._autoprefixerValues,c},a.prototype.parentPrefix=function(a){var b;return b=null!=a._autoprefixerPrefix?a._autoprefixerPrefix:"decl"===a.type&&"-"===a.prop[0]?f.prefix(a.prop):"root"===a.type?!1:"rule"===a.type&&-1!==a.selector.indexOf(":-")?a.selector.match(/:(-\w+-)/)[1]:"atrule"===a.type&&"-"===a.name[0]?f.prefix(a.name):this.parentPrefix(a.parent),-1===c.prefixes().indexOf(b)&&(b=!1),a._autoprefixerPrefix=b},a.prototype.process=function(a){var b,c,d,f,g,h,i,j,k;if(this.check(a)){for(c=this.parentPrefix(a),f=[],k=this.prefixes,g=0,i=k.length;i>g;g++)d=k[g],c&&c!==e.removeNote(d)||f.push(d);for(b=[],h=0,j=f.length;j>h;h++)d=f[h],this.add(a,d,b.concat([d]))&&b.push(d);return b}},a.prototype.clone=function(b,c){return a.clone(b,c)},a}(),b.exports=d}).call(this)},{"./browsers":4,"./utils":42,"postcss/lib/vendor":98}],38:[function(a,b){(function(){var c,d,e,f,g,h,i,j,k,l,m;l=a("./utils"),m=a("postcss/lib/vendor"),d=a("./declaration"),g=a("./processor"),e=a("./keyframes"),i=a("./supports"),c=a("./browsers"),h=a("./selector"),j=a("./value"),h.hack(a("./hacks/fullscreen")),h.hack(a("./hacks/placeholder")),d.hack(a("./hacks/flex")),d.hack(a("./hacks/order")),d.hack(a("./hacks/filter")),d.hack(a("./hacks/flex-flow")),d.hack(a("./hacks/flex-grow")),d.hack(a("./hacks/flex-wrap")),d.hack(a("./hacks/align-self")),d.hack(a("./hacks/flex-basis")),d.hack(a("./hacks/align-items")),d.hack(a("./hacks/flex-shrink")),d.hack(a("./hacks/break-inside")),d.hack(a("./hacks/border-image")),d.hack(a("./hacks/align-content")),d.hack(a("./hacks/border-radius")),d.hack(a("./hacks/transform-decl")),d.hack(a("./hacks/flex-direction")),d.hack(a("./hacks/justify-content")),d.hack(a("./hacks/background-size")),j.hack(a("./hacks/gradient")),j.hack(a("./hacks/transition")),j.hack(a("./hacks/display-flex")),j.hack(a("./hacks/filter-value")),j.hack(a("./hacks/fill-available")),j.hack(a("./hacks/transform-value")),k={},f=function(){function a(a,b,c){var d;this.data=a,this.browsers=b,this.options=null!=c?c:{},d=this.preprocess(this.select(this.data)),this.add=d[0],this.remove=d[1],this.processor=new g(this)}return a.prototype.transitionProps=["transition","transition-property"],a.prototype.cleaner=function(){var b;if(!this.cleanerCache){if(!this.browsers.selected.length)return this;b=new c(this.browsers.data,[]),this.cleanerCache=new a(this.data,b,this.options)}return this.cleanerCache},a.prototype.select=function(a){var b,c,d,e,f,g;g={add:{},remove:{}};for(e in a)d=a[e],b=d.browsers.map(function(a){var b;return b=a.split(" "),{browser:b[0]+" "+b[1],note:b[2]}}),f=b.filter(function(a){return a.note}).map(function(a){return function(b){return a.browsers.prefix(b.browser)+" "+b.note}}(this)),f=l.uniq(f),b=b.filter(function(a){return function(b){return a.browsers.isSelected(b.browser)}}(this)).map(function(a){return function(b){var c;return c=a.browsers.prefix(b.browser),b.note?c+" "+b.note:c}}(this)),b=this.sort(l.uniq(b)),c=d.browsers.map(function(a){return function(b){return a.browsers.prefix(b)}}(this)),d.mistakes&&(c=c.concat(d.mistakes)),c=c.concat(f),c=l.uniq(c),b.length?(g.add[e]=b,b.lengthu;u++)o=p[u],b[o]||(b[o]={values:[]}),b[o].values.push(s);this.data[c].props||(t=(null!=(J=b[c])?J.values:void 0)||[],b[c]=d.load(c,n,this),b[c].values=t)}q={selectors:[]},K=a.remove;for(c in K)if(n=K[c],this.data[c].selector)for(r=h.load(c,n),v=0,z=n.length;z>v;v++)k=n[v],q.selectors.push(r.old(k));else if("@"===c[0])for(w=0,A=n.length;A>w;w++)k=n[w],l="@"+k+c.slice(1),q[l]={remove:!0};else{if(p=this.data[c].transition?this.transitionProps:this.data[c].props)for(s=j.load(c,[],this),x=0,B=n.length;B>x;x++)if(k=n[x],f=s.old(k))for(F=0,C=p.length;C>F;F++)o=p[F],q[o]||(q[o]={}),q[o].values||(q[o].values=[]),q[o].values.push(f);if(!this.data[c].props)for(G=0,D=n.length;D>G;G++)for(k=n[G],o=m.unprefixed(c),g=this.decl(c).old(c,k),H=0,E=g.length;E>H;H++)l=g[H],q[l]||(q[l]={}),q[l].remove=!0}return[b,q]},a.prototype.decl=function(a){var b;return b=k[a],b?b:k[a]=d.load(a)},a.prototype.unprefixed=function(a){return a=m.unprefixed(a),this.decl(a).normalize(a)},a.prototype.prefixed=function(a,b){return a=m.unprefixed(a),this.decl(a).prefixed(a,b)},a.prototype.values=function(a,b){var c,d,e,f,g;return c=this[a],d=null!=(f=c["*"])?f.values:void 0,e=null!=(g=c[b])?g.values:void 0,d&&e?l.uniq(d.concat(e)):d||e||[]},a.prototype.group=function(a){var b,d,e,f,g;return f=a.parent,d=f.index(a),e=f.childs.length,g=this.unprefixed(a.prop),b=function(a){return function(b,h){var i;for(d+=b;d>=0&&e>d;){if(i=f.childs[d],"decl"===i.type){if(-1===b&&i.prop===g&&!c.withPrefix(i.value))break;if(a.unprefixed(i.prop)!==g)break;if(h(i)===!0)return!0;if(1===b&&i.prop===g&&!c.withPrefix(i.value))break}d+=b}return!1}}(this),{up:function(a){return b(-1,a)},down:function(a){return b(1,a)}}},a}(),b.exports=f}).call(this)},{"./browsers":4,"./declaration":5,"./hacks/align-content":6,"./hacks/align-items":7,"./hacks/align-self":8,"./hacks/background-size":9,"./hacks/border-image":10,"./hacks/border-radius":11,"./hacks/break-inside":12,"./hacks/display-flex":13,"./hacks/fill-available":14,"./hacks/filter":16,"./hacks/filter-value":15,"./hacks/flex":24,"./hacks/flex-basis":17,"./hacks/flex-direction":18,"./hacks/flex-flow":19,"./hacks/flex-grow":20,"./hacks/flex-shrink":21,"./hacks/flex-wrap":23,"./hacks/fullscreen":25,"./hacks/gradient":26,"./hacks/justify-content":27,"./hacks/order":28,"./hacks/placeholder":29,"./hacks/transform-decl":30,"./hacks/transform-value":31,"./hacks/transition":32,"./keyframes":34,"./processor":39,"./selector":40,"./supports":41,"./utils":42,"./value":43,"postcss/lib/vendor":98}],39:[function(a,b){(function(){var c,d,e,f;f=a("postcss/lib/vendor"),d=a("./value"),e=a("./utils"),c=function(){function a(a){this.prefixes=a}return a.prototype.add=function(a){var b,c;return b=this.prefixes.add["@keyframes"],c=this.prefixes.add["@supports"],a.eachAtRule(function(a){return function(d){if("keyframes"===d.name){if(!a.disabled(d))return null!=b?b.process(d):void 0}else if("supports"===d.name&&!a.disabled(d))return c.process(d)}}(this)),a.eachRule(function(a){return function(b){var c,d,e,f,g;if(!a.disabled(b)){for(f=a.prefixes.add.selectors,g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(c.process(b));return g}}}(this)),a.eachDecl(function(a){return function(b){var c;return c=a.prefixes.add[b.prop],c&&c.prefixes&&!a.disabled(b)?c.process(b):void 0}}(this)),a.eachDecl(function(a){return function(b){var c,e,f,g,h;if(!a.disabled(b)){for(c=a.prefixes.unprefixed(b.prop),h=a.prefixes.values("add",c),f=0,g=h.length;g>f;f++)e=h[f],e.process(b);return d.save(a.prefixes,b)}}}(this))},a.prototype.remove=function(a){var b,c,d,e;for(a.eachAtRule(function(a){return function(b,c){return a.prefixes.remove["@"+b.name]&&!a.disabled(b)?b.parent.remove(c):void 0}}(this)),e=this.prefixes.remove.selectors,c=0,d=e.length;d>c;c++)b=e[c],a.eachRule(function(a){return function(c,d){return b.check(c)&&!a.disabled(c)?c.parent.remove(d):void 0}}(this));return a.eachDecl(function(a){return function(c,d){var e,f,g,h,i,j,k;if(!a.disabled(c)){if(f=c.parent,g=a.prefixes.unprefixed(c.prop),(null!=(j=a.prefixes.remove[c.prop])?j.remove:void 0)&&(e=a.prefixes.group(c).down(function(a){return a.prop===g})))return c.before.indexOf("\n")>-1&&a.reduceSpaces(c),void f.remove(d);for(k=a.prefixes.values("remove",g),h=0,i=k.length;i>h;h++)if(b=k[h],b.check(c.value))return void f.remove(d)}}}(this))},a.prototype.disabled=function(a){var b;return null!=a._autoprefixerDisabled?a._autoprefixerDisabled:a.childs?(b=void 0,a.each(function(a){return"comment"===a.type?"autoprefixer: off"===a.text?(b=!1,!1):"autoprefixer: on"===a.text?(b=!0,!1):void 0:void 0}),a._autoprefixerDisabled=null!=b?!b:a.parent?this.disabled(a.parent):!1):a._autoprefixerDisabled=this.disabled(a.parent)},a.prototype.reduceSpaces=function(a){var b,c,d,e;return e=!1,this.prefixes.group(a).up(function(){return e=!0}),e?void 0:(c=a.before.split("\n"),d=c[c.length-1].length,b=!1,this.prefixes.group(a).down(function(a){var e;return c=a.before.split("\n"),e=c.length-1,c[e].length>d?(b===!1&&(b=c[e].length-d),c[e]=c[e].slice(0,-b),a.before=c.join("\n")):void 0}))},a}(),b.exports=c}).call(this)},{"./utils":42,"./value":43,"postcss/lib/vendor":98}],40:[function(a,b){(function(){var c,d,e,f,g,h={}.hasOwnProperty,i=function(a,b){function c(){this.constructor=a}for(var d in b)h.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};d=a("./old-selector"),e=a("./prefixer"),c=a("./browsers"),g=a("./utils"),f=function(a){function b(a,b,c){this.name=a,this.prefixes=b,this.all=c,this.regexpCache={}}return i(b,a),b.prototype.check=function(a){return-1!==a.selector.indexOf(this.name)?!!a.selector.match(this.regexp()):!1},b.prototype.prefixed=function(a){return this.name.replace(/^([^\w]*)/,"$1"+a)},b.prototype.regexp=function(a){var b;return this.regexpCache[a]?this.regexpCache[a]:(b=a?this.prefixed(a):this.name,this.regexpCache[a]=RegExp("(^|[^:\"'=])"+g.escapeRegexp(b),"gi"))},b.prototype.possible=function(){return c.prefixes()},b.prototype.prefixeds=function(a){var b,c,d,e,f;if(a._autoprefixerPrefixeds)return a._autoprefixerPrefixeds;for(c={},f=this.possible(),d=0,e=f.length;e>d;d++)b=f[d],c[b]=this.replace(a.selector,b);return a._autoprefixerPrefixeds=c},b.prototype.already=function(a,b,c){var d,e,f,g,h;for(e=a.parent.index(a)-1;e>=0;){if(d=a.parent.childs[e],"rule"!==d.type)return!1;h=!1;for(f in b)if(g=b[f],d.selector===g){if(c===f)return!0;h=!0;break}if(!h)return!1;e-=1}return!1},b.prototype.replace=function(a,b){return a.replace(this.regexp(),"$1"+this.prefixed(b))},b.prototype.add=function(a,b){var c,d;return d=this.prefixeds(a),this.already(a,d,b)?void 0:(c=this.clone(a,{selector:d[b]}),a.parent.insertBefore(a,c))},b.prototype.old=function(a){return new d(this,a)},b}(e),b.exports=f}).call(this)},{"./browsers":4,"./old-selector":35,"./prefixer":37,"./utils":42}],41:[function(a,b){(function(){var c,d,e,f,g,h,i,j,k;c=a("./prefixes"),e=a("./value"),k=a("./utils"),i=a("postcss"),h=a("postcss/lib/list"),j=/\(\s*([^\(\):]+)\s*:([^\)]+)/,g=/\(\s*([^\(\):]+)\s*:\s*(.+)\s*\)/g,f=/(not\s*)?\(\s*([^\(\):]+)\s*:\s*(.+?(?!\s*or\s*).+?)\s*\)*\s*\)\s*or\s*/gi,d=function(){function a(a){this.all=a}return a.prototype.virtual=function(a,b){var c;return c=i.parse("a{}").first,c.append({prop:a,value:b,before:""}),c},a.prototype.prefixed=function(a,b){var c,d,f,g,h,i,j,k,l;for(f=this.virtual(a,b),d=this.all.add[a],null!=d&&"function"==typeof d.process&&d.process(f.first),k=f.childs,g=0,i=k.length;i>g;g++){for(c=k[g],l=this.all.values("add",a),h=0,j=l.length;j>h;h++)b=l[h],b.process(c);e.save(this.all,c)}return f.childs},a.prototype.clean=function(a){return a.replace(f,function(b){return function(c){var d,e,f,g,h,i,l,m,n,o,p;if("not"===c.slice(0,3).toLowerCase())return c;if(n=c.match(j),i=n[0],f=n[1],h=n[2],g=b.all.unprefixed(f),(null!=(o=b.all.cleaner().remove[f])?o.remove:void 0)&&(d=new RegExp("(\\(|\\s)"+k.escapeRegexp(g)+":"),d.test(a)))return"";for(p=b.all.cleaner().values("remove",g),l=0,m=p.length;m>l;l++)if(e=p[l],e.check(h))return"";return c}}(this)).replace(/\(\s*\((.*)\)\s*\)/g,"($1)")},a.prototype.process=function(a){return a.params=this.clean(a.params),a.params=a.params.replace(g,function(a){return function(b,c,d){var e,f;return f=function(){var a,b,f,g;for(f=this.prefixed(c,d),g=[],a=0,b=f.length;b>a;a++)e=f[a],g.push("("+e.prop+": "+e.value+")");return g}.call(a),1===f.length?f[0]:"("+f.join(" or ")+")"}}(this))},a}(),b.exports=d}).call(this)},{"./prefixes":38,"./utils":42,"./value":43,postcss:92,"postcss/lib/list":87}],42:[function(a,b){(function(){b.exports={error:function(a){var b;throw b=new Error(a),b.autoprefixer=!0,b},uniq:function(a){var b,c,d,e;for(b=[],d=0,e=a.length;e>d;d++)c=a[d],-1===b.indexOf(c)&&b.push(c);return b},removeNote:function(a){return-1===a.indexOf(" ")?a:a.split(" ")[0]},escapeRegexp:function(a){return a.replace(/[.?*+\^\$\[\]\\(){}|\-]/g,"\\$&")},regexp:function(a,b){return null==b&&(b=!0),b&&(a=this.escapeRegexp(a)),RegExp("(^|[\\s,(])("+a+"($|[\\s(,]))","gi")}}}).call(this)},{}],43:[function(a,b){(function(){var c,d,e,f,g,h={}.hasOwnProperty,i=function(a,b){function c(){this.constructor=a}for(var d in b)h.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};d=a("./prefixer"),c=a("./old-value"),f=a("./utils"),g=a("postcss/lib/vendor"),e=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return i(b,a),b.save=function(a,b){var c,d,e,f,h,i,j,k,l,m;l=b._autoprefixerValues,m=[];for(e in l)if(k=l[e],k!==b.value)if(h=g.prefix(b.prop),h===e)m.push(b.value=k);else{if("-pie-"===h)continue;f=a.prefixed(b.prop,e),i=b.parent,i.every(function(a){return a.prop!==f})?(j=k.replace(/\s+/," "),c=i.some(function(a){return a.prop===b.prop&&a.value.replace(/\s+/," ")===j}),c?m.push(void 0):(d=this.clone(b,{value:k}),m.push(b.parent.insertBefore(b,d)))):m.push(void 0)}return m},b.prototype.check=function(a){var b;return b=a.value,-1!==b.indexOf(this.name)?!!b.match(this.regexp()):!1},b.prototype.regexp=function(){return this.regexpCache||(this.regexpCache=f.regexp(this.name))},b.prototype.replace=function(a,b){return a.replace(this.regexp(),"$1"+b+"$2")},b.prototype.add=function(a,b){var c,d;return a._autoprefixerValues||(a._autoprefixerValues={}),c=a._autoprefixerValues[b]||(null!=(d=a._value)?d.raw:void 0)||a.value,c=this.replace(c,b),c?a._autoprefixerValues[b]=c:void 0},b.prototype.old=function(a){return new c(a+this.name)},b}(d),b.exports=e}).call(this)},{"./old-value":36,"./prefixer":37,"./utils":42,"postcss/lib/vendor":98}],44:[function(){},{}],45:[function(a,b,c){function d(a,b,c){if(!(this instanceof d))return new d(a,b,c);var e,f=typeof a;if("number"===f)e=a>0?a>>>0:0;else if("string"===f)"base64"===b&&(a=x(a)),e=d.byteLength(a,b);else{if("object"!==f||null===a)throw new TypeError("must start with number, buffer, array or string");"Buffer"===a.type&&J(a.data)&&(a=a.data),e=+a.length>0?Math.floor(+a.length):0}if(this.length>K)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+K.toString(16)+" bytes");var g;d.TYPED_ARRAY_SUPPORT?g=d._augment(new Uint8Array(e)):(g=this,g.length=e,g._isBuffer=!0);var h;if(d.TYPED_ARRAY_SUPPORT&&"number"==typeof a.byteLength)g._set(a);else if(z(a))if(d.isBuffer(a))for(h=0;e>h;h++)g[h]=a.readUInt8(h);else for(h=0;e>h;h++)g[h]=(a[h]%256+256)%256;else if("string"===f)g.write(a,0,b);else if("number"===f&&!d.TYPED_ARRAY_SUPPORT&&!c)for(h=0;e>h;h++)g[h]=0;return g}function e(a,b,c,d){c=Number(c)||0;var e=a.length-c;d?(d=Number(d),d>e&&(d=e)):d=e;var f=b.length;if(f%2!==0)throw new Error("Invalid hex string");d>f/2&&(d=f/2);for(var g=0;d>g;g++){var h=parseInt(b.substr(2*g,2),16);if(isNaN(h))throw new Error("Invalid hex string");a[c+g]=h}return g}function f(a,b,c,d){var e=F(B(b),a,c,d);return e}function g(a,b,c,d){var e=F(C(b),a,c,d);return e}function h(a,b,c,d){return g(a,b,c,d)}function i(a,b,c,d){var e=F(E(b),a,c,d);return e}function j(a,b,c,d){var e=F(D(b),a,c,d);return e}function k(a,b,c){return H.fromByteArray(0===b&&c===a.length?a:a.slice(b,c))}function l(a,b,c){var d="",e="";c=Math.min(a.length,c);for(var f=b;c>f;f++)a[f]<=127?(d+=G(e)+String.fromCharCode(a[f]),e=""):e+="%"+a[f].toString(16);return d+G(e)}function m(a,b,c){var d="";c=Math.min(a.length,c);for(var e=b;c>e;e++)d+=String.fromCharCode(a[e]);return d}function n(a,b,c){return m(a,b,c)}function o(a,b,c){var d=a.length;(!b||0>b)&&(b=0),(!c||0>c||c>d)&&(c=d);for(var e="",f=b;c>f;f++)e+=A(a[f]);return e}function p(a,b,c){for(var d=a.slice(b,c),e="",f=0;fa)throw new RangeError("offset is not uint");if(a+b>c)throw new RangeError("Trying to access beyond buffer length")}function r(a,b,c,e,f,g){if(!d.isBuffer(a))throw new TypeError("buffer must be a Buffer instance");if(b>f||g>b)throw new TypeError("value is out of bounds");if(c+e>a.length)throw new TypeError("index out of range")}function s(a,b,c,d){0>b&&(b=65535+b+1);for(var e=0,f=Math.min(a.length-c,2);f>e;e++)a[c+e]=(b&255<<8*(d?e:1-e))>>>8*(d?e:1-e)}function t(a,b,c,d){0>b&&(b=4294967295+b+1);for(var e=0,f=Math.min(a.length-c,4);f>e;e++)a[c+e]=b>>>8*(d?e:3-e)&255}function u(a,b,c,d,e,f){if(b>e||f>b)throw new TypeError("value is out of bounds");if(c+d>a.length)throw new TypeError("index out of range")}function v(a,b,c,d,e){return e||u(a,b,c,4,3.4028234663852886e38,-3.4028234663852886e38),I.write(a,b,c,d,23,4),c+4}function w(a,b,c,d,e){return e||u(a,b,c,8,1.7976931348623157e308,-1.7976931348623157e308),I.write(a,b,c,d,52,8),c+8}function x(a){for(a=y(a).replace(M,"");a.length%4!==0;)a+="=";return a}function y(a){return a.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}function z(a){return J(a)||d.isBuffer(a)||a&&"object"==typeof a&&"number"==typeof a.length}function A(a){return 16>a?"0"+a.toString(16):a.toString(16)}function B(a){for(var b=[],c=0;c=d)b.push(d);else{var e=c;d>=55296&&57343>=d&&c++;for(var f=encodeURIComponent(a.slice(e,c+1)).substr(1).split("%"),g=0;g>8,d=b%256,e.push(d),e.push(c);return e}function E(a){return H.toByteArray(a)}function F(a,b,c,d){for(var e=0;d>e&&!(e+c>=b.length||e>=a.length);e++)b[e+c]=a[e];return e}function G(a){try{return decodeURIComponent(a)}catch(b){return String.fromCharCode(65533)}}/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -var H=a("base64-js"),I=a("ieee754"),J=a("is-array");c.Buffer=d,c.SlowBuffer=d,c.INSPECT_MAX_BYTES=50,d.poolSize=8192;var K=1073741823;d.TYPED_ARRAY_SUPPORT=function(){try{var a=new ArrayBuffer(0),b=new Uint8Array(a);return b.foo=function(){return 42},42===b.foo()&&"function"==typeof b.subarray&&0===new Uint8Array(1).subarray(1,1).byteLength}catch(c){return!1}}(),d.isBuffer=function(a){return!(null==a||!a._isBuffer)},d.compare=function(a,b){if(!d.isBuffer(a)||!d.isBuffer(b))throw new TypeError("Arguments must be Buffers");for(var c=a.length,e=b.length,f=0,g=Math.min(c,e);g>f&&a[f]===b[f];f++);return f!==g&&(c=a[f],e=b[f]),e>c?-1:c>e?1:0},d.isEncoding=function(a){switch(String(a).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},d.concat=function(a,b){if(!J(a))throw new TypeError("Usage: Buffer.concat(list[, length])");if(0===a.length)return new d(0);if(1===a.length)return a[0];var c;if(void 0===b)for(b=0,c=0;c>>1;break;case"utf8":case"utf-8":c=B(a).length;break;case"base64":c=E(a).length;break;default:c=a.length}return c},d.prototype.length=void 0,d.prototype.parent=void 0,d.prototype.toString=function(a,b,c){var d=!1;if(b>>>=0,c=void 0===c||1/0===c?this.length:c>>>0,a||(a="utf8"),0>b&&(b=0),c>this.length&&(c=this.length),b>=c)return"";for(;;)switch(a){case"hex":return o(this,b,c);case"utf8":case"utf-8":return l(this,b,c);case"ascii":return m(this,b,c);case"binary":return n(this,b,c);case"base64":return k(this,b,c);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return p(this,b,c);default:if(d)throw new TypeError("Unknown encoding: "+a);a=(a+"").toLowerCase(),d=!0}},d.prototype.equals=function(a){if(!d.isBuffer(a))throw new TypeError("Argument must be a Buffer");return 0===d.compare(this,a)},d.prototype.inspect=function(){var a="",b=c.INSPECT_MAX_BYTES;return this.length>0&&(a=this.toString("hex",0,b).match(/.{2}/g).join(" "),this.length>b&&(a+=" ... ")),""},d.prototype.compare=function(a){if(!d.isBuffer(a))throw new TypeError("Argument must be a Buffer");return d.compare(this,a)},d.prototype.get=function(a){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(a)},d.prototype.set=function(a,b){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(a,b)},d.prototype.write=function(a,b,c,d){if(isFinite(b))isFinite(c)||(d=c,c=void 0);else{var k=d;d=b,b=c,c=k}b=Number(b)||0;var l=this.length-b;c?(c=Number(c),c>l&&(c=l)):c=l,d=String(d||"utf8").toLowerCase();var m;switch(d){case"hex":m=e(this,a,b,c);break;case"utf8":case"utf-8":m=f(this,a,b,c);break;case"ascii":m=g(this,a,b,c);break;case"binary":m=h(this,a,b,c);break;case"base64":m=i(this,a,b,c);break;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":m=j(this,a,b,c);break;default:throw new TypeError("Unknown encoding: "+d)}return m},d.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},d.prototype.slice=function(a,b){var c=this.length;if(a=~~a,b=void 0===b?c:~~b,0>a?(a+=c,0>a&&(a=0)):a>c&&(a=c),0>b?(b+=c,0>b&&(b=0)):b>c&&(b=c),a>b&&(b=a),d.TYPED_ARRAY_SUPPORT)return d._augment(this.subarray(a,b));for(var e=b-a,f=new d(e,void 0,!0),g=0;e>g;g++)f[g]=this[g+a];return f},d.prototype.readUInt8=function(a,b){return b||q(a,1,this.length),this[a]},d.prototype.readUInt16LE=function(a,b){return b||q(a,2,this.length),this[a]|this[a+1]<<8},d.prototype.readUInt16BE=function(a,b){return b||q(a,2,this.length),this[a]<<8|this[a+1]},d.prototype.readUInt32LE=function(a,b){return b||q(a,4,this.length),(this[a]|this[a+1]<<8|this[a+2]<<16)+16777216*this[a+3]},d.prototype.readUInt32BE=function(a,b){return b||q(a,4,this.length),16777216*this[a]+(this[a+1]<<16|this[a+2]<<8|this[a+3])},d.prototype.readInt8=function(a,b){return b||q(a,1,this.length),128&this[a]?-1*(255-this[a]+1):this[a]},d.prototype.readInt16LE=function(a,b){b||q(a,2,this.length);var c=this[a]|this[a+1]<<8;return 32768&c?4294901760|c:c},d.prototype.readInt16BE=function(a,b){b||q(a,2,this.length);var c=this[a+1]|this[a]<<8;return 32768&c?4294901760|c:c},d.prototype.readInt32LE=function(a,b){return b||q(a,4,this.length),this[a]|this[a+1]<<8|this[a+2]<<16|this[a+3]<<24},d.prototype.readInt32BE=function(a,b){return b||q(a,4,this.length),this[a]<<24|this[a+1]<<16|this[a+2]<<8|this[a+3]},d.prototype.readFloatLE=function(a,b){return b||q(a,4,this.length),I.read(this,a,!0,23,4)},d.prototype.readFloatBE=function(a,b){return b||q(a,4,this.length),I.read(this,a,!1,23,4)},d.prototype.readDoubleLE=function(a,b){return b||q(a,8,this.length),I.read(this,a,!0,52,8)},d.prototype.readDoubleBE=function(a,b){return b||q(a,8,this.length),I.read(this,a,!1,52,8)},d.prototype.writeUInt8=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,1,255,0),d.TYPED_ARRAY_SUPPORT||(a=Math.floor(a)),this[b]=a,b+1},d.prototype.writeUInt16LE=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,2,65535,0),d.TYPED_ARRAY_SUPPORT?(this[b]=a,this[b+1]=a>>>8):s(this,a,b,!0),b+2},d.prototype.writeUInt16BE=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,2,65535,0),d.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=a):s(this,a,b,!1),b+2},d.prototype.writeUInt32LE=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,4,4294967295,0),d.TYPED_ARRAY_SUPPORT?(this[b+3]=a>>>24,this[b+2]=a>>>16,this[b+1]=a>>>8,this[b]=a):t(this,a,b,!0),b+4},d.prototype.writeUInt32BE=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,4,4294967295,0),d.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=a):t(this,a,b,!1),b+4},d.prototype.writeInt8=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,1,127,-128),d.TYPED_ARRAY_SUPPORT||(a=Math.floor(a)),0>a&&(a=255+a+1),this[b]=a,b+1},d.prototype.writeInt16LE=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,2,32767,-32768),d.TYPED_ARRAY_SUPPORT?(this[b]=a,this[b+1]=a>>>8):s(this,a,b,!0),b+2},d.prototype.writeInt16BE=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,2,32767,-32768),d.TYPED_ARRAY_SUPPORT?(this[b]=a>>>8,this[b+1]=a):s(this,a,b,!1),b+2},d.prototype.writeInt32LE=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,4,2147483647,-2147483648),d.TYPED_ARRAY_SUPPORT?(this[b]=a,this[b+1]=a>>>8,this[b+2]=a>>>16,this[b+3]=a>>>24):t(this,a,b,!0),b+4},d.prototype.writeInt32BE=function(a,b,c){return a=+a,b>>>=0,c||r(this,a,b,4,2147483647,-2147483648),0>a&&(a=4294967295+a+1),d.TYPED_ARRAY_SUPPORT?(this[b]=a>>>24,this[b+1]=a>>>16,this[b+2]=a>>>8,this[b+3]=a):t(this,a,b,!1),b+4},d.prototype.writeFloatLE=function(a,b,c){return v(this,a,b,!0,c)},d.prototype.writeFloatBE=function(a,b,c){return v(this,a,b,!1,c)},d.prototype.writeDoubleLE=function(a,b,c){return w(this,a,b,!0,c)},d.prototype.writeDoubleBE=function(a,b,c){return w(this,a,b,!1,c)},d.prototype.copy=function(a,b,c,e){var f=this;if(c||(c=0),e||0===e||(e=this.length),b||(b=0),e!==c&&0!==a.length&&0!==f.length){if(c>e)throw new TypeError("sourceEnd < sourceStart");if(0>b||b>=a.length)throw new TypeError("targetStart out of bounds");if(0>c||c>=f.length)throw new TypeError("sourceStart out of bounds");if(0>e||e>f.length)throw new TypeError("sourceEnd out of bounds");e>this.length&&(e=this.length),a.length-bg||!d.TYPED_ARRAY_SUPPORT)for(var h=0;g>h;h++)a[h+b]=this[h+c];else a._set(this.subarray(c,c+g),b)}},d.prototype.fill=function(a,b,c){if(a||(a=0),b||(b=0),c||(c=this.length),b>c)throw new TypeError("end < start");if(c!==b&&0!==this.length){if(0>b||b>=this.length)throw new TypeError("start out of bounds");if(0>c||c>this.length)throw new TypeError("end out of bounds");var d;if("number"==typeof a)for(d=b;c>d;d++)this[d]=a;else{var e=B(a.toString()),f=e.length;for(d=b;c>d;d++)this[d]=e[d%f]}return this}},d.prototype.toArrayBuffer=function(){if("undefined"!=typeof Uint8Array){if(d.TYPED_ARRAY_SUPPORT)return new d(this).buffer;for(var a=new Uint8Array(this.length),b=0,c=a.length;c>b;b+=1)a[b]=this[b];return a.buffer}throw new TypeError("Buffer.toArrayBuffer not supported in this browser")};var L=d.prototype;d._augment=function(a){return a.constructor=d,a._isBuffer=!0,a._get=a.get,a._set=a.set,a.get=L.get,a.set=L.set,a.write=L.write,a.toString=L.toString,a.toLocaleString=L.toString,a.toJSON=L.toJSON,a.equals=L.equals,a.compare=L.compare,a.copy=L.copy,a.slice=L.slice,a.readUInt8=L.readUInt8,a.readUInt16LE=L.readUInt16LE,a.readUInt16BE=L.readUInt16BE,a.readUInt32LE=L.readUInt32LE,a.readUInt32BE=L.readUInt32BE,a.readInt8=L.readInt8,a.readInt16LE=L.readInt16LE,a.readInt16BE=L.readInt16BE,a.readInt32LE=L.readInt32LE,a.readInt32BE=L.readInt32BE,a.readFloatLE=L.readFloatLE,a.readFloatBE=L.readFloatBE,a.readDoubleLE=L.readDoubleLE,a.readDoubleBE=L.readDoubleBE,a.writeUInt8=L.writeUInt8,a.writeUInt16LE=L.writeUInt16LE,a.writeUInt16BE=L.writeUInt16BE,a.writeUInt32LE=L.writeUInt32LE,a.writeUInt32BE=L.writeUInt32BE,a.writeInt8=L.writeInt8,a.writeInt16LE=L.writeInt16LE,a.writeInt16BE=L.writeInt16BE,a.writeInt32LE=L.writeInt32LE,a.writeInt32BE=L.writeInt32BE,a.writeFloatLE=L.writeFloatLE,a.writeFloatBE=L.writeFloatBE,a.writeDoubleLE=L.writeDoubleLE,a.writeDoubleBE=L.writeDoubleBE,a.fill=L.fill,a.inspect=L.inspect,a.toArrayBuffer=L.toArrayBuffer,a};var M=/[^+\/0-9A-z]/g},{"base64-js":46,ieee754:47,"is-array":48}],46:[function(a,b,c){var d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";!function(a){"use strict";function b(a){var b=a.charCodeAt(0);return b===g?62:b===h?63:i>b?-1:i+10>b?b-i+26+26:k+26>b?b-k:j+26>b?b-j+26:void 0}function c(a){function c(a){j[l++]=a}var d,e,g,h,i,j;if(a.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var k=a.length;i="="===a.charAt(k-2)?2:"="===a.charAt(k-1)?1:0,j=new f(3*a.length/4-i),g=i>0?a.length-4:a.length;var l=0;for(d=0,e=0;g>d;d+=4,e+=3)h=b(a.charAt(d))<<18|b(a.charAt(d+1))<<12|b(a.charAt(d+2))<<6|b(a.charAt(d+3)),c((16711680&h)>>16),c((65280&h)>>8),c(255&h);return 2===i?(h=b(a.charAt(d))<<2|b(a.charAt(d+1))>>4,c(255&h)):1===i&&(h=b(a.charAt(d))<<10|b(a.charAt(d+1))<<4|b(a.charAt(d+2))>>2,c(h>>8&255),c(255&h)),j}function e(a){function b(a){return d.charAt(a)}function c(a){return b(a>>18&63)+b(a>>12&63)+b(a>>6&63)+b(63&a)}var e,f,g,h=a.length%3,i="";for(e=0,g=a.length-h;g>e;e+=3)f=(a[e]<<16)+(a[e+1]<<8)+a[e+2],i+=c(f);switch(h){case 1:f=a[a.length-1],i+=b(f>>2),i+=b(f<<4&63),i+="==";break;case 2:f=(a[a.length-2]<<8)+a[a.length-1],i+=b(f>>10),i+=b(f>>4&63),i+=b(f<<2&63),i+="="}return i}var f="undefined"!=typeof Uint8Array?Uint8Array:Array,g="+".charCodeAt(0),h="/".charCodeAt(0),i="0".charCodeAt(0),j="a".charCodeAt(0),k="A".charCodeAt(0);a.toByteArray=c,a.fromByteArray=e}("undefined"==typeof c?this.base64js={}:c)},{}],47:[function(a,b,c){c.read=function(a,b,c,d,e){var f,g,h=8*e-d-1,i=(1<>1,k=-7,l=c?e-1:0,m=c?-1:1,n=a[b+l];for(l+=m,f=n&(1<<-k)-1,n>>=-k,k+=h;k>0;f=256*f+a[b+l],l+=m,k-=8);for(g=f&(1<<-k)-1,f>>=-k,k+=d;k>0;g=256*g+a[b+l],l+=m,k-=8);if(0===f)f=1-j;else{if(f===i)return g?0/0:1/0*(n?-1:1);g+=Math.pow(2,d),f-=j}return(n?-1:1)*g*Math.pow(2,f-d)},c.write=function(a,b,c,d,e,f){var g,h,i,j=8*f-e-1,k=(1<>1,m=23===e?Math.pow(2,-24)-Math.pow(2,-77):0,n=d?0:f-1,o=d?1:-1,p=0>b||0===b&&0>1/b?1:0;for(b=Math.abs(b),isNaN(b)||1/0===b?(h=isNaN(b)?1:0,g=k):(g=Math.floor(Math.log(b)/Math.LN2),b*(i=Math.pow(2,-g))<1&&(g--,i*=2),b+=g+l>=1?m/i:m*Math.pow(2,1-l),b*i>=2&&(g++,i/=2),g+l>=k?(h=0,g=k):g+l>=1?(h=(b*i-1)*Math.pow(2,e),g+=l):(h=b*Math.pow(2,l-1)*Math.pow(2,e),g=0));e>=8;a[c+n]=255&h,n+=o,h/=256,e-=8);for(g=g<0;a[c+n]=255&g,n+=o,g/=256,j-=8);a[c+n-o]|=128*p}},{}],48:[function(a,b){var c=Array.isArray,d=Object.prototype.toString;b.exports=c||function(a){return!!a&&"[object Array]"==d.call(a)}},{}],49:[function(a,b,c){(function(a){function b(a,b){for(var c=0,d=a.length-1;d>=0;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c--;c)a.unshift("..");return a}function d(a,b){if(a.filter)return a.filter(b);for(var c=[],d=0;d=-1&&!e;f--){var g=f>=0?arguments[f]:a.cwd();if("string"!=typeof g)throw new TypeError("Arguments to path.resolve must be strings");g&&(c=g+"/"+c,e="/"===g.charAt(0))}return c=b(d(c.split("/"),function(a){return!!a}),!e).join("/"),(e?"/":"")+c||"."},c.normalize=function(a){var e=c.isAbsolute(a),f="/"===g(a,-1);return a=b(d(a.split("/"),function(a){return!!a}),!e).join("/"),a||e||(a="."),a&&f&&(a+="/"),(e?"/":"")+a},c.isAbsolute=function(a){return"/"===a.charAt(0)},c.join=function(){var a=Array.prototype.slice.call(arguments,0);return c.normalize(d(a,function(a){if("string"!=typeof a)throw new TypeError("Arguments to path.join must be strings");return a}).join("/"))},c.relative=function(a,b){function d(a){for(var b=0;b=0&&""===a[c];c--);return b>c?[]:a.slice(b,c-b+1)}a=c.resolve(a).substr(1),b=c.resolve(b).substr(1);for(var e=d(a.split("/")),f=d(b.split("/")),g=Math.min(e.length,f.length),h=g,i=0;g>i;i++)if(e[i]!==f[i]){h=i;break}for(var j=[],i=h;ib&&(b=a.length+b),a.substr(b,c)}}).call(this,a("_process"))},{_process:50}],50:[function(a,b){function c(){}var d=b.exports={};d.nextTick=function(){var a="undefined"!=typeof window&&window.setImmediate,b="undefined"!=typeof window&&window.MutationObserver,c="undefined"!=typeof window&&window.postMessage&&window.addEventListener;if(a)return function(a){return window.setImmediate(a)};var d=[];if(b){var e=document.createElement("div"),f=new MutationObserver(function(){var a=d.slice();d.length=0,a.forEach(function(a){a()})});return f.observe(e,{attributes:!0}),function(a){d.length||e.setAttribute("yes","no"),d.push(a)}}return c?(window.addEventListener("message",function(a){var b=a.source;if((b===window||null===b)&&"process-tick"===a.data&&(a.stopPropagation(),d.length>0)){var c=d.shift();c()}},!0),function(a){d.push(a),window.postMessage("process-tick","*")}):function(a){setTimeout(a,0)}}(),d.title="browser",d.browser=!0,d.env={},d.argv=[],d.on=c,d.addListener=c,d.once=c,d.off=c,d.removeListener=c,d.removeAllListeners=c,d.emit=c,d.binding=function(){throw new Error("process.binding is not supported")},d.cwd=function(){return"/"},d.chdir=function(){throw new Error("process.chdir is not supported")}},{}],51:[function(a,b){b.exports={eras:{"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:.009298,6:.147553,7:.0772897,8:3.18293,9:2.12898,10:2.01656,11:7.39873},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,"5.5","6","7","8","9","10","11",null,null,null]},firefox:{browser:"Firefox",abbr:"FF",prefix:"moz",type:"desktop",usage_global:{2:.013434,3:.053736,3.5:.013434,3.6:.094038,4:.026868,5:.013434,6:.013434,7:.013434,8:.040302,9:.020151,10:.033585,11:.033585,12:.073887,13:.026868,14:.033585,15:.047019,16:.060453,17:.047019,18:.040302,19:.033585,20:.040302,21:.047019,22:.040302,23:.053736,24:.13434,25:.073887,26:.080604,27:.120906,28:.080604,29:.13434,30:.288831,31:.577662,32:8.23504,33:1.79344,34:.120906,35:.006717,36:0},versions:[null,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"]},chrome:{browser:"Chrome",abbr:"Chr.",prefix:"webkit",type:"desktop",usage_global:{4:.013434,5:.013434,6:.020151,7:.013434,8:.013434,9:.006717,10:.020151,11:.107472,12:.033585,13:.026868,14:.020151,15:.026868,16:.020151,17:.013434,18:.033585,19:.020151,20:.020151,21:.167925,22:.094038,23:.033585,24:.053736,25:.040302,26:.06717,27:.087321,28:.080604,29:.20151,30:.161208,31:.698568,32:.221661,33:.651549,34:.476907,35:.926946,36:1.27623,37:15.7312,38:12.3929,39:.13434,40:.120906,41:0,42: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"]},safari:{browser:"Safari",abbr:"Saf.",prefix:"webkit",type:"desktop",usage_global:{3.1:0,3.2:.008692,4:.080604,5:.154491,5.1:.503775,6:.147774,6.1:.396303,7:.987399,7.1:.759021,8:.308982},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,"3.1","3.2","4","5","5.1","6","6.1","7","7.1","8",null,null,null]},opera:{browser:"Opera",abbr:"Op.",prefix:"webkit",type:"desktop",usage_global:{"9.5-9.6":.00685,"10.0-10.1":.020151,10.5:.008392,10.6:.007296,11:.014996,11.1:.008219,11.5:.00685,11.6:.013434,12:.013434,12.1:.174642,15:.00685,16:.00685,17:.00685,18:.013434,19:.006717,20:.020151,21:.013434,22:.013434,23:.013434,24:.295548,25:.295548,26:0,27:0},versions:[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"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",null],prefix_exceptions:{"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":.0579149,"6.0-6.1":.25979,"7.0-7.1":3.59321,8:3.15802,8.1:1.15499},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,"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",null,null,null]},op_mini:{browser:"Opera Mini",abbr:"O.Mini",prefix:"o",type:"mobile",usage_global:{"5.0-8.0":2.81805},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,"5.0-8.0",null,null,null]},android:{browser:"Android Browser",abbr:"And.",prefix:"webkit",type:"mobile",usage_global:{2.1:0,2.2:.00831376,2.3:.191216,3:.00623532,4:.421923,4.1:1.24152,"4.2-4.3":1.8602,4.4:2.36873,"4.4.3-4.4.4":.773179,37: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,"2.1","2.2","2.3","3","4","4.1","4.2-4.3","4.4","4.4.3-4.4.4","37",null,null]},op_mob:{browser:"Opera Mobile",abbr:"O.Mob",prefix:"o",type:"mobile",usage_global:{10:0,11.5:0,12:.00813289,12.1:.036598,24: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,"10",null,null,"11.5","12","12.1","24",null,null,null],prefix_exceptions:{24:"webkit"}},bb:{browser:"Blackberry Browser",abbr:"BB",prefix:"webkit",type:"mobile",usage_global:{7:.0878202,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,"7","10",null,null,null]},and_chr:{browser:"Chrome for Android",abbr:"Chr/And.",prefix:"webkit",type:"mobile",usage_global:{38:9.5135},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,"38",null,null,null]},and_ff:{browser:"Firefox for Android",abbr:"FF/And.",prefix:"moz",type:"mobile",usage_global:{32:.154301},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,"32",null,null,null]},ie_mob:{browser:"IE Mobile",abbr:"IE.Mob",prefix:"ms",type:"mobile",usage_global:{10:.458602,11: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,"10","11",null,null,null]},and_uc:{browser:"UC Browser for Android",abbr:"UC",prefix:"webkit",type:"mobile",usage_global:{9.9:2.86934},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,"9.9",null,null,null],prefix_exceptions:{9.9:"webkit"}}},statuses:{rec:"Recommendation",pr:"Proposed Recommendation",cr:"Candidate Recommendation",wd:"Working Draft",other:"Other",unoff:"Unofficial / Note"},cats:{CSS:["CSS","CSS2","CSS3"],HTML5:["Canvas","HTML5"],"JS API":["JS API"],Other:["PNG","Other","DOM"],SVG:["SVG"]},updated:1416467220,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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"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:96.77,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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"}],categories:["PNG"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"n"},and_chr:{38:"n"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Where support for APNG is missing, only the first frame is displayed",notes_by_num:{},usage_perc_y:17.64,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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:"cr",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"a",2.2:"a",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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Different browsers have support for different video formats, see sub-features for details. \r\n\r\nThe 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.",notes_by_num:{},usage_perc_y:90.57,usage_perc_a:.01,ucprefix:!1,parent:"",keywords:"
    element.",notes_by_num:{1:"Does not include support for the
    element "},usage_perc_y:90.34,usage_perc_a:3.16,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:""},"offline-apps":{title:"Offline web applications",description:"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:"wd",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:88.44,usage_perc_a:.05,ucprefix:!1,parent:"",keywords:"appcache,app cache,application cache,online",ie_id:"applicationcache",chrome_id:"6192449487634432"},webworkers:{title:"Web Workers",description:"Method of running scripts in the background, isolated from the web page",spec:"http://www.w3.org/TR/workers/",status:"cr",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"p",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:84.71,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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",6:"a",7:"a",8:"a",9:"y",10:"y",11:"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"},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"},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"},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"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y",8.1:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"a",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Partial support before IE9 refers to only supporting EOT fonts. Safari for iOS 4.1 and below only supports SVG fonts.",notes_by_num:{},usage_perc_y:90.32,usage_perc_a:3.71,ucprefix:!1,parent:"",keywords:"font face",ie_id:"",chrome_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"},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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Proposal by Microsoft, being considered for W3C standardization.",notes_by_num:{},usage_perc_y:14.95,usage_perc_a:0,ucprefix:!1,parent:"fontface",keywords:"",ie_id:"",chrome_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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Reported to be supported in some modified versions of the Android 4.0 browser.",notes_by_num:{},usage_perc_y:86.56,usage_perc_a:0,ucprefix:!1,parent:"fontface",keywords:"",ie_id:"",chrome_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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:93.39,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:""},"border-image":{title:"CSS3 Border images",description:"Method of using images for borders",spec:"http://www.w3.org/TR/css3-background/#the-border-image",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"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"y"},firefox:{2:"n",3:"n",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:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"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:"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"},safari:{3.1:"a x",3.2:"a x",4:"a x",5:"a x",5.1:"a x",6:"y",6.1:"y",7:"y",7.1:"y",8:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"a",10.6:"a",11:"a x",11.1:"a x",11.5:"a x",11.6:"a x",12:"a x",12.1:"a x",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},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":"y","7.0-7.1":"y",8:"y",8.1:"y"},op_mini:{"5.0-8.0":"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:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"a x",10:"y"},op_mob:{10:"n",11:"a x",11.1:"a x",11.5:"a x",12:"a x",12.1:"a x",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"y"}},notes:"Note that both the border-style and border-width must be specified for border-images to work according to spec, though older implementations may not have this requirement. Partial support refers to supporting the shorthand syntax, but not the individual properties (border-image-source, border-image-slice, etc). ",notes_by_num:{},usage_perc_y:80.35,usage_perc_a:5.64,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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"},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"},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"},safari:{3.1:"a",3.2:"a",4:"a",5:"a",5.1:"a",6:"a",6.1:"a",7:"y",7.1:"y",8:"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"},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:"y"},op_mini:{"5.0-8.0":"a"},android:{2.1:"a x",2.2:"y x",2.3:"y x",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"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).\r\n\r\nPartial support in Safari 6 refers to not supporting background sizing offset from edges syntax.",notes_by_num:{},usage_perc_y:88.87,usage_perc_a:4.54,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:""},"css-table":{title:"CSS Table display",description:"Method of displaying elements as tables, rows, and cells",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:96.69,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"display:table, display: table,table-cell,table-row,table-layout",ie_id:"",chrome_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",9:"y",10:"y",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"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)\r\n\r\nFor content to appear in pseudo-elements, the `content` property must be set (but may be an empty string).",notes_by_num:{},usage_perc_y:93.51,usage_perc_a:3.18,ucprefix:!1,parent:"",keywords:"before,after",ie_id:"",chrome_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"},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"},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"},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"},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"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a",8:"a",8.1:"a"},op_mini:{"5.0-8.0":"n"},android:{2.1:"a",2.2:"a",2.3:"a",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:'Only works in Android 2.2+ by using the following meta tag: . Partial support in iOS Safari refers to [buggy behavior](http://remysharp.com/2012/05/24/issues-with-position-fixed-scrolling-on-ios/).',notes_by_num:{},usage_perc_y:85.53,usage_perc_a:8.42,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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:"cr",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"p",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:93.65,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"onhashchange,HashChangeEvent",ie_id:"",chrome_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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:96.77,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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",8:"a",9:"y",10:"y",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"IE7 and IE8 support only these CSS3 selectors: General siblings (`element1~element2`) and Attribute selectors `[attr^=val]`, `[attr$=val]`, and `[attr*=val]`",notes_by_num:{},usage_perc_y:93.43,usage_perc_a:3.26,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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:"wd",links:[{url:"http://hacks.mozilla.org/2009/06/text-shadow/",title:"Mozilla hacks article"},{url:"http://ie.microsoft.com/testdrive/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"},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"},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"},safari:{3.1:"a",3.2:"a",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"a",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y #1",11:"y #1"},and_uc:{9.9:"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. '},usage_perc_y:88.39,usage_perc_a:2.91,ucprefix:!1,parent:"",keywords:"text shadow",ie_id:"",chrome_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"},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"},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"},safari:{3.1:"a x",3.2:"a x",4:"a x",5:"y x",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"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"},ios_saf:{3.2:"a 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:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"a x",2.2:"a x",2.3:"a x",3:"a x",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"y x",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:'Can be partially emulated in older IE versions using the non-standard "shadow" filter. Partial support in Safari, iOS Safari and Android Browser refers to missing "inset" and blur radius value support.',notes_by_num:{},usage_perc_y:90.29,usage_perc_a:.3,ucprefix:!1,parent:"",keywords:"box-shadows,boxshadows,box shadow,shaow",ie_id:"",chrome_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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:93.48,usage_perc_a:.02,ucprefix:!1,parent:"",keywords:"rgb,hsl,rgba,hsla",ie_id:"",chrome_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:"wd",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:"a",9:"a",10:"a",11:"a"},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"},chrome:{4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",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"},safari:{3.1:"a x",3.2:"a x",4:"a x",5:"a x",5.1:"a",6:"a",6.1:"a",7:"a",7.1:"a",8:"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"},ios_saf:{3.2:"a x","4.0-4.1":"a x","4.2-4.3":"a x","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a",8:"a",8.1:"a"},op_mini:{"5.0-8.0":"a"},android:{2.1:"a x",2.2:"a x",2.3:"a x",3:"a x",4:"a",4.1:"a","4.2-4.3":"a",4.4:"a","4.4.3-4.4.4":"a",37:"a"},bb:{7:"a x",10:"a"},op_mob:{10:"a",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"a",24:"a"},and_chr:{38:"a"},and_ff:{32:"y"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"a"}},notes:"Partial support refers to supporting only the `content-box` and `border-box` values, not `padding-box` (which was added to the spec later).",notes_by_num:{},usage_perc_y:12.72,usage_perc_a:83.97,ucprefix:!1,parent:"",keywords:"border-box,content-box,padding-box",ie_id:"",chrome_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",10:"y",11:"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"},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"},safari:{3.1:"a",3.2:"a",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Incomplete support by older webkit browsers refers to only acknowledging different media rules on page reload",notes_by_num:{},usage_perc_y:93.43,usage_perc_a:.01,ucprefix:!1,parent:"",keywords:"@media",ie_id:"",chrome_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/BetleyWhitehorne/CSS3MultiColumn",title:"Polyfill"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"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"},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"},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"},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"},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:"a x"},op_mini:{"5.0-8.0":"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",37:"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",24:"a x"},and_chr:{38:"a x"},and_ff:{32:"a x"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"a x"}},notes:"Partial support refers to not supporting the `break-before`, `break-after`, `break-inside` properties. Webkit browsers do have equivalent support for the non-standard `-webkit-column-break-*` properties while Firefox supports `page-break-*` to accomplish the same result.",notes_by_num:{},usage_perc_y:12.95,usage_perc_a:78.36,ucprefix:!1,parent:"",keywords:"column-count",ie_id:"multicolumnfullsupport",chrome_id:"6526151266664448"},"border-radius":{title:"CSS3 Border-radius (rounded corners)",description:"Method of making the border corners round",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"},firefox:{2:"a x",3:"y x",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"},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"},safari:{3.1:"y x",3.2:"y x",4:"y x",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:90.64,usage_perc_a:.01,ucprefix:!1,parent:"",keywords:"roundedcorners, border radius,-moz-border-radius",ie_id:"",chrome_id:""},transforms2d:{title:"CSS3 Transforms",description:"Method of transforming an element including rotating, scaling, etc.",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/CSS/-moz-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"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y x",10:"y",11:"y"},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"},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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"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",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y x"}},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:{},usage_perc_y:90.59,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"transformation,translate,rotation,rotate,scale,css-transforms",ie_id:"transforms",chrome_id:"6437640580628480"},"use-strict":{title:"ECMAScript 5 Strict Mode",description:'Method of placing code in a "strict" operating context.',spec:"http://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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Partial support in older Safari refers to strict mode still accepting a lot of JS that should be considered invalid.",notes_by_num:{},usage_perc_y:87.12,usage_perc_a:.66,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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",11:"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:"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"},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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"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",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"y x"}},notes:"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.",notes_by_num:{},usage_perc_y:77.64,usage_perc_a:9.87,ucprefix:!1,parent:"",keywords:"css 3d,3dtransforms,translate3d,backface visibility,perspective",ie_id:"transforms,csstransformspreserve3d",chrome_id:"6437640580628480"},sharedworkers:{title:"Shared Web Workers",description:"Method of allowing multiple scripts to communicate with a single web worker.",spec:"http://www.w3.org/TR/workers/#shared-workers-introduction",status:"cr",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"},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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"y",10:"y"},op_mob:{10:"u",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"n"},and_chr:{38:"n"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:50.41,usage_perc_a:0,ucprefix:!1,parent:"webworkers",keywords:"shared worker",ie_id:"",chrome_id:""},"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"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x",11:"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"},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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"y x"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"a x"}},notes:'Chrome 29- and Android 4.0 Browser support "-webkit-hyphens: none", but not the "auto" property. Chrome 30+ doesn\'t support it either.',notes_by_num:{},usage_perc_y:33.24,usage_perc_a:2.87,ucprefix:!1,parent:"",keywords:"hyphen,shy",ie_id:"",chrome_id:""},"css-transitions":{title:"CSS3 Transitions",description:"Simple method of animating certain properties of an element",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y x",10:"y x"},op_mob:{10:"y x",11:"y x",11.1:"y x",11.5:"y x",12:"y x",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y x"}},notes:"",notes_by_num:{},usage_perc_y:88.35,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"css transition",ie_id:"",chrome_id:""},"font-feature":{title:"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:"wd",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"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},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:"a x",11:"a x",12:"a x",13:"a x",14:"a 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"},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",17:"a x",18:"a x",19:"a x",20:"a 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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y x"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"y x"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y x"}},notes:"Partial support in older Firefox versions refers to using an older syntax. Partial support in older Chrome versions refers to lacking support in Mac OS X. ",notes_by_num:{},usage_perc_y:71.46,usage_perc_a:1.64,ucprefix:!1,parent:"",keywords:"font-feature,font-feature-settings,kern,kerning,font-variant-alternates,ligatures,font-variant-ligatures",ie_id:"",chrome_id:""},"css-animation":{title:"CSS3 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"},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"},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"},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"},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",27:"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:"y x"},op_mini:{"5.0-8.0":"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 x","4.4.3-4.4.4":"y x",37:"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:"y",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y x"}},notes:"Partial support in Android browser refers to buggy behavior in different scenarios.",notes_by_num:{},usage_perc_y:88.04,usage_perc_a:.21,ucprefix:!1,parent:"",keywords:"animations,css-animations,keyframe,keyframes",ie_id:"",chrome_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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"a x",10:"y x"},op_mob:{10:"n",11:"n",11.1:"a x",11.5:"a x",12:"y x",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y x"}},notes:'Syntax used by browsers with prefixed support may be incompatible with that for proper support. \r\n\r\nPartial support in Opera 11.10 and 11.50 also refers to only having support for linear gradients.\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:{},usage_perc_y:87.78,usage_perc_a:.62,ucprefix:!1,parent:"",keywords:"linear,linear-gradient,gradiant",ie_id:"gradients",chrome_id:"5785905063264256"},"css-canvas":{title:"CSS Canvas Drawings",description:"Method of using HTML5 Canvas as a background image",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"},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:"u",35:"u",36:"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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"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",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y x"}},notes:"Proposal by Webkit, being considered for W3C standardization. A similar effect can be achieved in Firefox 4+ using the -moz-element() background property",notes_by_num:{},usage_perc_y:65.64,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"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",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Similar effect can be achieved in Firefox 4+ using the -moz-element() background property",notes_by_num:{},usage_perc_y:62.77,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"box-reflect",ie_id:"",chrome_id:"5627300510957568"},"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/",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"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},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"},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"},safari:{3.1:"n",3.2:"n",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"},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"},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:"a x"},op_mini:{"5.0-8.0":"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",37:"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",24:"a x"},and_chr:{38:"a x"},and_ff:{32:"a"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"a x"}},notes:"Partial support in WebKit/Blink browsers refers to supporting the mask-image and mask-box-image properties, but lacks support for othe parts of the spec. Partial support in Firefox refers to only support for inline SVG mask elements i.e. mask: url(#foo).",notes_by_num:{},usage_perc_y:0,usage_perc_a:78.29,ucprefix:!1,parent:"",keywords:"",ie_id:"masks",chrome_id:"5381559662149632"},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:"http://svg-edit.googlecode.com",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y #2",11:"y #2"},and_uc:{9.9:"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, viewport, and CSS rules](http://codepen.io/tomByrer/pen/qEBbzw?editors=110) seem to be the best workaround."},usage_perc_y:89.77,usage_perc_a:3.54,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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://designfestival.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"},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:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"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"},safari:{3.1:"n",3.2:"a",4:"a",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"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"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y",8.1:"y"},op_mini:{"5.0-8.0":"a"},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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"a",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"a",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Partial support in older Firefox and Opera Mini/Mobile refers to SVG images being blurry when scaled. Partial support in iOS Safari and older Safari versions refers to failing to support tiling or the background-position property.",notes_by_num:{},usage_perc_y:89.42,usage_perc_a:3.7,ucprefix:!1,parent:"",keywords:"svg-in-css,svgincss,css-svg",ie_id:"",chrome_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"},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"},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"},safari:{3.1:"p",3.2:"p",4:"a",5:"a",5.1:"a",6:"a",6.1:"y",7:"y",7.1:"y",8:"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"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"a","6.0-6.1":"y","7.0-7.1":"y",8:"y",8.1:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"p",11:"p"},and_uc:{9.9:"y"}},notes:"Partial support in Safari refers to not working in HTML files.",notes_by_num:{},usage_perc_y:77.35,usage_perc_a:.96,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:""},"svg-fonts":{title:"SVG fonts",description:"Method of using fonts defined as SVG shapes. Considered among a number of browser vendors as a deprecated feature with support being removed.",spec:"http://www.w3.org/TR/SVG/fonts.html",status:"rec",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"n #1"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"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:43.32,usage_perc_a:0,ucprefix:!1,parent:"fontface",keywords:"",ie_id:"",chrome_id:"5930075908210688"},"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"}],categories:["SVG"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:86.68,usage_perc_a:.05,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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:"wd",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:"https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html",title:"Filter Effects draft"}],categories:["SVG"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a",10:"a",11:"a"},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"},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"},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"},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"},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:"a"},op_mini:{"5.0-8.0":"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",37:"a"},bb:{7:"n",10:"y"},op_mob:{10:"a",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"a",24:"a"},and_chr:{38:"a"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Partial support refers to lack of filter support or buggy result from effects. A [CSS Filter Effects](https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html) specification is in the works that would replace this method.",notes_by_num:{},usage_perc_y:12.65,usage_perc_a:70.88,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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:"cr",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",10:"y",11:"y"},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"},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"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:89.95,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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:"cr",links:[{url:"https://developer.mozilla.org/en/Canvas_tutorial",title:"Tutorial by Mozilla"},{url:"http://www.canvasdemos.com/",title:"Showcase site"},{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"}],categories:["Canvas","HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y",10:"y",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"a"},android:{2.1:"a",2.2:"a",2.3:"a",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Opera Mini supports the canvas element, but is unable to play animations or run other more complex applications. Android 2.x supports canvas except the toDataURL() function. See http://code.google.com/p/android/issues/detail?id=7901 Some (slow) workarounds are described here: http://stackoverflow.com/q/10488033/841830",notes_by_num:{},usage_perc_y:90.49,usage_perc_a:3.02,ucprefix:!1,parent:"",keywords:"",ie_id:"canvas",chrome_id:"5100084685438976"},"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:"wd",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"p",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:90.58,usage_perc_a:0,ucprefix:!1,parent:"canvas",keywords:"",ie_id:"",chrome_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:"http://www.w3.org/TR/webstorage/#storage",status:"rec",links:[{url:"https://developer.mozilla.org/En/DOM/Storage",title:"Gecko reference"},{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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:93.76,usage_perc_a:.07,ucprefix:!1,parent:"",keywords:"webstorage,local storage",ie_id:"webstorage",chrome_id:"5345825534246912"},"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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"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:65.94,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"db-storage,websql",ie_id:"websqldatabase",chrome_id:"6330987952734208"},indexeddb:{title:"IndexedDB",description:"Method of storing data client-side, allows indexed database queries.",spec:"http://www.w3.org/TR/IndexedDB/",status:"cr",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"},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"},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"},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"},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"},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 #3",8.1:"a #3"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"p",10:"a x #2"},op_mob:{10:"n",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"a #1",11:"a #1"},and_uc:{9.9:"p"}},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 BB10 refers to an [outdated specification](http://www.w3.org/TR/2011/WD-IndexedDB-20110419/) being implemented.",3:"Partial support in iOS 8 refers to [seriously buggy behavior](http://www.raymondcamden.com/2014/9/25/IndexedDB-on-iOS-8--Broken-Bad)."},usage_perc_y:60.19,usage_perc_a:14.9,ucprefix:!1,parent:"",keywords:"indexdb",ie_id:"indexeddb",chrome_id:"6507459568992256"},"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:"wd",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"a #1",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"a #1"}},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:{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` in always `true`, regardless of the actual network connectivity status.'},usage_perc_y:74.59,usage_perc_a:18.7,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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:"http://www.w3.org/TR/eventsource/",status:"cr",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"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"a",11:"a",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:74.58,usage_perc_a:.05,ucprefix:!1,parent:"",keywords:"serversent,s-sent-events",ie_id:"serversenteventseventsource",chrome_id:"5311740673785856"},"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:"wd",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",9:"a",10:"a",11:"a"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"y"}},notes:"Partial support in IE8-9 refers to only working in frames/iframes (not other tabs/windows). Also in IE 9 and below an object cannot be sent using postMessage. Partial support in IE10 refers to [limitations in certain conditions](http://stackoverflow.com/questions/16226924/is-cross-origin-postmessage-broken-in-ie10)",notes_by_num:{},usage_perc_y:81.48,usage_perc_a:15.19,ucprefix:!1,parent:"",keywords:"",ie_id:"postmessage",chrome_id:"4786174115708928"},datauri:{title:"Data URIs",description:"Method of embedding images and other files in webpages as a string of text",spec:"http://www.ietf.org/rfc/rfc2397.txt",status:"other",links:[{url:"http://css-tricks.com/5970-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",9:"a",10:"a",11:"a"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"y"}},notes:"Support in Internet Explorer 8 is limited to images and linked resources like CSS files, not HTML files. Max URI length in IE8 is 32KB. In IE9+ JavaScript files are supported too and the maximum size limit set to 4GB.",notes_by_num:{},usage_perc_y:81.51,usage_perc_a:15.19,ucprefix:!1,parent:"",keywords:"data url,datauris,data uri,dataurl,dataurls,base64",ie_id:"",chrome_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"}],categories:["Other"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"n",10:"n",11:"n"},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"},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"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"p"},bb:{7:"p",10:"y"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",24:"p"},and_chr:{38:"p"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"a"}},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:{},usage_perc_y:24.1,usage_perc_a:3.14,ucprefix:!1,parent:"",keywords:"",ie_id:"mathml",chrome_id:"5240822173794304"},"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"},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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"See also the [CSS.supports() DOM API](#feat=css-supports-api)",notes_by_num:{},usage_perc_y:58.49,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"supports,conditional",ie_id:"conditionalrules",chrome_id:"4993981813358592"},xhtml:{title:"XHTML served as application/xhtml+xml",description:"A strict form of HTML, and allows embedding of other XML languages",spec:"http://www.w3.org/TR/xhtml1/",status:"rec",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"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:93.51,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"xhtml+xml",ie_id:"",chrome_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"},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"},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"},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"},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"},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:"p"},op_mini:{"5.0-8.0":"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",37:"p"},bb:{7:"p",10:"p"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",24:"p"},and_chr:{38:"p"},and_ff:{32:"p"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"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:3.41,ucprefix:!1,parent:"xhtml",keywords:"",ie_id:"",chrome_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:"y",9:"y",10:"y",11:"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"},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"},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"},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"},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:"a"},op_mini:{"5.0-8.0":"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",37:"a"},bb:{7:"n",10:"n"},op_mob:{10:"a",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"a",24:"a"},and_chr:{38:"a"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:27.89,usage_perc_a:62.1,ucprefix:!1,parent:"",keywords:"wai,aria",ie_id:"",chrome_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:"cr",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"p",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:90.47,usage_perc_a:.01,ucprefix:!1,parent:"",keywords:"",ie_id:"geolocation",chrome_id:"6348855016685568"},flexbox:{title:"Flexible Box Layout Module",description:"Method of positioning elements in horizontal or vertical stacks.",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"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x #2",11:"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"},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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"a x #1",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"a x #2",11:"y"},and_uc:{9.9:"a x #1"}},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"},usage_perc_y:76.33,usage_perc_a:12.12,ucprefix:!1,parent:"",keywords:"flex-box,flex-direction,flex-wrap,flex-flow,flex-grow,flex-basis",ie_id:"flexbox",chrome_id:"4837301406400512"},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"},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:"a",29:"a",30:"a",31:"a",32:"a",33:"a",34:"a",35:"a",36:"a"},chrome:{4:"n",5:"n",6:"n",7:"n",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:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"a",6:"a",6.1:"a",7:"a",7.1:"a",8:"a"},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",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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"a"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"a",12.1:"a",24:"y"},and_chr:{38:"a"},and_ff:{32:"a"},ie_mob:{10:"p",11:"y"},and_uc:{9.9:"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:{},usage_perc_y:48.27,usage_perc_a:26.37,ucprefix:!1,parent:"canvas",keywords:"web gl",ie_id:"webglcanvas3d,webglinstancingextension",chrome_id:"6049512976023552"},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"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"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"},chrome:{4:"n",5:"n",6:"a",7:"a",8:"a",9:"a",10:"a",11:"a",12:"a",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"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"a",6:"y",6.1:"y",7:"y",7.1:"y",8:"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"},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:"y"},op_mini:{"5.0-8.0":"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:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"a",10:"y"},op_mob:{10:"n",11:"n",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"y"}},notes:"Partial support in older Safari and other WebKit browsers refers to lacking FileReader support. ",notes_by_num:{},usage_perc_y:83.09,usage_perc_a:4.34,ucprefix:!1,parent:"",keywords:"FileReader",ie_id:"",chrome_id:""},shadowdom:{title:"Shadow DOM",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"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Supported in Firefox behind the `dom.webcomponents.enabled` flag."},usage_perc_y:46.62,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"web components",ie_id:"shadowdomunprefixed",chrome_id:"4507242028072960"},websockets:{title:"Web Sockets",description:"Bidirectional communication technology for web apps",spec:"http://www.w3.org/TR/websockets/",status:"cr",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"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",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Partial support 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 refers to lacking support for binary data. "},usage_perc_y:82.72,usage_perc_a:1.8,ucprefix:!0,parent:"",keywords:"",ie_id:"websocket",chrome_id:"6555138000945152"},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:"http://www.w3.org/TR/html5/editing.html#the-hidden-attribute",status:"pr",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"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:88.1,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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:"cr",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"},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"},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"},safari:{3.1:"n",3.2:"n",4:"n",5:"a",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Using script.async = false; to maintain execution order for dynamically-added scripts isn't supported in Safari 5.0",notes_by_num:{},usage_perc_y:87.65,usage_perc_a:.15,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:""},cors:{title:"Cross-Origin Resource Sharing",description:"Method of performing XMLHttpRequests across domains",spec:"http://www.w3.org/TR/cors/",status:"rec",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",9:"a",10:"y",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"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))",notes_by_num:{},usage_perc_y:88.39,usage_perc_a:5.31,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:""},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/CSS/-moz-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",10:"y",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"Support can be somewhat emulated in older versions of IE using the non-standard `expression()` syntax. Partial support in IE9 refers to the browser crashing when used as a `background-position` value. Partial support in Android Browser 4.4 refers to the browser lacking the ability to multiply and divide values.",notes_by_num:{},usage_perc_y:77.04,usage_perc_a:5.27,ucprefix:!1,parent:"",keywords:"",ie_id:"csscalc",chrome_id:"5765241438732288"},ruby:{title:"Ruby annotation",description:"Method of adding pronunciation or other annotations using ruby elements (primarily used in East Asian typography)",spec:"http://www.w3.org/TR/html-markup/ruby.html",status:"wd",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'}],categories:["HTML5"],stats:{ie:{5.5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"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"},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"},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"},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"},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:"a"},op_mini:{"5.0-8.0":"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",37:"a"},bb:{7:"p",10:"a"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",24:"a"},and_chr:{38:"a"},and_ff:{32:"p"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"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:{},usage_perc_y:0,usage_perc_a:80.68,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"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:93.51,usage_perc_a:3.42,ucprefix:!1,parent:"",keywords:"transparent,transparency,alpha",ie_id:"",chrome_id:""},"form-validation":{title:"Form validation",description:"Method of setting required fields and field types without requiring JavaScript",spec:"https://html.spec.whatwg.org/multipage/forms.html#client-side-form-validation",status:"wd",links:[{url:"http://docs.webplatform.org/wiki/html/attributes/required",title:"WebPlatform Docs"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"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"},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"},safari:{3.1:"n",3.2:"n",4:"n",5:"a",5.1:"a",6:"a",6.1:"a",7:"a",7.1:"a",8:"a"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"y"}},notes:"Partial support in Safari refers to lack of notice when form with required fields is attempted to be submitted. Partial support in IE10 mobile refers to lack of warning when blocking submission.",notes_by_num:{},usage_perc_y:70.08,usage_perc_a:3.72,ucprefix:!1,parent:"forms",keywords:"",ie_id:"",chrome_id:"6091813840486400"},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:"cr",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"a"}},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:83.01,usage_perc_a:3.53,ucprefix:!1,parent:"",keywords:"onpushstate,onreplacestate",ie_id:"",chrome_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://es5.github.com/#x15.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",9:"y",10:"y",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Requires document to be in IE8+ [standards mode](http://msdn.microsoft.com/en-us/library/cc288325%28VS.85%29.aspx) to work in IE8.",notes_by_num:{},usage_perc_y:96.58,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:""},classlist:{title:"classList (DOMTokenList )",description:"Method of easily manipulating classes on elements, using the DOMTokenList object.",spec:"http://www.w3.org/TR/dom/#dom-element-classlist",status:"wd",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"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"p",6:"p",7:"p",8:"p",9:"p",10:"y",11:"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"},chrome:{4:"p",5:"p",6:"p",7:"p",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"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"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:"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"},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:"y"},op_mini:{"5.0-8.0":"p"},android:{2.1:"p",2.2:"p",2.3:"p",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"p",11:"p",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:87.9,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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-overflow0",status:"wd",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"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",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:96.69,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"textoverflow,ellipsis",ie_id:"",chrome_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"},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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"a"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"a"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"p",11:"p"},and_uc:{9.9:"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.",notes_by_num:{},usage_perc_y:57.73,usage_perc_a:9,ucprefix:!1,parent:"video",keywords:"matroska",ie_id:"",chrome_id:"6362186595172352"},mpeg4:{title:"MPEG-4/H.264 video format",description:"Commonly used video compression format (not royalty-free)",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"},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:"y",35:"y",36:"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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"a"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"a"}},notes:"The Android 2.3 browser currently requires [specific handling](http://www.broken-links.com/2010/07/08/making-html5-video-work-on-android-phones/) to play videos\r\n\r\nFirefox 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 Firefox refers to the lack of support in OSX & some Linux platforms, for Android Firefox it refers to the inability of hardware acceleration.",notes_by_num:{},usage_perc_y:70.53,usage_perc_a:18.41,ucprefix:!1,parent:"video",keywords:"avc,mp4,mpv,mov,aac,h264",ie_id:"",chrome_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"},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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"y"},ie_mob:{10:"p",11:"p"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:50.5,usage_perc_a:0,ucprefix:!1,parent:"video",keywords:"xiph",ie_id:"",chrome_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"}],categories:["CSS3"],stats:{ie:{5.5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"a",10:"y"},op_mob:{10:"a",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"a",24:"y"},and_chr:{38:"y"},and_ff:{32:"a"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"a"}},notes:'Partial support refers to requiring the legacy name "word-wrap" (rather than overflow-wrap) to work.',notes_by_num:{},usage_perc_y:57.24,usage_perc_a:39.59,ucprefix:!1,parent:"",keywords:"wordwrap,word-wrap",ie_id:"",chrome_id:""},progressmeter:{title:"Progress & Meter",description:"Method of indicating a progress state (progress element) or the current level of a gauge (meter element).\r\n",spec:"https://html.spec.whatwg.org/multipage/forms.html#the-progress-element",status:"wd",links:[{url:"https://dev.opera.com/articles/new-form-features-in-html5/#newoutput",title:"Dev.Opera article"},{url:"http://html5doctor.com/measure-up-with-the-meter-tag/",title:"HTML5 Doctor on meter element "},{url:"http://peter.sh/examples/?/html/meter-progress.html",title:"Examples of progress and meter elements"},{url:"http://docs.webplatform.org/wiki/html/elements/progress",title:"WebPlatform Docs"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a",11:"a"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",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:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"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"},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"},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"},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",8:"a",8.1:"a"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"y"}},notes:'Partial support in Firefox 6-15, IE10 & iOS7 Safari refers to supporting the progress element, but not the meter element. iOS7 Safari also does not support "indeterminate" progress elements.',notes_by_num:{},usage_perc_y:65.33,usage_perc_a:18.12,ucprefix:!1,parent:"forms",keywords:"",ie_id:"",chrome_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/anselmh/object-fit",title:"object-fit JavaScript-Polyfill"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"a #1"},op_mini:{"5.0-8.0":"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",37:"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",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Partial support in Safari refers to support for `object-fit` but not `object-position`."},usage_perc_y:46.68,usage_perc_a:5.38,ucprefix:!1,parent:"",keywords:"objectfit,objectposition",ie_id:"objectfitandobjectposition",chrome_id:"5302669702856704"},xhr2:{title:"XMLHttpRequest 2",description:"Adds more functionality to AJAX requests like file uploads, transfer progress information and the ability to send form data.",spec:"http://www.w3.org/TR/XMLHttpRequest2/",status:"wd",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:"y",11:"y"},firefox:{2:"n",3:"n",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"},chrome:{4:"u",5:"u",6:"u",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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:87.96,usage_perc_a:.11,ucprefix:!1,parent:"",keywords:"formdata",ie_id:"",chrome_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",8:"y",9:"y",10:"y",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:'IE7 does not support "inherit" as a value on any of these properties. IE8 has some bugs with max-width/height combined with overflow: auto/scroll.',notes_by_num:{},usage_perc_y:96.77,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"min-width,min-height,max-width,max-height",ie_id:"",chrome_id:""},details:{title:"Details & Summary elements",description:"The
    element generates a simple no-JavaScript widget to show/hide element contents, optionally by clicking on its child element.",spec:"https://html.spec.whatwg.org/multipage/forms.html#the-details-element",status:"wd",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"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"n",10:"n",11:"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"},chrome:{4:"p",5:"p",6:"p",7:"p",8:"p",9:"p",10:"p",11:"p",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"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"p",6:"y",6.1:"y",7:"y",7.1:"y",8:"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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"p",10:"y"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:64.34,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"detailssummary",chrome_id:"5348024557502464"},"text-stroke":{title:"CSS text-stroke",description:"Method of declaring the outline (stroke) width and color for text.",spec:"http://developer.apple.com/library/safari/documentation/appleapplications/reference/SafariCSSRef/Articles/StandardCSSProperties.html#//apple_ref/doc/uid/TP30001266-_webkit_text_stroke",status:"unoff",links:[{url:"http://css-tricks.com/7405-adding-stroke-to-web-text/",title:"Information & workarounds"},{url:"http://www.westciv.com/tools/textStroke/",title:"Live editor"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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:"u",35:"u",36:"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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"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",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},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:{},usage_perc_y:62.77,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"textstroke,stroke-color,stroke-width,fill-color",ie_id:"",chrome_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",7:"a",8:"y",9:"y",10:"y",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:'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.',notes_by_num:{},usage_perc_y:96.68,usage_perc_a:.25,ucprefix:!1,parent:"",keywords:"inlineblock",ie_id:"",chrome_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:"http://www.w3.org/TR/notifications/",status:"wd",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"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"a x"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"a x"},and_chr:{38:"n"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:48.24,usage_perc_a:3.72,ucprefix:!1,parent:"",keywords:"",ie_id:"webnotifications",chrome_id:"5064350557536256"},stream:{title:"getUserMedia/Stream API",description:"Method of accessing external device data (such as a webcam video stream). Formerly this was envisioned as the element.",spec:"http://www.w3.org/TR/mediacapture-streams/",status:"wd",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"}],categories:["HTML5","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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:"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"},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:"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"},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"},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:"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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y x"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",24:"y x"},and_chr:{38:"y"},and_ff:{32:"y x"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y x"}},notes:"",notes_by_num:{},usage_perc_y:59.01,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"camera,device,getUserMedia,media stream,Media Capture API",ie_id:"mediacaptureandstreams",chrome_id:"6067380039974912,6605041225957376"},"svg-img":{title:"SVG in HTML img element",description:"Method of displaying SVG images in HTML using ",spec:"https://html.spec.whatwg.org/multipage/embedded-content.html",status:"cr",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"},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"},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"},safari:{3.1:"n",3.2:"a",4:"y",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"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"},ios_saf:{3.2:"a","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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:93.13,usage_perc_a:.01,ucprefix:!1,parent:"",keywords:"svg-as-img,svg-in-img",ie_id:"",chrome_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:"wd",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",11:"a"},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"},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:"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"},safari:{3.1:"p",3.2:"p",4:"p",5:"p",5.1:"p",6:"n",6.1:"n",7:"n",7.1:"n",8:"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"},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:"p"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"p",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"p"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"p",11:"p"},and_uc:{9.9:"y"}},notes:"Partial support in IE10 refers to [significantly buggy behavior](http://playground.onereason.eu/2013/04/ie10s-lousy-support-for-datalists/).",notes_by_num:{},usage_perc_y:60.35,usage_perc_a:9.42,ucprefix:!1,parent:"forms",keywords:"list attribute",ie_id:"datalistelement",chrome_id:"6090950820495360"},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:"wd",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"}],categories:["HTML5"],stats:{ie:{5.5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",11:"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"},chrome:{4:"a",5:"a",6:"a",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"},safari:{3.1:"a",3.2:"a",4:"a",5:"a",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"y"},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",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y",8.1:"y"},op_mini:{"5.0-8.0":"a"},android:{2.1:"a",2.2:"a",2.3:"a",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"a",11:"a",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"a",11:"y"},and_uc:{9.9:"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:{},usage_perc_y:85.32,usage_perc_a:11.61,ucprefix:!1,parent:"",keywords:"DOMStringMap",ie_id:"",chrome_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:"wd",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"},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:"u",35:"u",36:"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",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"},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"},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"},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:"p"},op_mini:{"5.0-8.0":"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",37:"p"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"p"},and_chr:{38:"p"},and_ff:{32:"n"},ie_mob:{10:"a x #2",11:"a x #2"},and_uc:{9.9:"n"}},notes:"",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."},usage_perc_y:0,usage_perc_a:9.87,ucprefix:!1,parent:"",keywords:"grids,grid-row,grid-column",ie_id:"grid",chrome_id:"4589636412243968"},menu:{title:"Toolbar/context menu",description:"Method of defining a toolbar menu, a context menu or a list of (interactive) options using the element.",spec:"https://html.spec.whatwg.org/multipage/forms.html#the-menu-element",status:"cr",links:[{url:"https://bug617528.bugzilla.mozilla.org/attachment.cgi?id=554309",title:"Demo"},{url:"http://addyosmani.github.com/jQuery-contextMenu/",title:"jQuery polyfill"},{url:"https://raw.github.com/phiggins42/has.js/master/detect/events.js#event-contextmenu",title:"has.js test"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",3.6:"n",4:"n",5:"n",6:"n",7:"n",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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Partial support in Firefox refers to being limited to context menus, not toolbar menus.",notes_by_num:{},usage_perc_y:0,usage_perc_a:12.32,ucprefix:!1,parent:"",keywords:"contextmenu,menuitem,command",ie_id:"",chrome_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:"y",10:"y",11:"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"},chrome:{4:"u",5:"u",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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:90.41,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"rems",ie_id:"",chrome_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",10:"a",11:"a"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"u",11:"u"},and_uc:{9.9:"y"}},notes:'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).',notes_by_num:{},usage_perc_y:78.61,usage_perc_a:11.54,ucprefix:!1,parent:"fontface",keywords:"",ie_id:"",chrome_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"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"p",11:"p"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"p",11:"p"},and_uc:{9.9:"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)"},usage_perc_y:62.3,usage_perc_a:.48,ucprefix:!1,parent:"",keywords:"touchstart,touchend,touchmove,touchenter,touchleave,touchcancel",ie_id:"touchevents",chrome_id:"6296903092273152"},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:"http://www.w3.org/TR/selectors-api2/",status:"wd",links:[{url:"https://developer.mozilla.org/en/DOM/Element.mozMatchesSelector",title:"MDN article"},{url:"http://docs.webplatform.org/wiki/dom/HTMLElement/matchesSelector",title:"WebPlatform Docs"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a x",10:"a x",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"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",24:"y"},and_chr:{38:"y"},and_ff:{32:"a x"},ie_mob:{10:"a x",11:"a x"},and_uc:{9.9:"a x"}},notes:'Partial support refers to supporting the older specification\'s "matchesSelector" name rather than just "matches".',notes_by_num:{},usage_perc_y:46.71,usage_perc_a:43.74,ucprefix:!1,parent:"",keywords:" matchesSelector",ie_id:"",chrome_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"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"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:85.67,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"pointerevents",ie_id:"csspointerevents",chrome_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/file-writer-api/#the-blobbuilder-interface",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"a x"}},notes:"Partial support refers to only supporting the now deprecated BlobBuilder to create blobs.",notes_by_num:{},usage_perc_y:76.97,usage_perc_a:10.11,ucprefix:!0,parent:"fileapi",keywords:"",ie_id:"blob",chrome_id:"5328783104016384"},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:"y",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:87.3,usage_perc_a:0,ucprefix:!1,parent:"fileapi",keywords:"",ie_id:"filereader",chrome_id:"5171003185430528"},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"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"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:44.01,usage_perc_a:.18,ucprefix:!1,parent:"",keywords:"filewriter",ie_id:"filewriter",chrome_id:"5452478162141184"},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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"y x"}},notes:"",notes_by_num:{},usage_perc_y:86.44,usage_perc_a:0,ucprefix:!1,parent:"fileapi",keywords:"createobjecturl",ie_id:"",chrome_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:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/DOM/DOMTokenList",title:"MDN - DOMTokenList"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:11.18,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:""},typedarrays:{title:"Typed Arrays",description:"JavaScript typed arrays provide a mechanism for accessing raw binary data much more efficiently.\r\n",spec:"http://www.khronos.org/registry/typedarray/specs/latest/",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"a #1",11:"a #1"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"IE10 (and IE 10&11 mobile) does not support `Uint8ClampedArray`"},usage_perc_y:84.74,usage_perc_a:2.98,ucprefix:!1,parent:"",keywords:"float64array,dataview,uint8array",ie_id:"typedarrays",chrome_id:"5135818813341696"},deviceorientation:{title:"DeviceOrientation events",description:"API for detecting orientation and motion events from the device running the browser.",spec:"http://www.w3.org/TR/orientation-event/",status:"wd",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"},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"},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"},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"},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"},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:"a"},op_mini:{"5.0-8.0":"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",37:"a"},bb:{7:"n",10:"a"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"y",12.1:"y",24:"a"},and_chr:{38:"a"},and_ff:{32:"a"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"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:{},usage_perc_y:.04,usage_perc_a:81.86,ucprefix:!1,parent:"",keywords:"",ie_id:"deviceorientation,devicemotion",chrome_id:"5874690627207168,5556931766779904"},"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:"cr",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",6:"a",7:"a",8:"a",9:"a",10:"y",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Partial support in older IE refers to a buggy implementation (see issue)",notes_by_num:{},usage_perc_y:87.82,usage_perc_a:5.55,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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"},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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Removed in iOS 8.1 due to poor performance.",notes_by_num:{},usage_perc_y:81.71,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"performance,performance.timing",ie_id:"navigationtimingapi",chrome_id:"5584144679567360"},"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"},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"},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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"u"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Firefox 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:66.6,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"web-audio",ie_id:"webaudioapi",chrome_id:"6261718720184320"},"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"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x",11:"a 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"},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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"n"},ie_mob:{10:"a x",11:"a x"},and_uc:{9.9:"y x"}},notes:"Support in IE10 and IE11 is limited to using an iframe as a content source with the `-ms-flow-into: flow_name;` and `-ms-flow-from: flow_name;` syntax. ",notes_by_num:{},usage_perc_y:13.23,usage_perc_a:9.97,ucprefix:!1,parent:"",keywords:"",ie_id:"regions",chrome_id:"5655612935372800"},"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:"cr",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"},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"},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"},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"},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"},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:"a"},op_mini:{"5.0-8.0":"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",37:"a"},bb:{7:"a",10:"a"},op_mob:{10:"a",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"a",24:"a"},and_chr:{38:"a"},and_ff:{32:"a"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"a"}},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.',notes_by_num:{},usage_perc_y:59.99,usage_perc_a:31.04,ucprefix:!1,parent:"",keywords:"spelling",ie_id:"",chrome_id:""},fullscreen:{title:"Full Screen API",description:"API for allowing content (like a video or canvas element) to take up the entire screen.",spec:"http://www.w3.org/TR/fullscreen/",status:"wd",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:"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:"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"},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:"a 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"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"a x",6:"y x",6.1:"y x",7:"y x",7.1:"y x",8:"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:"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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"a"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"a x"},ie_mob:{10:"n",11:"y x"},and_uc:{9.9:"n"}},notes:"Partial support refers to supporting an earlier draft of the spec.",notes_by_num:{},usage_perc_y:54.02,usage_perc_a:13.03,ucprefix:!1,parent:"",keywords:"full-screen",ie_id:"fullscreenapi",chrome_id:"5259513871466496"},requestanimationframe:{title:"requestAnimationFrame",description:"API allowing a more efficient way of running script-based animation, compared to traditional methods using timeouts.",spec:"http://www.w3.org/TR/animation-timing/#requestAnimationFrame",status:"cr",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"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"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 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"},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",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:83.36,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"requestanimationframe",chrome_id:"5233400470306816"},"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:"wd",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"},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"},chrome:{4:"u",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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"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:85.82,usage_perc_a:1.87,ucprefix:!1,parent:"forms",keywords:'input type="range"',ie_id:"",chrome_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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:87.63,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"mediaquerylist",ie_id:"matchmedia",chrome_id:"4677872220372992"},"input-datetime":{title:"Date and time input types",description:"Form field widget to easily allow users to enter a date or a time, generally by using a calendar/time input widget. Previously there was also a single field for both date & time, but this has been deprecated.",spec:"https://html.spec.whatwg.org/multipage/forms.html#date-state-(type=date)",status:"cr",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;input-type-datetime-local",title:"has.js test"},{url:"http://docs.webplatform.org/wiki/html/elements/input/type/date",title:"WebPlatform Docs"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"Partial support in iOS refers to a lack of support for attributes like step, min, or max.\r\n\r\nOlder versions of Safari provide date-formatted text fields, but no real calendar widget.\r\n\r\nSome modified versions of the Android 4.x browser do have support for date/time fields.",notes_by_num:{},usage_perc_y:58.41,usage_perc_a:0,ucprefix:!1,parent:"forms",keywords:'datepicker,timepicker,input type="date",input type="time"',ie_id:"",chrome_id:"6640933999214592"},"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:"wd",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"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"a"}},notes:"",notes_by_num:{},usage_perc_y:58.65,usage_perc_a:2.87,ucprefix:!1,parent:"forms",keywords:'colour,input type="color"',ie_id:"",chrome_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:"wd",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"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a",11:"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:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"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"},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"},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"},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:"a"},op_mini:{"5.0-8.0":"n"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"a",4.1:"a","4.2-4.3":"a",4.4:"a","4.4.3-4.4.4":"a",37:"a"},bb:{7:"n",10:"a"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"a"},and_chr:{38:"a"},and_ff:{32:"a"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"a"}},notes:'iOS Safari, Android 4, Chrome for Android show number input, but do not use "step", "min" or "max" attributes or show increment/decrement buttons. Internet Explorer 10 and 11 do not show increment/decrement buttons.',notes_by_num:{},usage_perc_y:49.45,usage_perc_a:37.3,ucprefix:!1,parent:"forms",keywords:'spinner,input type="number"',ie_id:"",chrome_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:"cr",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:86.82,usage_perc_a:.71,ucprefix:!1,parent:"",keywords:"",ie_id:"iframesandboxattribute",chrome_id:"5715536319086592"},"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:"wd",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:96.69,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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:"wd",links:[{url:"http://css-tricks.com/almanac/properties/r/resize/",title:"CSS Tricks info"},{url:"http://davidwalsh.name/textarea-resize",title:"On textarea resizing"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Opera 12.10+ currently only supports the resize property for textarea elements.",notes_by_num:{},usage_perc_y:60.13,usage_perc_a:.17,ucprefix:!1,parent:"",keywords:"horizontal,vertical",ie_id:"",chrome_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:"cr",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"},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"},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"},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"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"n",11:"a",11.1:"a",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"},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:"y"},op_mini:{"5.0-8.0":"n"},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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Partial support in older Safari and Opera versions refers to lacking placeholder support on textarea elements. ",notes_by_num:{},usage_perc_y:86.56,usage_perc_a:1.78,ucprefix:!1,parent:"forms",keywords:"",ie_id:"",chrome_id:""},spdy:{title:"SPDY networking protocol",description:"Networking protocol for low-latency transport of content over the web.",spec:"http://tools.ietf.org/html/draft-mbelshe-httpbis-spdy-00",status:"unoff",links:[{url:"http://en.wikipedia.org/wiki/SPDY",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:"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:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"u"},and_uc:{9.9:"u"}},notes:"",notes_by_num:{},usage_perc_y:68.02,usage_perc_a:7.4,ucprefix:!1,parent:"",keywords:"",ie_id:"spdy3",chrome_id:"5152586365665280"},"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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"a x",11.5:"a x",12:"y x",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y x"}},notes:'Firefox 10+, Chrome 26+ and Opera 11.6+ also support the new "to (side)" syntax.',notes_by_num:{},usage_perc_y:87.78,usage_perc_a:.02,ucprefix:!1,parent:"css-gradients",keywords:"",ie_id:"",chrome_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/",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"},firefox:{2:"n",3:"n",3.5:"n",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 d",35:"y",36:"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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"y x"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"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).\r\n\r\nPartial support in Firefox 31 [only with url() version](https://developer.mozilla.org/en-US/docs/Web/CSS/filter#Browser_compatibility)',notes_by_num:{},usage_perc_y:60.68,usage_perc_a:12.47,ucprefix:!1,parent:"",keywords:"sepia,hue-rotate,invert,saturate",ie_id:"filters",chrome_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"},firefox:{2:"n",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"},chrome:{4:"a",5:"a",6:"a",7:"a",8:"a",9:"a",10:"a",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"},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"},opera:{9:"a","9.5-9.6":"a","10.0-10.1":"a",10.5:"a",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"},ios_saf:{3.2:"a","4.0-4.1":"a","4.2-4.3":"a","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y",8:"y",8.1:"y"},op_mini:{"5.0-8.0":"a"},android:{2.1:"a",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",37:"y"},bb:{7:"a",10:"y"},op_mob:{10:"a",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"Partial support in older Firefox versions refers to requiring the second parameter to be included.\r\n\r\nPartial support in all other browsers refers to not supporting getComputedStyle on pseudo-elements.",notes_by_num:{},usage_perc_y:89.99,usage_perc_a:3.51,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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"},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"},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"},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"},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"},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:"a"},op_mini:{"5.0-8.0":"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",37:"a"},bb:{7:"a",10:"a"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"a"},and_chr:{38:"a"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"a"}},notes:'Partial support refers to supporting the "break-all" value, but not the "keep-all" value.',notes_by_num:{},usage_perc_y:27.63,usage_perc_a:65.65,ucprefix:!1,parent:"",keywords:"break-all,keep-all",ie_id:"",chrome_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"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a",10:"a",11:"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:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"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",21:"a",22:"a",23:"a",24:"a",25:"a",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"a",6.1:"y",7:"y",7.1:"y",8:"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"},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","7.0-7.1":"a",8:"y",8.1:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"a"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"a #1",11:"a #1"},and_uc:{9.9:"n"}},notes:'Partial support in IE9 refers to supporting "vm" instead of "vmin".\r\n\r\nPartial support in IE10 refers to lack of "vmax" support.\r\n\r\nPartial support in iOS7 is due to buggy behavior of the "vh" unit (see [workaround](https://gist.github.com/pburtchaell/e702f441ba9b3f76f587)).\r\n\r\nAll other partial support refers to not supporting the "vmax" unit. ',notes_by_num:{},usage_perc_y:65.36,usage_perc_a:16.41,ucprefix:!1,parent:"",keywords:"vm,viewport-percentage",ie_id:"",chrome_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/CSP/",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y #2"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"a #1",11:"a #1"},and_uc:{9.9:"y x"}},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:73.3,usage_perc_a:10.44,ucprefix:!1,parent:"",keywords:"csp,security,header",ie_id:"contentsecuritypolicy",chrome_id:"5205088045891584"},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:"http://docs.webplatform.org/wiki/apis/timing/properties/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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y x"}},notes:"",notes_by_num:{},usage_perc_y:82.85,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"visibilitystate",ie_id:"pagevisibilityapi",chrome_id:"5689697795833856"},stricttransportsecurity:{title:"Strict Transport Security",description:"Declare that a website is only accessible over a secure connection (HTTPS).",spec:"http://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:"n"},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"},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"},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"},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"},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":"u",8:"y",8.1:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"u"}},notes:"The HTTP header is 'Strict-Transport-Security'.",notes_by_num:{},usage_perc_y:66.49,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"sts,hsts,security,header",ie_id:"httpstricttransportsecurityhsts",chrome_id:"4941480133132288"},"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.",spec:"https://html.spec.whatwg.org/multipage/semantics.html#attr-style-scoped",status:"cr",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"},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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"u",24:"n"},and_chr:{38:"n"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:'Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags'},usage_perc_y:14.81,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"scope",ie_id:"scopedstyles",chrome_id:"5374137958662144"},"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:"n",10:"y",11:"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"},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"},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"},opera:{9:"u","9.5-9.6":"u","10.0-10.1":"u",10.5:"u",10.6:"u",11:"u",11.1:"u",11.5:"u",11.6:"u",12:"u",12.1:"y",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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y"},op_mob:{10:"u",11:"u",11.1:"u",11.5:"u",12:"u",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:70.27,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"fragments,sprite",ie_id:"",chrome_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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y #1",11:"y #1"},and_uc:{9.9:"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:93.88,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"-moz-outline,outline-width,outline-style,outline-color",ie_id:"",chrome_id:""},download:{title:"Download attribute",description:"When used on an anchor, this attribute signifies that the resource it points to should be downloaded by the browser rather than navigate to it.",spec:"https://html.spec.whatwg.org/multipage/semantics.html#downloading-resources",status:"wd",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."}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:59.1,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"download,a.download,a[download],download attribute",ie_id:"adownloadattribute",chrome_id:"6473924464345088"},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:"cr",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"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x",11:"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"},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"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"u",7:"u",7.1:"u",8:"u"},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"},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:"p"},op_mini:{"5.0-8.0":"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",37:"p"},bb:{7:"p",10:"p"},op_mob:{10:"n",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",24:"p"},and_chr:{38:"p"},and_ff:{32:"p"},ie_mob:{10:"a x",11:"y"},and_uc:{9.9:"p"}},notes:"Partial support in IE10 refers the lack of pointerenter and pointerleave events. Firefox Nightly provides 'dom.w3c_pointer_events.enabled' option to support this specification starting with version 28.",notes_by_num:{},usage_perc_y:7.4,usage_perc_a:2.48,ucprefix:!1,parent:"",keywords:"pointerdown,pointermove,pointerup,pointercancel,pointerover,pointerout,pointerenter,pointerleave",ie_id:"pointerevents",chrome_id:"4504699138998272"},"user-select-none":{title:"CSS user-select: none",description:"Method of preventing text/element selection using CSS. ",spec:"https://developer.mozilla.org/en-US/docs/CSS/user-select",status:"unoff",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"},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"},chrome:{4:"u",5:"u",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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"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",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"y x"},ie_mob:{10:"y x",11:"y x"},and_uc:{9.9:"y x"}},notes:'Currently the user-select property does not appear in any W3C specification. Support information here is only for "none" value, not others.',notes_by_num:{},usage_perc_y:88.21,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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:"other",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"},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"},chrome:{4:"n",5:"n",6:"p",7:"p",8:"p",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"},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"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"n",10.6:"p",11:"p",11.1:"a",11.5:"a",11.6:"a",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"},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:"n"},op_mini:{"5.0-8.0":"y"},android:{2.1:"n",2.2:"n",2.3:"n",3:"n",4:"a",4.1:"a","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"a",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"Partial support in older Chrome, Opera and Android refers to browser not supporting lossless and alpha versions of WebP. Animated webp images are supported in Chrome 32+ and Opera 19+.",notes_by_num:{},usage_perc_y:54.48,usage_perc_a:2.3,ucprefix:!1,parent:"",keywords:"",ie_id:"webpimageformatsupport",chrome_id:"6471725441089536,4785074604081152"},"intrinsic-width":{title:"Intrinsic & Extrinsic Sizing",description:"Allows for the heights and widths to be specified in intrinsic values using the fill-available, 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"},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 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"},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",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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"y x"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"y x"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:'Prefixes are on the values, not the property names (e.g. -webkit-min-content) Firefox currently supports the "-moz-available" property rather than "-moz-fill-available".',notes_by_num:{},usage_perc_y:69.7,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"fill-available,max-content,min-content,fit-content,contain-floats",ie_id:"cssintrinsicsizing",chrome_id:"5901353784180736"},cryptography:{title:"Web Cryptography",description:"JavaScript API for performing basic cryptographic operations in web applications",spec:"http://www.w3.org/TR/WebCryptoAPI/",status:"wd",links:[{url:"http://polycrypt.net/",title:"PolyCrypt: A WebCrypto Polyfill"},{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"}],categories:["HTML5","JS API"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"p",10:"p",11:"a x #1"},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:"n d #2",35:"y",36:"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"},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"},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"},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:"y x #3"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"p",10:"p"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",24:"y"},and_chr:{38:"y"},and_ff:{32:"p"},ie_mob:{10:"p",11:"a x #1"},and_uc:{9.9:"p"}},notes:"Many browsers support the `[crypto.getRandomValues()](#feat=getrandomvalues)` method, but not actual cryptography functionality under `crypto.subtle`. \r\n\r\nAs the specification is currently still in development, users may be better off using polyfills or libraries like [PolyCrypt](http://polycrypt.net/). \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:43.87,usage_perc_a:7.4,ucprefix:!1,parent:"",keywords:"subtle,subtlecrypto",ie_id:"webcryptoapi",chrome_id:"5030265697075200"},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:"wd",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:63.85,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"web components, template",ie_id:"templateelement",chrome_id:"5207287069147136"},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:"http://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"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"For 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:44.57,usage_perc_a:0,ucprefix:!1,parent:"audio",keywords:"",ie_id:"",chrome_id:"4891189287321600"},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"}],categories:["Other"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"n"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:12,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:""},"channel-messaging":{title:"Channel messaging",description:"Method for having two-way communication between browsing contexts (using MessageChannel)",spec:"http://www.w3.org/TR/webmessaging/#channel-messaging",status:"cr",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"},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"},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"},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"},opera:{9:"n","9.5-9.6":"u","10.0-10.1":"u",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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"u",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{1:"Supported in Firefox behind the `dom.messageChannel.enabled` flag."},usage_perc_y:71.99,usage_perc_a:0,ucprefix:!1,parent:"x-doc-messaging",keywords:"",ie_id:"messagechannels",chrome_id:"6710044586409984"},"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-size1",status:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/tab-size",title:"MDN article"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},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 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"},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:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"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"},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:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"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:"y"},op_mini:{"5.0-8.0":"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:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y x",11.1:"y x",11.5:"y x",12:"y x",12.1:"y x",24:"y"},and_chr:{38:"y"},and_ff:{32:"y x"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:73.05,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"tab-size,tab-width",ie_id:"",chrome_id:""},mutationobserver:{title:"Mutation Observer",description:"Method for observing and reacting to changes to the DOM. Replaces MutationEvents, which is deprecated.",spec:"http://www.w3.org/TR/dom/",status:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver",title:"MutationObserver from MDN"},{url:"https://github.com/Polymer/MutationObservers",title:"Polyfill"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"p",10:"p",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"p",11:"y"},and_uc:{9.9:"y x"}},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:80.32,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"MutationObserver",ie_id:"mutationobservers",chrome_id:"5021194726146048"},"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:"https://developer.mozilla.org/en-US/docs/Web/CSS/::selection",status:"unoff",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"},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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"u",11:"u",11.1:"u",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:75.62,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"::selection,selection",ie_id:"",chrome_id:""},"css-placeholder":{title:":placeholder-shown CSS pseudo-class",description:"The :placeholder-shown pseudo-class represents the placeholder contents of a form field with placeholder text.",spec:"http://dev.w3.org/csswg/selectors/#placeholder",status:"unoff",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"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x",11:"a x"},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:"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"},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"},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"},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"},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:"a x"},op_mini:{"5.0-8.0":"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",37:"a x"},bb:{7:"u",10:"a x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"a x"},and_chr:{38:"a x"},and_ff:{32:"a x"},ie_mob:{10:"a x",11:"a x"},and_uc:{9.9:"a x"}},notes:"Partial support refers to support for alternative syntax: ::-webkit-input-placeholder (Chrome/Safari/Opera),\r\n::-moz-placeholder (Firefox) and \r\n:-ms-input-placeholder (IE). ",notes_by_num:{},usage_perc_y:0,usage_perc_a:87.88,ucprefix:!1,parent:"",keywords:"::placeholder,placeholder",ie_id:"",chrome_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:"wd",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:68.47,usage_perc_a:0,ucprefix:!1,parent:"canvas",keywords:"",ie_id:"compositingandblendingincanvas2d",chrome_id:""},clipboard:{title:"Clipboard API",description:"API to provide copy, cut and paste functionality using 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:"http://www.deluxeblogtips.com/2010/06/javascript-copy-to-clipboard.html",title:"Blog post on cross-browser usage"}],categories:["JS API"],stats:{ie:{5.5:"a #1",6:"a #1",7:"a #1",8:"a #1",9:"a #1",10:"a #1",11:"a #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:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n",12:"n",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"},safari:{3.1:"u",3.2:"u",4:"a",5:"a",5.1:"a",6:"a",6.1:"a",7:"a",7.1:"a",8:"a"},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:"a",17:"a",18:"a",19:"a",20:"a",21:"a",22:"a",23:"a",24:"a",25:"a",26:"a",27:"a"},ios_saf:{3.2:"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a",8:"a",8.1:"a"},op_mini:{"5.0-8.0":"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",37:"a"},bb:{7:"n",10:"a"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"a"},and_chr:{38:"a"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Partial support in IE refers using [a non-standard method](http://msdn.microsoft.com/en-us/library/ie/ms535220%28v=vs.85%29.aspx) of interacting with the clipboard. For other browsers it refers to not supporting the ClipboardEvent constructor.",notes_by_num:{},usage_perc_y:11.9,usage_perc_a:73.66,ucprefix:!1,parent:"",keywords:"cut,copy,paste,clipboarddata",ie_id:"",chrome_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:"http://www.w3.org/TR/webrtc/#peer-to-peer-connections",status:"wd",links:[{url:"http://www.webrtc.org/",title:"WebRTC Project site"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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:"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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y x"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"y x"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"BlackBerry 10 recognizes RTCPeerConnection but real support is unconfirmed.",notes_by_num:{},usage_perc_y:55.44,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"webrtcwebrtcv10api",chrome_id:"6612462929444864"},"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:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/cursor",title:"MDN Documentation"}],categories:["CSS3"],stats:{ie:{5.5:"a",6:"a",7:"a",8:"a",9:"y",10:"y",11:"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"},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"},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"},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:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"u"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Partial support in IE refers to no support for the alias, cell, copy, ew-resize, ns-resize, nesw-resize, nwse-resize or context-menu cursors. Opera 12.10- does not support 'none' or a URI.",notes_by_num:{},usage_perc_y:61.91,usage_perc_a:3.98,ucprefix:!1,parent:"",keywords:"cursors, pointers",ie_id:"",chrome_id:""},"css3-cursors-newer":{title:"CSS3 Cursors (new values)",description:"Support for `zoom-in` and `zoom-out` values for the CSS3 `cursor` property.",spec:"http://www.w3.org/TR/css3-ui/#cursor",status:"wd",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"},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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"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",24:"n"},and_chr:{38:"n"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Chrome, Safari and Firefox also support the unofficial `grab` and `grabbing` values (with prefix)",notes_by_num:{},usage_perc_y:50.93,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"cursors, pointers",ie_id:"",chrome_id:""},webvtt:{title:"WebVTT - Web Video Text Tracks",description:"Format for marking up text captions for multimedia resources.",spec:"http://dev.w3.org/html5/webvtt/",status:"unoff",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"},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",32:"y",33:"y",34:"y",35:"y",36:"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",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"n"}},notes:"WebVTT must be used with the element.\r\n\r\nFirefox currently lacks support for the for ::cue pseudoelement.",notes_by_num:{},usage_perc_y:77.85,usage_perc_a:0,ucprefix:!1,parent:"video",keywords:"captions,track",ie_id:"",chrome_id:"6719115557339136"},promises:{title:"Promises",description:"A promise represents the eventual result of an asynchronous operation.",spec:"https://people.mozilla.org/~jorendorff/es6-draft.html#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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"p",10:"p"},op_mob:{10:"p",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"p",11:"p"},and_uc:{9.9:"p"}},notes:"",notes_by_num:{},usage_perc_y:59.34,usage_perc_a:.43,ucprefix:!1,parent:"",keywords:"futures",ie_id:"",chrome_id:"5681726336532480"},"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:"http://dev.w3.org/csswg/css-position/#sticky-positioning",status:"unoff",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"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Can be enabled in Firefox by setting the about:config preference layout.css.sticky.enabled to true",2:'Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags'},usage_perc_y:20.93,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"positionsticky",chrome_id:"6190250464378880"},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:"wd",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"},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:"u",35:"u",36:"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",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:"y",38:"y",39:"y",40:"y",41:"y",42:"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"},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 #2",20:"n d #2",21:"n d #2",22:"n d #2",23:"n d #2",24:"y",25:"y",26:"y",27:"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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:'Enabled through the "Experimental Web Platform features" flag in `chrome://flags`',2:'Enabled through the "Experimental Web Platform features" flag in `opera://flags`'},usage_perc_y:38.48,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"HTMLDialogElement,showModal,backdrop",ie_id:"",chrome_id:"5770237022568448"},"css-variables":{title:"CSS Variables",description:"Permits the declaration and usage of cascading variables in stylesheets.",spec:"http://www.w3.org/TR/css-variables/",status:"wd",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"},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"},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:"u",41:"u",42:"u"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:10.89,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"css variables",ie_id:"cssvariables",chrome_id:"6401356696911872"},vibration:{title:"Vibration API",description:"Method to access the vibration mechanism of the hosting device.",spec:"http://www.w3.org/TR/vibration/",status:"wd",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"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:61.37,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"vibration,mobile,device",ie_id:"vibrationapi",chrome_id:"5698768766763008"},"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/#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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:57.27,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"css blend modes,css blending modes,blending,multiply,screen,background",ie_id:"",chrome_id:"5768037999312896"},"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"},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"},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:"n d #1",42:"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:"y",8:"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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:'Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags'},usage_perc_y:15.69,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"css blend modes,css blending modes",ie_id:"mixblendmode",chrome_id:"6362616360337408"},"web-speech":{title:"Web Speech API",description:"Method to provide speech input and text-to-speech output features in a web browser.",spec:"https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html",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/",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"},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"},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",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"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"a x",7:"a x",7.1:"a",8:"a"},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"},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",8:"a x",8.1:"a x"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"a x"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Partial support in Chrome refers to some attributes missing. Partial support in Safari refers to only Speech Synthesis supported.",notes_by_num:{},usage_perc_y:0,usage_perc_a:53.14,ucprefix:!1,parent:"",keywords:"speech,recognition,ASR",ie_id:"webspeechapiinput",chrome_id:"5908775487668224"},"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"},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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:75.41,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"performance,now,testing",ie_id:"highresolutiontime",chrome_id:"5349124069130240"},"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"},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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"y"},and_ff:{32:"a #1"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"a #1"}},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:22.46,usage_perc_a:15.28,ucprefix:!1,parent:"",keywords:"navigator.battery,navigator.getbattery,batterymanager",ie_id:"batterystatusapi",chrome_id:"4537134732017664"},"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"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},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"},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"},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",8:"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:"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"},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:"a x #2"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"y x"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"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 in Safari refers to not supporting the text-decoration-style property."},usage_perc_y:12.5,usage_perc_a:5.38,ucprefix:!1,parent:"",keywords:"text-decoration-line,text-decoration-style,text-decoration-color",ie_id:"",chrome_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"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:51.19,usage_perc_a:0,ucprefix:!1,parent:"web-speech",keywords:"speech,synthesis,speechSynthesis,TTS,SpeechSynthesisUtterance,",ie_id:"webspeechapisynthesis",chrome_id:"4782875580825600"},"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"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:56.49,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"performance,testing,mark,measure",ie_id:"usertimingapi",chrome_id:"5066549580791808"},srcset:{title:"Srcset attribute",description:"Allows authors to specify alternate high-resolution sources on `img` elements",spec:"https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-srcset",status:"other",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"},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"},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"},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"},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"},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:"a #2"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"a #2"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},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:22.46,usage_perc_a:24.13,ucprefix:!1,parent:"",keywords:"",ie_id:"imgsrcset",chrome_id:"4644337115725824"},"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"},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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Firefox desktop supports this API only on Mac OS X. [Support for Windows 7 is in progress](https://bugzilla.mozilla.org/show_bug.cgi?id=754199)",notes_by_num:{},usage_perc_y:11.9,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"ambientlightevents",chrome_id:"5298357018820608"},"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"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Supported in Firefox behind the `layout.css.will-change.enabled` flag"},usage_perc_y:39.76,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"scroll-position",ie_id:"csswillchange",chrome_id:"5954199330226176"},"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"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:'Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags'},usage_perc_y:43.86,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"circle,ellipse,polygon,inset,shape-outside,shape-inside",ie_id:"shapes",chrome_id:"5163890719588352"},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:"other",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:93.51,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"dom,domready,onload,contentloaded,document",ie_id:"",chrome_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"},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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:12.21,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:77.97,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"optimizeLegibility,optimizeSpeed,geometricPrecision",ie_id:"",chrome_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. ",spec:"http://www.w3.org/html/wg/drafts/html/master/single-page.html#attr-iframe-seamless",status:"wd",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"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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:"u",35:"u",36:"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:"u",41:"u",42:"u"},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"},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:"u",27:"u"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y"}},notes:"Chrome 20-26 had partial support behind a flag, though this was [later removed](http://crbug.com/229421). \r\n\r\nSafari 7 (& iOS 7 Safari) hides the border of seamless iframes and recognizes the 'seamless' DOM property, but does not provide actual support.",notes_by_num:{},usage_perc_y:2.87,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"iframeseamlessattribute",chrome_id:"6630329993396224"},"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"},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"},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"},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"},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"},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:"a"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Partial support in iOS refers to the browser using EXIF data by default, though it does not actually support the property. 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:{},usage_perc_y:11.59,usage_perc_a:8.22,ucprefix:!1,parent:"",keywords:"image-orientation,from-image,flip",ie_id:"",chrome_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:"wd",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"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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 d #3",35:"n d #3",36:"n d #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:"n",37:"n d #1",38:"y",39:"y",40:"y",41:"y",42:"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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},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:22.46,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"pictureelement",chrome_id:"5910974510923776"},woff2:{title:"WOFF 2.0 - A better web font compression format",description:"TrueType/OpenType font that provides better compression than WOFF 1.0.",spec:"http://www.w3.org/TR/WOFF2/",status:"wd",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"},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 d #1",36:"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",33:"n",34:"n",35:"n",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Default 'enabled' for Firefox Aurora and Beta, but release versions will have [WOFF2 off by default](https://bugzilla.mozilla.org/show_bug.cgi?id=1064737#c10) until security concerns are quelled."},usage_perc_y:39.77,usage_perc_a:0,ucprefix:!1,parent:"fontface",keywords:"woff, fontface, webfonts",ie_id:"",chrome_id:"6718644721549312"},"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:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/text-size-adjust",title:"MDN Docs"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"y x"},ie_mob:{10:"y x",11:"y x"},and_uc:{9.9:"y x"}},notes:"",notes_by_num:{},usage_perc_y:11.71,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:""},"web-animation":{title:"Web Animations API",description:"This function lets you create an animation purely in JavaScript and have it run as efficiently as any CSS Animation or Transition.",spec:"http://dev.w3.org/fxtf/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"}],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:39.77,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"js,animation,animate",ie_id:"webanimationsjavascriptapi",chrome_id:"4854343836631040"},"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"},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:"y",35:"y",36:"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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Can be enabled in Firefox using the dom.enable_resource_timing flag"},usage_perc_y:56.62,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"performance,testing,resource",ie_id:"resourcetimingapi",chrome_id:"5796350423728128"},"custom-elements":{title:"Custom Elements",description:"Method of defining and using new types of DOM elements in a document.",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"}],categories:["DOM","HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"p",11:"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"},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"},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"},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"},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:"p"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:'Enabled through the "dom.webcomponents.enabled" preference in about:config'},usage_perc_y:42.8,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"web components",ie_id:"customelements",chrome_id:"4642138092470272"},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"},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:"y",36:"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 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"},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"},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"},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:"p"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"p"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:'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:39.78,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"web components",ie_id:"htmlimports",chrome_id:"5144752345317376"},"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:"wd",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"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",24:"n #1"},and_chr:{38:"n #1"},and_ff:{32:"n #1"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n #1"}},notes:"",notes_by_num:{1:"Not supported when tested on Android, presumably an OS limitation. "},usage_perc_y:68.36,usage_perc_a:0,ucprefix:!1,parent:"forms",keywords:"",ie_id:"",chrome_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:"other",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"},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"},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"},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"},opera:{9:"n","9.5-9.6":"u","10.0-10.1":"u",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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"u",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:91.34,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"atob,btoa",ie_id:"",chrome_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:"http://wiki.csswg.org/spec/css4-ui#appearance",status:"unoff",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"},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"},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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"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",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"y x"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y x"}},notes:"The `appearance` property currently does not appear in any CSS specification so there is no specifically correct usage.",notes_by_num:{},usage_perc_y:78.36,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_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:"wd",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"},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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:83.96,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"4 value syntax",ie_id:"",chrome_id:""},"css-supports-api":{title:"CSS.supports() DOM 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"},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"},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"},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"},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 #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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"See also [@supports in CSS](#feat=css-featurequeries)\r\n\r\nSee the [WebKit Bug](http://trac.webkit.org/changeset/142739) for status in Safari",notes_by_num:{1:"Opera 12 uses a different method name('window.supportsCSS')"},usage_perc_y:58.49,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"conditional",ie_id:"conditionalrules",chrome_id:"4993981813358592"},"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), pinch-zooming or double-tap-zooming.",spec:"http://www.w3.org/TR/pointerevents/#the-touch-action-css-property",status:"cr",links:[{url:"http://docs.webplatform.org/wiki/css/properties/touch-action",title:"WebPlatform Docs"},{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)"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x #2",11:"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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"y x #2",11:"y"},and_uc:{9.9:"n"}},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'pinch-zoom','double-tap-zoom','cross-slide-x','cross-slide-y'."},usage_perc_y:49.65,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"touch action",ie_id:"csstouchaction",chrome_id:"5912074022551552"},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:"wd",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"},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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"u"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:76.94,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:""},"css-clip-path":{title:"CSS clip-path property",description:"Method of defining the visible region of an element using SVG or a shape definition.",spec:"http://www.w3.org/TR/css-masking-1/#the-clip-path",status:"wd",links:[{url:"http://css-tricks.com/almanac/properties/c/clip/",title:"CSS Tricks article"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"a x #2"},op_mini:{"5.0-8.0":"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",37:"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",24:"a x #2"},and_chr:{38:"a x #2"},and_ff:{32:"a #1"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",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."},usage_perc_y:0,usage_perc_a:69.28,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:""},getrandomvalues:{title:"crypto.getRandomValues()",description:"Method of generating cryptographically random values.",spec:"http://www.w3.org/TR/WebCryptoAPI/#RandomSource-method-getRandomValues",status:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues",title:"MDN article"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y"},chrome:{4:"n",5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"y x"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:76.99,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:""},"screen-orientation":{title:"Screen Orientation",description:"Provides the ability to read the screen orientation state, to be informed when this state changes, and to be able to lock the screen orientation to a specific state.",spec:"http://www.w3.org/TR/screen-orientation/",status:"wd",links:[{url:"http://aurelio.audero.it/demo/screen-orientation-api-demo.html",title:"Demo"},{url:"https://developer.mozilla.org/en-US/docs/Web/API/Screen.orientation",title:"MDN article"},{url:"http://www.sitepoint.com/introducing-screen-orientation-api/",title:"SitePoint article"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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:"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"},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:"y",39:"y",40:"y",41:"y",42:"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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"y"},and_ff:{32:"y x"},ie_mob:{10:"n",11:"a x"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:44.78,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"screenorientationapi",chrome_id:"6191285283061760"},"font-loading":{title:"CSS Font Loading",description:"This CSS module defines a scripting interface to font faces in CSS, allowing font faces to be easily created and loaded from script. It also provides methods to track the loading status of an individual font, or of all the fonts on an entire page.",spec:"http://dev.w3.org/csswg/css-font-loading/",status:"cr",links:[{url:"https://www.igvita.com/2014/01/31/optimizing-web-font-rendering-performance/#font-load-events",title:"Optimizing with font load events"}],categories:["CSS3","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:40.71,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:"6244676289953792"},"font-unicode-range":{title:"Font unicode-range subsetting",description:"This @font-face descriptor defines the set of Unicode codepoints that may be supported by the font face for which it is declared. The descriptor value is a comma-delimited list of Unicode range () values. The union of these ranges defines the set of codepoints that serves as a hint for user agents when deciding whether or not to download a font resource for a given text run.",spec:"http://dev.w3.org/csswg/css-fonts/#descdef-unicode-range",status:"cr",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/unicode-range",title:"MDN: unicode-range"},{url:"https://developer.apple.com/library/safari/documentation/AppleApplications/Reference/SafariCSSRef/Articles/StandardCSSProperties.html#//apple_ref/css/property/unicode-range",title:"Safari CSS Reference: unicode-range"},{url:"http://docs.webplatform.org/wiki/css/properties/unicode-range",title:"Web Platform Docs: unicode-range"},{url:"http://jsbin.com/jeqoguzeye/1/edit?html,output",title:"Demo"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a",10:"a",11:"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:"n",32:"n",33:"n",34:"n",35:"n",36:"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:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"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"},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:"y",24:"y",25:"y",26:"y",27:"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:"a"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"u",10:"u"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"a"},and_chr:{38:"y"},and_ff:{32:"a"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"a"}},notes:"Partial support indicates that unnecessary code-ranges are downloaded by the browser - see [browser test matrix](https://docs.google.com/a/chromium.org/spreadsheets/d/18h-1gaosu4-KYxH8JUNL6ZDuOsOKmWfauoai3CS3hPY/edit?pli=1#gid=0).",notes_by_num:{},usage_perc_y:39.77,usage_perc_a:37.94,ucprefix:!1,parent:"",keywords:"font face,unicode,unicode-range",ie_id:"",chrome_id:""},gamepad:{title:"Gamepad API",description:"API to support input from USB gamepad controllers though JavaScript.",spec:"http://www.w3.org/TR/gamepad/",status:"wd",links:[{url:"http://luser.github.io/gamepadtest/",title:"Controller demo"},{url:"https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API",title:"MDN article"},{url:"http://www.html5rocks.com/en/tutorials/doodles/gamepad/",title:"HTML5Rocks article"},{url:"http://gamedevelopment.tutsplus.com/tutorials/using-the-html5-gamepad-api-to-add-controller-support-to-browser-games--cms-21345",title:"Detailed tutorial"}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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:"y x",22:"y x",23:"y x",24:"y x",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:45.37,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"gamepadapi",chrome_id:"5118776383111168"},"css-font-stretch":{title:"CSS font-stretch",description:"If a font has multiple types of variations based on the width of characters, the `font-stretch` property allows the appropriate one to be selected. The property in itself does not cause the browser to stretch to a font.",spec:"http://www.w3.org/TR/css-fonts-3/#font-stretch-prop",status:"cr",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/font-stretch",title:"MDN article"},{url:"http://css-tricks.com/almanac/properties/f/font-stretch/",title:"CSS Tricks article"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"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"},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:"u",41:"u",42:"u"},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"},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:"u",27:"u"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:24.44,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"font stretch",ie_id:"cssfontstretch",chrome_id:"4598830058176512"},"font-size-adjust":{title:"CSS font-size-adjust",description:"Method of adjusting the font size in a matter that relates to the height of lowercase vs. uppercase letters. This makes it easier to set the size of fallback fonts.",spec:"http://www.w3.org/TR/css-fonts-3/#font-size-adjust-prop",status:"cr",links:[{url:"http://webdesignernotebook.com/css/the-little-known-font-size-adjust-css3-property/",title:"Article on font-size-adjust"},{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/font-size-adjust",title:"MDN article on font-size-adjust"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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:"u",41:"u",42:"u"},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"},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:"u",27:"u"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Does not appear to work on Firefox mobile, despite recognition of the property.",notes_by_num:{},usage_perc_y:12.55,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:""},"link-icon-png":{title:"PNG favicons",description:"Icon used by browsers to identify a webpage or site. While all browsers support the `.ico` format, the PNG format can be preferable.",spec:"https://html.spec.whatwg.org/multipage/semantics.html#rel-icon",status:"pr",links:[{url:"http://css-tricks.com/favicon-quiz/",title:"Detailed info on favicons for various uses"}],categories:["HTML5"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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 #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"},safari:{3.1:"y #2",3.2:"y #2",4:"y #2",5:"y #2",5.1:"y #2",6:"y #2",6.1:"y #2",7:"y #2",7.1:"y #2",8:"y #2"},opera:{9:"y #3","9.5-9.6":"y #3","10.0-10.1":"y #3",10.5:"y #3",10.6:"y #3",11:"y #3",11.1:"y #3",11.5:"y #3",11.6:"y #3",12:"y #3",12.1:"y #3",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"},ios_saf:{3.2:"n #4","4.0-4.1":"n #4","4.2-4.3":"n #4","5.0-5.1":"n #4","6.0-6.1":"n #4","7.0-7.1":"n #4",8:"n #4",8.1:"n #4"},op_mini:{"5.0-8.0":"n #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 #3","4.4.3-4.4.4":"y #3",37:"y #3"},bb:{7:"y",10:"n #4"},op_mob:{10:"n #4",11:"n #4",11.1:"n #4",11.5:"n #4",12:"n #4",12.1:"n #4",24:"n #4"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n #4",11:"n #4"},and_uc:{9.9:"y #2"}},notes:"Win8/IE10+ and iOS Safari support other types of icons for webpages too, using alternate tags.\r\n\r\nSee also [SVG favicons](#feat=link-icon-svg).",notes_by_num:{1:"If both ICO and PNG are available, will use ICO over PNG if ICO has better matching sizes set.",2:"If both ICO and PNG are available, will ALWAYS use ICO file, regardless of sizes set.",3:"If multiple formats are available, will use the last one loaded, regardless of sizes (effectively picks at random).",4:"Does not use favicons at all (but may have alternative for bookmarks, etc)"},usage_perc_y:77.82,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:""},"link-icon-svg":{title:"SVG favicons",description:"Icon used by browsers to identify a webpage or site. While all browsers support the `.ico` format, the SVG format can be preferable to more easily support higher resolutions or larger icons.",spec:"https://html.spec.whatwg.org/multipage/semantics.html#rel-icon",status:"pr",links:[{url:"http://crbug.com/294179",title:"Chrome bug"}],categories:["HTML5","SVG"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},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"},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:"u",41:"u",42:"u"},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"},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:"u",27:"u"},ios_saf:{3.2:"n #1","4.0-4.1":"n #1","4.2-4.3":"n #1","5.0-5.1":"n #1","6.0-6.1":"n #1","7.0-7.1":"n #1",8:"n #1",8.1:"n #1"},op_mini:{"5.0-8.0":"n #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:"n","4.4.3-4.4.4":"n",37:"n"},bb:{7:"n",10:"n #1"},op_mob:{10:"n #1",11:"n #1",11.1:"n #1",11.5:"n #1",12:"n #1",12.1:"n #1",24:"n #1"},and_chr:{38:"n"},and_ff:{32:"n"},ie_mob:{10:"n #1",11:"n #1"},and_uc:{9.9:"n"}},notes:"See also [PNG favicons](#feat=link-icon-png).",notes_by_num:{1:"Does not use favicons at all"},usage_perc_y:12.39,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:""},"css-media-resolution":{title:"Media Queries: resolution feature",description:"Allows a media query to be set based on the device pixels used per CSS unit. While the standard uses `min`/`max-resolution` for this, some browsers support the older non-standard `device-pixel-ratio` media query.",spec:"http://www.w3.org/TR/css3-mediaqueries/#resolution",status:"rec",links:[{url:"http://www.w3.org/blog/CSS/2012/06/14/unprefix-webkit-device-pixel-ratio/",title:"How to unprefix -webkit-device-pixel-ratio"}],categories:["CSS","CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a #1",10:"a #1",11:"a #1"},firefox:{2:"n",3:"n",3.5:"n",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:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y"},chrome:{4:"a x #2",5:"a x #2",6:"a x #2",7:"a x #2",8:"a x #2",9:"a x #2",10:"a x #2",11:"a x #2",12:"a x #2",13:"a x #2",14:"a x #2",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:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"y"},safari:{3.1:"n",3.2:"n",4:"a x #2",5:"a x #2",5.1:"a x #2",6:"a x #2",6.1:"a x #2",7:"a x #2",7.1:"a x #2",8:"a x #2"},opera:{9:"u","9.5-9.6":"u","10.0-10.1":"u",10.5:"u",10.6:"u",11:"u",11.1:"u",11.5:"u",11.6:"u",12:"u",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"},ios_saf:{3.2:"u","4.0-4.1":"a x #2","4.2-4.3":"a x #2","5.0-5.1":"a x #2","6.0-6.1":"a x #2","7.0-7.1":"a x #2",8:"a x #2",8.1:"a x #2"},op_mini:{"5.0-8.0":"a #1"},android:{2.1:"u",2.2:"u",2.3:"u",3:"u",4:"a x #2",4.1:"a x #2","4.2-4.3":"a x #2",4.4:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"a x #2",10:"a x #2"},op_mob:{10:"u",11:"u",11.1:"u",11.5:"u",12:"u",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"a #1",11:"a #1"},and_uc:{9.9:"a x #2"}},notes:"",notes_by_num:{1:"Supports the `dpi unit`, but does not support `dppx` or `dpcm` units.",2:"Supported using the non-standard `min`/`max-device-pixel-ratio`"},usage_perc_y:58.72,usage_perc_a:34.38,ucprefix:!1,parent:"css-mediaqueries",keywords:"@media,device-pixel-ratio,resolution",ie_id:"mediaqueriesresolutionfeature,dppxunitfortheresolutionmediaquery",chrome_id:"5944509615570944"},"css-image-set":{title:"CSS image-set",description:"Method of letting the browser pick the most appropriate CSS background image from a given set, primarily for high PPI screens.",spec:"http://dev.w3.org/csswg/css-images-3/#image-set-notation",status:"unoff",links:[{url:"http://cloudfour.com/examples/image-set/",title:"Demo"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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:"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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"y x"},bb:{7:"u",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:57.73,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:""}}} -},{}],52:[function(a,b){b.exports={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"}],bugs:[{description:"iOS Safari has buggy behavior with `background-size: cover;` on a page's body."}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"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"},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"},safari:{3.1:"a",3.2:"a",4:"a",5:"a",5.1:"a",6:"a",6.1:"a",7:"y",7.1:"y",8:"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"},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:"y"},op_mini:{"5.0-8.0":"a"},android:{2.1:"a x",2.2:"y x",2.3:"y x",3:"y",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"y",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"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).\r\n\r\nPartial support in Safari 6 refers to not supporting background sizing offset from edges syntax.",notes_by_num:{},usage_perc_y:88.87,usage_perc_a:4.54,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:"",shown:!0}},{}],53:[function(a,b){b.exports={title:"CSS3 Border images",description:"Method of using images for borders",spec:"http://www.w3.org/TR/css3-background/#the-border-image",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"}],bugs:[],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"y"},firefox:{2:"n",3:"n",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:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"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:"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"},safari:{3.1:"a x",3.2:"a x",4:"a x",5:"a x",5.1:"a x",6:"y",6.1:"y",7:"y",7.1:"y",8:"y"},opera:{9:"n","9.5-9.6":"n","10.0-10.1":"n",10.5:"a",10.6:"a",11:"a x",11.1:"a x",11.5:"a x",11.6:"a x",12:"a x",12.1:"a x",15:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y"},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":"y","7.0-7.1":"y",8:"y",8.1:"y"},op_mini:{"5.0-8.0":"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:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"a x",10:"y"},op_mob:{10:"n",11:"a x",11.1:"a x",11.5:"a x",12:"a x",12.1:"a x",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"n",11:"y"},and_uc:{9.9:"y"}},notes:"Note that both the border-style and border-width must be specified for border-images to work according to spec, though older implementations may not have this requirement. Partial support refers to supporting the shorthand syntax, but not the individual properties (border-image-source, border-image-slice, etc). ",notes_by_num:{},usage_perc_y:80.35,usage_perc_a:5.64,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:"",shown:!0}},{}],54:[function(a,b){b.exports={title:"CSS3 Border-radius (rounded corners)",description:"Method of making the border corners round",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"}],bugs:[{description:"Safari does not apply `border-radius` correctly to image borders: http://stackoverflow.com/q/17202128"},{description:"Android Browser 2.3 does not support % value for `border-radius`."},{description:"Border-radius does not work on fieldset elements in IE9."},{description:"The stock browser on the Samsung Galaxy S4 with Android 4.2 does not support the `border-radius` shorthand property but does support the long-hand properties for each corner like `border-top-left-radius`."}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"y"},firefox:{2:"a x",3:"y x",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"},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"},safari:{3.1:"y x",3.2:"y x",4:"y x",5:"y",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:"",notes_by_num:{},usage_perc_y:90.64,usage_perc_a:.01,ucprefix:!1,parent:"",keywords:"roundedcorners, border radius,-moz-border-radius",ie_id:"",chrome_id:"",shown:!0}},{}],55:[function(a,b){b.exports={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/CSS/-moz-calc",title:"MDN article"},{url:"http://docs.webplatform.org/wiki/css/functions/calc",title:"WebPlatform Docs"}],bugs:[{description:"Safari 7.0 and older and Chrome 26 and older don't support viewport units in `calc()` expressions (fixed since then)."},{description:"`calc()` doesn't work [inside a transform in IE](http://connect.microsoft.com/IE/feedback/details/814380/css3-using-calc-inside-a-transform-is-invalid)"},{description:"IE9 appears to ignore `calc()` expressions when `display:table` is used."},{description:"Safari 6 has a bug where an element with a width defined using `calc()` has its width reset when changing the height using JS (fixed in Safari 7)."},{description:"IE11 and other browsers to a lesser extent have trouble supporting `calc()` inside [color or transform values](http://codepen.io/thebabydino/pen/wfraH)."},{description:"IE10 crashes when a div with a property using `calc()` has a child with [same property with `inherit`](http://stackoverflow.com/questions/19423384/css-less-calc-method-is-crashing-my-ie10)."},{description:"IE 9 - 11 don't render `box-shadow` when `calc()` is used for any of the values."}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"a",10:"y",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"Support can be somewhat emulated in older versions of IE using the non-standard `expression()` syntax. Partial support in IE9 refers to the browser crashing when used as a `background-position` value. Partial support in Android Browser 4.4 refers to the browser lacking the ability to multiply and divide values.",notes_by_num:{},usage_perc_y:77.04,usage_perc_a:5.27,ucprefix:!1,parent:"",keywords:"",ie_id:"csscalc",chrome_id:"5765241438732288",shown:!0}},{}],56:[function(a,b){b.exports={title:"CSS3 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"}],bugs:[{description:"'animation-fill-mode' property is not supported in Android browser below 2.3."},{description:"iOS 6.1 and below do not support animation on pseudo-elements."},{description:"@keyframes not supported in an inline or scoped stylesheet in Firefox (bug 830056)"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"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"},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"},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"},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",27:"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:"y x"},op_mini:{"5.0-8.0":"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 x","4.4.3-4.4.4":"y x",37:"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:"y",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y x"}},notes:"Partial support in Android browser refers to buggy behavior in different scenarios.",notes_by_num:{},usage_perc_y:88.04,usage_perc_a:.21,ucprefix:!1,parent:"",keywords:"animations,css-animations,keyframe,keyframes",ie_id:"",chrome_id:"",shown:!0}},{}],57:[function(a,b){b.exports={title:"CSS box-decoration-break",description:"Controls whether the box's margins, borders, padding, and other decorations wrap the broken edges of the box fragments (when the box is split by a break (page/column/region/line).",spec:"http://www.w3.org/TR/css3-break/#break-decoration",status:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/box-decoration-break",title:"MDN article"},{url:"http://jsbin.com/xojoro/edit?css,output",title:"Demo of effect on box border"}],bugs:[],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},chrome:{4:"u",5:"u",6:"u",7:"u",8:"u",9:"u",10:"u",11:"u",12:"u",13:"u",14:"u",15:"u",16:"u",17:"u",18:"u",19:"u",20:"u",21:"u",22:"u",23:"u",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"},safari:{3.1:"u",3.2:"u",4:"u",5:"u",5.1:"u",6:"u",6.1:"u",7:"y x",7.1:"y x",8:"y x"},opera:{9:"u","9.5-9.6":"u","10.0-10.1":"u",10.5:"u",10.6:"u",11:"u",11.1:"u",11.5:"u",11.6:"u",12:"u",12.1:"u",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"},ios_saf:{3.2:"u","4.0-4.1":"u","4.2-4.3":"u","5.0-5.1":"u","6.0-6.1":"u","7.0-7.1":"y x",8:"y x",8.1:"y x"},op_mini:{"5.0-8.0":"y"},android:{2.1:"u",2.2:"u",2.3:"u",3:"u",4:"u",4.1:"y x","4.2-4.3":"y x",4.4:"y x","4.4.3-4.4.4":"y x",37:"y x"},bb:{7:"u",10:"u"},op_mob:{10:"u",11:"u",11.1:"u",11.5:"u",12:"u",12.1:"u",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"u"}},notes:"",notes_by_num:{},usage_perc_y:72.86,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"box-decoration,box decoration,break",ie_id:"",chrome_id:"",shown:!1}},{}],58:[function(a,b){b.exports={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"}],bugs:[{description:"Safari 6, iOS 6 and Android 2.3 default browser don't work with a 0px value for \"spread\".\r\ne.g. -webkit-box-shadow: 5px 1px 0px #f04e29;\r\ndoesn't work, but\r\n-webkit-box-shadow: 5px 1px 1px #f04e29\r\ndoes."}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"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"},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"},safari:{3.1:"a x",3.2:"a x",4:"a x",5:"y x",5.1:"y",6:"y",6.1:"y",7:"y",7.1:"y",8:"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"},ios_saf:{3.2:"a 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:"y"},op_mini:{"5.0-8.0":"n"},android:{2.1:"a x",2.2:"a x",2.3:"a x",3:"a x",4:"y",4.1:"y","4.2-4.3":"y",4.4:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"y x",10:"y"},op_mob:{10:"n",11:"y",11.1:"y",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y"}},notes:'Can be partially emulated in older IE versions using the non-standard "shadow" filter. Partial support in Safari, iOS Safari and Android Browser refers to missing "inset" and blur radius value support.',notes_by_num:{},usage_perc_y:90.29,usage_perc_a:.3,ucprefix:!1,parent:"",keywords:"box-shadows,boxshadows,box shadow,shaow",ie_id:"",chrome_id:"",shown:!0}},{}],59:[function(a,b){b.exports={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/",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"}],bugs:[],categories:["CSS","CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},firefox:{2:"n",3:"n",3.5:"n",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 d",35:"y",36:"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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"y x"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"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).\r\n\r\nPartial support in Firefox 31 [only with url() version](https://developer.mozilla.org/en-US/docs/Web/CSS/filter#Browser_compatibility)',notes_by_num:{},usage_perc_y:60.68,usage_perc_a:12.47,ucprefix:!1,parent:"",keywords:"sepia,hue-rotate,invert,saturate",ie_id:"filters",chrome_id:"",shown:!0}},{}],60:[function(a,b){b.exports={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"}],bugs:[],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"a x",10:"y x"},op_mob:{10:"n",11:"n",11.1:"a x",11.5:"a x",12:"y x",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y x"}},notes:'Syntax used by browsers with prefixed support may be incompatible with that for proper support. \r\n\r\nPartial support in Opera 11.10 and 11.50 also refers to only having support for linear gradients.\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:{},usage_perc_y:87.78,usage_perc_a:.62,ucprefix:!1,parent:"",keywords:"linear,linear-gradient,gradiant",ie_id:"gradients",chrome_id:"5785905063264256",shown:!0}},{}],61:[function(a,b){b.exports={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"}],bugs:[],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x",11:"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"},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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"y x"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"a x"}},notes:'Chrome 29- and Android 4.0 Browser support "-webkit-hyphens: none", but not the "auto" property. Chrome 30+ doesn\'t support it either.',notes_by_num:{},usage_perc_y:33.24,usage_perc_a:2.87,ucprefix:!1,parent:"",keywords:"hyphen,shy",ie_id:"",chrome_id:"",shown:!0}},{}],62:[function(a,b){b.exports={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/",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"}],bugs:[],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},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"},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"},safari:{3.1:"n",3.2:"n",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"},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"},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:"a x"},op_mini:{"5.0-8.0":"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",37:"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",24:"a x"},and_chr:{38:"a x"},and_ff:{32:"a"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"a x"}},notes:"Partial support in WebKit/Blink browsers refers to supporting the mask-image and mask-box-image properties, but lacks support for othe parts of the spec. Partial support in Firefox refers to only support for inline SVG mask elements i.e. mask: url(#foo).",notes_by_num:{},usage_perc_y:0,usage_perc_a:78.29,ucprefix:!1,parent:"",keywords:"",ie_id:"masks",chrome_id:"5381559662149632",shown:!0}},{}],63:[function(a,b){b.exports={title:":placeholder-shown CSS pseudo-class",description:"The :placeholder-shown pseudo-class represents the placeholder contents of a form field with placeholder text.",spec:"http://dev.w3.org/csswg/selectors/#placeholder",status:"unoff",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"}],bugs:[],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x",11:"a x"},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:"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"},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"},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"},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"},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:"a x"},op_mini:{"5.0-8.0":"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",37:"a x"},bb:{7:"u",10:"a x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"a x"},and_chr:{38:"a x"},and_ff:{32:"a x"},ie_mob:{10:"a x",11:"a x"},and_uc:{9.9:"a x"}},notes:"Partial support refers to support for alternative syntax: ::-webkit-input-placeholder (Chrome/Safari/Opera),\r\n::-moz-placeholder (Firefox) and \r\n:-ms-input-placeholder (IE). ",notes_by_num:{},usage_perc_y:0,usage_perc_a:87.88,ucprefix:!1,parent:"",keywords:"::placeholder,placeholder",ie_id:"",chrome_id:"",shown:!0}},{}],64:[function(a,b){b.exports={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:"https://developer.mozilla.org/en-US/docs/Web/CSS/::selection",status:"unoff",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"}],bugs:[{description:"::selection does not work on input elements in Chrome (tested on OS X and Windows XP)"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"y",10:"y",11:"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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"n",10:"n"},op_mob:{10:"u",11:"u",11.1:"u",11.5:"y",12:"y",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"n"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:75.62,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"::selection,selection",ie_id:"",chrome_id:"",shown:!0}},{}],65:[function(a,b){b.exports={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:"http://dev.w3.org/csswg/css-position/#sticky-positioning",status:"unoff",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"}],bugs:[{description:"Firefox and Safari do not appear to support [sticky table headers](http://jsfiddle.net/Mf4YT/2/). (see also [Firefox bug](https://bugzilla.mozilla.org/show_bug.cgi?id=925259))"}],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"y"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{1:"Can be enabled in Firefox by setting the about:config preference layout.css.sticky.enabled to true",2:'Enabled in Chrome through the "experimental Web Platform features" flag in chrome://flags'},usage_perc_y:20.93,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"positionsticky",chrome_id:"6190250464378880",shown:!0} -},{}],66:[function(a,b){b.exports={title:"CSS3 Transitions",description:"Simple method of animating certain properties of an element",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"}],bugs:[{description:"Not supported on any pseudo-elements besides ::before and ::after for Firefox, Chrome 26+, Opera 16+ and IE10+."},{description:"Transitionable properties with calc() derived values are not supported below and including IE11 (http://connect.microsoft.com/IE/feedback/details/762719/css3-calc-bug-inside-transition-or-transform)"},{description:"'background-size' is not supported below and including IE10"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"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"},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"},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"},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"},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:"y"},op_mini:{"5.0-8.0":"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",37:"y"},bb:{7:"y x",10:"y x"},op_mob:{10:"y x",11:"y x",11.1:"y x",11.5:"y x",12:"y x",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y x"}},notes:"",notes_by_num:{},usage_perc_y:88.35,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"css transition",ie_id:"",chrome_id:"",shown:!0}},{}],67:[function(a,b){b.exports={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:"wd",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"}],bugs:[{description:"Android browsers do not calculate correctly the dimensions (width and height) of the HTML select element."},{description:"Safari 6.0.x does not use box-sizing on elements with display: table;"},{description:"IE9 will subtract the width of the scrollbar to the width of the element when set to position: absolute, overflow: auto / overflow-y: scroll"},{description:"IE 8 ignores `box-sizing: border-box` if min/max-width/height is used."}],categories:["CSS3"],stats:{ie:{5.5:"p",6:"p",7:"p",8:"a",9:"a",10:"a",11:"a"},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"},chrome:{4:"a x",5:"a x",6:"a x",7:"a x",8:"a x",9:"a x",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"},safari:{3.1:"a x",3.2:"a x",4:"a x",5:"a x",5.1:"a",6:"a",6.1:"a",7:"a",7.1:"a",8:"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"},ios_saf:{3.2:"a x","4.0-4.1":"a x","4.2-4.3":"a x","5.0-5.1":"a","6.0-6.1":"a","7.0-7.1":"a",8:"a",8.1:"a"},op_mini:{"5.0-8.0":"a"},android:{2.1:"a x",2.2:"a x",2.3:"a x",3:"a x",4:"a",4.1:"a","4.2-4.3":"a",4.4:"a","4.4.3-4.4.4":"a",37:"a"},bb:{7:"a x",10:"a"},op_mob:{10:"a",11:"a",11.1:"a",11.5:"a",12:"a",12.1:"a",24:"a"},and_chr:{38:"a"},and_ff:{32:"y"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"a"}},notes:"Partial support refers to supporting only the `content-box` and `border-box` values, not `padding-box` (which was added to the spec later).",notes_by_num:{},usage_perc_y:12.72,usage_perc_a:83.97,ucprefix:!1,parent:"",keywords:"border-box,content-box,padding-box",ie_id:"",chrome_id:"",shown:!0}},{}],68:[function(a,b){b.exports={title:"CSS3 Cursors (new values)",description:"Support for `zoom-in` and `zoom-out` values for the CSS3 `cursor` property.",spec:"http://www.w3.org/TR/css3-ui/#cursor",status:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/cursor",title:"MDN Documentation"}],bugs:[],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},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"},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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"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",24:"n"},and_chr:{38:"n"},and_ff:{32:"n"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"Chrome, Safari and Firefox also support the unofficial `grab` and `grabbing` values (with prefix)",notes_by_num:{},usage_perc_y:50.93,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"cursors, pointers",ie_id:"",chrome_id:"",shown:!0}},{}],69:[function(a,b){b.exports={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-size1",status:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/tab-size",title:"MDN article"}],bugs:[],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},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 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"},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:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"y",28:"y",29:"y",30:"y",31:"y",32:"y",33:"y",34:"y",35:"y",36:"y",37:"y",38:"y",39:"y",40:"y",41:"y",42:"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"},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:"y",16:"y",17:"y",18:"y",19:"y",20:"y",21:"y",22:"y",23:"y",24:"y",25:"y",26:"y",27:"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:"y"},op_mini:{"5.0-8.0":"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:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"y",10:"y"},op_mob:{10:"n",11:"y x",11.1:"y x",11.5:"y x",12:"y x",12.1:"y x",24:"y"},and_chr:{38:"y"},and_ff:{32:"y x"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:"",notes_by_num:{},usage_perc_y:73.05,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"tab-size,tab-width",ie_id:"",chrome_id:"",shown:!0}},{}],70:[function(a,b){b.exports={title:"Flexible Box Layout Module",description:"Method of positioning elements in horizontal or vertical stacks.",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"}],bugs:[{description:"IE10 and IE11 default values for `flex` are `0 0 auto` rather than `0 1 auto`, as per the draft spec, as of September 2013."},{description:"In IE10 and IE11, containers with `display: flex` and `flex-direction: column` will not properly calculate their flexed childrens' sizes if the container has `min-height` but no explicit `height` property. [See bug](https://connect.microsoft.com/IE/feedback/details/802625/min-height-and-flexbox-flex-direction-column-dont-work-together-in-ie-10-11-preview)."},{description:"In Chrome and Safari, the height of (non flex) children are not recognized in percentages. However Firefox and IE recognize and scale the children based on percentage heights. [Chrome bug](http://crbug.com/341310)"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x #2",11:"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"},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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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:"y","4.4.3-4.4.4":"y",37:"y"},bb:{7:"a x #1",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"y",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"a x #2",11:"y"},and_uc:{9.9:"a x #1"}},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"},usage_perc_y:76.33,usage_perc_a:12.12,ucprefix:!1,parent:"",keywords:"flex-box,flex-direction,flex-wrap,flex-flow,flex-grow,flex-basis",ie_id:"flexbox",chrome_id:"4837301406400512",shown:!0}},{}],71:[function(a,b){b.exports={title:"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:"wd",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"}],bugs:[],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"y"},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:"a x",11:"a x",12:"a x",13:"a x",14:"a 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"},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",17:"a x",18:"a x",19:"a x",20:"a 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"},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"},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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"y x"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"y x"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"y x"}},notes:"Partial support in older Firefox versions refers to using an older syntax. Partial support in older Chrome versions refers to lacking support in Mac OS X. ",notes_by_num:{},usage_perc_y:71.46,usage_perc_a:1.64,ucprefix:!1,parent:"",keywords:"font-feature,font-feature-settings,kern,kerning,font-variant-alternates,ligatures,font-variant-ligatures",ie_id:"",chrome_id:"",shown:!0}},{}],72:[function(a,b){b.exports={title:"Full Screen API",description:"API for allowing content (like a video or canvas element) to take up the entire screen.",spec:"http://www.w3.org/TR/fullscreen/",status:"wd",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"}],bugs:[{description:"Safari blocks access to keyboard events in fullscreen mode (as a security measure)."},{description:"IE 11 does not allow scrolling when document.documentElement is set to full screen."},{description:"IE 11 does not properly support fullscreen when opening from an iframe."},{description:"IE 11 doesn't allow going to fullscreen mode when the event that triggers `msRequestFullscreen()` is a `keydown` event (`keypress` does work)"},{description:"Opera 12.1 uses the older specificaton's `:fullscreen-ancestor` pseudo-class instead of the the `::backdrop` pseudo-element."}],categories:["JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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:"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"},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:"a 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"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"a x",6:"y x",6.1:"y x",7:"y x",7.1:"y x",8:"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:"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"},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:"n"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"a"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"a x"},ie_mob:{10:"n",11:"y x"},and_uc:{9.9:"n"}},notes:"Partial support refers to supporting an earlier draft of the spec.",notes_by_num:{},usage_perc_y:54.02,usage_perc_a:13.03,ucprefix:!1,parent:"",keywords:"full-screen",ie_id:"fullscreenapi",chrome_id:"5259513871466496",shown:!0}},{}],73:[function(a,b){b.exports={title:"Intrinsic & Extrinsic Sizing",description:"Allows for the heights and widths to be specified in intrinsic values using the fill-available, 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"}],bugs:[],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},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 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"},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",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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"y x"},bb:{7:"n",10:"y x"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"y x"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"n"}},notes:'Prefixes are on the values, not the property names (e.g. -webkit-min-content) Firefox currently supports the "-moz-available" property rather than "-moz-fill-available".',notes_by_num:{},usage_perc_y:69.7,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"fill-available,max-content,min-content,fit-content,contain-floats",ie_id:"cssintrinsicsizing",chrome_id:"5901353784180736",shown:!0}},{}],74:[function(a,b){b.exports={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/BetleyWhitehorne/CSS3MultiColumn",title:"Polyfill"}],bugs:[{description:"In Firefox, the property `column-span` (or `-moz-column-span`) does not yet work. See [the bug](https://bugzilla.mozilla.org/show_bug.cgi?id=616436)."},{description:"In Chrome, the `-webkit-column-count` directive does not yet work with print stylesheets. See the [following bug in Chromium](https://code.google.com/p/chromium/issues/detail?id=99358)."},{description:"Chrome is reported to incorrectly calculate the container height, and often breaks on margins, padding, and can display 1px of the next column at the bottom of the previous column."}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y",11:"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"},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"},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"},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"},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:"a x"},op_mini:{"5.0-8.0":"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",37:"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",24:"a x"},and_chr:{38:"a x"},and_ff:{32:"a x"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"a x"}},notes:"Partial support refers to not supporting the `break-before`, `break-after`, `break-inside` properties. Webkit browsers do have equivalent support for the non-standard `-webkit-column-break-*` properties while Firefox supports `page-break-*` to accomplish the same result.",notes_by_num:{},usage_perc_y:12.95,usage_perc_a:78.36,ucprefix:!1,parent:"",keywords:"column-count",ie_id:"multicolumnfullsupport",chrome_id:"6526151266664448",shown:!0}},{}],75:[function(a,b){b.exports={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:"cr",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"}],bugs:[],categories:["DOM","JS API"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a x",11:"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"},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"},safari:{3.1:"n",3.2:"n",4:"n",5:"n",5.1:"n",6:"n",6.1:"u",7:"u",7.1:"u",8:"u"},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"},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:"p"},op_mini:{"5.0-8.0":"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",37:"p"},bb:{7:"p",10:"p"},op_mob:{10:"n",11:"p",11.1:"p",11.5:"p",12:"p",12.1:"p",24:"p"},and_chr:{38:"p"},and_ff:{32:"p"},ie_mob:{10:"a x",11:"y"},and_uc:{9.9:"p"}},notes:"Partial support in IE10 refers the lack of pointerenter and pointerleave events. Firefox Nightly provides 'dom.w3c_pointer_events.enabled' option to support this specification starting with version 28.",notes_by_num:{},usage_perc_y:7.4,usage_perc_a:2.48,ucprefix:!1,parent:"",keywords:"pointerdown,pointermove,pointerup,pointercancel,pointerover,pointerout,pointerenter,pointerleave",ie_id:"pointerevents",chrome_id:"4504699138998272",shown:!0}},{}],76:[function(a,b){b.exports={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"}],bugs:[],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"n"},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"},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"},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",8:"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:"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"},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:"a x #2"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"y x"},ie_mob:{10:"n",11:"n"},and_uc:{9.9:"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 in Safari refers to not supporting the text-decoration-style property."},usage_perc_y:12.5,usage_perc_a:5.38,ucprefix:!1,parent:"",keywords:"text-decoration-line,text-decoration-style,text-decoration-color",ie_id:"",chrome_id:"",shown:!0}},{}],77:[function(a,b){b.exports={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:"wd",links:[{url:"https://developer.mozilla.org/en-US/docs/Web/CSS/text-size-adjust",title:"MDN Docs"}],bugs:[{description:"There is a bug in Webkit-based desktop browsers. If -webkit-text-size-adjust is explicitely set to none, Webkit-based desktop browsers, like Chrome or Safari, instead of ignoring the property, will prevent the user to zoom in or out the Web page."},{description:"If the viewport in IE Phone is set using element, the value of the CSS text-size-adjust property is ignored."}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"n",11:"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"},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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"n"},bb:{7:"n",10:"n"},op_mob:{10:"n",11:"n",11.1:"n",11.5:"n",12:"n",12.1:"n",24:"n"},and_chr:{38:"n"},and_ff:{32:"y x"},ie_mob:{10:"y x",11:"y x"},and_uc:{9.9:"y x"}},notes:"",notes_by_num:{},usage_perc_y:11.71,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:"",shown:!0}},{}],78:[function(a,b){b.exports={title:"CSS3 Transforms",description:"Method of transforming an element including rotating, scaling, etc.",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/CSS/-moz-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"}],bugs:[{description:"Scaling transforms in Android 2.3 fails to scale element background images."},{description:"Firefox and IE don't support CSS transforms on SVG elements (though SVG transform attributes do work)."},{description:"Transforms may break position:fixed styles of contained elements"}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"p",7:"p",8:"p",9:"y x",10:"y",11:"y"},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"},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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"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",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"y",11:"y"},and_uc:{9.9:"y x"}},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:{},usage_perc_y:90.59,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"transformation,translate,rotation,rotate,scale,css-transforms",ie_id:"transforms",chrome_id:"6437640580628480",shown:!0} -},{}],79:[function(a,b){b.exports={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"}],bugs:[{description:"Some configurations of Linux and older Windows machines (those without WebGL support) have trouble with 3D transforms and will treat them as if `perspective` was set as `none`."},{description:"Firefox on Windows [incorrectly renders plugin content within no-op 3D transforms](https://bugzilla.mozilla.org/show_bug.cgi?id=1048279)."}],categories:["CSS3"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"a",11:"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:"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"},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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"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",24:"y"},and_chr:{38:"y"},and_ff:{32:"y"},ie_mob:{10:"a",11:"a"},and_uc:{9.9:"y x"}},notes:"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.",notes_by_num:{},usage_perc_y:77.64,usage_perc_a:9.87,ucprefix:!1,parent:"",keywords:"css 3d,3dtransforms,translate3d,backface visibility,perspective",ie_id:"transforms,csstransformspreserve3d",chrome_id:"6437640580628480",shown:!0}},{}],80:[function(a,b){b.exports={title:"CSS user-select: none",description:"Method of preventing text/element selection using CSS. ",spec:"https://developer.mozilla.org/en-US/docs/CSS/user-select",status:"unoff",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"}],bugs:[],categories:["CSS"],stats:{ie:{5.5:"n",6:"n",7:"n",8:"n",9:"n",10:"y x",11:"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"},chrome:{4:"u",5:"u",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"},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"},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"},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:"y x"},op_mini:{"5.0-8.0":"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",37:"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",24:"y x"},and_chr:{38:"y x"},and_ff:{32:"y x"},ie_mob:{10:"y x",11:"y x"},and_uc:{9.9:"y x"}},notes:'Currently the user-select property does not appear in any W3C specification. Support information here is only for "none" value, not others.',notes_by_num:{},usage_perc_y:88.21,usage_perc_a:0,ucprefix:!1,parent:"",keywords:"",ie_id:"",chrome_id:"",shown:!0}},{}],81:[function(a,b){"use strict";var c=function(a,b,c){b&&Object.defineProperties(a,b),c&&Object.defineProperties(a.prototype,c)},d=function(a,b){a.prototype=Object.create(b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),a.__proto__=b},e=a("./container"),f=function(a){var b=function(b){this.type="atrule",a.call(this,b)};return d(b,a),c(b,null,{stringify:{writable:!0,value:function(a,b){var c="@"+this.name,d=this.params?this.stringifyRaw("params"):"";if("undefined"!=typeof this.afterName?c+=this.afterName:d&&(c+=" "),this.childs)this.stringifyBlock(a,c+d);else{var e=this.style("beforeRule");e&&a(e);var f=(this.between||"")+(b?";":"");a(c+d+f,this)}}},append:{writable:!0,value:function(b){return this.childs||(this.childs=[]),a.prototype.append.call(this,b)}},prepend:{writable:!0,value:function(b){return this.childs||(this.childs=[]),a.prototype.prepend.call(this,b)}},insertBefore:{writable:!0,value:function(b,c){return this.childs||(this.childs=[]),a.prototype.insertBefore.call(this,b,c)}},insertAfter:{writable:!0,value:function(b,c){return this.childs||(this.childs=[]),a.prototype.insertAfter.call(this,b,c)}}}),b}(e);b.exports=f},{"./container":83}],82:[function(a,b){"use strict";var c=function(a,b,c){b&&Object.defineProperties(a,b),c&&Object.defineProperties(a.prototype,c)},d=function(a,b){a.prototype=Object.create(b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),a.__proto__=b},e=a("./node"),f=function(a){var b=function(b){this.type="comment",a.call(this,b)};return d(b,a),c(b,null,{styleMap:{writable:!0,value:function(){return{commentLeft:this.left,commentRight:this.right}}},stringify:{writable:!0,value:function(a){this.before&&a(this.before);var b=this.style("commentLeft"),c=this.style("commentRight");a("/*"+b+this.text+c+"*/",this)}}}),b}(e);b.exports=f},{"./node":89}],83:[function(a,b){"use strict";var c=function(a,b,c){b&&Object.defineProperties(a,b),c&&Object.defineProperties(a.prototype,c)},d=function(a,b){a.prototype=Object.create(b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),a.__proto__=b},e=a("./node"),f=a("./declaration"),g=function(a){var b=function(){a.apply(this,arguments)};return d(b,a),c(b,null,{styleMap:{writable:!0,value:function(){var a={beforeRule:this.before,beforeOpen:this.between};return this.childs&&this.childs.length?a.beforeClose=this.after:a.emptyBody=this.after,a}},stringifyContent:{writable:!0,value:function(a){if(this.childs){for(var b,c=this.childs.length-1;c>0&&"comment"==this.childs[c].type;)c-=1;for(b=0;b=a&&(this.indexes[g]=f+d.length);return this}},insertAfter:{writable:!0,value:function(a,b){a=this.index(a);for(var c=this.normalize(b,this.childs[a]).reverse(),d=0;da&&(this.indexes[f]=e+c.length);return this}},remove:{writable:!0,value:function(a){a=this.index(a),this.childs.splice(a,1);var b;for(var c in this.indexes)b=this.indexes[c],b>=a&&(this.indexes[c]=b-1);return this}},every:{writable:!0,value:function(a){return this.childs.every(a)}},some:{writable:!0,value:function(a){return this.childs.some(a)}},index:{writable:!0,value:function(a){return"number"==typeof a?a:this.childs.indexOf(a)}},first:{get:function(){return this.childs?this.childs[0]:void 0}},last:{get:function(){return this.childs?this.childs[this.childs.length-1]:void 0}},normalize:{writable:!0,value:function(a,b){a.type||Array.isArray(a)||(a=new f(a));var c;"root"==a.type?c=a.childs:Array.isArray(a)?c=a.map(function(a){return a.clone()}):(a.parent&&(a=a.clone()),c=[a]);for(var d=0;d",this.message+=":"+c+":"+d+": "+b};return e(b,a),d(b,null,{highlight:{writable:!0,value:function(a){for(var b=this.line-1,d=this.source.split("\n"),e=b>0?d[b-1]+"\n":"",f=d[b],g=b",this.safe=!!this.opts.safe,"inline"==this.opts.map&&(this.opts.map={inline:!0},console.warn('Shortcut map: "inline" is deprecated and will be remove in 3.1')),this.opts.from&&(this.file=f.resolve(this.opts.from));var c=new e(this.css,this.opts,this.id);if(c.text){this.map=c;var d=c.consumer().file;!this.file&&d&&(this.file=this.mapResolve(d))}this.from=this.file?this.file:this.id,this.map&&(this.map.file=this.from)};return c(a,null,{error:{writable:!0,value:function(a,b,c){throw new d(this,a,b,c)}},origin:{writable:!0,value:function(a,b){if(!this.map)return!1;var c=this.map.consumer(),d=c.originalPositionFor({line:a,column:b});if(!d.source)return!1;var e={file:this.mapResolve(d.source),line:d.line,column:d.column},f=c.sourceContentFor(e.file);return f&&(e.source=f),e}},mapResolve:{writable:!0,value:function(a){return f.resolve(this.map.consumer().sourceRoot||".",a)}}}),a}();b.exports=h},{"./css-syntax-error":84,"./parser":91,"./previous-map":93,path:49}],87:[function(a,b){"use strict";var c={split:function(a,b,c){for(var d=[],e="",f=!1,g=0,h=!1,i=!1,j=0;j0&&(g-=1);else if(0===g)for(var l=0;l0}},previous:{writable:!0,value:function(){var a=this;return this.previousMaps||(this.previousMaps=[],this.root.eachInside(function(b){b.source&&b.source.map&&-1==a.previousMaps.indexOf(b.source.map)&&a.previousMaps.push(b.source.map)})),this.previousMaps}},isInline:{writable:!0,value:function(){if("undefined"!=typeof this.mapOpts.inline)return this.mapOpts.inline;var a=this.mapOpts.annotation;return"undefined"!=typeof a&&a!==!0?!1:this.previous().length?this.previous().some(function(a){return a.inline}):!0}},isSourcesContent:{writable:!0,value:function(){return"undefined"!=typeof this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:this.previous().length?this.previous().some(function(a){return a.withContent()}):!0}},clearAnnotation:{writable:!0,value:function(){if(this.mapOpts.annotation!==!1)for(var a,b=this.root.childs.length-1;b>=0;b--)if(a=this.root.childs[b],"comment"==a.type&&a.text.match(/^# sourceMappingURL=/))return void this.root.remove(b)}},setSourcesContent:{writable:!0,value:function(){var a=this,b={};this.root.eachInside(function(c){if(c.source){var d=c.source.file||c.source.id;if(d&&!b[d]){b[d]=!0;var e=a.relative(d);a.map.setSourceContent(e,c.source.content)}}})}},applyPrevMaps:{writable:!0,value:function(){for(var a,b=this.previous(),c=0;c0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}},relative:{writable:!0,value:function(a){var b=this.opts.to?f.dirname(this.opts.to):".";return"string"==typeof this.mapOpts.annotation&&(b=f.dirname(f.resolve(b,this.mapOpts.annotation))),a=f.relative(b,a),"\\"==f.sep?a.replace(/\\/g,"/"):a}},sourcePath:{writable:!0,value:function(a){return this.relative(a.source.file||a.source.id)}},stringify:{writable:!0,value:function(){var a=this;this.css="",this.map=new d.SourceMapGenerator({file:this.outputFile()});var b,c,e=1,f=1,g=function(d,g,h){a.css+=d,g&&g.source&&g.source.start&&"end"!=h&&a.map.addMapping({source:a.sourcePath(g),original:{line:g.source.start.line,column:g.source.start.column-1},generated:{line:e,column:f-1}}),b=d.match(/\n/g),b?(e+=b.length,c=d.lastIndexOf("\n"),f=d.length-c):f+=d.length,g&&g.source&&g.source.end&&"start"!=h&&a.map.addMapping({source:a.sourcePath(g),original:{line:g.source.end.line,column:g.source.end.column},generated:{line:e,column:f}})};this.root.stringify(g)}},generate:{writable:!0,value:function(){return this.clearAnnotation(),this.isMap()?this.generateMap():[this.root.toString()]}}}),a}();b.exports=g},{"./result":94,"js-base64":99,path:49,"source-map":100}],89:[function(a,b){"use strict";var c=function(a,b,c){b&&Object.defineProperties(a,b),c&&Object.defineProperties(a.prototype,c)},d=function(a,b){if("object"!=typeof a)return a;var c=new a.constructor;for(var e in a)if(a.hasOwnProperty(e)){var f=a[e];"parent"==e&&"object"==typeof f?b&&(c[e]=b):c[e]="source"==e?f:f instanceof Array?f.map(function(a){return d(a,c)}):d(f,c)}return c},e=function(){var a=function(a){void 0===a&&(a={});for(var b in a)this[b]=a[b]};return c(a,null,{removeSelf:{writable:!0,value:function(){return this.parent&&this.parent.remove(this),this}},replace:{writable:!0,value:function(a){return this.parent.insertBefore(this,a),this.parent.remove(this),this}},toString:{writable:!0,value:function(){var a="",b=function(b){return a+=b};return this.stringify(b),a}},clone:{writable:!0,value:function(a){void 0===a&&(a={});var b=d(this);for(var c in a)b[c]=a[c];return b}},toJSON:{writable:!0,value:function(){var a={};for(var b in this)if(this.hasOwnProperty(b)&&"parent"!=b){var c=this[b];a[b]=c instanceof Array?c.map(function(a){return"object"==typeof a&&a.toJSON?a.toJSON():a}):"object"==typeof c&&c.toJSON?c.toJSON():c}return a}},styleMap:{writable:!0,value:function(){return{}}},style:{writable:!0,value:function(a){var b=this.styleMap()[a];if("undefined"!=typeof b)return b;var c=this.parent;if(!c&&("beforeRule"==a||"beforeDecl"==a))return"";if("beforeRule"==a&&!c.parent&&c.first==this)return"";if(!c)return this.defaultStyle[a];for(var d=c;d.parent;)d=d.parent;return d.styleCache||(d.styleCache={}),"undefined"!=typeof d.styleCache[a]?d.styleCache[a]:(d.eachInside(function(c){return b=c.styleMap()[a],"undefined"!=typeof b?!1:void 0}),"undefined"==typeof b&&(b=this.defaultStyle[a]),d.styleCache[a]=b,b)}},stringifyRaw:{writable:!0,value:function(a){var b=this[a],c=this["_"+a];return c&&c.value===b?c.raw:b}}}),a}();e.prototype.defaultStyle={colon:": ",beforeDecl:"\n ",commentLeft:" ",commentRight:" ",beforeRule:"\n",beforeOpen:" ",beforeClose:"\n",emptyBody:""},b.exports=e},{}],90:[function(a,b){"use strict";var c=a("./parser"),d=a("./input");b.exports=function(a,b){var e=new d(a,b),f=new c(e);return f.tokenize(),f.loop(),f.root}},{"./input":86,"./parser":91}],91:[function(a,b){"use strict";var c=function(a,b,c){b&&Object.defineProperties(a,b),c&&Object.defineProperties(a.prototype,c)},d=a("./declaration"),e=a("./tokenize"),f=a("./comment"),g=a("./at-rule"),h=a("./root"),i=a("./rule"),j=function(){var a=function(a){this.input=a,this.root=new h,this.current=this.root,this.spaces="",this.semicolon=!1,this.input.map&&(this.root.prevMap=this.input.map)};return c(a,null,{tokenize:{writable:!0,value:function(){this.tokens=e(this.input)}},loop:{writable:!0,value:function(){for(var a;void 0!==(a=this.tokens.shift());)this.nextToken(a)||(this.spaces+=a[1]);this.endFile()}},nextToken:{writable:!0,value:function(a){return this.word(a)||this.end(a)||this.comment(a)||this.atrule(a)||this.emptyRule(a)}},comment:{writable:!0,value:function(a){if("comment"!=a[0])return!1;var b=new f;this.init(b,a[2],a[3]),b.source.end={line:a[4],column:a[5]};var c=a[1].slice(2,-2);if(c.match(/^\s*$/))b.left=c,b.text="",b.right="";else{var d=c.match(/^(\s*)([^]*[^\s])(\s*)$/);b.left=d[1],b.text=d[2],b.right=d[3]}return!0}},emptyRule:{writable:!0,value:function(a){if("{"==a[0]){var b=new i;return this.init(b,a[2],a[3]),b.between="",b.selector="",this.current=b,!0}}},word:{writable:!0,value:function(a){if("word"==a[0]||":"==a[0]){for(var b,c=!1,d=[a],e=!1;;){if(b=this.tokens.shift(),!b){e=!0;break}if(";"==b[0]){if(d.push(b),c)return this.decl(d),!0;break}if("{"==b[0])return this.rule(d),!0;if("}"==b[0]){this.tokens.unshift(b),e=!0;break}if("at-word"==b[0]){this.tokens.unshift(b);break}":"==b[0]&&(c=!0),d.push(b)}if(e&&c){for(;d.length&&(b=d[d.length-1],"space"==b[0]||"comment"==b[0]);)this.tokens.unshift(d.pop());return this.decl(d),!0}return this.input.safe?(this.spaces+=this.map(d,function(a){return a[1]}).join(""),!0):void this.input.error("Unknown word",a[2],a[3])}}},rule:{writable:!0,value:function(a){var b=new i;this.init(b,a[0][2],a[0][3]),b.between=this.spacesFromEnd(a),this.raw(b,"selector",a),this.current=b}},decl:{writable:!0,value:function(a){var b=new d;this.init(b);var c=a[a.length-1];for(";"==c[0]?(b.source.end={line:c[2],column:c[3]},this.semicolon=!0,a.pop()):b.source.end={line:c[4],column:c[5]};"word"!=a[0][0];)b.before+=a.shift()[1];b.source.start={line:a[0][2],column:a[0][3]},b.prop=a.shift()[1],b.between="";for(var e;a.length&&(e=a.shift(),b.between+=e[1],":"!=e[0]);)"space"!=e[0]&&"comment"!=e[0]&&this.unknownWord(b,e);("_"==b.prop[0]||"*"==b.prop[0])&&(b.before+=b.prop[0],b.prop=b.prop.slice(1)),b.between+=this.spacesFromStart(a);var f;for(f=2;f0;f--){if(e=a[f],"!important"==e[1]){b.important=!0;var g=this.stringFrom(a,f);g=this.spacesFromEnd(a)+g," !important"!=g&&(b._important=g);break}if("space"!=e[0]&&"comment"!=e[0])break}this.raw(b,"value",a)}},atrule:{writable:!0,value:function(a){if("at-word"==a[0]){var b=new g;b.name=a[1].slice(1),""===b.name&&(this.input.safe?b.name="":this.input.error("At-rule without name",a[2],a[3])),this.init(b,a[2],a[3]);for(var c=!1,d=!1,e=[];;){if(a=this.tokens.shift(),!a){c=!0;break}if(";"==a[0]){b.source.end={line:a[2],column:a[3]},this.semicolon=!0;break}if("{"==a[0]){d=!0;break}e.push(a)}return b.between=this.spacesFromEnd(e),e.length?(b.afterName=this.spacesFromStart(e),this.raw(b,"params",e),c&&(a=e[e.length-1],b.source.end={line:a[4],column:a[5]},this.spaces=b.between,b.between="")):(b.afterName="",b.params=""),d&&(b.childs=[],this.current=b),!0}}},end:{writable:!0,value:function(a){return"}"==a[0]?(this.semicolon&&(this.current.semicolon=!0,this.semicolon=!1),this.current.after=(this.current.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end={line:a[2],column:a[3]},this.current=this.current.parent):this.input.safe?this.current.after+="}":this.input.error("Unexpected }",a[2],a[3]),!0):void 0}},endFile:{writable:!0,value:function(){if(this.current.parent&&!this.input.safe){var a=this.current.source.start;this.input.error("Unclosed block",a.line,a.column)}for(this.semicolon&&(this.current.semicolon=!0),this.current.after=(this.current.after||"")+this.spaces;this.current.parent;)this.current=this.current.parent,this.current.after=""}},unknownWord:{writable:!0,value:function(a,b){this.input.safe?(a.source.start={line:b[2],column:b[3]},a.before+=a.prop+a.between,a.prop=tokens.shift()[1],a.between=""):this.input.error("Unknown word",b[2],b[3])}},missedSemicolon:{writable:!0,value:function(a,b){if(this.input.safe){var c;for(c=b-1;c>=0&&"word"!=a[c][0];c--);for(c-=1;c>=0;c--)if("space"!=a[c][0]){c+=1;break}var d=a.splice(c,a.length-c);this.decl(d)}else{for(var e,f=0,g=b-1;g>=0&&(e=a[g],"space"==e[0]||(f+=1,2!=f));g--);this.input.error("Missed semicolon",e[4],e[5])}}},init:{writable:!0,value:function(a,b,c){this.current.push(a),a.source={start:{line:b,column:c},content:this.input.css},this.input.map&&(a.source.map=this.input.map),this.input.file?a.source.file=this.input.file:a.source.id=this.input.id,a.before=this.spaces,this.spaces="",this.semicolon=!1}},raw:{writable:!0,value:function(a,b,c){var d=!0,e=this.map(c,function(a){return"comment"==a[0]?(d=!1,""):a[1]}).join("");if(!d){var f=c.map(function(a){return a[1]}).join("");a["_"+b]={value:e,raw:f}}a[b]=e}},spacesFromEnd:{writable:!0,value:function(a){for(var b,c="";a.length&&(b=a[a.length-1],"space"==b[0]||"comment"==b[0]);)c+=a.pop()[1];return c}},spacesFromStart:{writable:!0,value:function(a){for(var b,c="";a.length&&(b=a[0],"space"==b[0]||"comment"==b[0]);)c+=a.shift()[1];return c}},stringFrom:{writable:!0,value:function(a,b){var c=a.splice(b,a.length-b);return this.map(c,function(a){return a[1]}).join("")}},map:{writable:!0,value:function(a,b){for(var c=[],d=0;d0)}},startWith:{writable:!0,value:function(a,b){return a?a.substr(0,b.length)==b:!1}},loadAnnotation:{writable:!0,value:function(a){var b=a.match(/\/\*\s*# sourceMappingURL=(.*)\s*\*\//);b&&(this.annotation=b[1].trim())}},decodeInline:{writable:!0,value:function(a){var b="data:application/json,",c="data:application/json;base64,";if(this.startWith(a,b))return decodeURIComponent(a.substr(b.length));if(this.startWith(a,c))return e.decode(a.substr(c.length));var d=a.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+d)}},loadMap:{writable:!0,value:function(a,b){if(b!==!1){if(b){if("string"==typeof b)return b;if(b instanceof d.SourceMapConsumer)return d.SourceMapGenerator.fromSourceMap(b).toString();if(b instanceof d.SourceMapGenerator)return b.toString();if("object"==typeof b&&b.mappings)return JSON.stringify(b);throw new Error("Unsupported previous source map format: "+b.toString())}if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var c=this.annotation;if(a&&(c=f.join(f.dirname(a),c)),this.root=f.dirname(c),g.existsSync&&g.existsSync(c))return g.readFileSync(c,"utf-8").toString().trim()}}}}}),a}();b.exports=h},{fs:44,"js-base64":99,path:49,"source-map":100}],94:[function(a,b){"use strict";var c=function(a,b,c){b&&Object.defineProperties(a,b),c&&Object.defineProperties(a.prototype,c)},d=a("./map-generator"),e=function(){var a=function(a,b){void 0===b&&(b={}),this.root=a,this.opts=b};return c(a,null,{map:{get:function(){return this.cssCached||this.stringify(),this.mapCached}},css:{get:function(){return this.cssCached||this.stringify(),this.cssCached}},toString:{writable:!0,value:function(){return this.css}},stringify:{writable:!0,value:function(){var a=new d(this.root,this.opts),b=a.generate();this.cssCached=b[0],this.mapCached=b[1]}}}),a}();b.exports=e},{"./map-generator":88}],95:[function(a,b){"use strict";var c=function(a,b,c){b&&Object.defineProperties(a,b),c&&Object.defineProperties(a.prototype,c)},d=function(a,b){a.prototype=Object.create(b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),a.__proto__=b},e=(a("./declaration"),a("./container")),f=(a("./comment"),a("./at-rule"),a("./result")),g=(a("./rule"),function(a){var b=function(b){this.type="root",this.childs=[],a.call(this,b) -};return d(b,a),c(b,null,{remove:{writable:!0,value:function(b){return b=this.index(b),0===b&&this.childs.length>1&&(this.childs[1].before=this.childs[b].before),a.prototype.remove.call(this,b)}},normalize:{writable:!0,value:function(b,c,d){for(var e=a.prototype.normalize.call(this,b,c,d),f=0;f1?c.before=this.childs[1].before:1==this.childs.length&&(c.before=this.after):this.childs.length>1?c&&(e[f].before=c.before):e[f].before=this.after;return e}},stringify:{writable:!0,value:function(a){this.stringifyContent(a),this.after&&a(this.after)}},toResult:{writable:!0,value:function(a){return void 0===a&&(a={}),new f(this,a)}}}),b}(e));b.exports=g},{"./at-rule":81,"./comment":82,"./container":83,"./declaration":85,"./result":94,"./rule":96}],96:[function(a,b){"use strict";var c=function(a,b,c){b&&Object.defineProperties(a,b),c&&Object.defineProperties(a.prototype,c)},d=function(a,b){a.prototype=Object.create(b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),a.__proto__=b},e=a("./container"),f=(a("./declaration"),a("./list")),g=function(a){var b=function(b){this.type="rule",this.childs=[],a.call(this,b)};return d(b,a),c(b,null,{selectors:{get:function(){return f.comma(this.selector)},set:function(a){this.selector=a.join(", ")}},stringify:{writable:!0,value:function(a){this.stringifyBlock(a,this.stringifyRaw("selector"))}}}),b}(e);b.exports=g},{"./container":83,"./declaration":85,"./list":87}],97:[function(a,b){"use strict";var c="'".charCodeAt(0),d='"'.charCodeAt(0),e="\\".charCodeAt(0),f="/".charCodeAt(0),g="\n".charCodeAt(0),h=" ".charCodeAt(0),i="\f".charCodeAt(0),j=" ".charCodeAt(0),k="\r".charCodeAt(0),l="(".charCodeAt(0),m="{".charCodeAt(0),n="}".charCodeAt(0),o=";".charCodeAt(0),p="*".charCodeAt(0),q=":".charCodeAt(0),r="@".charCodeAt(0),s=/[ \n\t\r\{'"/]/g,t=/[ \n\t\r\(\{\}:;@!'"]|\/(?=\*)/g;b.exports=function(a){for(var b,u,v,w,x,y,z,A,B,C,D=[],E=a.css.valueOf(),F=E.length,G=-1,H=1,I=0,J=function(b,c){a.safe?(E+=c,u=E.length-1):a.error("Unclosed "+b,H,I-G)};F>I;){switch(b=E.charCodeAt(I),b==g&&(G=I,H+=1),b){case g:case h:case i:case j:case k:u=I;do u+=1,b=E.charCodeAt(u),b==g&&(G=u,H+=1);while(b==h||b==g||b==j||b==k||b==i);D.push(["space",E.slice(I,u)]),I=u-1;break;case m:D.push(["{","{",H,I-G]);break;case n:D.push(["}","}",H,I-G]);break;case q:D.push([":",":",H,I-G]);break;case o:D.push([";",";",H,I-G]);break;case c:case d:v=b==c?"'":'"',u=I;do for(B=!1,u=E.indexOf(v,u+1),-1==u&&J("quote",v),C=u;E.charCodeAt(C-1)==e;)C-=1,B=!B;while(B);D.push(["string",E.slice(I,u+1),H,I-G,H,u-G]),I=u;break;case l:u=I;do for(B=!1,u=E.indexOf(")",u+1),-1==u&&J("bracket",")"),C=u;E.charCodeAt(C-1)==e;)C-=1,B=!B;while(B);y=E.slice(I,u+1),w=y.split("\n"),x=w.length-1,x>0?(z=H+x,A=u-w[x].length):(z=H,A=G),D.push(["brackets",y,H,I-G,z,u-A]),G=A,H=z,I=u;break;case r:s.lastIndex=I+1,s.test(E),u=0===s.lastIndex?E.length-1:s.lastIndex-2,D.push(["at-word",E.slice(I,u+1),H,I-G,H,u-G]),I=u;break;default:b==f&&E.charCodeAt(I+1)==p?(u=E.indexOf("*/",I+2)+1,0===u&&J("comment","*/"),y=E.slice(I,u+1),w=y.split("\n"),x=w.length-1,x>0?(z=H+x,A=u-w[x].length):(z=H,A=G),D.push(["comment",y,H,I-G,z,u-A]),G=A,H=z,I=u):(t.lastIndex=I+1,t.test(E),u=0===t.lastIndex?E.length-1:t.lastIndex-2,D.push(["word",E.slice(I,u+1),H,I-G,H,u-G]),I=u)}I++}return D}},{}],98:[function(a,b){"use strict";var c={prefix:function(a){if("-"==a[0]){var b=a.indexOf("-",1);return a.substr(0,b+1)}return""},unprefixed:function(a){if("-"==a[0]){var b=a.indexOf("-",1);return a.substr(b+1)}return a}};b.exports=c},{}],99:[function(a,b){(function(c){!function(c){"use strict";var d,e=c.Base64,f="2.1.5";"undefined"!=typeof b&&b.exports&&(d=a("buffer").Buffer);var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=function(a){for(var b={},c=0,d=a.length;d>c;c++)b[a.charAt(c)]=c;return b}(g),i=String.fromCharCode,j=function(a){if(a.length<2){var b=a.charCodeAt(0);return 128>b?a:2048>b?i(192|b>>>6)+i(128|63&b):i(224|b>>>12&15)+i(128|b>>>6&63)+i(128|63&b)}var b=65536+1024*(a.charCodeAt(0)-55296)+(a.charCodeAt(1)-56320);return i(240|b>>>18&7)+i(128|b>>>12&63)+i(128|b>>>6&63)+i(128|63&b)},k=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,l=function(a){return a.replace(k,j)},m=function(a){var b=[0,2,1][a.length%3],c=a.charCodeAt(0)<<16|(a.length>1?a.charCodeAt(1):0)<<8|(a.length>2?a.charCodeAt(2):0),d=[g.charAt(c>>>18),g.charAt(c>>>12&63),b>=2?"=":g.charAt(c>>>6&63),b>=1?"=":g.charAt(63&c)];return d.join("")},n=c.btoa?function(a){return c.btoa(a)}:function(a){return a.replace(/[\s\S]{1,3}/g,m)},o=d?function(a){return new d(a).toString("base64")}:function(a){return n(l(a))},p=function(a,b){return b?o(a).replace(/[+\/]/g,function(a){return"+"==a?"-":"_"}).replace(/=/g,""):o(a)},q=function(a){return p(a,!0)},r=new RegExp(["[À-ß][€-¿]","[à-ï][€-¿]{2}","[ð-÷][€-¿]{3}"].join("|"),"g"),s=function(a){switch(a.length){case 4:var b=(7&a.charCodeAt(0))<<18|(63&a.charCodeAt(1))<<12|(63&a.charCodeAt(2))<<6|63&a.charCodeAt(3),c=b-65536;return i((c>>>10)+55296)+i((1023&c)+56320);case 3:return i((15&a.charCodeAt(0))<<12|(63&a.charCodeAt(1))<<6|63&a.charCodeAt(2));default:return i((31&a.charCodeAt(0))<<6|63&a.charCodeAt(1))}},t=function(a){return a.replace(r,s)},u=function(a){var b=a.length,c=b%4,d=(b>0?h[a.charAt(0)]<<18:0)|(b>1?h[a.charAt(1)]<<12:0)|(b>2?h[a.charAt(2)]<<6:0)|(b>3?h[a.charAt(3)]:0),e=[i(d>>>16),i(d>>>8&255),i(255&d)];return e.length-=[0,0,2,1][c],e.join("")},v=c.atob?function(a){return c.atob(a)}:function(a){return a.replace(/[\s\S]{1,4}/g,u)},w=d?function(a){return new d(a,"base64").toString()}:function(a){return t(v(a))},x=function(a){return w(a.replace(/[-_]/g,function(a){return"-"==a?"+":"/"}).replace(/[^A-Za-z0-9\+\/]/g,""))},y=function(){var a=c.Base64;return c.Base64=e,a};if(c.Base64={VERSION:f,atob:v,btoa:n,fromBase64:x,toBase64:p,utob:l,encode:p,encodeURI:q,btou:t,decode:x,noConflict:y},"function"==typeof Object.defineProperty){var z=function(a){return{value:a,enumerable:!1,writable:!0,configurable:!0}};c.Base64.extendString=function(){Object.defineProperty(String.prototype,"fromBase64",z(function(){return x(this)})),Object.defineProperty(String.prototype,"toBase64",z(function(a){return p(this,a)})),Object.defineProperty(String.prototype,"toBase64URI",z(function(){return p(this,!0)}))}}}(this),this.Meteor&&(Base64=c.Base64)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{buffer:45}],100:[function(a,b,c){c.SourceMapGenerator=a("./source-map/source-map-generator").SourceMapGenerator,c.SourceMapConsumer=a("./source-map/source-map-consumer").SourceMapConsumer,c.SourceNode=a("./source-map/source-node").SourceNode},{"./source-map/source-map-consumer":105,"./source-map/source-map-generator":106,"./source-map/source-node":107}],101:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(){this._array=[],this._set={}}var d=a("./util");c.fromArray=function(a,b){for(var d=new c,e=0,f=a.length;f>e;e++)d.add(a[e],b);return d},c.prototype.add=function(a,b){var c=this.has(a),e=this._array.length;(!c||b)&&this._array.push(a),c||(this._set[d.toSetString(a)]=e)},c.prototype.has=function(a){return Object.prototype.hasOwnProperty.call(this._set,d.toSetString(a))},c.prototype.indexOf=function(a){if(this.has(a))return this._set[d.toSetString(a)];throw new Error('"'+a+'" is not in the set.')},c.prototype.at=function(a){if(a>=0&&aa?(-a<<1)+1:(a<<1)+0}function d(a){var b=1===(1&a),c=a>>1;return b?-c:c}var e=a("./base64"),f=5,g=1<>>=f,g>0&&(b|=i),d+=e.encode(b);while(g>0);return d},b.decode=function(a,b){var c,g,j=0,k=a.length,l=0,m=0;do{if(j>=k)throw new Error("Expected more digits in base 64 VLQ value.");g=e.decode(a.charAt(j++)),c=!!(g&i),g&=h,l+=g<0?b-g>1?c(g,b,d,e,f):e[g]:g-a>1?c(a,g,d,e,f):0>a?null:e[a]}b.search=function(a,b,d){return b.length>0?c(-1,b.length,a,b,d):null}})},{amdefine:109}],105:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(a){var b=a;"string"==typeof a&&(b=JSON.parse(a.replace(/^\)\]\}'/,"")));var c=d.getArg(b,"version"),e=d.getArg(b,"sources"),g=d.getArg(b,"names",[]),h=d.getArg(b,"sourceRoot",null),i=d.getArg(b,"sourcesContent",null),j=d.getArg(b,"mappings"),k=d.getArg(b,"file",null);if(c!=this._version)throw new Error("Unsupported version: "+c);this._names=f.fromArray(g,!0),this._sources=f.fromArray(e,!0),this.sourceRoot=h,this.sourcesContent=i,this._mappings=j,this.file=k}var d=a("./util"),e=a("./binary-search"),f=a("./array-set").ArraySet,g=a("./base64-vlq");c.fromSourceMap=function(a){var b=Object.create(c.prototype);return b._names=f.fromArray(a._names.toArray(),!0),b._sources=f.fromArray(a._sources.toArray(),!0),b.sourceRoot=a._sourceRoot,b.sourcesContent=a._generateSourcesContent(b._sources.toArray(),b.sourceRoot),b.file=a._file,b.__generatedMappings=a._mappings.slice().sort(d.compareByGeneratedPositions),b.__originalMappings=a._mappings.slice().sort(d.compareByOriginalPositions),b},c.prototype._version=3,Object.defineProperty(c.prototype,"sources",{get:function(){return this._sources.toArray().map(function(a){return null!=this.sourceRoot?d.join(this.sourceRoot,a):a},this)}}),c.prototype.__generatedMappings=null,Object.defineProperty(c.prototype,"_generatedMappings",{get:function(){return this.__generatedMappings||(this.__generatedMappings=[],this.__originalMappings=[],this._parseMappings(this._mappings,this.sourceRoot)),this.__generatedMappings}}),c.prototype.__originalMappings=null,Object.defineProperty(c.prototype,"_originalMappings",{get:function(){return this.__originalMappings||(this.__generatedMappings=[],this.__originalMappings=[],this._parseMappings(this._mappings,this.sourceRoot)),this.__originalMappings}}),c.prototype._nextCharIsMappingSeparator=function(a){var b=a.charAt(0);return";"===b||","===b},c.prototype._parseMappings=function(a){for(var b,c=1,e=0,f=0,h=0,i=0,j=0,k=a,l={};k.length>0;)if(";"===k.charAt(0))c++,k=k.slice(1),e=0;else if(","===k.charAt(0))k=k.slice(1);else{if(b={},b.generatedLine=c,g.decode(k,l),b.generatedColumn=e+l.value,e=b.generatedColumn,k=l.rest,k.length>0&&!this._nextCharIsMappingSeparator(k)){if(g.decode(k,l),b.source=this._sources.at(i+l.value),i+=l.value,k=l.rest,0===k.length||this._nextCharIsMappingSeparator(k))throw new Error("Found a source, but no line and column");if(g.decode(k,l),b.originalLine=f+l.value,f=b.originalLine,b.originalLine+=1,k=l.rest,0===k.length||this._nextCharIsMappingSeparator(k))throw new Error("Found a source and line, but no column");g.decode(k,l),b.originalColumn=h+l.value,h=b.originalColumn,k=l.rest,k.length>0&&!this._nextCharIsMappingSeparator(k)&&(g.decode(k,l),b.name=this._names.at(j+l.value),j+=l.value,k=l.rest)}this.__generatedMappings.push(b),"number"==typeof b.originalLine&&this.__originalMappings.push(b)}this.__generatedMappings.sort(d.compareByGeneratedPositions),this.__originalMappings.sort(d.compareByOriginalPositions)},c.prototype._findMapping=function(a,b,c,d,f){if(a[c]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+a[c]);if(a[d]<0)throw new TypeError("Column must be greater than or equal to 0, got "+a[d]);return e.search(a,b,f)},c.prototype.originalPositionFor=function(a){var b={generatedLine:d.getArg(a,"line"),generatedColumn:d.getArg(a,"column")},c=this._findMapping(b,this._generatedMappings,"generatedLine","generatedColumn",d.compareByGeneratedPositions);if(c&&c.generatedLine===b.generatedLine){var e=d.getArg(c,"source",null);return null!=e&&null!=this.sourceRoot&&(e=d.join(this.sourceRoot,e)),{source:e,line:d.getArg(c,"originalLine",null),column:d.getArg(c,"originalColumn",null),name:d.getArg(c,"name",null)}}return{source:null,line:null,column:null,name:null}},c.prototype.sourceContentFor=function(a){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(a=d.relative(this.sourceRoot,a)),this._sources.has(a))return this.sourcesContent[this._sources.indexOf(a)];var b;if(null!=this.sourceRoot&&(b=d.urlParse(this.sourceRoot))){var c=a.replace(/^file:\/\//,"");if("file"==b.scheme&&this._sources.has(c))return this.sourcesContent[this._sources.indexOf(c)];if((!b.path||"/"==b.path)&&this._sources.has("/"+a))return this.sourcesContent[this._sources.indexOf("/"+a)]}throw new Error('"'+a+'" is not in the SourceMap.')},c.prototype.generatedPositionFor=function(a){var b={source:d.getArg(a,"source"),originalLine:d.getArg(a,"line"),originalColumn:d.getArg(a,"column")};null!=this.sourceRoot&&(b.source=d.relative(this.sourceRoot,b.source));var c=this._findMapping(b,this._originalMappings,"originalLine","originalColumn",d.compareByOriginalPositions);return c?{line:d.getArg(c,"generatedLine",null),column:d.getArg(c,"generatedColumn",null)}:{line:null,column:null}},c.GENERATED_ORDER=1,c.ORIGINAL_ORDER=2,c.prototype.eachMapping=function(a,b,e){var f,g=b||null,h=e||c.GENERATED_ORDER;switch(h){case c.GENERATED_ORDER:f=this._generatedMappings;break;case c.ORIGINAL_ORDER:f=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var i=this.sourceRoot;f.map(function(a){var b=a.source;return null!=b&&null!=i&&(b=d.join(i,b)),{source:b,generatedLine:a.generatedLine,generatedColumn:a.generatedColumn,originalLine:a.originalLine,originalColumn:a.originalColumn,name:a.name}}).forEach(a,g)},b.SourceMapConsumer=c})},{"./array-set":101,"./base64-vlq":102,"./binary-search":104,"./util":108,amdefine:109}],106:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(a){a||(a={}),this._file=e.getArg(a,"file",null),this._sourceRoot=e.getArg(a,"sourceRoot",null),this._sources=new f,this._names=new f,this._mappings=[],this._sourcesContents=null}var d=a("./base64-vlq"),e=a("./util"),f=a("./array-set").ArraySet;c.prototype._version=3,c.fromSourceMap=function(a){var b=a.sourceRoot,d=new c({file:a.file,sourceRoot:b});return a.eachMapping(function(a){var c={generated:{line:a.generatedLine,column:a.generatedColumn}};null!=a.source&&(c.source=a.source,null!=b&&(c.source=e.relative(b,c.source)),c.original={line:a.originalLine,column:a.originalColumn},null!=a.name&&(c.name=a.name)),d.addMapping(c)}),a.sources.forEach(function(b){var c=a.sourceContentFor(b);null!=c&&d.setSourceContent(b,c)}),d},c.prototype.addMapping=function(a){var b=e.getArg(a,"generated"),c=e.getArg(a,"original",null),d=e.getArg(a,"source",null),f=e.getArg(a,"name",null);this._validateMapping(b,c,d,f),null==d||this._sources.has(d)||this._sources.add(d),null==f||this._names.has(f)||this._names.add(f),this._mappings.push({generatedLine:b.line,generatedColumn:b.column,originalLine:null!=c&&c.line,originalColumn:null!=c&&c.column,source:d,name:f})},c.prototype.setSourceContent=function(a,b){var c=a;null!=this._sourceRoot&&(c=e.relative(this._sourceRoot,c)),null!=b?(this._sourcesContents||(this._sourcesContents={}),this._sourcesContents[e.toSetString(c)]=b):this._sourcesContents&&(delete this._sourcesContents[e.toSetString(c)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},c.prototype.applySourceMap=function(a,b,c){var d=b;if(null==b){if(null==a.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');d=a.file}var g=this._sourceRoot;null!=g&&(d=e.relative(g,d));var h=new f,i=new f;this._mappings.forEach(function(b){if(b.source===d&&null!=b.originalLine){var f=a.originalPositionFor({line:b.originalLine,column:b.originalColumn});null!=f.source&&(b.source=f.source,null!=c&&(b.source=e.join(c,b.source)),null!=g&&(b.source=e.relative(g,b.source)),b.originalLine=f.line,b.originalColumn=f.column,null!=f.name&&(b.name=f.name))}var j=b.source;null==j||h.has(j)||h.add(j);var k=b.name;null==k||i.has(k)||i.add(k)},this),this._sources=h,this._names=i,a.sources.forEach(function(b){var d=a.sourceContentFor(b);null!=d&&(null!=c&&(b=e.join(c,b)),null!=g&&(b=e.relative(g,b)),this.setSourceContent(b,d))},this)},c.prototype._validateMapping=function(a,b,c,d){if(!(a&&"line"in a&&"column"in a&&a.line>0&&a.column>=0&&!b&&!c&&!d||a&&"line"in a&&"column"in a&&b&&"line"in b&&"column"in b&&a.line>0&&a.column>=0&&b.line>0&&b.column>=0&&c))throw new Error("Invalid mapping: "+JSON.stringify({generated:a,source:c,original:b,name:d}))},c.prototype._serializeMappings=function(){var a,b=0,c=1,f=0,g=0,h=0,i=0,j="";this._mappings.sort(e.compareByGeneratedPositions);for(var k=0,l=this._mappings.length;l>k;k++){if(a=this._mappings[k],a.generatedLine!==c)for(b=0;a.generatedLine!==c;)j+=";",c++;else if(k>0){if(!e.compareByGeneratedPositions(a,this._mappings[k-1]))continue;j+=","}j+=d.encode(a.generatedColumn-b),b=a.generatedColumn,null!=a.source&&(j+=d.encode(this._sources.indexOf(a.source)-i),i=this._sources.indexOf(a.source),j+=d.encode(a.originalLine-1-g),g=a.originalLine-1,j+=d.encode(a.originalColumn-f),f=a.originalColumn,null!=a.name&&(j+=d.encode(this._names.indexOf(a.name)-h),h=this._names.indexOf(a.name)))}return j},c.prototype._generateSourcesContent=function(a,b){return a.map(function(a){if(!this._sourcesContents)return null;null!=b&&(a=e.relative(b,a));var c=e.toSetString(a);return Object.prototype.hasOwnProperty.call(this._sourcesContents,c)?this._sourcesContents[c]:null},this)},c.prototype.toJSON=function(){var a={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(a.file=this._file),null!=this._sourceRoot&&(a.sourceRoot=this._sourceRoot),this._sourcesContents&&(a.sourcesContent=this._generateSourcesContent(a.sources,a.sourceRoot)),a},c.prototype.toString=function(){return JSON.stringify(this)},b.SourceMapGenerator=c})},{"./array-set":101,"./base64-vlq":102,"./util":108,amdefine:109}],107:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(a,b,c,d,e){this.children=[],this.sourceContents={},this.line=null==a?null:a,this.column=null==b?null:b,this.source=null==c?null:c,this.name=null==e?null:e,null!=d&&this.add(d)}var d=a("./source-map-generator").SourceMapGenerator,e=a("./util"),f=/(\r?\n)/,g=/\r\n|[\s\S]/g;c.fromStringWithSourceMap=function(a,b,d){function g(a,b){if(null===a||void 0===a.source)h.add(b);else{var f=d?e.join(d,a.source):a.source;h.add(new c(a.originalLine,a.originalColumn,f,b,a.name))}}var h=new c,i=a.split(f),j=function(){var a=i.shift(),b=i.shift()||"";return a+b},k=1,l=0,m=null;return b.eachMapping(function(a){if(null!==m){if(!(k0&&(m&&g(m,j()),h.add(i.join(""))),b.sources.forEach(function(a){var c=b.sourceContentFor(a);null!=c&&(null!=d&&(a=e.join(d,a)),h.setSourceContent(a,c))}),h},c.prototype.add=function(a){if(Array.isArray(a))a.forEach(function(a){this.add(a)},this);else{if(!(a instanceof c||"string"==typeof a))throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+a);a&&this.children.push(a)}return this},c.prototype.prepend=function(a){if(Array.isArray(a))for(var b=a.length-1;b>=0;b--)this.prepend(a[b]);else{if(!(a instanceof c||"string"==typeof a))throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+a);this.children.unshift(a)}return this},c.prototype.walk=function(a){for(var b,d=0,e=this.children.length;e>d;d++)b=this.children[d],b instanceof c?b.walk(a):""!==b&&a(b,{source:this.source,line:this.line,column:this.column,name:this.name})},c.prototype.join=function(a){var b,c,d=this.children.length;if(d>0){for(b=[],c=0;d-1>c;c++)b.push(this.children[c]),b.push(a);b.push(this.children[c]),this.children=b}return this},c.prototype.replaceRight=function(a,b){var d=this.children[this.children.length-1];return d instanceof c?d.replaceRight(a,b):"string"==typeof d?this.children[this.children.length-1]=d.replace(a,b):this.children.push("".replace(a,b)),this},c.prototype.setSourceContent=function(a,b){this.sourceContents[e.toSetString(a)]=b},c.prototype.walkSourceContents=function(a){for(var b=0,d=this.children.length;d>b;b++)this.children[b]instanceof c&&this.children[b].walkSourceContents(a);for(var f=Object.keys(this.sourceContents),b=0,d=f.length;d>b;b++)a(e.fromSetString(f[b]),this.sourceContents[f[b]])},c.prototype.toString=function(){var a="";return this.walk(function(b){a+=b}),a},c.prototype.toStringWithSourceMap=function(a){var b={code:"",line:1,column:0},c=new d(a),e=!1,h=null,i=null,j=null,k=null;return this.walk(function(a,d){b.code+=a,null!==d.source&&null!==d.line&&null!==d.column?((h!==d.source||i!==d.line||j!==d.column||k!==d.name)&&c.addMapping({source:d.source,original:{line:d.line,column:d.column},generated:{line:b.line,column:b.column},name:d.name}),h=d.source,i=d.line,j=d.column,k=d.name,e=!0):e&&(c.addMapping({generated:{line:b.line,column:b.column}}),h=null,e=!1),a.match(g).forEach(function(a,g,i){f.test(a)?(b.line++,b.column=0,g+1===i.length?(h=null,e=!1):e&&c.addMapping({source:d.source,original:{line:d.line,column:d.column},generated:{line:b.line,column:b.column},name:d.name})):b.column+=a.length})}),this.walkSourceContents(function(a,b){c.setSourceContent(a,b)}),{code:b.code,map:c}},b.SourceNode=c})},{"./source-map-generator":106,"./util":108,amdefine:109}],108:[function(a,b){if("function"!=typeof c)var c=a("amdefine")(b,a);c(function(a,b){function c(a,b,c){if(b in a)return a[b];if(3===arguments.length)return c;throw new Error('"'+b+'" is a required argument.')}function d(a){var b=a.match(n);return b?{scheme:b[1],auth:b[2],host:b[3],port:b[4],path:b[5]}:null}function e(a){var b="";return a.scheme&&(b+=a.scheme+":"),b+="//",a.auth&&(b+=a.auth+"@"),a.host&&(b+=a.host),a.port&&(b+=":"+a.port),a.path&&(b+=a.path),b}function f(a){var b=a,c=d(a);if(c){if(!c.path)return a;b=c.path}for(var f,g="/"===b.charAt(0),h=b.split(/\/+/),i=0,j=h.length-1;j>=0;j--)f=h[j],"."===f?h.splice(j,1):".."===f?i++:i>0&&(""===f?(h.splice(j+1,i),i=0):(h.splice(j,2),i--));return b=h.join("/"),""===b&&(b=g?"/":"."),c?(c.path=b,e(c)):b}function g(a,b){""===a&&(a="."),""===b&&(b=".");var c=d(b),g=d(a);if(g&&(a=g.path||"/"),c&&!c.scheme)return g&&(c.scheme=g.scheme),e(c);if(c||b.match(o))return b;if(g&&!g.host&&!g.path)return g.host=b,e(g);var h="/"===b.charAt(0)?b:f(a.replace(/\/+$/,"")+"/"+b);return g?(g.path=h,e(g)):h}function h(a,b){""===a&&(a="."),a=a.replace(/\/$/,"");var c=d(a);return"/"==b.charAt(0)&&c&&"/"==c.path?b.slice(1):0===b.indexOf(a+"/")?b.substr(a.length+1):b}function i(a){return"$"+a}function j(a){return a.substr(1)}function k(a,b){var c=a||"",d=b||"";return(c>d)-(d>c)}function l(a,b,c){var d;return(d=k(a.source,b.source))?d:(d=a.originalLine-b.originalLine)?d:(d=a.originalColumn-b.originalColumn,d||c?d:(d=k(a.name,b.name))?d:(d=a.generatedLine-b.generatedLine,d?d:a.generatedColumn-b.generatedColumn))}function m(a,b,c){var d;return(d=a.generatedLine-b.generatedLine)?d:(d=a.generatedColumn-b.generatedColumn,d||c?d:(d=k(a.source,b.source))?d:(d=a.originalLine-b.originalLine)?d:(d=a.originalColumn-b.originalColumn,d?d:k(a.name,b.name)))}b.getArg=c;var n=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,o=/^data:.+\,.+$/;b.urlParse=d,b.urlGenerate=e,b.normalize=f,b.join=g,b.relative=h,b.toSetString=i,b.fromSetString=j,b.compareByOriginalPositions=l,b.compareByGeneratedPositions=m})},{amdefine:109}],109:[function(a,b){(function(c,d){/** vim: et:ts=4:sw=4:sts=4 - * @license amdefine 0.1.0 Copyright (c) 2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/amdefine for details - */ -"use strict";function e(b,e){function f(a){var b,c;for(b=0;a[b];b+=1)if(c=a[b],"."===c)a.splice(b,1),b-=1;else if(".."===c){if(1===b&&(".."===a[2]||".."===a[0]))break;b>0&&(a.splice(b-1,2),b-=2)}}function g(a,b){var c;return a&&"."===a.charAt(0)&&b&&(c=b.split("/"),c=c.slice(0,c.length-1),c=c.concat(a.split("/")),f(c),a=c.join("/")),a}function h(a){return function(b){return g(b,a)}}function i(a){function b(b){o[a]=b}return b.fromText=function(){throw new Error("amdefine does not implement load.fromText")},b}function j(a,c,f){var g,h,i,j;if(a)h=o[a]={},i={id:a,uri:d,exports:h},g=l(e,h,i,a);else{if(p)throw new Error("amdefine with no module ID cannot be called more than once per file.");p=!0,h=b.exports,i=b,g=l(e,h,i,b.id)}c&&(c=c.map(function(a){return g(a)})),j="function"==typeof f?f.apply(i.exports,c):f,void 0!==j&&(i.exports=j,a&&(o[a]=i.exports))}function k(a,b,c){Array.isArray(a)?(c=b,b=a,a=void 0):"string"!=typeof a&&(c=a,a=b=void 0),b&&!Array.isArray(b)&&(c=b,b=void 0),b||(b=["require","exports","module"]),a?n[a]=[a,b,c]:j(a,b,c)}var l,m,n={},o={},p=!1,q=a("path");return l=function(a,b,d,e){function f(f,g){return"string"==typeof f?m(a,b,d,f,e):(f=f.map(function(c){return m(a,b,d,c,e)}),void c.nextTick(function(){g.apply(null,f)}))}return f.toUrl=function(a){return 0===a.indexOf(".")?g(a,q.dirname(d.filename)):a},f},e=e||function(){return b.require.apply(b,arguments)},m=function(a,b,c,d,e){var f,k,p=d.indexOf("!"),q=d;if(-1===p){if(d=g(d,e),"require"===d)return l(a,b,c,e);if("exports"===d)return b;if("module"===d)return c;if(o.hasOwnProperty(d))return o[d];if(n[d])return j.apply(null,n[d]),o[d];if(a)return a(q);throw new Error("No module with ID: "+d)}return f=d.substring(0,p),d=d.substring(p+1,d.length),k=m(a,b,c,f,e),d=k.normalize?k.normalize(d,h(e)):g(d,e),o[d]?o[d]:(k.load(d,l(a,b,c,e),i(d),{}),o[d])},k.require=function(a){return o[a]?o[a]:n[a]?(j.apply(null,n[a]),o[a]):void 0},k.amd={},k}b.exports=e}).call(this,a("_process"),"/../node_modules/postcss/node_modules/source-map/node_modules/amdefine/amdefine.js")},{_process:50,path:49}]},{},[1])(1)}),/*! - * Less - Leaner CSS v1.7.5 - * http://lesscss.org - * - * Copyright (c) 2009-2014, Alexis Sellier - * Licensed under the Apache v2 License. - * - */ -/** * @license Apache v2 - */ -!function(a,b){function c(b){return a.less[b.split("/")[1]]}function d(a,b){"undefined"!=typeof console&&w.logLevel>=b&&console.log("less: "+a)}function e(a){return a.replace(/^[a-z-]+:\/+?[^\/]+/,"").replace(/^\//,"").replace(/\.[a-zA-Z]+$/,"").replace(/[^\.\w-]+/g,"-").replace(/\./g,":")}function f(a,c){var e="{line} {content}",f=a.filename||c,g=[],h=(a.type||"Syntax")+"Error: "+(a.message||"There is an error in your .less file")+" in "+f+" ",i=function(a,c,d){a.extract[c]!==b&&g.push(e.replace(/\{line\}/,(parseInt(a.line,10)||0)+(c-1)).replace(/\{class\}/,d).replace(/\{content\}/,a.extract[c]))};a.extract?(i(a,0,""),i(a,1,"line"),i(a,2,""),h+="on line "+a.line+", column "+(a.column+1)+":\n"+g.join("\n")):a.stack&&(h+=a.stack),d(h,z.errors)}function g(a,b,c){var f=b.href||"",g="less:"+(b.title||e(f)),h=document.getElementById(g),i=!1,j=document.createElement("style");j.setAttribute("type","text/css"),b.media&&j.setAttribute("media",b.media),j.id=g,j.styleSheet||(j.appendChild(document.createTextNode(a)),i=null!==h&&h.childNodes.length>0&&j.childNodes.length>0&&h.firstChild.nodeValue===j.firstChild.nodeValue);var k=document.getElementsByTagName("head")[0];if(null===h||i===!1){var l=b&&b.nextSibling||null;l?l.parentNode.insertBefore(j,l):k.appendChild(j)}if(h&&i===!1&&h.parentNode.removeChild(h),j.styleSheet)try{j.styleSheet.cssText=a}catch(m){throw new Error("Couldn't reassign styleSheet.cssText.")}if(c&&D){d("saving "+f+" to cache.",z.info);try{D.setItem(f,a),D.setItem(f+":timestamp",c)}catch(m){d("failed to save",z.errors)}}}function h(a){return w.postProcessor&&"function"==typeof w.postProcessor&&(a=w.postProcessor.call(a,a)||a),a}function i(a,c){var d,f,h="less-error-message:"+e(c||""),i='
  • {content}
  • ',j=document.createElement("div"),k=[],l=a.filename||c,m=l.match(/([^\/]+(\?.*)?)$/)[1];j.id=h,j.className="less-error-message",f="

    "+(a.type||"Syntax")+"Error: "+(a.message||"There is an error in your .less file")+'

    in '+m+" ";var n=function(a,c,d){a.extract[c]!==b&&k.push(i.replace(/\{line\}/,(parseInt(a.line,10)||0)+(c-1)).replace(/\{class\}/,d).replace(/\{content\}/,a.extract[c]))};a.extract?(n(a,0,""),n(a,1,"line"),n(a,2,""),f+="on line "+a.line+", column "+(a.column+1)+":

      "+k.join("")+"
    "):a.stack&&(f+="
    "+a.stack.split("\n").slice(1).join("
    ")),j.innerHTML=f,g([".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),j.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),"development"==w.env&&(d=setInterval(function(){document.body&&(document.getElementById(h)?document.body.replaceChild(j,document.getElementById(h)):document.body.insertBefore(j,document.body.firstChild),clearInterval(d))},10))}function j(a,b){w.errorReporting&&"html"!==w.errorReporting?"console"===w.errorReporting?f(a,b):"function"==typeof w.errorReporting&&w.errorReporting("add",a,b):i(a,b)}function k(a){var b=document.getElementById("less-error-message:"+e(a));b&&b.parentNode.removeChild(b)}function l(){}function m(a){w.errorReporting&&"html"!==w.errorReporting?"console"===w.errorReporting?l(a):"function"==typeof w.errorReporting&&w.errorReporting("remove",a):k(a)}function n(a){for(var b,c=document.getElementsByTagName("style"),d=0;d0&&(h.splice(c-1,2),c-=2)}return g.hostPart=f[1],g.directories=h,g.path=f[1]+h.join("/"),g.fileUrl=g.path+(f[4]||""),g.url=g.fileUrl+(f[5]||""),g}function p(a,b){var c,d,e,f,g=o(a),h=o(b),i="";if(g.hostPart!==h.hostPart)return"";for(d=Math.max(h.directories.length,g.directories.length),c=0;d>c&&h.directories[c]===g.directories[c];c++);for(f=h.directories.slice(c),e=g.directories.slice(c),c=0;c=200&&b.status<300?c(b.responseText,b.getResponseHeader("Last-Modified")):"function"==typeof d&&d(b.status,a)}var g=q(),h=y?w.fileAsync:w.async;"function"==typeof g.overrideMimeType&&g.overrideMimeType("text/css"),d("XHR: Getting '"+a+"'",z.debug),g.open("GET",a,h),g.setRequestHeader("Accept",b||"text/x-less, text/css; q=0.9, */*; q=0.5"),g.send(null),y&&!w.fileAsync?0===g.status||g.status>=200&&g.status<300?c(g.responseText):e(g.status,a):h?g.onreadystatechange=function(){4==g.readyState&&f(g,c,e)}:f(g,c,e)}function s(b,c,d,e){c&&c.currentDirectory&&!/^([A-Za-z-]+:)?\//.test(b)&&(b=c.currentDirectory+b);var f=o(b,a.location.href),g=f.url,h={currentDirectory:f.path,filename:g};if(c?(h.entryPath=c.entryPath,h.rootpath=c.rootpath,h.rootFilename=c.rootFilename,h.relativeUrls=c.relativeUrls):(h.entryPath=f.path,h.rootpath=w.rootpath||f.path,h.rootFilename=g,h.relativeUrls=e.relativeUrls),h.relativeUrls&&(h.rootpath=e.rootpath?o(e.rootpath+p(f.path,h.entryPath)).path:f.path),e.useFileCache&&E[g])try{var i=E[g];d(null,i,g,h,{lastModified:new Date})}catch(j){d(j,null,g)}else r(g,e.mime,function(a,b){E[g]=a;try{d(null,a,g,h,{lastModified:b})}catch(c){d(c,null,g)}},function(a,b){d({type:"File",message:"'"+b+"' wasn't found ("+a+")"},null,g)})}function t(a,b,c,d,e){var f=new w.tree.parseEnv(w);f.mime=a.type,(e||w.globalVars)&&(f.useFileCache=!0),s(a.href,null,function(h,i,j,k,l){if(l){l.remaining=d;var n=D&&D.getItem(j),o=D&&D.getItem(j+":timestamp");if(!c&&o&&l.lastModified&&new Date(l.lastModified).valueOf()===new Date(o).valueOf())return g(n,a),l.local=!0,void b(null,null,i,a,l,j)}m(j),i?(f.currentFileInfo=k,new w.Parser(f).parse(i,function(c,d){if(c)return b(c,null,null,a);try{b(c,d,i,a,l,j)}catch(c){b(c,null,null,a)}},{modifyVars:e,globalVars:w.globalVars})):b(h,null,null,a,l,j)},f,e)}function u(a,b,c){for(var d=0;dD&&(C=C.slice(y-D),D=y)}function h(a,b){var c=a.charCodeAt(0|b);return 32>=c&&(32===c||10===c||9===c)}function i(a){var b,c,d=typeof a;return"string"===d?v.charAt(y)!==a?null:(l(1),a):(g(),(b=a.exec(C))?(c=b[0].length,l(c),"string"==typeof b?b:1===b.length?b[0]:b):null)}function j(a){y>D&&(C=C.slice(y-D),D=y);var b=a.exec(C);return b?(l(b[0].length),"string"==typeof b?b:1===b.length?b[0]:b):null}function k(a){return v.charAt(y)!==a?null:(l(1),a)}function l(a){for(var b,c=y,d=z,e=y-D,f=y+C.length-e,g=y+=a,h=v;f>y&&(b=h.charCodeAt(y),!(b>32))&&(32===b||10===b||9===b||13===b);y++);return C=C.slice(a+y-g+e),D=y,!C.length&&z=0&&"\n"!==b.charAt(c);)e++;return"number"==typeof a&&(d=(b.slice(0,a).match(/\n/g)||"").length),{line:d,column:e}}function t(a,b,d){var e=d.currentFileInfo.filename;return"browser"!==w.mode&&"rhino"!==w.mode&&(e=c("path").resolve(e)),{lineNumber:s(a,b).line+1,fileName:e}}function u(a,b){var c=r(a,b),d=s(a.index,c),e=d.line,f=d.column,g=a.call&&s(a.call,c).line,h=c.split("\n");this.type=a.type||"Syntax",this.message=a.message,this.filename=a.filename||b.currentFileInfo.filename,this.index=a.index,this.line="number"==typeof e?e+1:null,this.callLine=g+1,this.callExtract=h[g],this.stack=a.stack,this.column=f,this.extract=[h[e-1],h[e],h[e+1]]}var v,y,z,A,B,C,D,E,F,G=[],H=a&&a.filename;a instanceof x.parseEnv||(a=new x.parseEnv(a));var I=this.imports={paths:a.paths||[],queue:[],files:a.files,contents:a.contents,contentsIgnoredChars:a.contentsIgnoredChars,mime:a.mime,error:null,push:function(b,c,d,e){var f=this;this.queue.push(b);var g=function(a,c,d){f.queue.splice(f.queue.indexOf(b),1);var g=d===H;f.files[d]=c,a&&!f.error&&(f.error=a),e(a,c,g,d)};w.Parser.importer?w.Parser.importer(b,c,g,a):w.Parser.fileLoader(b,c,function(b,e,f,h){if(b)return void g(b);var i=new x.parseEnv(a);i.currentFileInfo=h,i.processImports=!1,i.contents[f]=e,(c.reference||d.reference)&&(h.reference=!0),d.inline?g(null,e,f):new w.Parser(i).parse(e,function(a,b){g(a,b,f)})},a)}},J=j;return u.prototype=new Error,u.prototype.constructor=u,this.env=a=a||{},this.optimization="optimization"in this.env?this.env.optimization:1,E={imports:I,parse:function(d,e,f){var g,h,i,j,k,l=null,m="";if(y=z=D=A=0,j=f&&f.globalVars?w.Parser.serializeVars(f.globalVars)+"\n":"",k=f&&f.modifyVars?"\n"+w.Parser.serializeVars(f.modifyVars):"",(j||f&&f.banner)&&(m=(f&&f.banner?f.banner:"")+j,E.imports.contentsIgnoredChars[a.currentFileInfo.filename]=m.length),d=d.replace(/\r\n/g,"\n"),v=d=m+d.replace(/^\uFEFF/,"")+k,E.imports.contents[a.currentFileInfo.filename]=d,B=function(b){function c(b,c){l=new u({index:c||i,type:"Parse",message:b,filename:a.currentFileInfo.filename},a)}function d(a){var c=i-s;512>c&&!a||!c||(r.push(b.slice(s,i+1)),s=i+1)}var e,f,g,h,i,j,k,m,n,o=b.length,p=0,q=0,r=[],s=0;for(i=0;o>i;i++)if(k=b.charCodeAt(i),!(k>=97&&122>=k||34>k))switch(k){case 40:q++,f=i;continue;case 41:if(--q<0)return c("missing opening `(`");continue;case 59:q||d();continue;case 123:p++,e=i;continue;case 125:if(--p<0)return c("missing opening `{`");p||q||d();continue;case 92:if(o-1>i){i++;continue}return c("unescaped `\\`");case 34:case 39:case 96:for(n=0,j=i,i+=1;o>i;i++)if(m=b.charCodeAt(i),!(m>96)){if(m==k){n=1;break}if(92==m){if(i==o-1)return c("unescaped `\\`");i++}}if(n)continue;return c("unmatched `"+String.fromCharCode(k)+"`",j);case 47:if(q||i==o-1)continue;if(m=b.charCodeAt(i+1),47==m)for(i+=2;o>i&&(m=b.charCodeAt(i),!(13>=m)||10!=m&&13!=m);i++);else if(42==m){for(g=j=i,i+=2;o-1>i&&(m=b.charCodeAt(i),125==m&&(h=i),42!=m||47!=b.charCodeAt(i+1));i++);if(i==o-1)return c("missing closing `*/`",j);i++}continue;case 42:if(o-1>i&&47==b.charCodeAt(i+1))return c("unmatched `/*`");continue}return 0!==p?g>e&&h>g?c("missing closing `}` or `*/`",e):c("missing closing `}`",e):0!==q?c("missing closing `)`",f):(d(!0),r)}(d),l)return e(new u(l,a));C=B[0];try{g=new x.Ruleset(null,this.parsers.primary()),g.root=!0,g.firstRoot=!0}catch(n){return e(new u(n,a))}if(g.toCSS=function(d){return function(e,f){e=e||{};var g,h,i=new x.evalEnv(e);"object"!=typeof f||Array.isArray(f)||(f=Object.keys(f).map(function(a){var b=f[a];return b instanceof x.Value||(b instanceof x.Expression||(b=new x.Expression([b])),b=new x.Value([b])),new x.Rule("@"+a,b,!1,null,0)}),i.frames=[new x.Ruleset(null,f)]);try{var j,k=[],l=[new x.joinSelectorVisitor,new x.processExtendsVisitor,new x.toCSSVisitor({compress:Boolean(e.compress)})],m=this;if(e.plugins)for(j=0;j57||43>b||47===b||44==b?void 0:(a=j(/^([+-]?\d*\.?\d+)(%|[a-z]+)?/),a?new x.Dimension(a[1],a[2]):void 0)},unicodeDescriptor:function(){var a;return a=j(/^U\+[0-9a-fA-F?]+(\-[0-9a-fA-F?]+)?/),a?new x.UnicodeDescriptor(a[0]):void 0},javascript:function(){var c,d,e=y;return"~"===v.charAt(e)&&(e++,d=!0),"`"===v.charAt(e)?(a.javascriptEnabled===b||a.javascriptEnabled||o("You are using JavaScript, which has been disabled."),d&&k("~"),c=j(/^`([^`]*)`/),c?new x.JavaScript(c[1],y,d):void 0):void 0}},variable:function(){var a;return"@"===v.charAt(y)&&(a=j(/^(@[\w-]+)\s*:/))?a[1]:void 0},rulesetCall:function(){var a;return"@"===v.charAt(y)&&(a=j(/^(@[\w-]+)\s*\(\s*\)\s*;/))?new x.RulesetCall(a[1]):void 0},extend:function(a){var b,c,d,e,f,g=y;if(j(a?/^&:extend\(/:/^:extend\(/)){do{for(d=null,b=null;!(d=j(/^(all)(?=\s*(\)|,))/))&&(c=this.element());)b?b.push(c):b=[c];d=d&&d[1],b||o("Missing target selector for :extend()."),f=new x.Extend(new x.Selector(b),d,g),e?e.push(f):e=[f]}while(k(","));return m(/^\)/),a&&m(/^;/),e}},extendRule:function(){return this.extend(!0)},mixin:{call:function(){var b,c,g,h,i,l,m=v.charAt(y),o=!1,p=y;if("."===m||"#"===m){for(d();b=y,h=j(/^[#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/),h;)g=new x.Element(i,h,b,a.currentFileInfo),c?c.push(g):c=[g],i=k(">");return c&&(k("(")&&(l=this.args(!0).args,n(")")),F.important()&&(o=!0),F.end())?(f(),new x.mixin.Call(c,l,p,a.currentFileInfo,o)):void e()}},args:function(a){var b,c,g,h,i,l,m=E.parsers,n=m.entities,p={args:null,variadic:!1},q=[],r=[],s=[];for(d();;){if(a)l=m.detachedRuleset()||m.expression();else{if(m.comments(),"."===v.charAt(y)&&j(/^\.{3}/)){p.variadic=!0,k(";")&&!b&&(b=!0),(b?r:s).push({variadic:!0});break}l=n.variable()||n.literal()||n.keyword()}if(!l)break;h=null,l.throwAwayComments&&l.throwAwayComments(),i=l;var t=null;if(a?l.value&&1==l.value.length&&(t=l.value[0]):t=l,t&&t instanceof x.Variable)if(k(":")){if(q.length>0&&(b&&o("Cannot mix ; and , as delimiter types"),c=!0),i=a&&m.detachedRuleset()||m.expression(),!i){if(!a)return e(),p.args=[],p;o("could not understand value for named argument")}h=g=t.name}else{if(!a&&j(/^\.{3}/)){p.variadic=!0,k(";")&&!b&&(b=!0),(b?r:s).push({name:l.name,variadic:!0});break}a||(g=h=t.name,i=null)}i&&q.push(i),s.push({name:h,value:i}),k(",")||(k(";")||b)&&(c&&o("Cannot mix ; and , as delimiter types"),b=!0,q.length>1&&(i=new x.Value(q)),r.push({name:g,value:i}),g=null,q=[],c=!1)}return f(),p.args=b?r:s,p},definition:function(){var a,b,c,g,h=[],i=!1;if(!("."!==v.charAt(y)&&"#"!==v.charAt(y)||p(/^[^{]*\}/)))if(d(),b=j(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/)){a=b[1];var l=this.args(!1);if(h=l.args,i=l.variadic,!k(")"))return A=y,void e();if(F.comments(),j(/^when/)&&(g=m(F.conditions,"expected condition")),c=F.block())return f(),new x.mixin.Definition(a,h,c,g,i);e()}else f()}},entity:function(){var a=this.entities;return a.literal()||a.variable()||a.url()||a.call()||a.keyword()||a.javascript()||this.comment()},end:function(){return k(";")||q("}")},alpha:function(){var a;return j(/^\(opacity=/i)?(a=j(/^\d+/)||this.entities.variable(),a?(n(")"),new x.Alpha(a)):void 0):void 0},element:function(){var b,c,g,h=y;return c=this.combinator(),b=j(/^(?:\d+\.\d+|\d+)%/)||j(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/)||k("*")||k("&")||this.attribute()||j(/^\([^()@]+\)/)||j(/^[\.#](?=@)/)||this.entities.variableCurly(),b||(d(),k("(")?(g=this.selector())&&k(")")?(b=new x.Paren(g),f()):e():f()),b?new x.Element(c,b,h,a.currentFileInfo):void 0},combinator:function(){var a=v.charAt(y);if("/"===a){d();var b=j(/^\/[a-z]+\//i);if(b)return f(),new x.Combinator(b);e()}if(">"===a||"+"===a||"~"===a||"|"===a||"^"===a){for(y++,"^"===a&&"^"===v.charAt(y)&&(a="^^",y++);h(v,y);)y++;return new x.Combinator(a)}return new x.Combinator(h(v,y-1)?" ":null)},lessSelector:function(){return this.selector(!0)},selector:function(b){for(var c,d,e,f,g,h,i,j=y,k=J;(b&&(g=this.extend())||b&&(h=k(/^when/))||(f=this.element()))&&(h?i=m(this.conditions,"expected condition"):i?o("CSS guard can only be used at the end of selector"):g?d?d.push(g):d=[g]:(d&&o("Extend can only be used at the end of selector"),e=v.charAt(y),c?c.push(f):c=[f],f=null),"{"!==e&&"}"!==e&&";"!==e&&","!==e&&")"!==e););return c?new x.Selector(c,d,i,j,a.currentFileInfo):void(d&&o("Extend must be used to extend a selector, it cannot be used on its own"))},attribute:function(){if(k("[")){var a,b,c,d=this.entities;return(a=d.variableCurly())||(a=m(/^(?:[_A-Za-z0-9-\*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/)),c=j(/^[|~*$^]?=/),c&&(b=d.quoted()||j(/^[0-9]+%/)||j(/^[\w-]+/)||d.variableCurly()),n("]"),new x.Attribute(a,c,b)}},block:function(){var a;return k("{")&&(a=this.primary())&&k("}")?a:void 0},blockRuleset:function(){var a=this.block();return a&&(a=new x.Ruleset(null,a)),a},detachedRuleset:function(){var a=this.blockRuleset();return a?new x.DetachedRuleset(a):void 0},ruleset:function(){var b,c,g,h;for(d(),a.dumpLineNumbers&&(h=t(y,v,a));(c=this.lessSelector(),c)&&(b?b.push(c):b=[c],this.comments(),c.condition&&b.length>1&&o("Guards are only currently allowed on a single selector."),k(","));)c.condition&&o("Guards are only currently allowed on a single selector."),this.comments();if(b&&(g=this.block())){f();var i=new x.Ruleset(b,g,a.strictImports);return a.dumpLineNumbers&&(i.debugInfo=h),i}A=y,e()},rule:function(b){var c,g,h,i,j,k=y,l=v.charAt(k);if("."!==l&&"#"!==l&&"&"!==l)if(d(),c=this.variable()||this.ruleProperty()){if(j="string"==typeof c,j&&(g=this.detachedRuleset()),this.comments(),g||(g=b||!a.compress&&!j?this.anonymousValue()||this.value():this.value()||this.anonymousValue(),h=this.important(),i=!j&&c.pop().value),g&&this.end())return f(),new x.Rule(c,g,h,i,k,a.currentFileInfo);if(A=y,e(),g&&!b)return this.rule(!0)}else f()},anonymousValue:function(){var a;return a=/^([^@+\/'"*`(;{}-]*);/.exec(C),a?(y+=a[0].length-1,new x.Anonymous(a[1])):void 0},"import":function(){var b,c,d=y,e=j(/^@import?\s+/);if(e){var f=(e?this.importOptions():null)||{};if(b=this.entities.quoted()||this.entities.url())return c=this.mediaFeatures(),i(";")||(y=d,o("missing semi-colon or unrecognised media features on import")),c=c&&new x.Value(c),new x.Import(b,c,f,d,a.currentFileInfo);y=d,o("malformed import statement")}},importOptions:function(){var a,b,c,d={};if(!k("("))return null;do if(a=this.importOption()){switch(b=a,c=!0,b){case"css":b="less",c=!1;break;case"once":b="multiple",c=!1}if(d[b]=c,!k(","))break}while(a);return n(")"),d},importOption:function(){var a=j(/^(less|css|multiple|once|inline|reference)/);return a?a[1]:void 0},mediaFeature:function(){var b,c,d=this.entities,e=[];do if(b=d.keyword()||d.variable())e.push(b);else if(k("(")){if(c=this.property(),b=this.value(),!k(")"))return null;if(c&&b)e.push(new x.Paren(new x.Rule(c,b,null,null,y,a.currentFileInfo,!0)));else{if(!b)return null;e.push(new x.Paren(b))}}while(b);return e.length>0?new x.Expression(e):void 0},mediaFeatures:function(){var a,b=this.entities,c=[];do if(a=this.mediaFeature()){if(c.push(a),!k(","))break}else if(a=b.variable(),a&&(c.push(a),!k(",")))break;while(a);return c.length>0?c:null},media:function(){var b,c,d,e;return a.dumpLineNumbers&&(e=t(y,v,a)),j(/^@media/)&&(b=this.mediaFeatures(),c=this.block())?(d=new x.Media(c,b,y,a.currentFileInfo),a.dumpLineNumbers&&(d.debugInfo=e),d):void 0},directive:function(){var b,c,g,h,i,l,m,n=y,p=!0;if("@"===v.charAt(y)){if(c=this["import"]()||this.media())return c;if(d(),b=j(/^@[a-z-]+/)){switch(h=b,"-"==b.charAt(1)&&b.indexOf("-",2)>0&&(h="@"+b.slice(b.indexOf("-",2)+1)),h){case"@charset":i=!0,p=!1;break;case"@namespace":l=!0,p=!1;break;case"@keyframes":i=!0;break;case"@host":case"@page":case"@document":case"@supports":m=!0}return this.comments(),i?(c=this.entity(),c||o("expected "+b+" identifier")):l?(c=this.expression(),c||o("expected "+b+" expression")):m&&(c=(j(/^[^{;]+/)||"").trim(),c&&(c=new x.Anonymous(c))),this.comments(),p&&(g=this.blockRuleset()),g||!p&&c&&k(";")?(f(),new x.Directive(b,c,g,n,a.currentFileInfo,a.dumpLineNumbers?t(n,v,a):null)):void e()}}},value:function(){var a,b=[];do if(a=this.expression(),a&&(b.push(a),!k(",")))break;while(a);return b.length>0?new x.Value(b):void 0},important:function(){return"!"===v.charAt(y)?j(/^! *important/):void 0},sub:function(){var a,b;return k("(")&&(a=this.addition())?(b=new x.Expression([a]),n(")"),b.parens=!0,b):void 0},multiplication:function(){var a,b,c,g,i;if(a=this.operand()){for(i=h(v,y-1);!p(/^\/[*\/]/);){if(d(),c=k("/")||k("*"),!c){f();break}if(b=this.operand(),!b){e();break}f(),a.parensInOp=!0,b.parensInOp=!0,g=new x.Operation(c,[g||a,b],i),i=h(v,y-1)}return g||a}},addition:function(){var a,b,c,d,e;if(a=this.multiplication()){for(e=h(v,y-1);(c=j(/^[-+]\s+/)||!e&&(k("+")||k("-")),c)&&(b=this.multiplication(),b);)a.parensInOp=!0,b.parensInOp=!0,d=new x.Operation(c,[d||a,b],e),e=h(v,y-1);return d||a}},conditions:function(){var a,b,c,d=y;if(a=this.condition()){for(;p(/^,\s*(not\s*)?\(/)&&k(",")&&(b=this.condition(),b);)c=new x.Condition("or",c||a,b,d);return c||a}},condition:function(){var a,b,c,d,e=this.entities,f=y,g=!1;return j(/^not/)&&(g=!0),n("("),a=this.addition()||e.keyword()||e.quoted(),a?(d=j(/^(?:>=|<=|=<|[<=>])/),d?(b=this.addition()||e.keyword()||e.quoted(),b?c=new x.Condition(d,a,b,f,g):o("expected expression")):c=new x.Condition("=",a,new x.Keyword("true"),f,g),n(")"),j(/^and/)?new x.Condition("and",c,this.condition()):c):void 0},operand:function(){var a,b=this.entities,c=v.charAt(y+1);"-"!==v.charAt(y)||"@"!==c&&"("!==c||(a=k("-"));var d=this.sub()||b.dimension()||b.color()||b.variable()||b.call();return a&&(d.parensInOp=!0,d=new x.Negative(d)),d},expression:function(){var a,b,c=[];do a=this.addition()||this.entity(),a&&(c.push(a),p(/^\/[\/*]/)||(b=k("/"),b&&c.push(new x.Anonymous(b))));while(a);return c.length>0?new x.Expression(c):void 0},property:function(){var a=j(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/);return a?a[1]:void 0},ruleProperty:function(){function b(a){var b=a.exec(f);return b?(h.push(y+i),i+=b[0].length,f=f.slice(b[1].length),g.push(b[1])):void 0}function c(){var a=/^\s*\/\*(?:[^*]|\*+[^\/*])*\*+\//.exec(f);return a?(i+=a[0].length,f=f.slice(a[0].length),!0):!1}var d,e,f=C,g=[],h=[],i=0;for(b(/^(\*?)/);b(/^((?:[\w-]+)|(?:@\{[\w-]+\}))/););for(;c(););if(g.length>1&&b(/^\s*((?:\+_|\+)?)\s*:/)){for(l(i),""===g[0]&&(g.shift(),h.shift()),e=0;el;l++)e=b.rgb[l]/255,f=c.rgb[l]/255,h=a(e,f),g&&(h=(j*f+i*(e-j*(e+f-h)))/g),k[l]=255*h;return new d.Color(k,g)}function g(){var a,b=d.functions;for(a in l)l.hasOwnProperty(a)&&(b[a]=e.bind(null,Math[a],l[a]));for(a in m)m.hasOwnProperty(a)&&(b[a]=f.bind(null,m[a]));a=d.defaultFunc,b["default"]=a.eval.bind(a)}function h(a){return d.functions.hsla(a.h,a.s,a.l,a.a)}function i(a,b){return a instanceof d.Dimension&&a.unit.is("%")?parseFloat(a.value*b/100):j(a)}function j(a){if(a instanceof d.Dimension)return parseFloat(a.unit.is("%")?a.value/100:a.value);if("number"==typeof a)return a;throw{error:"RuntimeError",message:"color functions take numbers as parameters"}}function k(a){return Math.min(1,Math.max(0,a))}d.functions={rgb:function(a,b,c){return this.rgba(a,b,c,1)},rgba:function(a,b,c,e){var f=[a,b,c].map(function(a){return i(a,255)});return e=j(e),new d.Color(f,e)},hsl:function(a,b,c){return this.hsla(a,b,c,1)},hsla:function(a,b,c,d){function e(a){return a=0>a?a+1:a>1?a-1:a,1>6*a?g+(f-g)*a*6:1>2*a?f:2>3*a?g+(f-g)*(2/3-a)*6:g}a=j(a)%360/360,b=k(j(b)),c=k(j(c)),d=k(j(d));var f=.5>=c?c*(b+1):c+b-c*b,g=2*c-f;return this.rgba(255*e(a+1/3),255*e(a),255*e(a-1/3),d)},hsv:function(a,b,c){return this.hsva(a,b,c,1)},hsva:function(a,b,c,d){a=j(a)%360/360*360,b=j(b),c=j(c),d=j(d);var e,f;e=Math.floor(a/60%6),f=a/60-e;var g=[c,c*(1-b),c*(1-f*b),c*(1-(1-f)*b)],h=[[0,3,1],[2,0,1],[1,0,3],[1,2,0],[3,1,0],[0,1,2]];return this.rgba(255*g[h[e][0]],255*g[h[e][1]],255*g[h[e][2]],d)},hue:function(a){return new d.Dimension(a.toHSL().h)},saturation:function(a){return new d.Dimension(100*a.toHSL().s,"%")},lightness:function(a){return new d.Dimension(100*a.toHSL().l,"%")},hsvhue:function(a){return new d.Dimension(a.toHSV().h)},hsvsaturation:function(a){return new d.Dimension(100*a.toHSV().s,"%")},hsvvalue:function(a){return new d.Dimension(100*a.toHSV().v,"%")},red:function(a){return new d.Dimension(a.rgb[0])},green:function(a){return new d.Dimension(a.rgb[1])},blue:function(a){return new d.Dimension(a.rgb[2])},alpha:function(a){return new d.Dimension(a.toHSL().a)},luma:function(a){return new d.Dimension(a.luma()*a.alpha*100,"%")},luminance:function(a){var b=.2126*a.rgb[0]/255+.7152*a.rgb[1]/255+.0722*a.rgb[2]/255;return new d.Dimension(b*a.alpha*100,"%")},saturate:function(a,b){if(!a.rgb)return null;var c=a.toHSL();return c.s+=b.value/100,c.s=k(c.s),h(c)},desaturate:function(a,b){var c=a.toHSL();return c.s-=b.value/100,c.s=k(c.s),h(c)},lighten:function(a,b){var c=a.toHSL();return c.l+=b.value/100,c.l=k(c.l),h(c)},darken:function(a,b){var c=a.toHSL();return c.l-=b.value/100,c.l=k(c.l),h(c)},fadein:function(a,b){var c=a.toHSL();return c.a+=b.value/100,c.a=k(c.a),h(c)},fadeout:function(a,b){var c=a.toHSL();return c.a-=b.value/100,c.a=k(c.a),h(c)},fade:function(a,b){var c=a.toHSL();return c.a=b.value/100,c.a=k(c.a),h(c)},spin:function(a,b){var c=a.toHSL(),d=(c.h+b.value)%360;return c.h=0>d?360+d:d,h(c)},mix:function(a,b,c){c||(c=new d.Dimension(50));var e=c.value/100,f=2*e-1,g=a.toHSL().a-b.toHSL().a,h=((f*g==-1?f:(f+g)/(1+f*g))+1)/2,i=1-h,j=[a.rgb[0]*h+b.rgb[0]*i,a.rgb[1]*h+b.rgb[1]*i,a.rgb[2]*h+b.rgb[2]*i],k=a.alpha*e+b.alpha*(1-e);return new d.Color(j,k)},greyscale:function(a){return this.desaturate(a,new d.Dimension(100))},contrast:function(a,b,c,d){if(!a.rgb)return null;if("undefined"==typeof c&&(c=this.rgba(255,255,255,1)),"undefined"==typeof b&&(b=this.rgba(0,0,0,1)),b.luma()>c.luma()){var e=c;c=b,b=e}return d="undefined"==typeof d?.43:j(d),a.luma()i.value)&&(m[f]=g);else{if(k!==b&&j!==k)throw{type:"Argument",message:"incompatible types"};n[j]=m.length,m.push(g)}else Array.isArray(c[e].value)&&Array.prototype.push.apply(c,Array.prototype.slice.call(c[e].value));return 1==m.length?m[0]:(c=m.map(function(a){return a.toCSS(this.env)}).join(this.env.compress?",":", "),new d.Anonymous((a?"min":"max")+"("+c+")"))},min:function(){return this._minmax(!0,arguments)},max:function(){return this._minmax(!1,arguments)},"get-unit":function(a){return new d.Anonymous(a.unit)},argb:function(a){return new d.Anonymous(a.toARGB())},percentage:function(a){return new d.Dimension(100*a.value,"%")},color:function(a){if(a instanceof d.Quoted){var b,c=a.value;if(b=d.Color.fromKeyword(c))return b;if(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/.test(c))return new d.Color(c.slice(1));throw{type:"Argument",message:"argument must be a color keyword or 3/6 digit hex e.g. #FFF"}}throw{type:"Argument",message:"argument must be a string"}},iscolor:function(a){return this._isa(a,d.Color)},isnumber:function(a){return this._isa(a,d.Dimension)},isstring:function(a){return this._isa(a,d.Quoted)},iskeyword:function(a){return this._isa(a,d.Keyword)},isurl:function(a){return this._isa(a,d.URL)},ispixel:function(a){return this.isunit(a,"px")},ispercentage:function(a){return this.isunit(a,"%")},isem:function(a){return this.isunit(a,"em")},isunit:function(a,b){return a instanceof d.Dimension&&a.unit.is(b.value||b)?d.True:d.False},_isa:function(a,b){return a instanceof b?d.True:d.False},tint:function(a,b){return this.mix(this.rgb(255,255,255),a,b)},shade:function(a,b){return this.mix(this.rgb(0,0,0),a,b)},extract:function(a,b){return b=b.value-1,Array.isArray(a.value)?a.value[b]:Array(a)[b]},length:function(a){var b=Array.isArray(a.value)?a.value.length:1;return new d.Dimension(b)},"data-uri":function(b,e){if("undefined"!=typeof a)return new d.URL(e||b,this.currentFileInfo).eval(this.env);var f=b.value,g=e&&e.value,h=c("./fs"),i=c("path"),j=!1;arguments.length<2&&(g=f);var k=g.indexOf("#"),l="";if(-1!==k&&(l=g.slice(k),g=g.slice(0,k)),this.env.isPathRelative(g)&&(g=this.currentFileInfo.relativeUrls?i.join(this.currentFileInfo.currentDirectory,g):i.join(this.currentFileInfo.entryPath,g)),arguments.length<2){var m;try{m=c("mime")}catch(n){m=d._mime}f=m.lookup(g);var o=m.charsets.lookup(f);j=["US-ASCII","UTF-8"].indexOf(o)<0,j&&(f+=";base64")}else j=/;base64$/.test(f);var p=h.readFileSync(g),q=32,r=parseInt(p.length/1024,10);if(r>=q&&this.env.ieCompat!==!1)return this.env.silent||console.warn("Skipped data-uri embedding of %s because its size (%dKB) exceeds IE8-safe %dKB!",g,r,q),new d.URL(e||b,this.currentFileInfo).eval(this.env);p=j?p.toString("base64"):encodeURIComponent(p);var s='"data:'+f+","+p+l+'"';return new d.URL(new d.Anonymous(s))},"svg-gradient":function(a){function e(){throw{type:"Argument",message:"svg-gradient expects direction, start_color [start_position], [color position,]..., end_color [end_position]"}}arguments.length<3&&e();var f,g,h,i,j,k,l,m=Array.prototype.slice.call(arguments,1),n="linear",o='x="0" y="0" width="1" height="1"',p=!0,q={compress:!1},r=a.toCSS(q);switch(r){case"to bottom":f='x1="0%" y1="0%" x2="0%" y2="100%"';break;case"to right":f='x1="0%" y1="0%" x2="100%" y2="0%"';break;case"to bottom right":f='x1="0%" y1="0%" x2="100%" y2="100%"';break;case"to top right":f='x1="0%" y1="100%" x2="100%" y2="0%"';break;case"ellipse":case"ellipse at center":n="radial",f='cx="50%" cy="50%" r="75%"',o='x="-50" y="-50" width="101" height="101"';break;default:throw{type:"Argument",message:"svg-gradient direction must be 'to bottom', 'to right', 'to bottom right', 'to top right' or 'ellipse at center'"}}for(g='<'+n+'Gradient id="gradient" gradientUnits="userSpaceOnUse" '+f+">",h=0;hl?' stop-opacity="'+l+'"':"")+"/>";if(g+="',p)try{g=c("./encoder").encodeBase64(g)}catch(s){p=!1}return g="'data:image/svg+xml"+(p?";base64":"")+","+g+"'",new d.URL(new d.Anonymous(g))}},d._mime={_types:{".htm":"text/html",".html":"text/html",".gif":"image/gif",".jpg":"image/jpeg",".jpeg":"image/jpeg",".png":"image/png"},lookup:function(a){var e=c("path").extname(a),f=d._mime._types[e];if(f===b)throw new Error('Optional dependency "mime" is required for '+e);return f},charsets:{lookup:function(a){return a&&/^text\//.test(a)?"UTF-8":""}}};var l={ceil:null,floor:null,sqrt:null,abs:null,tan:"",sin:"",cos:"",atan:"rad",asin:"rad",acos:"rad"},m={multiply:function(a,b){return a*b},screen:function(a,b){return a+b-a*b},overlay:function(a,b){return a*=2,1>=a?m.multiply(a,b):m.screen(a-1,b)},softlight:function(a,b){var c=1,d=a;return b>.5&&(d=1,c=a>.25?Math.sqrt(a):((16*a-12)*a+4)*a),a-(1-2*b)*d*(c-a)},hardlight:function(a,b){return m.overlay(b,a)},difference:function(a,b){return Math.abs(a-b)},exclusion:function(a,b){return a+b-2*a*b},average:function(a,b){return(a+b)/2},negation:function(a,b){return 1-Math.abs(a+b-1)}};d.defaultFunc={eval:function(){var a=this.value_,b=this.error_;if(b)throw b;return null!=a?a?d.True:d.False:void 0},value:function(a){this.value_=a},error:function(a){this.error_=a},reset:function(){this.value_=this.error_=null}},g(),d.fround=function(a,b){var c=a&&a.numPrecision;return null==c?b:Number((b+2e-16).toFixed(c))},d.functionCall=function(a,b){this.env=a,this.currentFileInfo=b},d.functionCall.prototype=d.functions}(c("./tree")),function(a){a.colors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}}(c("./tree")),function(a){a.debugInfo=function(b,c,d){var e="";if(b.dumpLineNumbers&&!b.compress)switch(b.dumpLineNumbers){case"comments":e=a.debugInfo.asComment(c);break;case"mediaquery":e=a.debugInfo.asMediaQuery(c);break;case"all":e=a.debugInfo.asComment(c)+(d||"")+a.debugInfo.asMediaQuery(c)}return e},a.debugInfo.asComment=function(a){return"/* line "+a.debugInfo.lineNumber+", "+a.debugInfo.fileName+" */\n"},a.debugInfo.asMediaQuery=function(a){return"@media -sass-debug-info{filename{font-family:"+("file://"+a.debugInfo.fileName).replace(/([.:\/\\])/g,function(a){return"\\"==a&&(a="/"),"\\"+a})+"}line{font-family:\\00003"+a.debugInfo.lineNumber+"}}\n"},a.find=function(a,b){for(var c,d=0;d1?"["+a.value.map(function(a){return a.toCSS()}).join(", ")+"]":a.toCSS()},a.toCSS=function(a){var b=[];return this.genCSS(a,{add:function(a){b.push(a)},isEmpty:function(){return 0===b.length}}),b.join("")},a.outputRuleset=function(a,b,c){var d,e=c.length;if(a.tabLevel=(0|a.tabLevel)+1,a.compress){for(b.add("{"),d=0;e>d;d++)c[d].genCSS(a,b);return b.add("}"),void a.tabLevel--}var f="\n"+Array(a.tabLevel).join(" "),g=f+" ";if(e){for(b.add(" {"+g),c[0].genCSS(a,b),d=1;e>d;d++)b.add(g),c[d].genCSS(a,b);b.add(f+"}")}else b.add(" {"+f+"}");a.tabLevel--}}(c("./tree")),function(a){a.Alpha=function(a){this.value=a},a.Alpha.prototype={type:"Alpha",accept:function(a){this.value=a.visit(this.value)},eval:function(b){return this.value.eval?new a.Alpha(this.value.eval(b)):this},genCSS:function(a,b){b.add("alpha(opacity="),this.value.genCSS?this.value.genCSS(a,b):b.add(this.value),b.add(")")},toCSS:a.toCSS}}(c("../tree")),function(a){a.Anonymous=function(a,b,c,d,e){this.value=a,this.index=b,this.mapLines=d,this.currentFileInfo=c,this.rulesetLike="undefined"==typeof e?!1:e},a.Anonymous.prototype={type:"Anonymous",eval:function(){return new a.Anonymous(this.value,this.index,this.currentFileInfo,this.mapLines,this.rulesetLike)},compare:function(a){if(!a.toCSS)return-1;var b=this.toCSS(),c=a.toCSS();return b===c?0:c>b?-1:1},isRulesetLike:function(){return this.rulesetLike},genCSS:function(a,b){b.add(this.value,this.currentFileInfo,this.index,this.mapLines)},toCSS:a.toCSS}}(c("../tree")),function(a){a.Assignment=function(a,b){this.key=a,this.value=b},a.Assignment.prototype={type:"Assignment",accept:function(a){this.value=a.visit(this.value)},eval:function(b){return this.value.eval?new a.Assignment(this.key,this.value.eval(b)):this},genCSS:function(a,b){b.add(this.key+"="),this.value.genCSS?this.value.genCSS(a,b):b.add(this.value)},toCSS:a.toCSS}}(c("../tree")),function(a){a.Call=function(a,b,c,d){this.name=a,this.args=b,this.index=c,this.currentFileInfo=d},a.Call.prototype={type:"Call",accept:function(a){this.args&&(this.args=a.visitArray(this.args))},eval:function(b){var c,d,e=this.args.map(function(a){return a.eval(b)}),f=this.name.toLowerCase();if(f in a.functions)try{if(d=new a.functionCall(b,this.currentFileInfo),c=d[f].apply(d,e),null!=c)return c}catch(g){throw{type:g.type||"Runtime",message:"error evaluating function `"+this.name+"`"+(g.message?": "+g.message:""),index:this.index,filename:this.currentFileInfo.filename}}return new a.Call(this.name,e,this.index,this.currentFileInfo)},genCSS:function(a,b){b.add(this.name+"(",this.currentFileInfo,this.index);for(var c=0;ca?"0":"")+a.toString(16)}).join("")}function c(a,b){return Math.min(Math.max(a,0),b)}a.Color=function(a,b){this.rgb=Array.isArray(a)?a:6==a.length?a.match(/.{2}/g).map(function(a){return parseInt(a,16)}):a.split("").map(function(a){return parseInt(a+a,16)}),this.alpha="number"==typeof b?b:1};var d="transparent";a.Color.prototype={type:"Color",eval:function(){return this},luma:function(){var a=this.rgb[0]/255,b=this.rgb[1]/255,c=this.rgb[2]/255;return a=.03928>=a?a/12.92:Math.pow((a+.055)/1.055,2.4),b=.03928>=b?b/12.92:Math.pow((b+.055)/1.055,2.4),c=.03928>=c?c/12.92:Math.pow((c+.055)/1.055,2.4),.2126*a+.7152*b+.0722*c},genCSS:function(a,b){b.add(this.toCSS(a))},toCSS:function(b,e){var f=b&&b.compress&&!e,g=a.fround(b,this.alpha);if(1>g)return 0===g&&this.isTransparentKeyword?d:"rgba("+this.rgb.map(function(a){return c(Math.round(a),255)}).concat(c(g,1)).join(","+(f?"":" "))+")";var h=this.toRGB();if(f){var i=h.split("");i[1]===i[2]&&i[3]===i[4]&&i[5]===i[6]&&(h="#"+i[1]+i[3]+i[5])}return h},operate:function(b,c,d){for(var e=[],f=this.alpha*(1-d.alpha)+d.alpha,g=0;3>g;g++)e[g]=a.operate(b,c,this.rgb[g],d.rgb[g]);return new a.Color(e,f)},toRGB:function(){return b(this.rgb)},toHSL:function(){var a,b,c=this.rgb[0]/255,d=this.rgb[1]/255,e=this.rgb[2]/255,f=this.alpha,g=Math.max(c,d,e),h=Math.min(c,d,e),i=(g+h)/2,j=g-h;if(g===h)a=b=0;else{switch(b=i>.5?j/(2-g-h):j/(g+h),g){case c:a=(d-e)/j+(e>d?6:0);break;case d:a=(e-c)/j+2;break;case e:a=(c-d)/j+4}a/=6}return{h:360*a,s:b,l:i,a:f}},toHSV:function(){var a,b,c=this.rgb[0]/255,d=this.rgb[1]/255,e=this.rgb[2]/255,f=this.alpha,g=Math.max(c,d,e),h=Math.min(c,d,e),i=g,j=g-h;if(b=0===g?0:j/g,g===h)a=0;else{switch(g){case c:a=(d-e)/j+(e>d?6:0);break;case d:a=(e-c)/j+2;break;case e:a=(c-d)/j+4}a/=6}return{h:360*a,s:b,v:i,a:f}},toARGB:function(){return b([255*this.alpha].concat(this.rgb))},compare:function(a){return a.rgb&&a.rgb[0]===this.rgb[0]&&a.rgb[1]===this.rgb[1]&&a.rgb[2]===this.rgb[2]&&a.alpha===this.alpha?0:-1}},a.Color.fromKeyword=function(b){if(b=b.toLowerCase(),a.colors.hasOwnProperty(b))return new a.Color(a.colors[b].slice(1));if(b===d){var c=new a.Color([0,0,0],0);return c.isTransparentKeyword=!0,c}}}(c("../tree")),function(a){a.Comment=function(a,b,c,d){this.value=a,this.silent=!!b,this.currentFileInfo=d},a.Comment.prototype={type:"Comment",genCSS:function(b,c){this.debugInfo&&c.add(a.debugInfo(b,this),this.currentFileInfo,this.index),c.add(this.value.trim())},toCSS:a.toCSS,isSilent:function(a){var b=this.currentFileInfo&&this.currentFileInfo.reference&&!this.isReferenced,c=a.compress&&!this.value.match(/^\/\*!/);return this.silent||b||c},eval:function(){return this},markReferenced:function(){this.isReferenced=!0}}}(c("../tree")),function(a){a.Condition=function(a,b,c,d,e){this.op=a.trim(),this.lvalue=b,this.rvalue=c,this.index=d,this.negate=e},a.Condition.prototype={type:"Condition",accept:function(a){this.lvalue=a.visit(this.lvalue),this.rvalue=a.visit(this.rvalue)},eval:function(a){var b,c=this.lvalue.eval(a),d=this.rvalue.eval(a),e=this.index;return b=function(a){switch(a){case"and":return c&&d;case"or":return c||d;default:if(c.compare)b=c.compare(d);else{if(!d.compare)throw{type:"Type",message:"Unable to perform comparison",index:e};b=d.compare(c)}switch(b){case-1:return"<"===a||"=<"===a||"<="===a;case 0:return"="===a||">="===a||"=<"===a||"<="===a;case 1:return">"===a||">="===a}}}(this.op),this.negate?!b:b}}}(c("../tree")),function(a){a.DetachedRuleset=function(a,b){this.ruleset=a,this.frames=b},a.DetachedRuleset.prototype={type:"DetachedRuleset",accept:function(a){this.ruleset=a.visit(this.ruleset)},eval:function(b){var c=this.frames||b.frames.slice(0);return new a.DetachedRuleset(this.ruleset,c)},callEval:function(b){return this.ruleset.eval(this.frames?new a.evalEnv(b,this.frames.concat(b.frames)):b)}}}(c("../tree")),function(a){a.Dimension=function(c,d){this.value=parseFloat(c),this.unit=d&&d instanceof a.Unit?d:new a.Unit(d?[d]:b)},a.Dimension.prototype={type:"Dimension",accept:function(a){this.unit=a.visit(this.unit)},eval:function(){return this},toColor:function(){return new a.Color([this.value,this.value,this.value])},genCSS:function(b,c){if(b&&b.strictUnits&&!this.unit.isSingular())throw new Error("Multiple units in dimension. Correct the units or use the unit function. Bad unit: "+this.unit.toString());var d=a.fround(b,this.value),e=String(d);if(0!==d&&1e-6>d&&d>-1e-6&&(e=d.toFixed(20).replace(/0+$/,"")),b&&b.compress){if(0===d&&this.unit.isLength())return void c.add(e);d>0&&1>d&&(e=e.substr(1))}c.add(e),this.unit.genCSS(b,c)},toCSS:a.toCSS,operate:function(b,c,d){var e=a.operate(b,c,this.value,d.value),f=this.unit.clone();if("+"===c||"-"===c)if(0===f.numerator.length&&0===f.denominator.length)f.numerator=d.unit.numerator.slice(0),f.denominator=d.unit.denominator.slice(0);else if(0===d.unit.numerator.length&&0===f.denominator.length);else{if(d=d.convertTo(this.unit.usedUnits()),b.strictUnits&&d.unit.toString()!==f.toString())throw new Error("Incompatible units. Change the units or use the unit function. Bad units: '"+f.toString()+"' and '"+d.unit.toString()+"'.");e=a.operate(b,c,this.value,d.value)}else"*"===c?(f.numerator=f.numerator.concat(d.unit.numerator).sort(),f.denominator=f.denominator.concat(d.unit.denominator).sort(),f.cancel()):"/"===c&&(f.numerator=f.numerator.concat(d.unit.denominator).sort(),f.denominator=f.denominator.concat(d.unit.numerator).sort(),f.cancel());return new a.Dimension(e,f)},compare:function(b){if(b instanceof a.Dimension){var c,d,e,f;if(this.unit.isEmpty()||b.unit.isEmpty())c=this,d=b;else if(c=this.unify(),d=b.unify(),0!==c.unit.compare(d.unit))return-1;return e=c.value,f=d.value,f>e?-1:e>f?1:0}return-1},unify:function(){return this.convertTo({length:"px",duration:"s",angle:"rad"})},convertTo:function(b){var c,d,e,f,g,h=this.value,i=this.unit.clone(),j={};if("string"==typeof b){for(c in a.UnitConversions)a.UnitConversions[c].hasOwnProperty(b)&&(j={},j[c]=b);b=j}g=function(a,b){return e.hasOwnProperty(a)?(b?h/=e[a]/e[f]:h*=e[a]/e[f],f):a};for(d in b)b.hasOwnProperty(d)&&(f=b[d],e=a.UnitConversions[d],i.map(g));return i.cancel(),new a.Dimension(h,i)}},a.UnitConversions={length:{m:1,cm:.01,mm:.001,"in":.0254,px:.0254/96,pt:.0254/72,pc:.0254/72*12},duration:{s:1,ms:.001},angle:{rad:1/(2*Math.PI),deg:1/360,grad:.0025,turn:1}},a.Unit=function(a,b,c){this.numerator=a?a.slice(0).sort():[],this.denominator=b?b.slice(0).sort():[],this.backupUnit=c},a.Unit.prototype={type:"Unit",clone:function(){return new a.Unit(this.numerator.slice(0),this.denominator.slice(0),this.backupUnit)},genCSS:function(a,b){this.numerator.length>=1?b.add(this.numerator[0]):this.denominator.length>=1?b.add(this.denominator[0]):a&&a.strictUnits||!this.backupUnit||b.add(this.backupUnit)},toCSS:a.toCSS,toString:function(){var a,b=this.numerator.join("*");for(a=0;a0)for(b=0;e>b;b++)this.numerator.push(a);else if(0>e)for(b=0;-e>b;b++)this.denominator.push(a)}0===this.numerator.length&&0===this.denominator.length&&c&&(this.backupUnit=c),this.numerator.sort(),this.denominator.sort()}}}(c("../tree")),function(a){a.Directive=function(a,b,c,d,e,f){this.name=a,this.value=b,c&&(this.rules=c,this.rules.allowImports=!0),this.index=d,this.currentFileInfo=e,this.debugInfo=f},a.Directive.prototype={type:"Directive",accept:function(a){var b=this.value,c=this.rules;c&&(c=a.visit(c)),b&&(b=a.visit(b))},isRulesetLike:function(){return!this.isCharset()},isCharset:function(){return"@charset"===this.name},genCSS:function(b,c){var d=this.value,e=this.rules;c.add(this.name,this.currentFileInfo,this.index),d&&(c.add(" "),d.genCSS(b,c)),e?a.outputRuleset(b,c,[e]):c.add(";")},toCSS:a.toCSS,eval:function(b){var c=this.value,d=this.rules;return c&&(c=c.eval(b)),d&&(d=d.eval(b),d.root=!0),new a.Directive(this.name,c,d,this.index,this.currentFileInfo,this.debugInfo)},variable:function(b){return this.rules?a.Ruleset.prototype.variable.call(this.rules,b):void 0},find:function(){return this.rules?a.Ruleset.prototype.find.apply(this.rules,arguments):void 0},rulesets:function(){return this.rules?a.Ruleset.prototype.rulesets.apply(this.rules):void 0},markReferenced:function(){var a,b;if(this.isReferenced=!0,this.rules)for(b=this.rules.rules,a=0;a1?c=new a.Expression(this.value.map(function(a){return a.eval(b)})):1===this.value.length?(this.value[0].parens&&!this.value[0].parensInOp&&(e=!0),c=this.value[0].eval(b)):c=this,d&&b.outOfParenthesis(),this.parens&&this.parensInOp&&!b.isMathOn()&&!e&&(c=new a.Paren(c)),c},genCSS:function(a,b){for(var c=0;c0&&c.length&&""===c[0].combinator.value&&(c[0].combinator.value=" "),d=d.concat(a[b].elements);this.selfSelectors=[{elements:d}]}}}(c("../tree")),function(a){a.Import=function(a,c,d,e,f){if(this.options=d,this.index=e,this.path=a,this.features=c,this.currentFileInfo=f,this.options.less!==b||this.options.inline)this.css=!this.options.less||this.options.inline;else{var g=this.getPath();g&&/css([\?;].*)?$/.test(g)&&(this.css=!0)}},a.Import.prototype={type:"Import",accept:function(a){this.features&&(this.features=a.visit(this.features)),this.path=a.visit(this.path),!this.options.inline&&this.root&&(this.root=a.visit(this.root))},genCSS:function(a,b){this.css&&(b.add("@import ",this.currentFileInfo,this.index),this.path.genCSS(a,b),this.features&&(b.add(" "),this.features.genCSS(a,b)),b.add(";"))},toCSS:a.toCSS,getPath:function(){if(this.path instanceof a.Quoted){var c=this.path.value;return this.css!==b||/(\.[a-z]*$)|([\?;].*)$/.test(c)?c:c+".less"}return this.path instanceof a.URL?this.path.value.value:null},evalForImport:function(b){return new a.Import(this.path.eval(b),this.features,this.options,this.index,this.currentFileInfo)},evalPath:function(b){var c=this.path.eval(b),d=this.currentFileInfo&&this.currentFileInfo.rootpath;if(!(c instanceof a.URL)){if(d){var e=c.value;e&&b.isPathRelative(e)&&(c.value=d+e)}c.value=b.normalizePath(c.value)}return c},eval:function(b){var c,d=this.features&&this.features.eval(b);if(this.skip&&("function"==typeof this.skip&&(this.skip=this.skip()),this.skip))return[];if(this.options.inline){var e=new a.Anonymous(this.root,0,{filename:this.importedFilename},!0,!0);return this.features?new a.Media([e],this.features.value):[e]}if(this.css){var f=new a.Import(this.evalPath(b),d,this.options,this.index);if(!f.css&&this.error)throw this.error;return f}return c=new a.Ruleset(null,this.root.rules.slice(0)),c.evalImports(b),this.features?new a.Media(c.rules,this.features.value):c.rules}}}(c("../tree")),function(a){a.JavaScript=function(a,b,c){this.escaped=c,this.expression=a,this.index=b},a.JavaScript.prototype={type:"JavaScript",eval:function(b){var c,d=this,e={},f=this.expression.replace(/@\{([\w-]+)\}/g,function(c,e){return a.jsify(new a.Variable("@"+e,d.index).eval(b))});try{f=new Function("return ("+f+")")}catch(g){throw{message:"JavaScript evaluation error: "+g.message+" from `"+f+"`",index:this.index}}var h=b.frames[0].variables();for(var i in h)h.hasOwnProperty(i)&&(e[i.slice(1)]={value:h[i].value,toJS:function(){return this.value.eval(b).toCSS()}});try{c=f.call(e)}catch(g){throw{message:"JavaScript evaluation error: '"+g.name+": "+g.message.replace(/["]/g,"'")+"'",index:this.index}}return"number"==typeof c?new a.Dimension(c):"string"==typeof c?new a.Quoted('"'+c+'"',c,this.escaped,this.index):new a.Anonymous(Array.isArray(c)?c.join(", "):c)}}}(c("../tree")),function(a){a.Keyword=function(a){this.value=a},a.Keyword.prototype={type:"Keyword",eval:function(){return this},genCSS:function(a,b){if("%"===this.value)throw{type:"Syntax",message:"Invalid % without number"};b.add(this.value)},toCSS:a.toCSS,compare:function(b){return b instanceof a.Keyword?b.value===this.value?0:1:-1}},a.True=new a.Keyword("true"),a.False=new a.Keyword("false")}(c("../tree")),function(a){a.Media=function(b,c,d,e){this.index=d,this.currentFileInfo=e;var f=this.emptySelectors();this.features=new a.Value(c),this.rules=[new a.Ruleset(f,b)],this.rules[0].allowImports=!0},a.Media.prototype={type:"Media",accept:function(a){this.features&&(this.features=a.visit(this.features)),this.rules&&(this.rules=a.visitArray(this.rules))},genCSS:function(b,c){c.add("@media ",this.currentFileInfo,this.index),this.features.genCSS(b,c),a.outputRuleset(b,c,this.rules)},toCSS:a.toCSS,eval:function(b){b.mediaBlocks||(b.mediaBlocks=[],b.mediaPath=[]);var c=new a.Media(null,[],this.index,this.currentFileInfo);this.debugInfo&&(this.rules[0].debugInfo=this.debugInfo,c.debugInfo=this.debugInfo);var d=!1;b.strictMath||(d=!0,b.strictMath=!0);try{c.features=this.features.eval(b)}finally{d&&(b.strictMath=!1)}return b.mediaPath.push(c),b.mediaBlocks.push(c),b.frames.unshift(this.rules[0]),c.rules=[this.rules[0].eval(b)],b.frames.shift(),b.mediaPath.pop(),0===b.mediaPath.length?c.evalTop(b):c.evalNested(b)},variable:function(b){return a.Ruleset.prototype.variable.call(this.rules[0],b)},find:function(){return a.Ruleset.prototype.find.apply(this.rules[0],arguments)},rulesets:function(){return a.Ruleset.prototype.rulesets.apply(this.rules[0])},emptySelectors:function(){var b=new a.Element("","&",this.index,this.currentFileInfo),c=[new a.Selector([b],null,null,this.index,this.currentFileInfo)];return c[0].mediaEmpty=!0,c},markReferenced:function(){var a,b=this.rules[0].rules;for(this.rules[0].markReferenced(),this.isReferenced=!0,a=0;a1){var d=this.emptySelectors();c=new a.Ruleset(d,b.mediaBlocks),c.multiMedia=!0}return delete b.mediaBlocks,delete b.mediaPath,c},evalNested:function(b){var c,d,e=b.mediaPath.concat([this]);for(c=0;c0;c--)b.splice(c,0,new a.Anonymous("and"));return new a.Expression(b)})),new a.Ruleset([],[])},permute:function(a){if(0===a.length)return[];if(1===a.length)return a[0];for(var b=[],c=this.permute(a.slice(1)),d=0;d0){for(j=!0,g=0;gh;h++)t.value(h),s[h]=d.matchCondition(e,b);(s[0]||s[1])&&(s[0]!=s[1]&&(l.group=s[1]?v:w),r.push(l))}else r.push(l);q=!0}}for(t.reset(),n=[0,0,0],g=0;g0)m=w;else if(m=v,n[v]+n[w]>1)throw{type:"Runtime",message:"Ambiguous use of `default()` found when matching for `"+this.format(e)+"`",index:this.index,filename:this.currentFileInfo.filename};for(g=0;gh;h++)if(g=d[h],k=g&&g.name){for(l=!1,i=0;ii;i++)f.push(d[i].value.eval(b));n.prependRule(new a.Rule(k,new a.Expression(f).eval(b)))}else{if(j=g&&g.value)j=j.eval(b);else{if(!o[h].value)throw{type:"Runtime",message:"wrong number of arguments for "+this.name+" ("+p+" for "+this.arity+")"};j=o[h].value.eval(c),n.resetCache()}n.prependRule(new a.Rule(k,j)),e[h]=j}if(o[h].variadic&&d)for(i=m;p>i;i++)e[i]=d[i].value.eval(b);m++}return n},eval:function(b){return new a.mixin.Definition(this.name,this.params,this.rules,this.condition,this.variadic,this.frames||b.frames.slice(0))},evalCall:function(b,c,d){var e,f,g=[],h=this.frames?this.frames.concat(b.frames):b.frames,i=this.evalParams(b,new a.evalEnv(b,h),c,g);return i.prependRule(new a.Rule("@arguments",new a.Expression(g).eval(b))),e=this.rules.slice(0),f=new a.Ruleset(null,e),f.originalRuleset=this,f=f.eval(new a.evalEnv(b,[this,i].concat(h))),d&&(f=this.parent.makeImportant.apply(f)),f},matchCondition:function(b,c){return this.condition&&!this.condition.eval(new a.evalEnv(c,[this.evalParams(c,new a.evalEnv(c,this.frames?this.frames.concat(c.frames):c.frames),b,[])].concat(this.frames).concat(c.frames)))?!1:!0},matchArgs:function(a,b){var c,d=a&&a.length||0;if(this.variadic){if(dthis.params.length)return!1}c=Math.min(d,this.arity);for(var e=0;c>e;e++)if(!this.params[e].name&&!this.params[e].variadic&&a[e].value.eval(b).toCSS()!=this.params[e].value.eval(b).toCSS())return!1;return!0}}}(c("../tree")),function(a){a.Negative=function(a){this.value=a},a.Negative.prototype={type:"Negative",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add("-"),this.value.genCSS(a,b)},toCSS:a.toCSS,eval:function(b){return b.isMathOn()?new a.Operation("*",[new a.Dimension(-1),this.value]).eval(b):new a.Negative(this.value.eval(b))}}}(c("../tree")),function(a){a.Operation=function(a,b,c){this.op=a.trim(),this.operands=b,this.isSpaced=c},a.Operation.prototype={type:"Operation",accept:function(a){this.operands=a.visit(this.operands)},eval:function(b){var c=this.operands[0].eval(b),d=this.operands[1].eval(b);if(b.isMathOn()){if(c instanceof a.Dimension&&d instanceof a.Color&&(c=c.toColor()),d instanceof a.Dimension&&c instanceof a.Color&&(d=d.toColor()),!c.operate)throw{type:"Operation",message:"Operation on an invalid type"};return c.operate(b,this.op,d)}return new a.Operation(this.op,[c,d],this.isSpaced)},genCSS:function(a,b){this.operands[0].genCSS(a,b),this.isSpaced&&b.add(" "),b.add(this.op),this.isSpaced&&b.add(" "),this.operands[1].genCSS(a,b)},toCSS:a.toCSS},a.operate=function(a,b,c,d){switch(b){case"+":return c+d;case"-":return c-d;case"*":return c*d;case"/":return c/d}}}(c("../tree")),function(a){a.Paren=function(a){this.value=a},a.Paren.prototype={type:"Paren",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add("("),this.value.genCSS(a,b),b.add(")")},toCSS:a.toCSS,eval:function(b){return new a.Paren(this.value.eval(b))}}}(c("../tree")),function(a){a.Quoted=function(a,b,c,d,e){this.escaped=c,this.value=b||"",this.quote=a.charAt(0),this.index=d,this.currentFileInfo=e},a.Quoted.prototype={type:"Quoted",genCSS:function(a,b){this.escaped||b.add(this.quote,this.currentFileInfo,this.index),b.add(this.value),this.escaped||b.add(this.quote)},toCSS:a.toCSS,eval:function(b){var c=this,d=this.value.replace(/`([^`]+)`/g,function(d,e){return new a.JavaScript(e,c.index,!0).eval(b).value}).replace(/@\{([\w-]+)\}/g,function(d,e){var f=new a.Variable("@"+e,c.index,c.currentFileInfo).eval(b,!0);return f instanceof a.Quoted?f.value:f.toCSS()});return new a.Quoted(this.quote+d+this.quote,d,this.escaped,this.index,this.currentFileInfo)},compare:function(a){if(!a.toCSS)return-1;var b,c;return"Quoted"!==a.type||this.escaped||a.escaped?(b=this.toCSS(),c=a.toCSS()):(b=a.value,c=this.value),b===c?0:c>b?-1:1}}}(c("../tree")),function(a){function c(a,b){var c,d="",e=b.length,f={add:function(a){d+=a}};for(c=0;e>c;c++)b[c].eval(a).genCSS(a,f);return d}a.Rule=function(c,d,e,f,g,h,i,j){this.name=c,this.value=d instanceof a.Value||d instanceof a.Ruleset?d:new a.Value([d]),this.important=e?" "+e.trim():"",this.merge=f,this.index=g,this.currentFileInfo=h,this.inline=i||!1,this.variable=j!==b?j:c.charAt&&"@"===c.charAt(0)},a.Rule.prototype={type:"Rule",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add(this.name+(a.compress?":":": "),this.currentFileInfo,this.index);try{this.value.genCSS(a,b)}catch(c){throw c.index=this.index,c.filename=this.currentFileInfo.filename,c}b.add(this.important+(this.inline||a.lastRule&&a.compress?"":";"),this.currentFileInfo,this.index)},toCSS:a.toCSS,eval:function(b){var d,e=!1,f=this.name,g=this.variable;"string"!=typeof f&&(f=1===f.length&&f[0]instanceof a.Keyword?f[0].value:c(b,f),g=!1),"font"!==f||b.strictMath||(e=!0,b.strictMath=!0);try{if(d=this.value.eval(b),!this.variable&&"DetachedRuleset"===d.type)throw{message:"Rulesets cannot be evaluated on a property.",index:this.index,filename:this.currentFileInfo.filename};return new a.Rule(f,d,this.important,this.merge,this.index,this.currentFileInfo,this.inline,g)}catch(h){throw"number"!=typeof h.index&&(h.index=this.index,h.filename=this.currentFileInfo.filename),h}finally{e&&(b.strictMath=!1)}},makeImportant:function(){return new a.Rule(this.name,this.value,"!important",this.merge,this.index,this.currentFileInfo,this.inline)}}}(c("../tree")),function(a){a.RulesetCall=function(a){this.variable=a},a.RulesetCall.prototype={type:"RulesetCall",accept:function(){},eval:function(b){var c=new a.Variable(this.variable).eval(b);return c.callEval(b)}}}(c("../tree")),function(a){a.Ruleset=function(a,b,c){this.selectors=a,this.rules=b,this._lookups={},this.strictImports=c},a.Ruleset.prototype={type:"Ruleset",accept:function(a){this.paths?a.visitArray(this.paths,!0):this.selectors&&(this.selectors=a.visitArray(this.selectors)),this.rules&&this.rules.length&&(this.rules=a.visitArray(this.rules))},eval:function(b){var c,d,e,f,g=this.selectors,h=a.defaultFunc,i=!1;if(g&&(d=g.length)){for(c=[],h.error({type:"Syntax",message:"it is currently only allowed in parametric mixin guards,"}),f=0;d>f;f++)e=g[f].eval(b),c.push(e),e.evaldCondition&&(i=!0);h.reset()}else i=!0;var j,k,l=this.rules?this.rules.slice(0):null,m=new a.Ruleset(c,l,this.strictImports);m.originalRuleset=this,m.root=this.root,m.firstRoot=this.firstRoot,m.allowImports=this.allowImports,this.debugInfo&&(m.debugInfo=this.debugInfo),i||(l.length=0);var n=b.frames;n.unshift(m);var o=b.selectors;o||(b.selectors=o=[]),o.unshift(this.selectors),(m.root||m.allowImports||!m.strictImports)&&m.evalImports(b);var p=m.rules,q=p?p.length:0;for(f=0;q>f;f++)(p[f]instanceof a.mixin.Definition||p[f]instanceof a.DetachedRuleset)&&(p[f]=p[f].eval(b));var r=b.mediaBlocks&&b.mediaBlocks.length||0;for(f=0;q>f;f++)p[f]instanceof a.mixin.Call?(l=p[f].eval(b).filter(function(b){return b instanceof a.Rule&&b.variable?!m.variable(b.name):!0}),p.splice.apply(p,[f,1].concat(l)),q+=l.length-1,f+=l.length-1,m.resetCache()):p[f]instanceof a.RulesetCall&&(l=p[f].eval(b).rules.filter(function(b){return b instanceof a.Rule&&b.variable?!1:!0}),p.splice.apply(p,[f,1].concat(l)),q+=l.length-1,f+=l.length-1,m.resetCache());for(f=0;fb;b++)c=g[b],(c instanceof d||c instanceof e)&&f.push(c);return f},prependRule:function(a){var b=this.rules;b?b.unshift(a):this.rules=[a]},find:function(b,c){c=c||this;var d,e=[],f=b.toCSS();return f in this._lookups?this._lookups[f]:(this.rulesets().forEach(function(f){if(f!==c)for(var g=0;gd?Array.prototype.push.apply(e,f.find(new a.Selector(b.elements.slice(d)),c)):e.push(f);break}}),this._lookups[f]=e,e)},genCSS:function(b,c){function d(b,c){return b.rules?!0:b instanceof a.Media||c&&b instanceof a.Comment?!0:b instanceof a.Directive||b instanceof a.Anonymous?b.isRulesetLike():!1}var e,f,g,h,i,j,k=[],l=[],m=[];b.tabLevel=b.tabLevel||0,this.root||b.tabLevel++;var n,o=b.compress?"":Array(b.tabLevel+1).join(" "),p=b.compress?"":Array(b.tabLevel).join(" ");for(e=0;ee;e++)if(j=r[e],q=j.length)for(e>0&&c.add(n),b.firstSelector=!0,j[0].genCSS(b,c),b.firstSelector=!1,f=1;q>f;f++)j[f].genCSS(b,c);c.add((b.compress?"{":" {\n")+o)}for(e=0;ee;e++)n&&c.add(n),m[e].genCSS(b,c);c.isEmpty()||b.compress||!this.firstRoot||c.add("\n")},toCSS:a.toCSS,markReferenced:function(){if(this.selectors)for(var a=0;a0&&this.mergeElementsOnToSelectors(r,i),f=0;f0&&(k[0].elements=k[0].elements.slice(0),k[0].elements.push(new a.Element(j.combinator,"",j.index,j.currentFileInfo))),s.push(k);else for(g=0;g0?(m=k.slice(0),q=m.pop(),o=d.createDerived(q.elements.slice(0)),p=!1):o=d.createDerived([]),l.length>1&&(n=n.concat(l.slice(1))),l.length>0&&(p=!1,o.elements.push(new a.Element(j.combinator,l[0].elements[0].value,j.index,j.currentFileInfo)),o.elements=o.elements.concat(l[0].elements.slice(1))),p||m.push(o),m=m.concat(n),s.push(m);i=s,r=[]}for(r.length>0&&this.mergeElementsOnToSelectors(r,i),e=0;e0&&b.push(i[e])}else if(c.length>0)for(e=0;e0?e[e.length-1]=e[e.length-1].createDerived(e[e.length-1].elements.concat(b)):e.push(new a.Selector(b))}}}(c("../tree")),function(a){a.Selector=function(a,b,c,d,e,f){this.elements=a,this.extendList=b,this.condition=c,this.currentFileInfo=e||{},this.isReferenced=f,c||(this.evaldCondition=!0)},a.Selector.prototype={type:"Selector",accept:function(a){this.elements&&(this.elements=a.visitArray(this.elements)),this.extendList&&(this.extendList=a.visitArray(this.extendList)),this.condition&&(this.condition=a.visit(this.condition))},createDerived:function(b,c,d){d=null!=d?d:this.evaldCondition;var e=new a.Selector(b,c||this.extendList,null,this.index,this.currentFileInfo,this.isReferenced);return e.evaldCondition=d,e.mediaEmpty=this.mediaEmpty,e},match:function(a){var b,c,d=this.elements,e=d.length;if(a.CacheElements(),b=a._elements.length,0===b||b>e)return 0;for(c=0;b>c;c++)if(d[c].value!==a._elements[c])return 0;return b},CacheElements:function(){var a,b,c,d="";if(!this._elements){for(a=this.elements.length,c=0;a>c;c++)if(b=this.elements[c],d+=b.combinator.value,b.value.value){if("string"!=typeof b.value.value){d="";break}d+=b.value.value}else d+=b.value;this._elements=d.match(/[,&#\*\.\w-]([\w-]|(\\.))*/g),this._elements?"&"===this._elements[0]&&this._elements.shift():this._elements=[]}},isJustParentSelector:function(){return!this.mediaEmpty&&1===this.elements.length&&"&"===this.elements[0].value&&(" "===this.elements[0].combinator.value||""===this.elements[0].combinator.value)},eval:function(a){var b=this.condition&&this.condition.eval(a),c=this.elements,d=this.extendList;return c=c&&c.map(function(b){return b.eval(a)}),d=d&&d.map(function(b){return b.eval(a)}),this.createDerived(c,d,b)},genCSS:function(a,b){var c,d;if(a&&a.firstSelector||""!==this.elements[0].combinator.value||b.add(" ",this.currentFileInfo,this.index),!this._css)for(c=0;cc;c++)this.visit(a[c]);return a}var e=[];for(c=0;d>c;c++){var f=this.visit(a[c]);f.splice?f.length&&this.flatten(f,e):e.push(f)}return e},flatten:function(a,b){b||(b=[]);var c,d,e,f,g,h;for(d=0,c=a.length;c>d;d++)if(e=a[d],e.splice)for(g=0,f=e.length;f>g;g++)h=e[g],h.splice?h.length&&this.flatten(h,b):b.push(h);else b.push(e);return b}}}(c("./tree")),function(a){a.importVisitor=function(b,c,d,e,f){if(this._visitor=new a.visitor(this),this._importer=b,this._finish=c,this.env=d||new a.evalEnv,this.importCount=0,this.onceFileDetectionMap=e||{},this.recursionDetector={},f)for(var g in f)f.hasOwnProperty(g)&&(this.recursionDetector[g]=!0)},a.importVisitor.prototype={isReplacing:!0,run:function(a){var b;try{this._visitor.visit(a)}catch(c){b=c}this.isFinished=!0,0===this.importCount&&this._finish(b)},visitImport:function(b,c){var d,e=this,f=b.options.inline;if(!b.css||f){try{d=b.evalForImport(this.env)}catch(g){g.filename||(g.index=b.index,g.filename=b.currentFileInfo.filename),b.css=!0,b.error=g}if(d&&(!d.css||f)){b=d,this.importCount++;var h=new a.evalEnv(this.env,this.env.frames.slice(0));b.options.multiple&&(h.importMultiple=!0),this._importer.push(b.getPath(),b.currentFileInfo,b.options,function(c,d,g,i){c&&!c.filename&&(c.index=b.index,c.filename=b.currentFileInfo.filename);var j=g||i in e.recursionDetector;h.importMultiple||(b.skip=j?!0:function(){return i in e.onceFileDetectionMap?!0:(e.onceFileDetectionMap[i]=!0,!1)});var k=function(a){e.importCount--,0===e.importCount&&e.isFinished&&e._finish(a)};return!d||(b.root=d,b.importedFilename=i,f||!h.importMultiple&&j)?void k():(e.recursionDetector[i]=!0,void new a.importVisitor(e._importer,k,h,e.onceFileDetectionMap,e.recursionDetector).run(d))})}}return c.visitDeeper=!1,b},visitRule:function(a,b){return b.visitDeeper=!1,a},visitDirective:function(a){return this.env.frames.unshift(a),a},visitDirectiveOut:function(){this.env.frames.shift()},visitMixinDefinition:function(a){return this.env.frames.unshift(a),a},visitMixinDefinitionOut:function(){this.env.frames.shift()},visitRuleset:function(a){return this.env.frames.unshift(a),a},visitRulesetOut:function(){this.env.frames.shift()},visitMedia:function(a){return this.env.frames.unshift(a.rules[0]),a},visitMediaOut:function(){this.env.frames.shift()}}}(c("./tree")),function(a){a.joinSelectorVisitor=function(){this.contexts=[[]],this._visitor=new a.visitor(this)},a.joinSelectorVisitor.prototype={run:function(a){return this._visitor.visit(a)},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitRuleset:function(a){var b,c=this.contexts[this.contexts.length-1],d=[];this.contexts.push(d),a.root||(b=a.selectors,b&&(b=b.filter(function(a){return a.getIsOutput()}),a.selectors=b.length?b:b=null,b&&a.joinSelectors(d,c,b)),b||(a.rules=null),a.paths=d)},visitRulesetOut:function(){this.contexts.length=this.contexts.length-1},visitMedia:function(a){var b=this.contexts[this.contexts.length-1];a.rules[0].root=0===b.length||b[0].multiMedia}}}(c("./tree")),function(a){a.toCSSVisitor=function(b){this._visitor=new a.visitor(this),this._env=b},a.toCSSVisitor.prototype={isReplacing:!0,run:function(a){return this._visitor.visit(a)},visitRule:function(a){return a.variable?[]:a},visitMixinDefinition:function(a){return a.frames=[],[]},visitExtend:function(){return[]},visitComment:function(a){return a.isSilent(this._env)?[]:a},visitMedia:function(a,b){return a.accept(this._visitor),b.visitDeeper=!1,a.rules.length?a:[]},visitDirective:function(b){if(b.currentFileInfo.reference&&!b.isReferenced)return[];if("@charset"===b.name){if(this.charset){if(b.debugInfo){var c=new a.Comment("/* "+b.toCSS(this._env).replace(/\n/g,"")+" */\n");return c.debugInfo=b.debugInfo,this._visitor.visit(c)}return[]}this.charset=!0}return b.rules&&b.rules.rules&&this._mergeRules(b.rules.rules),b},checkPropertiesInRoot:function(b){for(var c,d=0;d0)&&e.splice(0,0,b);else{b.paths&&(b.paths=b.paths.filter(function(b){var c;for(" "===b[0].elements[0].combinator.value&&(b[0].elements[0].combinator=new a.Combinator("")),c=0;ch;)d=f[h],d&&d.rules?(e.push(this._visitor.visit(d)),f.splice(h,1),g--):h++;g>0?b.accept(this._visitor):b.rules=null,c.visitDeeper=!1,f=b.rules,f&&(this._mergeRules(f),f=b.rules),f&&(this._removeDuplicateRules(f),f=b.rules),f&&f.length>0&&b.paths.length>0&&e.splice(0,0,b)}return 1===e.length?e[0]:e},_removeDuplicateRules:function(b){if(b){var c,d,e,f={};for(e=b.length-1;e>=0;e--)if(d=b[e],d instanceof a.Rule)if(f[d.name]){c=f[d.name],c instanceof a.Rule&&(c=f[d.name]=[f[d.name].toCSS(this._env)]);var g=d.toCSS(this._env);-1!==c.indexOf(g)?b.splice(e,1):c.push(g)}else f[d.name]=d}},_mergeRules:function(b){if(b){for(var c,d,e,f={},g=0;g1){d=c[0];var h=[],i=[];c.map(function(a){"+"===a.merge&&(i.length>0&&h.push(e(i)),i=[]),i.push(a)}),h.push(e(i)),d.value=g(h)}})}}}}(c("./tree")),function(a){a.extendFinderVisitor=function(){this._visitor=new a.visitor(this),this.contexts=[],this.allExtendsStack=[[]]},a.extendFinderVisitor.prototype={run:function(a){return a=this._visitor.visit(a),a.allExtends=this.allExtendsStack[0],a},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitRuleset:function(b){if(!b.root){var c,d,e,f,g=[],h=b.rules,i=h?h.length:0;for(c=0;i>c;c++)b.rules[c]instanceof a.Extend&&(g.push(h[c]),b.extendOnEveryPath=!0);var j=b.paths;for(c=0;c=0||(i=[k.selfSelectors[0]],g=n.findMatch(j,i),g.length&&j.selfSelectors.forEach(function(b){h=n.extendSelector(g,i,b),l=new a.Extend(k.selector,k.option,0),l.selfSelectors=h,h[h.length-1].extendList=[l],m.push(l),l.ruleset=k.ruleset,l.parent_ids=l.parent_ids.concat(k.parent_ids,j.parent_ids),k.firstExtendOnThisSelectorPath&&(l.firstExtendOnThisSelectorPath=!0,k.ruleset.paths.push(h))}));if(m.length){if(this.extendChainCount++,d>100){var o="{unable to calculate}",p="{unable to calculate}";try{o=m[0].selfSelectors[0].toCSS(),p=m[0].selector.toCSS()}catch(q){}throw{message:"extend circular reference detected. One of the circular extends is currently:"+o+":extend("+p+")"}}return m.concat(n.doExtendChaining(m,c,d+1))}return m},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitSelector:function(a,b){b.visitDeeper=!1},visitRuleset:function(a){if(!a.root){var b,c,d,e,f=this.allExtendsStack[this.allExtendsStack.length-1],g=[],h=this;for(d=0;d0&&k[i.matched].combinator.value!==g?i=null:i.matched++,i&&(i.finished=i.matched===k.length,i.finished&&!a.allowAfter&&(e+1j&&k>0&&(l[l.length-1].elements=l[l.length-1].elements.concat(c[j].elements.slice(k)),k=0,j++),i=f.elements.slice(k,h.index).concat([g]).concat(d.elements.slice(1)),j===h.pathIndex&&e>0?l[l.length-1].elements=l[l.length-1].elements.concat(i):(l=l.concat(c.slice(j,h.pathIndex)),l.push(new a.Selector(i))),j=h.endPathIndex,k=h.endPathElementIndex,k>=c[j].elements.length&&(k=0,j++);return j0&&(l[l.length-1].elements=l[l.length-1].elements.concat(c[j].elements.slice(k)),j++),l=l.concat(c.slice(j,c.length))},visitRulesetOut:function(){},visitMedia:function(a){var b=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);b=b.concat(this.doExtendChaining(b,a.allExtends)),this.allExtendsStack.push(b)},visitMediaOut:function(){this.allExtendsStack.length=this.allExtendsStack.length-1},visitDirective:function(a){var b=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);b=b.concat(this.doExtendChaining(b,a.allExtends)),this.allExtendsStack.push(b)},visitDirectiveOut:function(){this.allExtendsStack.length=this.allExtendsStack.length-1}}}(c("./tree")),function(a){a.sourceMapOutput=function(a){this._css=[],this._rootNode=a.rootNode,this._writeSourceMap=a.writeSourceMap,this._contentsMap=a.contentsMap,this._contentsIgnoredCharsMap=a.contentsIgnoredCharsMap,this._sourceMapFilename=a.sourceMapFilename,this._outputFilename=a.outputFilename,this._sourceMapURL=a.sourceMapURL,a.sourceMapBasepath&&(this._sourceMapBasepath=a.sourceMapBasepath.replace(/\\/g,"/")),this._sourceMapRootpath=a.sourceMapRootpath,this._outputSourceFiles=a.outputSourceFiles,this._sourceMapGeneratorConstructor=a.sourceMapGenerator||c("source-map").SourceMapGenerator,this._sourceMapRootpath&&"/"!==this._sourceMapRootpath.charAt(this._sourceMapRootpath.length-1)&&(this._sourceMapRootpath+="/"),this._lineNumber=0,this._column=0},a.sourceMapOutput.prototype.normalizeFilename=function(a){return a=a.replace(/\\/g,"/"),this._sourceMapBasepath&&0===a.indexOf(this._sourceMapBasepath)&&(a=a.substring(this._sourceMapBasepath.length),("\\"===a.charAt(0)||"/"===a.charAt(0))&&(a=a.substring(1))),(this._sourceMapRootpath||"")+a},a.sourceMapOutput.prototype.add=function(a,b,c,d){if(a){var e,f,g,h,i;if(b){var j=this._contentsMap[b.filename];this._contentsIgnoredCharsMap[b.filename]&&(c-=this._contentsIgnoredCharsMap[b.filename],0>c&&(c=0),j=j.slice(this._contentsIgnoredCharsMap[b.filename])),j=j.substring(0,c),f=j.split("\n"),h=f[f.length-1]}if(e=a.split("\n"),g=e[e.length-1],b)if(d)for(i=0;i0){var e,f=JSON.stringify(this._sourceMapGenerator.toJSON());this._sourceMapURL?e=this._sourceMapURL:this._sourceMapFilename&&(e=this.normalizeFilename(this._sourceMapFilename)),this._writeSourceMap?this._writeSourceMap(f):e="data:application/json;base64,"+c("./encoder.js").encodeBase64(f),e&&this._css.push("/*# sourceMappingURL="+e+" */")}return this._css.join("")}}(c("./tree"));var y=/^(file|chrome(-extension)?|resource|qrc|app):/.test(location.protocol);w.env=w.env||("127.0.0.1"==location.hostname||"0.0.0.0"==location.hostname||"localhost"==location.hostname||location.port&&location.port.length>0||y?"development":"production");var z={debug:3,info:2,errors:1,none:0};if(w.logLevel="undefined"!=typeof w.logLevel?w.logLevel:"development"===w.env?z.debug:z.errors,w.async=w.async||!1,w.fileAsync=w.fileAsync||!1,w.poll=w.poll||(y?1e3:1500),w.functions)for(var A in w.functions)w.functions.hasOwnProperty(A)&&(w.tree.functions[A]=w.functions[A]);var B=/!dumpLineNumbers:(comments|mediaquery|all)/.exec(location.hash);B&&(w.dumpLineNumbers=B[1]);var C=/^text\/(x-)?less$/,D=null,E={};if(w.watch=function(){return w.watchMode||(w.env="development",v()),this.watchMode=!0,!0},w.unwatch=function(){return clearInterval(w.watchTimer),this.watchMode=!1,!1},/!watch/.test(location.hash)&&w.watch(),"development"!=w.env)try{D="undefined"==typeof a.localStorage?null:a.localStorage}catch(F){}var G=document.getElementsByTagName("link");w.sheets=[];for(var H=0;H - -(c) 2009-2014 Stuart Knightley -Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown. - -JSZip uses the library pako released under the MIT license : -https://github.com/nodeca/pako/blob/master/LICENSE -*/ -!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.JSZip=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j="",k=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");k>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){"use strict";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){"use strict";c.STORE={magic:"\x00\x00",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a("./flate")},{"./flate":8}],4:[function(a,b){"use strict";var c=a("./utils"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if("undefined"==typeof a||!a.length)return 0;var e="string"!==c.getTypeOf(a);"undefined"==typeof b&&(b=0);var f=0,g=0,h=0;b=-1^b;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{"./utils":21}],5:[function(a,b){"use strict";function c(){this.data=null,this.length=0,this.index=0}var d=a("./utils");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.lengtha)throw new Error("End of data reached (data length = "+this.length+", asked index = "+a+"). Corrupted zip ?")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo("string",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{"./utils":21}],6:[function(a,b,c){"use strict";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.comment=null},{}],7:[function(a,b,c){"use strict";var d=a("./utils");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo("uint8array",a)},c.uint8Array2String=function(a){return d.transformTo("string",a)},c.string2Blob=function(a){var b=d.transformTo("arraybuffer",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{"./utils":21}],8:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,e=a("pako");c.uncompressInputType=d?"uint8array":"array",c.compressInputType=d?"uint8array":"array",c.magic="\b\x00",c.compress=function(a){return e.deflateRaw(a)},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){"use strict";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root="",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)"function"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a("./base64");c.prototype=a("./object"),c.prototype.load=a("./load"),c.support=a("./support"),c.defaults=a("./defaults"),c.utils=a("./deprecatedPublicUtils"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a("./compressions"),b.exports=c},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(a,b){"use strict";var c=a("./base64"),d=a("./zipEntries");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;gc;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a0?a.substring(0,b):""},x=function(a,b){return"/"!=a.slice(-1)&&(a+="/"),b="undefined"!=typeof b?b:!1,this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},y=function(a,b){var c,f=new j;return a._data instanceof j?(f.uncompressedSize=a._data.uncompressedSize,f.crc32=a._data.crc32,0===f.uncompressedSize||a.dir?(b=i.STORE,f.compressedContent="",f.crc32=0):a._data.compressionMethod===b.magic?f.compressedContent=a._data.getCompressedContent():(c=a._data.getContent(),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c)))):(c=p(a),(!c||0===c.length||a.dir)&&(b=i.STORE,c=""),f.uncompressedSize=c.length,f.crc32=e(c),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c))),f.compressedSize=f.compressedContent.length,f.compressionMethod=b.magic,f},z=function(a,b,c,g){var h,i,j,k,m=(c.compressedContent,d.transformTo("string",l.utf8encode(b.name))),n=b.comment||"",o=d.transformTo("string",l.utf8encode(n)),p=m.length!==b.name.length,q=o.length!==n.length,r=b.options,t="",u="",v="";j=b._initialMetadata.dir!==b.dir?b.dir:r.dir,k=b._initialMetadata.date!==b.date?b.date:r.date,h=k.getHours(),h<<=6,h|=k.getMinutes(),h<<=5,h|=k.getSeconds()/2,i=k.getFullYear()-1980,i<<=4,i|=k.getMonth()+1,i<<=5,i|=k.getDate(),p&&(u=s(1,1)+s(e(m),4)+m,t+="up"+s(u.length,2)+u),q&&(v=s(1,1)+s(this.crc32(o),4)+o,t+="uc"+s(v.length,2)+v);var w="";w+="\n\x00",w+=p||q?"\x00\b":"\x00\x00",w+=c.compressionMethod,w+=s(h,2),w+=s(i,2),w+=s(c.crc32,4),w+=s(c.compressedSize,4),w+=s(c.uncompressedSize,4),w+=s(m.length,2),w+=s(t.length,2);var x=f.LOCAL_FILE_HEADER+w+m+t,y=f.CENTRAL_FILE_HEADER+"\x00"+w+s(o.length,2)+"\x00\x00\x00\x00"+(j===!0?"\x00\x00\x00":"\x00\x00\x00\x00")+s(g,4)+m+t+o;return{fileRecord:x,dirRecord:y,compressedObject:c}},A={load:function(){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=x.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||("/"!=a.slice(-1)&&(a+="/"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5}],19:[function(a,b){"use strict";var c=a("./utils"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo("uint8array",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{"./utils":21}],20:[function(a,b,c){"use strict";for(var d=a("./utils"),e=a("./support"),f=a("./nodeBuffer"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(e=a[b++],128>e)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,"utf-8"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo("nodebuffer",a).toString("utf-8");a=d.transformTo(e.uint8array?"uint8array":"array",a);for(var b=[],c=0,f=a.length,g=65536;f>c;){var h=j(a,Math.min(c+g,f));b.push(k(e.uint8array?a.subarray(c,h):a.slice(c,h))),c=h}return b.join("")}},{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(a,b,c){"use strict";function d(a){return a}function e(a,b){for(var c=0;cg&&b>1;)try{d.push("array"===f||"nodebuffer"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(i){b=Math.floor(b/2)}return d.join("")}function g(a,b){for(var c=0;cb?"0":"")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return"[object RegExp]"===Object.prototype.toString.call(a)}},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(a,b){"use strict";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a("./stringReader"),e=a("./nodeBufferReader"),f=a("./uint8ArrayReader"),g=a("./utils"),h=a("./signature"),i=a("./zipEntry"),j=a("./support"),k=a("./object");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error("Corrupted zip or bug : unexpected signature ("+g.pretty(b)+", expected "+g.pretty(a)+")")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;d>e;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var a,b;for(a=0;a0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==n)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header) -};s.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?m:l,e.input="string"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),c=g.deflate(e,d),c!==o&&c!==n)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&d===m)&&this.onData("string"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&c!==o);return d===m?(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===n):!0},s.prototype.onData=function(a){this.chunks.push(a)},s.prototype.onEnd=function(a){a===n&&(this.result="string"===this.options.to?this.chunks.join(""):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=s,c.deflate=d,c.deflateRaw=e,c.gzip=f},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(a,b,c){"use strict";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a("./zlib/inflate.js"),g=a("./utils/common"),h=a("./utils/strings"),i=a("./zlib/constants"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=a("./zlib/gzheader"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?i.Z_FINISH:i.Z_NO_FLUSH,l.input="string"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),c=f.inflate(l,i.Z_NO_FLUSH),c!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&("string"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d===i.Z_FINISH?(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK):!0},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){"use strict";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c="",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a("./common"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;256>j;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;h>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&h>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+i[a[c]]>b?c:b}},{"./common":27}],29:[function(a,b){"use strict";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){"use strict";function c(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function d(a,b,c,d){var f=e,g=d+c;a=-1^a;for(var h=d;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var e=c();b.exports=d},{}],32:[function(a,b,c){"use strict";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-jb?a.strstart-(a.w_size-jb):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ib,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ib-(m-f),f=m-ib,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-jb)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=hb)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return sb;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return sb;if(a.strstart-a.block_start>=a.w_size-jb&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?sb:sb}function o(a,b){for(var c,d;;){if(a.lookahead=hb&&(a.ins_h=(a.ins_h<=hb)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-hb),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=hb){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<=hb&&(a.ins_h=(a.ins_h<4096)&&(a.match_length=hb-1)),a.prev_length>=hb&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-hb,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-hb),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<=hb&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ib;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ib-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=hb?(c=D._tr_tally(a,1,a.match_length-hb),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return sb;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=hb-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*fb),this.dyn_dtree=new C.Buf16(2*(2*db+1)),this.bl_tree=new C.Buf16(2*(2*eb+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(gb+1),this.heap=new C.Buf16(2*cb+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*cb+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?lb:qb,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===rb&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===lb)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=mb):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,wb),h.status=qb);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=kb),m+=31-m%31,h.status=qb,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===mb)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=nb)}else h.status=nb;if(h.status===nb)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ob)}else h.status=ob;if(h.status===ob)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=pb)}else h.status=pb;if(h.status===pb&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=qb)):h.status=qb),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===rb&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==rb){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===ub||o===vb)&&(h.status=rb),o===sb||o===ub)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===tb&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==lb&&b!==mb&&b!==nb&&b!==ob&&b!==pb&&b!==qb&&b!==rb?d(a,O):(a.state=null,b===qb?d(a,P):M)):O}var B,C=a("../utils/common"),D=a("./trees"),E=a("./adler32"),F=a("./crc32"),G=a("./messages"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,ab=29,bb=256,cb=bb+1+ab,db=30,eb=19,fb=2*cb+1,gb=15,hb=3,ib=258,jb=ib+hb+1,kb=32,lb=42,mb=69,nb=73,ob=91,pb=103,qb=113,rb=666,sb=1,tb=2,ub=3,vb=4,wb=3,xb=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new xb(0,0,0,0,n),new xb(4,4,8,4,o),new xb(4,5,16,8,o),new xb(4,6,32,32,o),new xb(4,4,16,16,p),new xb(8,16,32,32,p),new xb(8,16,128,128,p),new xb(8,32,128,256,p),new xb(32,128,258,1024,p),new xb(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(a,b){"use strict";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){"use strict";var c=30,d=12;b.exports=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;e=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=e.dmax,l=e.wsize,m=e.whave,n=e.wnext,o=e.window,p=e.hold,q=e.bits,r=e.lencode,s=e.distcode,t=(1<q&&(p+=B[f++]<>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<q&&(p+=B[f++]<>>=w,q-=w),15>q&&(p+=B[f++]<>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<q&&(p+=B[f++]<q&&(p+=B[f++]<k){a.msg="invalid distance too far back",e.mode=c;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&e.sane){a.msg="invalid distance too far back",e.mode=c;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),e.hold=p,e.bits=q}},{}],35:[function(a,b,c){"use strict";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(ob),b.distcode=b.distdyn=new r.Buf32(pb),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,rb)}function k(a){if(sb){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sb=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whaven;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=t(c.check,Bb,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=lb;break}if((15&m)!==J){a.msg="unknown compression method",c.mode=lb;break}if(m>>>=4,n-=4,wb=(15&m)+8,0===c.wbits)c.wbits=wb;else if(wb>c.wbits){a.msg="invalid window size",c.mode=lb;break}c.dmax=1<n;){if(0===i)break a;i--,m+=e[g++]<>8&1),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,Bb[2]=m>>>16&255,Bb[3]=m>>>24&255,c.check=t(c.check,Bb,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>8),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wb=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wb)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.name+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.comment+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>=7&n,n-=7&n,c.mode=ib;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=bb,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg="invalid block type",c.mode=lb}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<>>16^65535)){a.msg="invalid stored block lengths",c.mode=lb;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=lb;break}c.have=0,c.mode=_;case _:for(;c.haven;){if(0===i)break a;i--,m+=e[g++]<>>=3,n-=3}for(;c.have<19;)c.lens[Cb[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,yb={bits:c.lenbits},xb=v(w,c.lens,0,19,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid code lengths set",c.mode=lb;break}c.have=0,c.mode=ab;case ab:for(;c.have>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<sb)m>>>=qb,n-=qb,c.lens[c.have++]=sb;else{if(16===sb){for(zb=qb+2;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=qb,n-=qb,0===c.have){a.msg="invalid bit length repeat",c.mode=lb;break}wb=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sb){for(zb=qb+3;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=qb,n-=qb,wb=0,q=3+(7&m),m>>>=3,n-=3}else{for(zb=qb+7;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=qb,n-=qb,wb=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=lb;break}for(;q--;)c.lens[c.have++]=wb}}if(c.mode===lb)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=lb;break}if(c.lenbits=9,yb={bits:c.lenbits},xb=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid literal/lengths set",c.mode=lb;break}if(c.distbits=6,c.distcode=c.distdyn,yb={bits:c.distbits},xb=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,yb),c.distbits=yb.bits,xb){a.msg="invalid distances set",c.mode=lb;break}if(c.mode=bb,b===B)break a;case bb:c.mode=cb;case cb:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);break}for(c.back=0;Ab=c.lencode[m&(1<>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,c.length=sb,0===rb){c.mode=hb;break}if(32&rb){c.back=-1,c.mode=V;break}if(64&rb){a.msg="invalid literal/length code",c.mode=lb;break}c.extra=15&rb,c.mode=db;case db:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=eb;case eb:for(;Ab=c.distcode[m&(1<>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,64&rb){a.msg="invalid distance code",c.mode=lb;break}c.offset=sb,c.extra=15&rb,c.mode=fb;case fb:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=lb;break}c.mode=gb;case gb:if(0===j)break a; -if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=lb;break}q>c.wnext?(q-=c.wnext,ob=c.wsize-q):ob=c.wnext-q,q>c.length&&(q=c.length),pb=c.window}else pb=f,ob=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pb[ob++];while(--q);0===c.length&&(c.mode=cb);break;case hb:if(0===j)break a;f[h++]=c.length,j--,c.mode=cb;break;case ib:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<n;){if(0===i)break a;i--,m+=e[g++]<=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[n+E]]++;for(H=C,G=d;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;d>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===g||1!==G))return-1;for(Q[1]=0,D=1;d>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[n+E]&&(r[Q[b[n+E]]++]=E);if(a===g?(N=R=r,y=19):a===h?(N=j,O-=257,R=k,S-=257,y=256):(N=l,R=m,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<e||a===i&&L>f)return 1;for(var T=0;;){T++,z=D-J,r[E]y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[n+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<e||a===i&&L>f)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{"../utils/common":27}],37:[function(a,b){"use strict";b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],38:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?gb[a]:gb[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>V-c?(a.bi_buf|=b<>V-a.bi_valid,a.bi_valid+=c-V):(a.bi_buf|=b<>>=1,c<<=1;while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;U>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;T>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(U+1),g=0;for(d=1;U>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(U+1);for(c=0,d=0;O-1>d;d++)for(ib[d]=c,a=0;a<1<<_[d];a++)hb[c++]=d;for(hb[c-1]=d,e=0,d=0;16>d;d++)for(jb[d]=e,a=0;a<1<>=7;R>d;d++)for(jb[d]=e<<7,a=0;a<1<=b;b++)f[b]=0;for(a=0;143>=a;)eb[2*a+1]=8,a++,f[8]++;for(;255>=a;)eb[2*a+1]=9,a++,f[9]++;for(;279>=a;)eb[2*a+1]=7,a++,f[7]++;for(;287>=a;)eb[2*a+1]=8,a++,f[8]++;for(l(eb,Q+1,f),a=0;R>a;a++)fb[2*a+1]=5,fb[2*a]=i(a,5);kb=new nb(eb,_,P+1,Q,U),lb=new nb(fb,ab,0,R,U),mb=new nb(new Array(0),bb,0,S,W)}function n(a){var b;for(b=0;Q>b;b++)a.dyn_ltree[2*b]=0;for(b=0;R>b;b++)a.dyn_dtree[2*b]=0;for(b=0;S>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*X]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++hh?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*Y]++):10>=h?a.bl_tree[2*Z]++:a.bl_tree[2*$]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++jj){do h(a,e,a.bl_tree);while(0!==--j)}else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,Y,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,Z,a.bl_tree),g(a,j-3,3)):(h(a,$,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=S-1;b>=3&&0===a.bl_tree[2*cb[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*cb[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;P>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){pb||(m(),pb=!0),a.l_desc=new ob(a.dyn_ltree,kb),a.d_desc=new ob(a.dyn_dtree,lb),a.bl_desc=new ob(a.bl_tree,mb),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,X,eb),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,eb,fb)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(hb[c]+P+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a("../utils/common"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=3,N=258,O=29,P=256,Q=P+1+O,R=30,S=19,T=2*Q+1,U=15,V=16,W=7,X=256,Y=16,Z=17,$=18,_=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ab=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],bb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],db=512,eb=new Array(2*(Q+2));d(eb);var fb=new Array(2*R);d(fb);var gb=new Array(db);d(gb);var hb=new Array(N-M+1);d(hb);var ib=new Array(O);d(ib);var jb=new Array(R);d(jb);var kb,lb,mb,nb=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},ob=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},pb=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{"../utils/common":27}],39:[function(a,b){"use strict";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)}),function(a,b){function c(a){for(var b=Object.create(null),c=0;c=0;)if(b[c]==a)return!0;return!1}function g(a,b){for(var c=0,d=b.length;d>c;++c)if(a(b[c]))return b[c]}function h(a,b){if(0>=b)return"";if(1==b)return a;var c=h(a,b>>1);return c+=c,1&b&&(c+=a),c}function i(a,b){Error.call(this,a),this.msg=a,this.defs=b}function j(a,b,c){a===!0&&(a={});var d=a||{};if(c)for(var e in d)d.hasOwnProperty(e)&&!b.hasOwnProperty(e)&&i.croak("`"+e+"` is not a supported option",b);for(var e in b)b.hasOwnProperty(e)&&(d[e]=a&&a.hasOwnProperty(e)?a[e]:b[e]);return d}function k(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}function l(){}function m(a,b){a.indexOf(b)<0&&a.push(b)}function n(a,b){return a.replace(/\{(.+?)\}/g,function(a,c){return b[c]})}function o(a,b){for(var c=a.length;--c>=0;)a[c]===b&&a.splice(c,1)}function p(a,b){function c(a,c){for(var d=[],e=0,f=0,g=0;e=0})}function s(a){function b(a){if(1==a.length)return c+="return str === "+JSON.stringify(a[0])+";";c+="switch(str){";for(var b=0;b3){d.sort(function(a,b){return b.length-a.length}),c+="switch(str.length){";for(var e=0;e=0;)if(!b(a[c]))return!1;return!0}function u(){this._values=Object.create(null),this._size=0}function v(a,b,c,d){arguments.length<4&&(d=U),b=b?b.split(/\s+/):[];var e=b;d&&d.PROPS&&(b=b.concat(d.PROPS));for(var f="return function AST_"+a+"(props){ if (props) { ",g=b.length;--g>=0;)f+="this."+b[g]+" = props."+b[g]+";";var h=d&&new d;(h&&h.initialize||c&&c.initialize)&&(f+="this.initialize();"),f+="}}";var i=new Function(f)();if(h&&(i.prototype=h,i.BASE=d),d&&d.SUBCLASSES.push(i),i.prototype.CTOR=i,i.PROPS=b||null,i.SELF_PROPS=e,i.SUBCLASSES=[],a&&(i.prototype.TYPE=i.TYPE=a),c)for(g in c)c.hasOwnProperty(g)&&(/^\$/.test(g)?i[g.substr(1)]=c[g]:i.prototype[g]=c[g]);return i.DEFMETHOD=function(a,b){this.prototype[a]=b},i}function w(a,b){a.body instanceof V?a.body._walk(b):a.body.forEach(function(a){a._walk(b)})}function x(a){this.visit=a,this.stack=[]}function y(a){return a>=97&&122>=a||a>=65&&90>=a||a>=170&&Lc.letter.test(String.fromCharCode(a))}function z(a){return a>=48&&57>=a}function A(a){return z(a)||y(a)}function B(a){return Lc.non_spacing_mark.test(a)||Lc.space_combining_mark.test(a)}function C(a){return Lc.connector_punctuation.test(a)}function D(a){return!Ac(a)&&/^[a-z_$][a-z0-9_$]*$/i.test(a)}function E(a){return 36==a||95==a||y(a)}function F(a){var b=a.charCodeAt(0);return E(b)||z(b)||8204==b||8205==b||B(a)||C(a)}function G(a){return/^[a-z_$][a-z0-9_$]*$/i.test(a)}function H(a){return Dc.test(a)?parseInt(a.substr(2),16):Ec.test(a)?parseInt(a.substr(1),8):Fc.test(a)?parseFloat(a):void 0}function I(a,b,c,d){this.message=a,this.line=b,this.col=c,this.pos=d,this.stack=(new Error).stack}function J(a,b,c,d,e){throw new I(a,c,d,e)}function K(a,b,c){return a.type==b&&(null==c||a.value==c)}function L(a,b,c){function d(){return y.text.charAt(y.pos)}function e(a,b){var c=y.text.charAt(y.pos++);if(a&&!c)throw Mc;return"\n"==c?(y.newline_before=y.newline_before||!b,++y.line,y.col=0):++y.col,c}function f(a){for(;a-->0;)e()}function g(a){return y.text.substr(y.pos,a.length)==a}function h(a,b){var c=y.text.indexOf(a,y.pos);if(b&&-1==c)throw Mc;return c}function i(){y.tokline=y.line,y.tokcol=y.col,y.tokpos=y.pos}function j(a,c,d){y.regex_allowed="operator"==a&&!Oc(c)||"keyword"==a&&Bc(c)||"punc"==a&&Ic(c),B="punc"==a&&"."==c;var e={type:a,value:c,line:y.tokline,col:y.tokcol,pos:y.tokpos,endpos:y.pos,nlb:y.newline_before,file:b};if(!d){e.comments_before=y.comments_before,y.comments_before=[];for(var f=0,g=e.comments_before.length;g>f;f++)e.nlb=e.nlb||e.comments_before[f].nlb}return y.newline_before=!1,new T(e)}function k(){for(;Hc(d());)e()}function l(a){for(var b,c="",f=0;(b=d())&&a(b,f++);)c+=e();return c}function m(a){J(a,b,y.tokline,y.tokcol,y.tokpos)}function n(a){var b=!1,c=!1,d=!1,e="."==a,f=l(function(f,g){var h=f.charCodeAt(0);switch(h){case 120:case 88:return d?!1:d=!0;case 101:case 69:return d?!0:b?!1:b=c=!0;case 45:return c||0==g&&!a;case 43:return c;case c=!1,46:return e||d||b?!1:e=!0}return A(h)});a&&(f=a+f);var g=H(f);return isNaN(g)?void m("Invalid syntax: "+f):j("num",g)}function o(a){var b=e(!0,a);switch(b.charCodeAt(0)){case 110:return"\n";case 114:return"\r";case 116:return" ";case 98:return"\b";case 118:return" ";case 102:return"\f";case 48:return"\x00";case 120:return String.fromCharCode(p(2));case 117:return String.fromCharCode(p(4));case 10:return"";default:return b}}function p(a){for(var b=0;a>0;--a){var c=parseInt(e(!0),16);isNaN(c)&&m("Invalid hex-character pattern in string"),b=b<<4|c}return b}function q(a){var b,c=y.regex_allowed,d=h("\n");return-1==d?(b=y.text.substr(y.pos),y.pos=y.text.length):(b=y.text.substring(y.pos,d),y.pos=d),y.comments_before.push(j(a,b,!0)),y.regex_allowed=c,x()}function r(){for(var a,b,c=!1,f="",g=!1;null!=(a=d());)if(c)"u"!=a&&m("Expecting UnicodeEscapeSequence -- uXXXX"),a=o(),F(a)||m("Unicode char: "+a.charCodeAt(0)+" is not valid in identifier"),f+=a,c=!1;else if("\\"==a)g=c=!0,e();else{if(!F(a))break;f+=e()}return yc(f)&&g&&(b=f.charCodeAt(0).toString(16).toUpperCase(),f="\\u"+"0000".substr(b.length)+b+f.slice(1)),f}function s(a){function b(a){if(!d())return a;var c=a+d();return Gc(c)?(e(),b(c)):a}return j("operator",b(a||e()))}function t(){switch(e(),d()){case"/":return e(),q("comment1");case"*":return e(),D()}return y.regex_allowed?G(""):s("/")}function u(){return e(),z(d().charCodeAt(0))?n("."):j("punc",".")}function v(){var a=r();return B?j("name",a):zc(a)?j("atom",a):yc(a)?Gc(a)?j("operator",a):j("keyword",a):j("name",a)}function w(a,b){return function(c){try{return b(c)}catch(d){if(d!==Mc)throw d;m(a)}}}function x(a){if(null!=a)return G(a);if(k(),i(),c){if(g("")&&y.newline_before)return f(3),q("comment4")}var b=d();if(!b)return j("eof");var h=b.charCodeAt(0);switch(h){case 34:case 39:return C();case 46:return u();case 47:return t()}return z(h)?n():Jc(b)?j("punc",e()):Cc(b)?s():92==h||E(h)?v():void m("Unexpected character '"+b+"'")}var y={text:a.replace(/\r\n?|[\n\u2028\u2029]/g,"\n").replace(/\uFEFF/g,""),filename:b,pos:0,tokpos:0,line:1,tokline:0,col:0,tokcol:0,newline_before:!1,regex_allowed:!1,comments_before:[]},B=!1,C=w("Unterminated string constant",function(){for(var a=e(),b="";;){var c=e(!0);if("\\"==c){var d=0,f=null;c=l(function(a){if(a>="0"&&"7">=a){if(!f)return f=a,++d;if("3">=f&&2>=d)return++d;if(f>="4"&&1>=d)return++d}return!1}),c=d>0?String.fromCharCode(parseInt(c,8)):o(!0)}else if(c==a)break;b+=c}return j("string",b)}),D=w("Unterminated multiline comment",function(){var a=y.regex_allowed,b=h("*/",!0),c=y.text.substring(y.pos,b),d=c.split("\n"),e=d.length;y.pos=b+2,y.line+=e-1,e>1?y.col=d[e-1].length:y.col+=d[e-1].length,y.col+=2;var f=y.newline_before=y.newline_before||c.indexOf("\n")>=0;return y.comments_before.push(j("comment2",c,!0)),y.regex_allowed=a,y.newline_before=f,x()}),G=w("Unterminated regular expression",function(a){for(var b,c=!1,d=!1;b=e(!0);)if(c)a+="\\"+b,c=!1;else if("["==b)d=!0,a+=b;else if("]"==b&&d)d=!1,a+=b;else{if("/"==b&&!d)break;"\\"==b?c=!0:a+=b}var f=r();return j("regexp",new RegExp(a,f))});return x.context=function(a){return a&&(y=a),y},x}function M(a,b){function c(a,b){return K(Q.token,a,b)}function d(){return Q.peeked||(Q.peeked=Q.input())}function e(){return Q.prev=Q.token,Q.peeked?(Q.token=Q.peeked,Q.peeked=null):Q.token=Q.input(),Q.in_directives=Q.in_directives&&("string"==Q.token.type||c("punc",";")),Q.token}function f(){return Q.prev}function h(a,b,c,d){var e=Q.input.context();J(a,e.filename,null!=b?b:e.tokline,null!=c?c:e.tokcol,null!=d?d:e.tokpos)}function i(a,b){h(b,a.line,a.col)}function k(a){null==a&&(a=Q.token),i(a,"Unexpected token: "+a.type+" ("+a.value+")")}function l(a,b){return c(a,b)?e():void i(Q.token,"Unexpected token "+Q.token.type+" «"+Q.token.value+"», expected "+a+" «"+b+"»")}function m(a){return l("punc",a)}function n(){return!b.strict&&(Q.token.nlb||c("eof")||c("punc","}"))}function o(){c("punc",";")?e():n()||k()}function p(){m("(");var a=yb(!0);return m(")"),a}function q(a){return function(){var b=Q.token,c=a(),d=f();return c.start=b,c.end=d,c}}function r(){(c("operator","/")||c("operator","/="))&&(Q.peeked=null,Q.token=Q.input(Q.token.value.substr(1)))}function s(){var a=I(hc);g(function(b){return b.name==a.name},Q.labels)&&h("Label "+a.name+" defined twice"),m(":"),Q.labels.push(a);var b=R();return Q.labels.pop(),b instanceof cb||a.references.forEach(function(b){b instanceof vb&&(b=b.label.start,h("Continue label `"+a.name+"` refers to non-IterationStatement.",b.line,b.col,b.pos))}),new bb({body:b,label:a})}function t(a){return new Y({body:(a=yb(!0),o(),a)})}function u(a){var b,c=null;n()||(c=I(jc,!0)),null!=c?(b=g(function(a){return a.name==c.name},Q.labels),b||h("Undefined label "+c.name),c.thedef=b):0==Q.in_loop&&h(a.TYPE+" not inside a loop or switch"),o();var d=new a({label:c});return b&&b.references.push(d),d}function v(){m("(");var a=null;return!c("punc",";")&&(a=c("keyword","var")?(e(),T(!0)):yb(!0,!0),c("operator","in"))?(a instanceof Fb&&a.definitions.length>1&&h("Only one variable declaration allowed in for..in loop"),e(),x(a)):w(a)}function w(a){m(";");var b=c("punc",";")?null:yb(!0);m(";");var d=c("punc",")")?null:yb(!0);return m(")"),new gb({init:a,condition:b,step:d,body:P(R)})}function x(a){var b=a instanceof Fb?a.definitions[0].name:null,c=yb(!0);return m(")"),new hb({init:a,name:b,object:c,body:P(R)})}function y(){var a=p(),b=R(),d=null;return c("keyword","else")&&(e(),d=R()),new wb({condition:a,body:b,alternative:d})}function z(){m("{");for(var a=[];!c("punc","}");)c("eof")&&k(),a.push(R());return e(),a}function A(){m("{");for(var a,b=[],d=null,g=null;!c("punc","}");)c("eof")&&k(),c("keyword","case")?(g&&(g.end=f()),d=[],g=new Ab({start:(a=Q.token,e(),a),expression:yb(!0),body:d}),b.push(g),m(":")):c("keyword","default")?(g&&(g.end=f()),d=[],g=new zb({start:(a=Q.token,e(),m(":"),a),body:d}),b.push(g)):(d||k(),d.push(R()));return g&&(g.end=f()),e(),b}function B(){var a=z(),b=null,d=null;if(c("keyword","catch")){var g=Q.token;e(),m("(");var i=I(gc);m(")"),b=new Cb({start:g,argname:i,body:z(),end:f()})}if(c("keyword","finally")){var g=Q.token;e(),d=new Db({start:g,body:z(),end:f()})}return b||d||h("Missing catch/finally blocks"),new Bb({body:a,bcatch:b,bfinally:d})}function C(a,b){for(var d=[];d.push(new Hb({start:Q.token,name:I(b?cc:bc),value:c("operator","=")?(e(),yb(!1,a)):null,end:f()})),c("punc",",");)e();return d}function D(){var a,b=Q.token;switch(b.type){case"name":case"keyword":a=H(ic);break;case"num":a=new nc({start:b,end:b,value:b.value});break;case"string":a=new mc({start:b,end:b,value:b.value});break;case"regexp":a=new oc({start:b,end:b,value:b.value});break;case"atom":switch(b.value){case"false":a=new wc({start:b,end:b});break;case"true":a=new xc({start:b,end:b});break;case"null":a=new qc({start:b,end:b})}}return e(),a}function E(a,b,d){for(var f=!0,g=[];!c("punc",a)&&(f?f=!1:m(","),!b||!c("punc",a));)g.push(c("punc",",")&&d?new tc({start:Q.token,end:Q.token}):yb(!1));return e(),g}function F(){var a=Q.token;switch(e(),a.type){case"num":case"string":case"name":case"operator":case"keyword":case"atom":return a.value;default:k()}}function G(){var a=Q.token;switch(e(),a.type){case"name":case"operator":case"keyword":case"atom":return a.value;default:k()}}function H(a){var b=Q.token.value;return new("this"==b?kc:a)({name:String(b),start:Q.token,end:Q.token})}function I(a,b){if(!c("name"))return b||h("Name expected"),null;var d=H(a);return e(),d}function M(a,b,c){return"++"!=b&&"--"!=b||O(c)||h("Invalid use of "+b+" operator"),new a({operator:b,expression:c})}function N(a){return pb(lb(!0),0,a)}function O(a){return b.strict?a instanceof kc?!1:a instanceof Lb||a instanceof $b:!0}function P(a){++Q.in_loop;var b=a();return--Q.in_loop,b}b=j(b,{strict:!1,filename:null,toplevel:null,expression:!1,html5_comments:!0});var Q={input:"string"==typeof a?L(a,b.filename,b.html5_comments):a,token:null,prev:null,peeked:null,in_function:0,in_directives:!0,in_loop:0,labels:[]};Q.token=e();var R=q(function(){var a;switch(r(),Q.token.type){case"string":var b=Q.in_directives,g=t();return b&&g.body instanceof mc&&!c("punc",",")?new X({value:g.body.value}):g;case"num":case"regexp":case"operator":case"atom":return t();case"name":return K(d(),"punc",":")?s():t();case"punc":switch(Q.token.value){case"{":return new $({start:Q.token,body:z(),end:f()});case"[":case"(":return t();case";":return e(),new _;default:k()}case"keyword":switch(a=Q.token.value,e(),a){case"break":return u(ub);case"continue":return u(vb);case"debugger":return o(),new W;case"do":return new eb({body:P(R),condition:(l("keyword","while"),a=p(),o(),a)});case"while":return new fb({condition:p(),body:P(R)});case"for":return v();case"function":return S(ob);case"if":return y();case"return":return 0==Q.in_function&&h("'return' outside of function"),new rb({value:c("punc",";")?(e(),null):n()?null:(a=yb(!0),o(),a)});case"switch":return new xb({expression:p(),body:P(A)});case"throw":return Q.token.nlb&&h("Illegal newline after 'throw'"),new sb({value:(a=yb(!0),o(),a)});case"try":return B();case"var":return a=T(),o(),a;case"const":return a=U(),o(),a;case"with":return new ib({expression:p(),body:R()});default:k()}}}),S=function(a){var b=a===ob,d=c("name")?I(b?ec:fc):null;return b&&!d&&k(),m("("),new a({name:d,argnames:function(a,b){for(;!c("punc",")");)a?a=!1:m(","),b.push(I(dc));return e(),b}(!0,[]),body:function(a,b){++Q.in_function,Q.in_directives=!0,Q.in_loop=0,Q.labels=[];var c=z();return--Q.in_function,Q.in_loop=a,Q.labels=b,c}(Q.in_loop,Q.labels)})},T=function(a){return new Fb({start:f(),definitions:C(a,!1),end:f()})},U=function(){return new Gb({start:f(),definitions:C(!1,!0),end:f()})},V=function(){var a=Q.token;l("operator","new");var b,d=Z(!1);return c("punc","(")?(e(),b=E(")")):b=[],jb(new Jb({start:a,expression:d,args:b,end:f()}),!0)},Z=function(a){if(c("operator","new"))return V();var b=Q.token;if(c("punc")){switch(b.value){case"(":e();var d=yb(!0);return d.start=b,d.end=Q.token,m(")"),jb(d,a);case"[":return jb(ab(),a);case"{":return jb(db(),a)}k()}if(c("keyword","function")){e();var g=S(nb);return g.start=b,g.end=f(),jb(g,a)}return Sc[Q.token.type]?jb(D(),a):void k()},ab=q(function(){return m("["),new Ub({elements:E("]",!b.strict,!0)})}),db=q(function(){m("{");for(var a=!0,d=[];!c("punc","}")&&(a?a=!1:m(","),b.strict||!c("punc","}"));){var g=Q.token,h=g.type,i=F();if("name"==h&&!c("punc",":")){if("get"==i){d.push(new Zb({start:g,key:D(),value:S(mb),end:f()}));continue}if("set"==i){d.push(new Yb({start:g,key:D(),value:S(mb),end:f()}));continue}}m(":"),d.push(new Xb({start:g,key:i,value:yb(!1),end:f()}))}return e(),new Vb({properties:d})}),jb=function(a,b){var d=a.start;if(c("punc","."))return e(),jb(new Mb({start:d,expression:a,property:G(),end:f()}),b);if(c("punc","[")){e();var g=yb(!0);return m("]"),jb(new Nb({start:d,expression:a,property:g,end:f()}),b)}return b&&c("punc","(")?(e(),jb(new Ib({start:d,expression:a,args:E(")"),end:f()}),!0)):a},lb=function(a){var b=Q.token;if(c("operator")&&Nc(b.value)){e(),r();var d=M(Pb,b.value,lb(a));return d.start=b,d.end=f(),d}for(var g=Z(a);c("operator")&&Oc(Q.token.value)&&!Q.token.nlb;)g=M(Qb,Q.token.value,g),g.start=b,g.end=Q.token,e();return g},pb=function(a,b,d){var f=c("operator")?Q.token.value:null;"in"==f&&d&&(f=null);var g=null!=f?Qc[f]:null;if(null!=g&&g>b){e();var h=pb(lb(!0),g,d);return pb(new Rb({start:a.start,left:a,operator:f,right:h,end:h.end}),b,d)}return a},qb=function(a){var b=Q.token,d=N(a);if(c("operator","?")){e();var g=yb(!1);return m(":"),new Sb({start:b,condition:d,consequent:g,alternative:yb(!1,a),end:f()})}return d},tb=function(a){var b=Q.token,d=qb(a),g=Q.token.value;if(c("operator")&&Pc(g)){if(O(d))return e(),new Tb({start:b,left:d,operator:g,right:tb(a),end:f()});h("Invalid assignment")}return d},yb=function(a,b){var f=Q.token,g=tb(b);return a&&c("punc",",")?(e(),new Kb({start:f,car:g,cdr:yb(!0,b),end:d()})):g};return b.expression?yb(!0):function(){for(var a=Q.token,d=[];!c("eof");)d.push(R());var e=f(),g=b.toplevel;return g?(g.body=g.body.concat(d),g.end=e):g=new kb({start:a,body:d,end:e}),g}()}function N(a,b){x.call(this),this.before=a,this.after=b}function O(a,b,c){this.name=c.name,this.orig=[c],this.scope=a,this.references=[],this.global=!1,this.mangled_name=null,this.undeclared=!1,this.constant=!1,this.index=b}function P(a){function b(a,b){return a.replace(/[\u0080-\uffff]/g,function(a){var c=a.charCodeAt(0).toString(16);if(c.length<=2&&!b){for(;c.length<2;)c="0"+c;return"\\x"+c}for(;c.length<4;)c="0"+c;return"\\u"+c})}function c(c){var d=0,e=0;return c=c.replace(/[\\\b\f\n\r\t\x22\x27\u2028\u2029\0]/g,function(a){switch(a){case"\\":return"\\\\";case"\b":return"\\b";case"\f":return"\\f";case"\n":return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";case'"':return++d,'"';case"'":return++e,"'";case"\x00":return"\\x00"}return a}),a.ascii_only&&(c=b(c)),d>e?"'"+c.replace(/\x27/g,"\\'")+"'":'"'+c.replace(/\x22/g,'\\"')+'"'}function d(b){var d=c(b);return a.inline_script&&(d=d.replace(/<\x2fscript([>\/\t\n\f\r ])/gi,"<\\/script$1")),d}function e(c){return c=c.toString(),a.ascii_only&&(c=b(c,!0)),c}function f(b){return h(" ",a.indent_start+v-b*a.indent_level)}function g(){return C.charAt(C.length-1)}function i(){a.max_line_len&&w>a.max_line_len&&k("\n")}function k(b){b=String(b);var c=b.charAt(0);if(B&&(c&&!(";}".indexOf(c)<0)||/[;]$/.test(C)||(a.semicolons||D(c)?(z+=";",w++,y++):(z+="\n",y++,x++,w=0),a.beautify||(A=!1)),B=!1,i()),!a.beautify&&a.preserve_line&&L[L.length-1])for(var d=L[L.length-1].start.line;d>x;)z+="\n",y++,x++,w=0,A=!1;if(A){var e=g();(F(e)&&(F(c)||"\\"==c)||/^[\+\-\/]$/.test(c)&&c==e)&&(z+=" ",w++,y++),A=!1}var f=b.split(/\r?\n/),h=f.length-1;x+=h,0==h?w+=f[h].length:w=f[h].length,y+=b.length,C=b,z+=b}function m(){B=!1,k(";")}function n(){return v+a.indent_level}function o(a){var b;return k("{"),I(),H(n(),function(){b=a()}),G(),k("}"),b}function p(a){k("(");var b=a();return k(")"),b}function q(a){k("[");var b=a();return k("]"),b}function r(){k(","),E()}function t(){k(":"),a.space_colon&&E()}function u(){return z}a=j(a,{indent_start:0,indent_level:4,quote_keys:!1,space_colon:!0,ascii_only:!1,unescape_regexps:!1,inline_script:!1,width:80,max_line_len:32e3,beautify:!1,source_map:null,bracketize:!1,semicolons:!0,comments:!1,preserve_line:!1,screw_ie8:!1,preamble:null},!0);var v=0,w=0,x=1,y=0,z="",A=!1,B=!1,C=null,D=s("( [ + * / - , ."),E=a.beautify?function(){k(" ")}:function(){A=!0},G=a.beautify?function(b){a.beautify&&k(f(b?.5:0))}:l,H=a.beautify?function(a,b){a===!0&&(a=n());var c=v;v=a;var d=b();return v=c,d}:function(a,b){return b()},I=a.beautify?function(){k("\n")}:l,J=a.beautify?function(){k(";")}:function(){B=!0},K=a.source_map?function(b,c){try{b&&a.source_map.add(b.file||"?",x,w,b.line,b.col,c||"name"!=b.type?c:b.value)}catch(d){U.warn("Couldn't figure out mapping for {file}:{line},{col} → {cline},{ccol} [{name}]",{file:b.file,line:b.line,col:b.col,cline:x,ccol:w,name:c||""})}}:l;a.preamble&&k(a.preamble.replace(/\r\n?|[\n\u2028\u2029]|\s*$/g,"\n"));var L=[];return{get:u,toString:u,indent:G,indentation:function(){return v},current_width:function(){return w-v},should_break:function(){return a.width&&this.current_width()>=a.width},newline:I,print:k,space:E,comma:r,colon:t,last:function(){return C},semicolon:J,force_semicolon:m,to_ascii:b,print_name:function(a){k(e(a))},print_string:function(a){k(d(a))},next_indent:n,with_indent:H,with_block:o,with_parens:p,with_square:q,add_mapping:K,option:function(b){return a[b]},line:function(){return x},col:function(){return w},pos:function(){return y},push_node:function(a){L.push(a)},pop_node:function(){return L.pop()},stack:function(){return L},parent:function(a){return L[L.length-2-(a||0)]}}}function Q(a,b){return this instanceof Q?(N.call(this,this.before,this.after),void(this.options=j(a,{sequences:!b,properties:!b,dead_code:!b,drop_debugger:!b,unsafe:!1,unsafe_comps:!1,conditionals:!b,comparisons:!b,evaluate:!b,booleans:!b,loops:!b,unused:!b,hoist_funs:!b,keep_fargs:!1,hoist_vars:!1,if_return:!b,join_vars:!b,cascade:!b,side_effects:!b,pure_getters:!1,pure_funcs:null,negate_iife:!b,screw_ie8:!1,drop_console:!1,angular:!1,warnings:!0,global_defs:{}},!0))):new Q(a,b) -}function R(a){function b(b,e,f,g,h,i){if(d){var j=d.originalPositionFor({line:g,column:h});if(null===j.source)return;b=j.source,g=j.line,h=j.column,i=j.name}c.addMapping({generated:{line:e+a.dest_line_diff,column:f},original:{line:g+a.orig_line_diff,column:h},source:b,name:i})}a=j(a,{file:null,root:null,orig:null,orig_line_diff:0,dest_line_diff:0});var c=new MOZ_SourceMap.SourceMapGenerator({file:a.file,sourceRoot:a.root}),d=a.orig&&new MOZ_SourceMap.SourceMapConsumer(a.orig);return{add:b,get:function(){return c},toString:function(){return c.toString()}}}b.UglifyJS=a,i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,i.croak=function(a,b){throw new i(a,b)};var S=function(){function a(a,f,g){function h(){var h=f(a[i],i),l=h instanceof d;return l&&(h=h.v),h instanceof b?(h=h.v,h instanceof c?k.push.apply(k,g?h.v.slice().reverse():h.v):k.push(h)):h!==e&&(h instanceof c?j.push.apply(j,g?h.v.slice().reverse():h.v):j.push(h)),l}var i,j=[],k=[];if(a instanceof Array)if(g){for(i=a.length;--i>=0&&!h(););j.reverse(),k.reverse()}else for(i=0;i SymbolDef for all variables/functions defined in this scope",functions:"[Object/S] like `variables`, but only lists function declarations",uses_with:"[boolean/S] tells whether this scope uses the `with` statement",uses_eval:"[boolean/S] tells whether this scope contains a direct call to the global `eval`",parent_scope:"[AST_Scope?/S] link to the parent scope",enclosed:"[SymbolDef*/S] a list of all symbol definitions that are accessed from this scope or any subscopes",cname:"[integer/S] current index for mangling variables (used internally by the mangler)"}},Z),kb=v("Toplevel","globals",{$documentation:"The toplevel scope",$propdoc:{globals:"[Object/S] a map of name -> SymbolDef for all undeclared names"},wrap_enclose:function(a){var b=this,c=[],d=[];a.forEach(function(a){var b=a.lastIndexOf(":");c.push(a.substr(0,b)),d.push(a.substr(b+1))});var e="(function("+d.join(",")+"){ '$ORIG'; })("+c.join(",")+")";return e=M(e),e=e.transform(new N(function(a){return a instanceof X&&"$ORIG"==a.value?S.splice(b.body):void 0}))},wrap_commonjs:function(a,b){var c=this,d=[];b&&(c.figure_out_scope(),c.walk(new x(function(a){a instanceof ac&&a.definition().global&&(g(function(b){return b.name==a.name},d)||d.push(a))})));var e="(function(exports, global){ global['"+a+"'] = exports; '$ORIG'; '$EXPORTS'; }({}, (function(){return this}())))";return e=M(e),e=e.transform(new N(function(a){if(a instanceof Y&&(a=a.body,a instanceof mc))switch(a.getValue()){case"$ORIG":return S.splice(c.body);case"$EXPORTS":var b=[];return d.forEach(function(a){b.push(new Y({body:new Tb({left:new Nb({expression:new ic({name:"exports"}),property:new mc({value:a.name})}),operator:"=",right:new ic(a)})}))}),S.splice(b)}}))}},jb),lb=v("Lambda","name argnames uses_arguments",{$documentation:"Base class for functions",$propdoc:{name:"[AST_SymbolDeclaration?] the name of this function",argnames:"[AST_SymbolFunarg*] array of function arguments",uses_arguments:"[boolean/S] tells whether this function accesses the arguments array"},_walk:function(a){return a._visit(this,function(){this.name&&this.name._walk(a),this.argnames.forEach(function(b){b._walk(a)}),w(this,a)})}},jb),mb=v("Accessor",null,{$documentation:"A setter/getter function. The `name` property is always null."},lb),nb=v("Function",null,{$documentation:"A function expression"},lb),ob=v("Defun",null,{$documentation:"A function definition"},lb),pb=v("Jump",null,{$documentation:"Base class for “jumps†(for now that's `return`, `throw`, `break` and `continue`)"},V),qb=v("Exit","value",{$documentation:"Base class for “exits†(`return` and `throw`)",$propdoc:{value:"[AST_Node?] the value returned or thrown by this statement; could be null for AST_Return"},_walk:function(a){return a._visit(this,this.value&&function(){this.value._walk(a)})}},pb),rb=v("Return",null,{$documentation:"A `return` statement"},qb),sb=v("Throw",null,{$documentation:"A `throw` statement"},qb),tb=v("LoopControl","label",{$documentation:"Base class for loop control statements (`break` and `continue`)",$propdoc:{label:"[AST_LabelRef?] the label, or null if none"},_walk:function(a){return a._visit(this,this.label&&function(){this.label._walk(a)})}},pb),ub=v("Break",null,{$documentation:"A `break` statement"},tb),vb=v("Continue",null,{$documentation:"A `continue` statement"},tb),wb=v("If","condition alternative",{$documentation:"A `if` statement",$propdoc:{condition:"[AST_Node] the `if` condition",alternative:"[AST_Statement?] the `else` part, or null if not present"},_walk:function(a){return a._visit(this,function(){this.condition._walk(a),this.body._walk(a),this.alternative&&this.alternative._walk(a)})}},ab),xb=v("Switch","expression",{$documentation:"A `switch` statement",$propdoc:{expression:"[AST_Node] the `switch` “discriminantâ€"},_walk:function(a){return a._visit(this,function(){this.expression._walk(a),w(this,a)})}},Z),yb=v("SwitchBranch",null,{$documentation:"Base class for `switch` branches"},Z),zb=v("Default",null,{$documentation:"A `default` switch branch"},yb),Ab=v("Case","expression",{$documentation:"A `case` switch branch",$propdoc:{expression:"[AST_Node] the `case` expression"},_walk:function(a){return a._visit(this,function(){this.expression._walk(a),w(this,a)})}},yb),Bb=v("Try","bcatch bfinally",{$documentation:"A `try` statement",$propdoc:{bcatch:"[AST_Catch?] the catch block, or null if not present",bfinally:"[AST_Finally?] the finally block, or null if not present"},_walk:function(a){return a._visit(this,function(){w(this,a),this.bcatch&&this.bcatch._walk(a),this.bfinally&&this.bfinally._walk(a)})}},Z),Cb=v("Catch","argname",{$documentation:"A `catch` node; only makes sense as part of a `try` statement",$propdoc:{argname:"[AST_SymbolCatch] symbol for the exception"},_walk:function(a){return a._visit(this,function(){this.argname._walk(a),w(this,a)})}},Z),Db=v("Finally",null,{$documentation:"A `finally` node; only makes sense as part of a `try` statement"},Z),Eb=v("Definitions","definitions",{$documentation:"Base class for `var` or `const` nodes (variable declarations/initializations)",$propdoc:{definitions:"[AST_VarDef*] array of variable definitions"},_walk:function(a){return a._visit(this,function(){this.definitions.forEach(function(b){b._walk(a)})})}},V),Fb=v("Var",null,{$documentation:"A `var` statement"},Eb),Gb=v("Const",null,{$documentation:"A `const` statement"},Eb),Hb=v("VarDef","name value",{$documentation:"A variable declaration; only appears in a AST_Definitions node",$propdoc:{name:"[AST_SymbolVar|AST_SymbolConst] name of the variable",value:"[AST_Node?] initializer, or null of there's no initializer"},_walk:function(a){return a._visit(this,function(){this.name._walk(a),this.value&&this.value._walk(a)})}}),Ib=v("Call","expression args",{$documentation:"A function call expression",$propdoc:{expression:"[AST_Node] expression to invoke as function",args:"[AST_Node*] array of arguments"},_walk:function(a){return a._visit(this,function(){this.expression._walk(a),this.args.forEach(function(b){b._walk(a)})})}}),Jb=v("New",null,{$documentation:"An object instantiation. Derives from a function call since it has exactly the same properties"},Ib),Kb=v("Seq","car cdr",{$documentation:"A sequence expression (two comma-separated expressions)",$propdoc:{car:"[AST_Node] first element in sequence",cdr:"[AST_Node] second element in sequence"},$cons:function(a,b){var c=new Kb(a);return c.car=a,c.cdr=b,c},$from_array:function(a){if(0==a.length)return null;if(1==a.length)return a[0].clone();for(var b=null,c=a.length;--c>=0;)b=Kb.cons(a[c],b);for(var d=b;d;){if(d.cdr&&!d.cdr.cdr){d.cdr=d.cdr.car;break}d=d.cdr}return b},to_array:function(){for(var a=this,b=[];a;){if(b.push(a.car),a.cdr&&!(a.cdr instanceof Kb)){b.push(a.cdr);break}a=a.cdr}return b},add:function(a){for(var b=this;b;){if(!(b.cdr instanceof Kb)){var c=Kb.cons(b.cdr,a);return b.cdr=c}b=b.cdr}},_walk:function(a){return a._visit(this,function(){this.car._walk(a),this.cdr&&this.cdr._walk(a)})}}),Lb=v("PropAccess","expression property",{$documentation:'Base class for property access expressions, i.e. `a.foo` or `a["foo"]`',$propdoc:{expression:"[AST_Node] the “container†expression",property:"[AST_Node|string] the property to access. For AST_Dot this is always a plain string, while for AST_Sub it's an arbitrary AST_Node"}}),Mb=v("Dot",null,{$documentation:"A dotted property access expression",_walk:function(a){return a._visit(this,function(){this.expression._walk(a)})}},Lb),Nb=v("Sub",null,{$documentation:'Index-style property access, i.e. `a["foo"]`',_walk:function(a){return a._visit(this,function(){this.expression._walk(a),this.property._walk(a)})}},Lb),Ob=v("Unary","operator expression",{$documentation:"Base class for unary expressions",$propdoc:{operator:"[string] the operator",expression:"[AST_Node] expression that this unary operator applies to"},_walk:function(a){return a._visit(this,function(){this.expression._walk(a)})}}),Pb=v("UnaryPrefix",null,{$documentation:"Unary prefix expression, i.e. `typeof i` or `++i`"},Ob),Qb=v("UnaryPostfix",null,{$documentation:"Unary postfix expression, i.e. `i++`"},Ob),Rb=v("Binary","left operator right",{$documentation:"Binary expression, i.e. `a + b`",$propdoc:{left:"[AST_Node] left-hand side expression",operator:"[string] the operator",right:"[AST_Node] right-hand side expression"},_walk:function(a){return a._visit(this,function(){this.left._walk(a),this.right._walk(a)})}}),Sb=v("Conditional","condition consequent alternative",{$documentation:"Conditional expression using the ternary operator, i.e. `a ? b : c`",$propdoc:{condition:"[AST_Node]",consequent:"[AST_Node]",alternative:"[AST_Node]"},_walk:function(a){return a._visit(this,function(){this.condition._walk(a),this.consequent._walk(a),this.alternative._walk(a)})}}),Tb=v("Assign",null,{$documentation:"An assignment expression — `a = b + 5`"},Rb),Ub=v("Array","elements",{$documentation:"An array literal",$propdoc:{elements:"[AST_Node*] array of elements"},_walk:function(a){return a._visit(this,function(){this.elements.forEach(function(b){b._walk(a)})})}}),Vb=v("Object","properties",{$documentation:"An object literal",$propdoc:{properties:"[AST_ObjectProperty*] array of properties"},_walk:function(a){return a._visit(this,function(){this.properties.forEach(function(b){b._walk(a)})})}}),Wb=v("ObjectProperty","key value",{$documentation:"Base class for literal object properties",$propdoc:{key:"[string] the property name converted to a string for ObjectKeyVal. For setters and getters this is an arbitrary AST_Node.",value:"[AST_Node] property value. For setters and getters this is an AST_Function."},_walk:function(a){return a._visit(this,function(){this.value._walk(a)})}}),Xb=v("ObjectKeyVal",null,{$documentation:"A key: value object property"},Wb),Yb=v("ObjectSetter",null,{$documentation:"An object setter property"},Wb),Zb=v("ObjectGetter",null,{$documentation:"An object getter property"},Wb),$b=v("Symbol","scope name thedef",{$propdoc:{name:"[string] name of this symbol",scope:"[AST_Scope/S] the current scope (not necessarily the definition scope)",thedef:"[SymbolDef/S] the definition of this symbol"},$documentation:"Base class for all symbols"}),_b=v("SymbolAccessor",null,{$documentation:"The name of a property accessor (setter/getter function)"},$b),ac=v("SymbolDeclaration","init",{$documentation:"A declaration symbol (symbol in var/const, function name or argument, symbol in catch)",$propdoc:{init:"[AST_Node*/S] array of initializers for this declaration."}},$b),bc=v("SymbolVar",null,{$documentation:"Symbol defining a variable"},ac),cc=v("SymbolConst",null,{$documentation:"A constant declaration"},ac),dc=v("SymbolFunarg",null,{$documentation:"Symbol naming a function argument"},bc),ec=v("SymbolDefun",null,{$documentation:"Symbol defining a function"},ac),fc=v("SymbolLambda",null,{$documentation:"Symbol naming a function expression"},ac),gc=v("SymbolCatch",null,{$documentation:"Symbol naming the exception in catch"},ac),hc=v("Label","references",{$documentation:"Symbol naming a label (declaration)",$propdoc:{references:"[AST_LoopControl*] a list of nodes referring to this label"},initialize:function(){this.references=[],this.thedef=this}},$b),ic=v("SymbolRef",null,{$documentation:"Reference to some symbol (not definition/declaration)"},$b),jc=v("LabelRef",null,{$documentation:"Reference to a label symbol"},$b),kc=v("This",null,{$documentation:"The `this` symbol"},$b),lc=v("Constant",null,{$documentation:"Base class for all constants",getValue:function(){return this.value}}),mc=v("String","value",{$documentation:"A string literal",$propdoc:{value:"[string] the contents of this string"}},lc),nc=v("Number","value",{$documentation:"A number literal",$propdoc:{value:"[number] the numeric value"}},lc),oc=v("RegExp","value",{$documentation:"A regexp literal",$propdoc:{value:"[RegExp] the actual regexp"}},lc),pc=v("Atom",null,{$documentation:"Base class for atoms"},lc),qc=v("Null",null,{$documentation:"The `null` atom",value:null},pc),rc=v("NaN",null,{$documentation:"The impossible value",value:0/0},pc),sc=v("Undefined",null,{$documentation:"The `undefined` value",value:void 0},pc),tc=v("Hole",null,{$documentation:"A hole in an array",value:void 0},pc),uc=v("Infinity",null,{$documentation:"The `Infinity` value",value:1/0},pc),vc=v("Boolean",null,{$documentation:"Base class for booleans"},pc),wc=v("False",null,{$documentation:"The `false` atom",value:!1},vc),xc=v("True",null,{$documentation:"The `true` atom",value:!0},vc);x.prototype={_visit:function(a,b){this.stack.push(a);var c=this.visit(a,b?function(){b.call(a)}:l);return!c&&b&&b.call(a),this.stack.pop(),c},parent:function(a){return this.stack[this.stack.length-2-(a||0)]},push:function(a){this.stack.push(a)},pop:function(){return this.stack.pop()},self:function(){return this.stack[this.stack.length-1]},find_parent:function(a){for(var b=this.stack,c=b.length;--c>=0;){var d=b[c];if(d instanceof a)return d}},has_directive:function(a){return this.find_parent(jb).has_directive(a)},in_boolean_context:function(){for(var a=this.stack,b=a.length,c=a[--b];b>0;){var d=a[--b];if(d instanceof wb&&d.condition===c||d instanceof Sb&&d.condition===c||d instanceof db&&d.condition===c||d instanceof gb&&d.condition===c||d instanceof Pb&&"!"==d.operator&&d.expression===c)return!0;if(!(d instanceof Rb)||"&&"!=d.operator&&"||"!=d.operator)return!1;c=d}},loopcontrol_target:function(a){var b=this.stack;if(a)for(var c=b.length;--c>=0;){var d=b[c];if(d instanceof bb&&d.label.name==a.name)return d.body}else for(var c=b.length;--c>=0;){var d=b[c];if(d instanceof xb||d instanceof cb)return d}}};var yc="break case catch const continue debugger default delete do else finally for function if in instanceof new return switch throw try typeof var void while with",zc="false null true",Ac="abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized this throws transient volatile yield "+zc+" "+yc,Bc="return new delete throw else case";yc=s(yc),Ac=s(Ac),Bc=s(Bc),zc=s(zc);var Cc=s(e("+-*&%=<>!?|~^")),Dc=/^0x[0-9a-f]+$/i,Ec=/^0[0-7]+$/,Fc=/^\d*\.?\d*(?:e[+-]?\d*(?:\d\.?|\.?\d)\d*)?$/i,Gc=s(["in","instanceof","typeof","new","void","delete","++","--","+","-","!","~","&","|","^","*","/","%",">>","<<",">>>","<",">","<=",">=","==","===","!=","!==","?","=","+=","-=","/=","*=","%=",">>=","<<=",">>>=","|=","^=","&=","&&","||"]),Hc=s(e("  \n\r \f ​᠎ â€â€‚         âŸã€€")),Ic=s(e("[{(,.;:")),Jc=s(e("[]{}(),;:")),Kc=s(e("gmsiy")),Lc={letter:new RegExp("[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0523\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0621-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971\\u0972\\u097B-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D28\\u0D2A-\\u0D39\\u0D3D\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC\\u0EDD\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8B\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10D0-\\u10FA\\u10FC\\u1100-\\u1159\\u115F-\\u11A2\\u11A8-\\u11F9\\u1200-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u1676\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19A9\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u2094\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C6F\\u2C71-\\u2C7D\\u2C80-\\u2CE4\\u2D00-\\u2D25\\u2D30-\\u2D65\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31B7\\u31F0-\\u31FF\\u3400\\u4DB5\\u4E00\\u9FC3\\uA000-\\uA48C\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA65F\\uA662-\\uA66E\\uA67F-\\uA697\\uA717-\\uA71F\\uA722-\\uA788\\uA78B\\uA78C\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA90A-\\uA925\\uA930-\\uA946\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAC00\\uD7A3\\uF900-\\uFA2D\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"),non_spacing_mark:new RegExp("[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065E\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0900-\\u0902\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F90-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1DC0-\\u1DE6\\u1DFD-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA67C\\uA67D\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26]"),space_combining_mark:new RegExp("[\\u0903\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A19-\\u1A1B\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]"),connector_punctuation:new RegExp("[\\u005F\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]")};I.prototype.toString=function(){return this.message+" (line: "+this.line+", col: "+this.col+", pos: "+this.pos+")\n\n"+this.stack};var Mc={},Nc=s(["typeof","void","delete","--","++","!","~","-","+"]),Oc=s(["--","++"]),Pc=s(["=","+=","-=","/=","*=","%=",">>=","<<=",">>>=","|=","^=","&="]),Qc=function(a,b){for(var c=0;c","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"]],{}),Rc=c(["for","do","while","switch"]),Sc=c(["atom","num","string","regexp","name"]);N.prototype=new x,function(a){function b(b,c){b.DEFMETHOD("transform",function(b,d){var e,f;return b.push(this),b.before&&(e=b.before(this,c,d)),e===a&&(b.after?(b.stack[b.stack.length-1]=e=this.clone(),c(e,b),f=b.after(e,d),f!==a&&(e=f)):(e=this,c(e,b))),b.pop(),e})}function c(a,b){return S(a,function(a){return a.transform(b,!0)})}b(U,l),b(bb,function(a,b){a.label=a.label.transform(b),a.body=a.body.transform(b)}),b(Y,function(a,b){a.body=a.body.transform(b)}),b(Z,function(a,b){a.body=c(a.body,b)}),b(db,function(a,b){a.condition=a.condition.transform(b),a.body=a.body.transform(b)}),b(gb,function(a,b){a.init&&(a.init=a.init.transform(b)),a.condition&&(a.condition=a.condition.transform(b)),a.step&&(a.step=a.step.transform(b)),a.body=a.body.transform(b)}),b(hb,function(a,b){a.init=a.init.transform(b),a.object=a.object.transform(b),a.body=a.body.transform(b)}),b(ib,function(a,b){a.expression=a.expression.transform(b),a.body=a.body.transform(b)}),b(qb,function(a,b){a.value&&(a.value=a.value.transform(b))}),b(tb,function(a,b){a.label&&(a.label=a.label.transform(b))}),b(wb,function(a,b){a.condition=a.condition.transform(b),a.body=a.body.transform(b),a.alternative&&(a.alternative=a.alternative.transform(b))}),b(xb,function(a,b){a.expression=a.expression.transform(b),a.body=c(a.body,b)}),b(Ab,function(a,b){a.expression=a.expression.transform(b),a.body=c(a.body,b)}),b(Bb,function(a,b){a.body=c(a.body,b),a.bcatch&&(a.bcatch=a.bcatch.transform(b)),a.bfinally&&(a.bfinally=a.bfinally.transform(b))}),b(Cb,function(a,b){a.argname=a.argname.transform(b),a.body=c(a.body,b)}),b(Eb,function(a,b){a.definitions=c(a.definitions,b)}),b(Hb,function(a,b){a.name=a.name.transform(b),a.value&&(a.value=a.value.transform(b))}),b(lb,function(a,b){a.name&&(a.name=a.name.transform(b)),a.argnames=c(a.argnames,b),a.body=c(a.body,b)}),b(Ib,function(a,b){a.expression=a.expression.transform(b),a.args=c(a.args,b)}),b(Kb,function(a,b){a.car=a.car.transform(b),a.cdr=a.cdr.transform(b)}),b(Mb,function(a,b){a.expression=a.expression.transform(b)}),b(Nb,function(a,b){a.expression=a.expression.transform(b),a.property=a.property.transform(b)}),b(Ob,function(a,b){a.expression=a.expression.transform(b)}),b(Rb,function(a,b){a.left=a.left.transform(b),a.right=a.right.transform(b)}),b(Sb,function(a,b){a.condition=a.condition.transform(b),a.consequent=a.consequent.transform(b),a.alternative=a.alternative.transform(b)}),b(Ub,function(a,b){a.elements=c(a.elements,b)}),b(Vb,function(a,b){a.properties=c(a.properties,b)}),b(Wb,function(a,b){a.value=a.value.transform(b)})}(),O.prototype={unmangleable:function(a){return this.global&&!(a&&a.toplevel)||this.undeclared||!(a&&a.eval)&&(this.scope.uses_eval||this.scope.uses_with)},mangle:function(a){if(!this.mangled_name&&!this.unmangleable(a)){var b=this.scope;!a.screw_ie8&&this.orig[0]instanceof fc&&(b=b.parent_scope),this.mangled_name=b.next_mangled(a,this)}}},kb.DEFMETHOD("figure_out_scope",function(a){a=j(a,{screw_ie8:!1});var b=this,c=b.parent_scope=null,d=null,e=0,f=new x(function(b,g){if(a.screw_ie8&&b instanceof Cb){var h=c; -return c=new jb(b),c.init_scope_vars(e),c.parent_scope=h,g(),c=h,!0}if(b instanceof jb){b.init_scope_vars(e);var h=b.parent_scope=c,i=d;return d=c=b,++e,g(),--e,c=h,d=i,!0}if(b instanceof X)return b.scope=c,m(c.directives,b.value),!0;if(b instanceof ib)for(var j=c;j;j=j.parent_scope)j.uses_with=!0;else if(b instanceof $b&&(b.scope=c),b instanceof fc)d.def_function(b);else if(b instanceof ec)(b.scope=d.parent_scope).def_function(b);else if(b instanceof bc||b instanceof cc){var k=d.def_variable(b);k.constant=b instanceof cc,k.init=f.parent().value}else b instanceof gc&&(a.screw_ie8?c:d).def_variable(b)});b.walk(f);var g=null,h=b.globals=new u,f=new x(function(a,c){if(a instanceof lb){var d=g;return g=a,c(),g=d,!0}if(a instanceof ic){var e=a.name,i=a.scope.find_variable(e);if(i)a.thedef=i;else{var j;if(h.has(e)?j=h.get(e):(j=new O(b,h.size(),a),j.undeclared=!0,j.global=!0,h.set(e,j)),a.thedef=j,"eval"==e&&f.parent()instanceof Ib)for(var k=a.scope;k&&!k.uses_eval;k=k.parent_scope)k.uses_eval=!0;g&&"arguments"==e&&(g.uses_arguments=!0)}return a.reference(),!0}});b.walk(f)}),jb.DEFMETHOD("init_scope_vars",function(a){this.directives=[],this.variables=new u,this.functions=new u,this.uses_with=!1,this.uses_eval=!1,this.parent_scope=null,this.enclosed=[],this.cname=-1,this.nesting=a}),jb.DEFMETHOD("strict",function(){return this.has_directive("use strict")}),lb.DEFMETHOD("init_scope_vars",function(){jb.prototype.init_scope_vars.apply(this,arguments),this.uses_arguments=!1}),ic.DEFMETHOD("reference",function(){var a=this.definition();a.references.push(this);for(var b=this.scope;b&&(m(b.enclosed,a),b!==a.scope);)b=b.parent_scope;this.frame=this.scope.nesting-a.scope.nesting}),jb.DEFMETHOD("find_variable",function(a){return a instanceof $b&&(a=a.name),this.variables.get(a)||this.parent_scope&&this.parent_scope.find_variable(a)}),jb.DEFMETHOD("has_directive",function(a){return this.parent_scope&&this.parent_scope.has_directive(a)||(this.directives.indexOf(a)>=0?this:null)}),jb.DEFMETHOD("def_function",function(a){this.functions.set(a.name,this.def_variable(a))}),jb.DEFMETHOD("def_variable",function(a){var b;return this.variables.has(a.name)?(b=this.variables.get(a.name),b.orig.push(a)):(b=new O(this,this.variables.size(),a),this.variables.set(a.name,b),b.global=!this.parent_scope),a.thedef=b}),jb.DEFMETHOD("next_mangled",function(a){var b=this.enclosed;a:for(;;){var c=Tc(++this.cname);if(D(c)&&!(a.except.indexOf(c)>=0)){for(var d=b.length;--d>=0;){var e=b[d],f=e.mangled_name||e.unmangleable(a)&&e.name;if(c==f)continue a}return c}}}),nb.DEFMETHOD("next_mangled",function(a,b){for(var c=b.orig[0]instanceof dc&&this.name&&this.name.definition();;){var d=lb.prototype.next_mangled.call(this,a,b);if(!c||c.mangled_name!=d)return d}}),jb.DEFMETHOD("references",function(a){return a instanceof $b&&(a=a.definition()),this.enclosed.indexOf(a)<0?null:a}),$b.DEFMETHOD("unmangleable",function(a){return this.definition().unmangleable(a)}),_b.DEFMETHOD("unmangleable",function(){return!0}),hc.DEFMETHOD("unmangleable",function(){return!1}),$b.DEFMETHOD("unreferenced",function(){return 0==this.definition().references.length&&!(this.scope.uses_eval||this.scope.uses_with)}),$b.DEFMETHOD("undeclared",function(){return this.definition().undeclared}),jc.DEFMETHOD("undeclared",function(){return!1}),hc.DEFMETHOD("undeclared",function(){return!1}),$b.DEFMETHOD("definition",function(){return this.thedef}),$b.DEFMETHOD("global",function(){return this.definition().global}),kb.DEFMETHOD("_default_mangler_options",function(a){return j(a,{except:[],eval:!1,sort:!1,toplevel:!1,screw_ie8:!1})}),kb.DEFMETHOD("mangle_names",function(a){a=this._default_mangler_options(a);var b=-1,c=[],d=new x(function(e,f){if(e instanceof bb){var g=b;return f(),b=g,!0}if(e instanceof jb){var h=(d.parent(),[]);return e.variables.each(function(b){a.except.indexOf(b.name)<0&&h.push(b)}),a.sort&&h.sort(function(a,b){return b.references.length-a.references.length}),void c.push.apply(c,h)}if(e instanceof hc){var i;do i=Tc(++b);while(!D(i));return e.mangled_name=i,!0}return a.screw_ie8&&e instanceof gc?void c.push(e.definition()):void 0});this.walk(d),c.forEach(function(b){b.mangle(a)})}),kb.DEFMETHOD("compute_char_frequency",function(a){a=this._default_mangler_options(a);var b=new x(function(b){b instanceof lc?Tc.consider(b.print_to_string()):b instanceof rb?Tc.consider("return"):b instanceof sb?Tc.consider("throw"):b instanceof vb?Tc.consider("continue"):b instanceof ub?Tc.consider("break"):b instanceof W?Tc.consider("debugger"):b instanceof X?Tc.consider(b.value):b instanceof fb?Tc.consider("while"):b instanceof eb?Tc.consider("do while"):b instanceof wb?(Tc.consider("if"),b.alternative&&Tc.consider("else")):b instanceof Fb?Tc.consider("var"):b instanceof Gb?Tc.consider("const"):b instanceof lb?Tc.consider("function"):b instanceof gb?Tc.consider("for"):b instanceof hb?Tc.consider("for in"):b instanceof xb?Tc.consider("switch"):b instanceof Ab?Tc.consider("case"):b instanceof zb?Tc.consider("default"):b instanceof ib?Tc.consider("with"):b instanceof Yb?Tc.consider("set"+b.key):b instanceof Zb?Tc.consider("get"+b.key):b instanceof Xb?Tc.consider(b.key):b instanceof Jb?Tc.consider("new"):b instanceof kc?Tc.consider("this"):b instanceof Bb?Tc.consider("try"):b instanceof Cb?Tc.consider("catch"):b instanceof Db?Tc.consider("finally"):b instanceof $b&&b.unmangleable(a)?Tc.consider(b.name):b instanceof Ob||b instanceof Rb?Tc.consider(b.operator):b instanceof Mb&&Tc.consider(b.property)});this.walk(b),Tc.sort()});var Tc=function(){function a(){d=Object.create(null),c=e.split("").map(function(a){return a.charCodeAt(0)}),c.forEach(function(a){d[a]=0})}function b(a){var b="",d=54;do b+=String.fromCharCode(c[a%d]),a=Math.floor(a/d),d=64;while(a>0);return b}var c,d,e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_0123456789";return b.consider=function(a){for(var b=a.length;--b>=0;){var c=a.charCodeAt(b);c in d&&++d[c]}},b.sort=function(){c=p(c,function(a,b){return z(a)&&!z(b)?1:z(b)&&!z(a)?-1:d[b]-d[a]})},b.reset=a,a(),b.get=function(){return c},b.freq=function(){return d},b}();kb.DEFMETHOD("scope_warnings",function(a){a=j(a,{undeclared:!1,unreferenced:!0,assign_to_global:!0,func_arguments:!0,nested_defuns:!0,eval:!0});var b=new x(function(c){if(a.undeclared&&c instanceof ic&&c.undeclared()&&U.warn("Undeclared symbol: {name} [{file}:{line},{col}]",{name:c.name,file:c.start.file,line:c.start.line,col:c.start.col}),a.assign_to_global){var d=null;c instanceof Tb&&c.left instanceof ic?d=c.left:c instanceof hb&&c.init instanceof ic&&(d=c.init),d&&(d.undeclared()||d.global()&&d.scope!==d.definition().scope)&&U.warn("{msg}: {name} [{file}:{line},{col}]",{msg:d.undeclared()?"Accidental global?":"Assignment to global",name:d.name,file:d.start.file,line:d.start.line,col:d.start.col})}a.eval&&c instanceof ic&&c.undeclared()&&"eval"==c.name&&U.warn("Eval is used [{file}:{line},{col}]",c.start),a.unreferenced&&(c instanceof ac||c instanceof hc)&&c.unreferenced()&&U.warn("{type} {name} is declared but not referenced [{file}:{line},{col}]",{type:c instanceof hc?"Label":"Symbol",name:c.name,file:c.start.file,line:c.start.line,col:c.start.col}),a.func_arguments&&c instanceof lb&&c.uses_arguments&&U.warn("arguments used in function {name} [{file}:{line},{col}]",{name:c.name?c.name.name:"anonymous",file:c.start.file,line:c.start.line,col:c.start.col}),a.nested_defuns&&c instanceof ob&&!(b.parent()instanceof jb)&&U.warn('Function {name} declared in nested statement "{type}" [{file}:{line},{col}]',{name:c.name.name,type:b.parent().TYPE,file:c.start.file,line:c.start.line,col:c.start.col})});this.walk(b)}),function(){function a(a,b){a.DEFMETHOD("_codegen",b)}function b(a,b){a.DEFMETHOD("needs_parens",b)}function c(a){var b=a.parent();return b instanceof Ob?!0:b instanceof Rb&&!(b instanceof Tb)?!0:b instanceof Ib&&b.expression===this?!0:b instanceof Sb&&b.condition===this?!0:b instanceof Lb&&b.expression===this?!0:void 0}function d(a,b,c){var d=a.length-1;a.forEach(function(a,e){a instanceof _||(c.indent(),a.print(c),e==d&&b||(c.newline(),b&&c.newline()))})}function e(a,b){a.length>0?b.with_block(function(){d(a,!1,b)}):b.print("{}")}function f(a,b){if(b.option("bracketize"))return void o(a.body,b);if(!a.body)return b.force_semicolon();if(a.body instanceof eb&&!b.option("screw_ie8"))return void o(a.body,b);for(var c=a.body;;)if(c instanceof wb){if(!c.alternative)return void o(a.body,b);c=c.alternative}else{if(!(c instanceof ab))break;c=c.body}i(a.body,b)}function g(a,b,c){if(c)try{a.walk(new x(function(a){if(a instanceof Rb&&"in"==a.operator)throw b})),a.print(b)}catch(d){if(d!==b)throw d;a.print(b,!0)}else a.print(b)}function h(a){return[92,47,46,43,42,63,40,41,91,93,123,125,36,94,58,124,33,10,13,0,65279,8232,8233].indexOf(a)<0}function i(a,b){b.option("bracketize")?!a||a instanceof _?b.print("{}"):a instanceof $?a.print(b):b.with_block(function(){b.indent(),a.print(b),b.newline()}):!a||a instanceof _?b.force_semicolon():a.print(b)}function j(a){for(var b=a.stack(),c=b.length,d=b[--c],e=b[--c];c>0;){if(e instanceof V&&e.body===d)return!0;if(!(e instanceof Kb&&e.car===d||e instanceof Ib&&e.expression===d&&!(e instanceof Jb)||e instanceof Mb&&e.expression===d||e instanceof Nb&&e.expression===d||e instanceof Sb&&e.condition===d||e instanceof Rb&&e.left===d||e instanceof Qb&&e.expression===d))return!1;d=e,e=b[--c]}}function k(a,b){return 0==a.args.length&&!b.option("beautify")}function m(a){for(var b=a[0],c=b.length,d=1;d=0?d.push("0x"+a.toString(16).toLowerCase(),"0"+a.toString(8)):d.push("-0x"+(-a).toString(16).toLowerCase(),"-0"+(-a).toString(8)),(b=/^(.*?)(0+)$/.exec(a))&&d.push(b[1]+"e"+b[2].length)):(b=/^0?\.(0+)(.*)$/.exec(a))&&d.push(b[2]+"e-"+(b[1].length+b[2].length),c.substr(c.indexOf("."))),m(d)}function o(a,b){return a instanceof $?void a.print(b):void b.with_block(function(){b.indent(),a.print(b),b.newline()})}function p(a,b){a.DEFMETHOD("add_source_map",function(a){b(this,a)})}function q(a,b){b.add_mapping(a.start)}U.DEFMETHOD("print",function(a,b){function c(){d.add_comments(a),d.add_source_map(a),e(d,a)}var d=this,e=d._codegen;a.push_node(d),b||d.needs_parens(a)?a.with_parens(c):c(),a.pop_node()}),U.DEFMETHOD("print_to_string",function(a){var b=P(a);return this.print(b),b.get()}),U.DEFMETHOD("add_comments",function(a){var b=a.option("comments"),c=this;if(b){var d=c.start;if(d&&!d._comments_dumped){d._comments_dumped=!0;var e=d.comments_before||[];c instanceof qb&&c.value&&c.value.walk(new x(function(a){return a.start&&a.start.comments_before&&(e=e.concat(a.start.comments_before),a.start.comments_before=[]),a instanceof nb||a instanceof Ub||a instanceof Vb?!0:void 0})),b.test?e=e.filter(function(a){return b.test(a.value)}):"function"==typeof b&&(e=e.filter(function(a){return b(c,a)})),e.forEach(function(b){/comment[134]/.test(b.type)?(a.print("//"+b.value+"\n"),a.indent()):"comment2"==b.type&&(a.print("/*"+b.value+"*/"),d.nlb?(a.print("\n"),a.indent()):a.space())})}}}),b(U,function(){return!1}),b(nb,function(a){return j(a)}),b(Vb,function(a){return j(a)}),b(Ob,function(a){var b=a.parent();return b instanceof Lb&&b.expression===this}),b(Kb,function(a){var b=a.parent();return b instanceof Ib||b instanceof Ob||b instanceof Rb||b instanceof Hb||b instanceof Lb||b instanceof Ub||b instanceof Wb||b instanceof Sb}),b(Rb,function(a){var b=a.parent();if(b instanceof Ib&&b.expression===this)return!0;if(b instanceof Ob)return!0;if(b instanceof Lb&&b.expression===this)return!0;if(b instanceof Rb){var c=b.operator,d=Qc[c],e=this.operator,f=Qc[e];if(d>f||d==f&&this===b.right)return!0}}),b(Lb,function(a){var b=a.parent();if(b instanceof Jb&&b.expression===this)try{this.walk(new x(function(a){if(a instanceof Ib)throw b}))}catch(c){if(c!==b)throw c;return!0}}),b(Ib,function(a){var b,c=a.parent();return c instanceof Jb&&c.expression===this?!0:this.expression instanceof nb&&c instanceof Lb&&c.expression===this&&(b=a.parent(1))instanceof Tb&&b.left===c}),b(Jb,function(a){var b=a.parent();return k(this,a)&&(b instanceof Lb||b instanceof Ib&&b.expression===this)?!0:void 0}),b(nc,function(a){var b=a.parent();return this.getValue()<0&&b instanceof Lb&&b.expression===this?!0:void 0}),b(rc,function(a){var b=a.parent();return b instanceof Lb&&b.expression===this?!0:void 0}),b(Tb,c),b(Sb,c),a(X,function(a,b){b.print_string(a.value),b.semicolon()}),a(W,function(a,b){b.print("debugger"),b.semicolon()}),ab.DEFMETHOD("_do_print_body",function(a){i(this.body,a)}),a(V,function(a,b){a.body.print(b),b.semicolon()}),a(kb,function(a,b){d(a.body,!0,b),b.print("")}),a(bb,function(a,b){a.label.print(b),b.colon(),a.body.print(b)}),a(Y,function(a,b){a.body.print(b),b.semicolon()}),a($,function(a,b){e(a.body,b)}),a(_,function(a,b){b.semicolon()}),a(eb,function(a,b){b.print("do"),b.space(),a._do_print_body(b),b.space(),b.print("while"),b.space(),b.with_parens(function(){a.condition.print(b)}),b.semicolon()}),a(fb,function(a,b){b.print("while"),b.space(),b.with_parens(function(){a.condition.print(b)}),b.space(),a._do_print_body(b)}),a(gb,function(a,b){b.print("for"),b.space(),b.with_parens(function(){!a.init||a.init instanceof _?b.print(";"):(a.init instanceof Eb?a.init.print(b):g(a.init,b,!0),b.print(";"),b.space()),a.condition?(a.condition.print(b),b.print(";"),b.space()):b.print(";"),a.step&&a.step.print(b)}),b.space(),a._do_print_body(b)}),a(hb,function(a,b){b.print("for"),b.space(),b.with_parens(function(){a.init.print(b),b.space(),b.print("in"),b.space(),a.object.print(b)}),b.space(),a._do_print_body(b)}),a(ib,function(a,b){b.print("with"),b.space(),b.with_parens(function(){a.expression.print(b)}),b.space(),a._do_print_body(b)}),lb.DEFMETHOD("_do_print",function(a,b){var c=this;b||a.print("function"),c.name&&(a.space(),c.name.print(a)),a.with_parens(function(){c.argnames.forEach(function(b,c){c&&a.comma(),b.print(a)})}),a.space(),e(c.body,a)}),a(lb,function(a,b){a._do_print(b)}),qb.DEFMETHOD("_do_print",function(a,b){a.print(b),this.value&&(a.space(),this.value.print(a)),a.semicolon()}),a(rb,function(a,b){a._do_print(b,"return")}),a(sb,function(a,b){a._do_print(b,"throw")}),tb.DEFMETHOD("_do_print",function(a,b){a.print(b),this.label&&(a.space(),this.label.print(a)),a.semicolon()}),a(ub,function(a,b){a._do_print(b,"break")}),a(vb,function(a,b){a._do_print(b,"continue")}),a(wb,function(a,b){b.print("if"),b.space(),b.with_parens(function(){a.condition.print(b)}),b.space(),a.alternative?(f(a,b),b.space(),b.print("else"),b.space(),i(a.alternative,b)):a._do_print_body(b)}),a(xb,function(a,b){b.print("switch"),b.space(),b.with_parens(function(){a.expression.print(b)}),b.space(),a.body.length>0?b.with_block(function(){a.body.forEach(function(a,c){c&&b.newline(),b.indent(!0),a.print(b)})}):b.print("{}")}),yb.DEFMETHOD("_do_print_body",function(a){this.body.length>0&&(a.newline(),this.body.forEach(function(b){a.indent(),b.print(a),a.newline()}))}),a(zb,function(a,b){b.print("default:"),a._do_print_body(b)}),a(Ab,function(a,b){b.print("case"),b.space(),a.expression.print(b),b.print(":"),a._do_print_body(b)}),a(Bb,function(a,b){b.print("try"),b.space(),e(a.body,b),a.bcatch&&(b.space(),a.bcatch.print(b)),a.bfinally&&(b.space(),a.bfinally.print(b))}),a(Cb,function(a,b){b.print("catch"),b.space(),b.with_parens(function(){a.argname.print(b)}),b.space(),e(a.body,b)}),a(Db,function(a,b){b.print("finally"),b.space(),e(a.body,b)}),Eb.DEFMETHOD("_do_print",function(a,b){a.print(b),a.space(),this.definitions.forEach(function(b,c){c&&a.comma(),b.print(a)});var c=a.parent(),d=c instanceof gb||c instanceof hb,e=d&&c.init===this;e||a.semicolon()}),a(Fb,function(a,b){a._do_print(b,"var")}),a(Gb,function(a,b){a._do_print(b,"const")}),a(Hb,function(a,b){if(a.name.print(b),a.value){b.space(),b.print("="),b.space();var c=b.parent(1),d=c instanceof gb||c instanceof hb;g(a.value,b,d)}}),a(Ib,function(a,b){a.expression.print(b),a instanceof Jb&&k(a,b)||b.with_parens(function(){a.args.forEach(function(a,c){c&&b.comma(),a.print(b)})})}),a(Jb,function(a,b){b.print("new"),b.space(),Ib.prototype._codegen(a,b)}),Kb.DEFMETHOD("_do_print",function(a){this.car.print(a),this.cdr&&(a.comma(),a.should_break()&&(a.newline(),a.indent()),this.cdr.print(a))}),a(Kb,function(a,b){a._do_print(b)}),a(Mb,function(a,b){var c=a.expression;c.print(b),c instanceof nc&&c.getValue()>=0&&(/[xa-f.]/i.test(b.last())||b.print(".")),b.print("."),b.add_mapping(a.end),b.print_name(a.property)}),a(Nb,function(a,b){a.expression.print(b),b.print("["),a.property.print(b),b.print("]")}),a(Pb,function(a,b){var c=a.operator;b.print(c),(/^[a-z]/i.test(c)||/[+-]$/.test(c)&&a.expression instanceof Pb&&/^[+-]/.test(a.expression.operator))&&b.space(),a.expression.print(b)}),a(Qb,function(a,b){a.expression.print(b),b.print(a.operator)}),a(Rb,function(a,b){a.left.print(b),b.space(),b.print(a.operator),"<"==a.operator&&a.right instanceof Pb&&"!"==a.right.operator&&a.right.expression instanceof Pb&&"--"==a.right.expression.operator?b.print(" "):b.space(),a.right.print(b)}),a(Sb,function(a,b){a.condition.print(b),b.space(),b.print("?"),b.space(),a.consequent.print(b),b.space(),b.colon(),a.alternative.print(b)}),a(Ub,function(a,b){b.with_square(function(){var c=a.elements,d=c.length;d>0&&b.space(),c.forEach(function(a,c){c&&b.comma(),a.print(b),c===d-1&&a instanceof tc&&b.comma()}),d>0&&b.space()})}),a(Vb,function(a,b){a.properties.length>0?b.with_block(function(){a.properties.forEach(function(a,c){c&&(b.print(","),b.newline()),b.indent(),a.print(b)}),b.newline()}):b.print("{}")}),a(Xb,function(a,b){var c=a.key;b.option("quote_keys")?b.print_string(c+""):("number"==typeof c||!b.option("beautify")&&+c+""==c)&&parseFloat(c)>=0?b.print(n(c)):(Ac(c)?b.option("screw_ie8"):G(c))?b.print_name(c):b.print_string(c),b.colon(),a.value.print(b)}),a(Yb,function(a,b){b.print("set"),b.space(),a.key.print(b),a.value._do_print(b,!0)}),a(Zb,function(a,b){b.print("get"),b.space(),a.key.print(b),a.value._do_print(b,!0)}),a($b,function(a,b){var c=a.definition();b.print_name(c?c.mangled_name||c.name:a.name)}),a(sc,function(a,b){b.print("void 0")}),a(tc,l),a(uc,function(a,b){b.print("1/0")}),a(rc,function(a,b){b.print("0/0")}),a(kc,function(a,b){b.print("this")}),a(lc,function(a,b){b.print(a.getValue())}),a(mc,function(a,b){b.print_string(a.getValue())}),a(nc,function(a,b){b.print(n(a.getValue()))}),a(oc,function(a,b){var c=a.getValue().toString();b.option("ascii_only")?c=b.to_ascii(c):b.option("unescape_regexps")&&(c=c.split("\\\\").map(function(a){return a.replace(/\\u[0-9a-fA-F]{4}|\\x[0-9a-fA-F]{2}/g,function(a){var b=parseInt(a.substr(2),16);return h(b)?String.fromCharCode(b):a})}).join("\\\\")),b.print(c);var d=b.parent();d instanceof Rb&&/^in/.test(d.operator)&&d.left===a&&b.print(" ")}),p(U,l),p(X,q),p(W,q),p($b,q),p(pb,q),p(ab,q),p(bb,l),p(lb,q),p(xb,q),p(yb,q),p($,q),p(kb,l),p(Jb,q),p(Bb,q),p(Cb,q),p(Db,q),p(Eb,q),p(lc,q),p(Wb,function(a,b){b.add_mapping(a.start,a.key)})}(),Q.prototype=new N,k(Q.prototype,{option:function(a){return this.options[a]},warn:function(){this.options.warnings&&U.warn.apply(U,arguments)},before:function(a,b){if(a._squeezed)return a;var c=!1;return a instanceof jb&&(a=a.hoist_declarations(this),c=!0),b(a,this),a=a.optimize(this),c&&a instanceof jb&&(a.drop_unused(this),b(a,this)),a._squeezed=!0,a}}),function(){function a(a,b){a.DEFMETHOD("optimize",function(a){var c=this;if(c._optimized)return c;var d=b(c,a);return d._optimized=!0,d===c?d:d.transform(a)})}function b(a,b,c){return c||(c={}),b&&(c.start||(c.start=b.start),c.end||(c.end=b.end)),new a(c)}function c(a,c,d){if(c instanceof U)return c.transform(a);switch(typeof c){case"string":return b(mc,d,{value:c}).optimize(a);case"number":return b(isNaN(c)?rc:nc,d,{value:c}).optimize(a);case"boolean":return b(c?xc:wc,d).optimize(a);case"undefined":return b(sc,d).optimize(a);default:if(null===c)return b(qc,d).optimize(a);if(c instanceof RegExp)return b(oc,d).optimize(a);throw new Error(n("Can't handle constant of type: {type}",{type:typeof c}))}}function d(a){if(null===a)return[];if(a instanceof $)return a.body;if(a instanceof _)return[];if(a instanceof V)return[a];throw new Error("Can't convert thing to statement array")}function e(a){return null===a?!0:a instanceof _?!0:a instanceof $?0==a.body.length:!1}function h(a){return a instanceof xb?a:(a instanceof gb||a instanceof hb||a instanceof db)&&a.body instanceof $?a.body:a}function i(a,c){function e(a){function d(a,c){return b(Y,a,{body:b(Tb,a,{operator:"=",left:b(Mb,c,{expression:b(ic,c,c),property:"$inject"}),right:b(Ub,a,{elements:a.argnames.map(function(a){return b(mc,a,{value:a.name})})})})})}return a.reduce(function(a,b){a.push(b);var e=b.start,f=e.comments_before;if(f&&f.length>0){var g=f.pop();/@ngInject/.test(g.value)&&(b instanceof ob?a.push(d(b,b.name)):b instanceof Eb?b.definitions.forEach(function(b){b.value&&b.value instanceof lb&&a.push(d(b.value,b.name))}):c.warn("Unknown statement marked with @ngInject [{file}:{line},{col}]",e))}return a},[])}function f(a){var b=[];return a.reduce(function(a,c){return c instanceof $?(p=!0,a.push.apply(a,f(c.body))):c instanceof _?p=!0:c instanceof X?b.indexOf(c.value)<0?(a.push(c),b.push(c.value)):p=!0:a.push(c),a},[])}function g(a,c){var e=c.self(),f=e instanceof lb,g=[];a:for(var i=a.length;--i>=0;){var j=a[i];switch(!0){case f&&j instanceof rb&&!j.value&&0==g.length:p=!0;continue a;case j instanceof wb:if(j.body instanceof rb){if((f&&0==g.length||g[0]instanceof rb&&!g[0].value)&&!j.body.value&&!j.alternative){p=!0;var k=b(Y,j.condition,{body:j.condition});g.unshift(k);continue a}if(g[0]instanceof rb&&j.body.value&&g[0].value&&!j.alternative){p=!0,j=j.clone(),j.alternative=g[0],g[0]=j.transform(c);continue a}if((0==g.length||g[0]instanceof rb)&&j.body.value&&!j.alternative&&f){p=!0,j=j.clone(),j.alternative=g[0]||b(rb,j,{value:b(sc,j)}),g[0]=j.transform(c);continue a}if(!j.body.value&&f){p=!0,j=j.clone(),j.condition=j.condition.negate(c),j.body=b($,j,{body:d(j.alternative).concat(g)}),j.alternative=null,g=[j.transform(c)];continue a}if(1==g.length&&f&&g[0]instanceof Y&&(!j.alternative||j.alternative instanceof Y)){p=!0,g.push(b(rb,g[0],{value:b(sc,g[0])}).transform(c)),g=d(j.alternative).concat(g),g.unshift(j);continue a}}var l=q(j.body),m=l instanceof tb?c.loopcontrol_target(l.label):null;if(l&&(l instanceof rb&&!l.value&&f||l instanceof vb&&e===h(m)||l instanceof ub&&m instanceof $&&e===m)){l.label&&o(l.label.thedef.references,l),p=!0;var n=d(j.body).slice(0,-1);j=j.clone(),j.condition=j.condition.negate(c),j.body=b($,j,{body:d(j.alternative).concat(g)}),j.alternative=b($,j,{body:n}),g=[j.transform(c)];continue a}var l=q(j.alternative),m=l instanceof tb?c.loopcontrol_target(l.label):null;if(l&&(l instanceof rb&&!l.value&&f||l instanceof vb&&e===h(m)||l instanceof ub&&m instanceof $&&e===m)){l.label&&o(l.label.thedef.references,l),p=!0,j=j.clone(),j.body=b($,j.body,{body:d(j.body).concat(g)}),j.alternative=b($,j.alternative,{body:d(j.alternative).slice(0,-1)}),g=[j.transform(c)];continue a}g.unshift(j);break;default:g.unshift(j)}}return g}function i(a,b){var c=!1,d=a.length,e=b.self();return a=a.reduce(function(a,d){if(c)j(b,d,a);else{if(d instanceof tb){var f=b.loopcontrol_target(d.label);d instanceof ub&&f instanceof $&&h(f)===e||d instanceof vb&&h(f)===e?d.label&&o(d.label.thedef.references,d):a.push(d)}else a.push(d);q(d)&&(c=!0)}return a},[]),p=a.length!=d,a}function k(a,c){function d(){e=Kb.from_array(e),e&&f.push(b(Y,e,{body:e})),e=[]}if(a.length<2)return a;var e=[],f=[];return a.forEach(function(a){a instanceof Y?e.push(a.body):(d(),f.push(a))}),d(),f=l(f,c),p=f.length!=a.length,f}function l(a,c){function d(a){e.pop();var b=f.body;return b instanceof Kb?b.add(a):b=Kb.cons(b,a),b.transform(c)}var e=[],f=null;return a.forEach(function(a){if(f)if(a instanceof gb){var c={};try{f.body.walk(new x(function(a){if(a instanceof Rb&&"in"==a.operator)throw c})),!a.init||a.init instanceof Eb?a.init||(a.init=f.body,e.pop()):a.init=d(a.init)}catch(g){if(g!==c)throw g}}else a instanceof wb?a.condition=d(a.condition):a instanceof ib?a.expression=d(a.expression):a instanceof qb&&a.value?a.value=d(a.value):a instanceof qb?a.value=d(b(sc,a)):a instanceof xb&&(a.expression=d(a.expression));e.push(a),f=a instanceof Y?a:null}),e}function m(a){var b=null;return a.reduce(function(a,c){return c instanceof Eb&&b&&b.TYPE==c.TYPE?(b.definitions=b.definitions.concat(c.definitions),p=!0):c instanceof gb&&b instanceof Eb&&(!c.init||c.init.TYPE==b.TYPE)?(p=!0,a.pop(),c.init?c.init.definitions=b.definitions.concat(c.init.definitions):c.init=b,a.push(c),b=c):(b=c,a.push(c)),a},[])}function n(a){a.forEach(function(a){a instanceof Y&&(a.body=function c(a){return a.transform(new N(function(a){if(a instanceof Ib&&a.expression instanceof nb)return b(Pb,a,{operator:"!",expression:a});if(a instanceof Ib)a.expression=c(a.expression);else if(a instanceof Kb)a.car=c(a.car);else if(a instanceof Sb){var d=c(a.condition);if(d!==a.condition){a.condition=d;var e=a.consequent;a.consequent=a.alternative,a.alternative=e}}return a}))}(a.body))})}var p;do p=!1,c.option("angular")&&(a=e(a)),a=f(a),c.option("dead_code")&&(a=i(a,c)),c.option("if_return")&&(a=g(a,c)),c.option("sequences")&&(a=k(a,c)),c.option("join_vars")&&(a=m(a,c));while(p);return c.option("negate_iife")&&n(a,c),a}function j(a,b,c){a.warn("Dropping unreachable code [{file}:{line},{col}]",b.start),b.walk(new x(function(b){return b instanceof Eb?(a.warn("Declarations in unreachable code! [{file}:{line},{col}]",b.start),b.remove_initializers(),c.push(b),!0):b instanceof ob?(c.push(b),!0):b instanceof jb?!0:void 0}))}function k(a,b){return a.print_to_string().length>b.print_to_string().length?b:a}function q(a){return a&&a.aborts()}function r(a,c){function e(e){e=d(e),a.body instanceof $?(a.body=a.body.clone(),a.body.body=e.concat(a.body.body.slice(1)),a.body=a.body.transform(c)):a.body=b($,a.body,{body:e}).transform(c),r(a,c)}var f=a.body instanceof $?a.body.body[0]:a.body;f instanceof wb&&(f.body instanceof ub&&c.loopcontrol_target(f.body.label)===a?(a.condition=a.condition?b(Rb,a.condition,{left:a.condition,operator:"&&",right:f.condition.negate(c)}):f.condition.negate(c),e(f.alternative)):f.alternative instanceof ub&&c.loopcontrol_target(f.alternative.label)===a&&(a.condition=a.condition?b(Rb,a.condition,{left:a.condition,operator:"&&",right:f.condition}):f.condition,e(f.body)))}function v(a,b){var c=b.option("pure_getters");b.options.pure_getters=!1;var d=a.has_side_effects(b);return b.options.pure_getters=c,d}function w(a,c){return c.option("booleans")&&c.in_boolean_context()?b(xc,a):a}a(U,function(a){return a}),U.DEFMETHOD("equivalent_to",function(a){return this.print_to_string()==a.print_to_string()}),function(a){var b=["!","delete"],c=["in","instanceof","==","!=","===","!==","<","<=",">=",">"];a(U,function(){return!1}),a(Pb,function(){return f(this.operator,b)}),a(Rb,function(){return f(this.operator,c)||("&&"==this.operator||"||"==this.operator)&&this.left.is_boolean()&&this.right.is_boolean()}),a(Sb,function(){return this.consequent.is_boolean()&&this.alternative.is_boolean()}),a(Tb,function(){return"="==this.operator&&this.right.is_boolean()}),a(Kb,function(){return this.cdr.is_boolean()}),a(xc,function(){return!0}),a(wc,function(){return!0})}(function(a,b){a.DEFMETHOD("is_boolean",b)}),function(a){a(U,function(){return!1}),a(mc,function(){return!0}),a(Pb,function(){return"typeof"==this.operator}),a(Rb,function(a){return"+"==this.operator&&(this.left.is_string(a)||this.right.is_string(a))}),a(Tb,function(a){return("="==this.operator||"+="==this.operator)&&this.right.is_string(a)}),a(Kb,function(a){return this.cdr.is_string(a)}),a(Sb,function(a){return this.consequent.is_string(a)&&this.alternative.is_string(a)}),a(Ib,function(a){return a.option("unsafe")&&this.expression instanceof ic&&"String"==this.expression.name&&this.expression.undeclared()})}(function(a,b){a.DEFMETHOD("is_string",b)}),function(a){function b(a,b){if(!b)throw new Error("Compressor must be passed");return a._eval(b)}U.DEFMETHOD("evaluate",function(b){if(!b.option("evaluate"))return[this];try{var d=this._eval(b);return[k(c(b,d,this),this),d]}catch(e){if(e!==a)throw e;return[this]}}),a(V,function(){throw new Error(n("Cannot evaluate a statement [{file}:{line},{col}]",this.start))}),a(nb,function(){throw a}),a(U,function(){throw a}),a(lc,function(){return this.getValue()}),a(Pb,function(c){var d=this.expression;switch(this.operator){case"!":return!b(d,c);case"typeof":if(d instanceof nb)return"function";if(d=b(d,c),d instanceof RegExp)throw a;return typeof d;case"void":return void b(d,c);case"~":return~b(d,c);case"-":if(d=b(d,c),0===d)throw a;return-d;case"+":return+b(d,c)}throw a}),a(Rb,function(c){var d=this.left,e=this.right;switch(this.operator){case"&&":return b(d,c)&&b(e,c);case"||":return b(d,c)||b(e,c);case"|":return b(d,c)|b(e,c);case"&":return b(d,c)&b(e,c);case"^":return b(d,c)^b(e,c);case"+":return b(d,c)+b(e,c);case"*":return b(d,c)*b(e,c);case"/":return b(d,c)/b(e,c);case"%":return b(d,c)%b(e,c);case"-":return b(d,c)-b(e,c);case"<<":return b(d,c)<>":return b(d,c)>>b(e,c);case">>>":return b(d,c)>>>b(e,c);case"==":return b(d,c)==b(e,c);case"===":return b(d,c)===b(e,c);case"!=":return b(d,c)!=b(e,c);case"!==":return b(d,c)!==b(e,c);case"<":return b(d,c)":return b(d,c)>b(e,c);case">=":return b(d,c)>=b(e,c);case"in":return b(d,c)in b(e,c);case"instanceof":return b(d,c)instanceof b(e,c)}throw a}),a(Sb,function(a){return b(this.condition,a)?b(this.consequent,a):b(this.alternative,a)}),a(ic,function(c){var d=this.definition();if(d&&d.constant&&d.init)return b(d.init,c);throw a}),a(Mb,function(c){if(c.option("unsafe")&&"length"==this.property){var d=b(this.expression,c);if("string"==typeof d)return d.length}throw a})}(function(a,b){a.DEFMETHOD("_eval",b)}),function(a){function c(a){return b(Pb,a,{operator:"!",expression:a})}a(U,function(){return c(this)}),a(V,function(){throw new Error("Cannot negate a statement")}),a(nb,function(){return c(this)}),a(Pb,function(){return"!"==this.operator?this.expression:c(this)}),a(Kb,function(a){var b=this.clone();return b.cdr=b.cdr.negate(a),b}),a(Sb,function(a){var b=this.clone();return b.consequent=b.consequent.negate(a),b.alternative=b.alternative.negate(a),k(c(this),b)}),a(Rb,function(a){var b=this.clone(),d=this.operator;if(a.option("unsafe_comps"))switch(d){case"<=":return b.operator=">",b;case"<":return b.operator=">=",b;case">=":return b.operator="<",b;case">":return b.operator="<=",b}switch(d){case"==":return b.operator="!=",b;case"!=":return b.operator="==",b;case"===":return b.operator="!==",b;case"!==":return b.operator="===",b;case"&&":return b.operator="||",b.left=b.left.negate(a),b.right=b.right.negate(a),k(c(this),b);case"||":return b.operator="&&",b.left=b.left.negate(a),b.right=b.right.negate(a),k(c(this),b)}return c(this)})}(function(a,b){a.DEFMETHOD("negate",function(a){return b.call(this,a)})}),function(a){a(U,function(){return!0}),a(_,function(){return!1}),a(lc,function(){return!1}),a(kc,function(){return!1}),a(Ib,function(a){var b=a.option("pure_funcs");return b?b.indexOf(this.expression.print_to_string())<0:!0}),a(Z,function(a){for(var b=this.body.length;--b>=0;)if(this.body[b].has_side_effects(a))return!0;return!1}),a(Y,function(a){return this.body.has_side_effects(a)}),a(ob,function(){return!0}),a(nb,function(){return!1}),a(Rb,function(a){return this.left.has_side_effects(a)||this.right.has_side_effects(a)}),a(Tb,function(){return!0}),a(Sb,function(a){return this.condition.has_side_effects(a)||this.consequent.has_side_effects(a)||this.alternative.has_side_effects(a)}),a(Ob,function(a){return"delete"==this.operator||"++"==this.operator||"--"==this.operator||this.expression.has_side_effects(a)}),a(ic,function(){return!1}),a(Vb,function(a){for(var b=this.properties.length;--b>=0;)if(this.properties[b].has_side_effects(a))return!0; -return!1}),a(Wb,function(a){return this.value.has_side_effects(a)}),a(Ub,function(a){for(var b=this.elements.length;--b>=0;)if(this.elements[b].has_side_effects(a))return!0;return!1}),a(Mb,function(a){return a.option("pure_getters")?this.expression.has_side_effects(a):!0}),a(Nb,function(a){return a.option("pure_getters")?this.expression.has_side_effects(a)||this.property.has_side_effects(a):!0}),a(Lb,function(a){return!a.option("pure_getters")}),a(Kb,function(a){return this.car.has_side_effects(a)||this.cdr.has_side_effects(a)})}(function(a,b){a.DEFMETHOD("has_side_effects",b)}),function(a){function b(){var a=this.body.length;return a>0&&q(this.body[a-1])}a(V,function(){return null}),a(pb,function(){return this}),a($,b),a(yb,b),a(wb,function(){return this.alternative&&q(this.body)&&q(this.alternative)})}(function(a,b){a.DEFMETHOD("aborts",b)}),a(X,function(a){return a.scope.has_directive(a.value)!==a.scope?b(_,a):a}),a(W,function(a,c){return c.option("drop_debugger")?b(_,a):a}),a(bb,function(a,c){return a.body instanceof ub&&c.loopcontrol_target(a.body.label)===a.body?b(_,a):0==a.label.references.length?a.body:a}),a(Z,function(a,b){return a.body=i(a.body,b),a}),a($,function(a,c){switch(a.body=i(a.body,c),a.body.length){case 1:return a.body[0];case 0:return b(_,a)}return a}),jb.DEFMETHOD("drop_unused",function(a){var c=this;if(a.option("unused")&&!(c instanceof kb)&&!c.uses_eval){var d=[],e=new u,g=this,h=new x(function(b,f){if(b!==c){if(b instanceof ob)return e.add(b.name.name,b),!0;if(b instanceof Eb&&g===c)return b.definitions.forEach(function(b){b.value&&(e.add(b.name.name,b.value),b.value.has_side_effects(a)&&b.value.walk(h))}),!0;if(b instanceof ic)return m(d,b.definition()),!0;if(b instanceof jb){var i=g;return g=b,f(),g=i,!0}}});c.walk(h);for(var i=0;i=0;){var l=i[k];if(!l.unreferenced())break;i.pop(),a.warn("Dropping unused function argument {name} [{file}:{line},{col}]",{name:l.name,file:l.start.file,line:l.start.line,col:l.start.col})}if(e instanceof ob&&e!==c)return f(e.name.definition(),d)?e:(a.warn("Dropping unused function {name} [{file}:{line},{col}]",{name:e.name.name,file:e.name.start.file,line:e.name.start.line,col:e.name.start.col}),b(_,e));if(e instanceof Eb&&!(j.parent()instanceof hb)){var m=e.definitions.filter(function(b){if(f(b.name.definition(),d))return!0;var c={name:b.name.name,file:b.name.start.file,line:b.name.start.line,col:b.name.start.col};return b.value&&b.value.has_side_effects(a)?(b._unused_side_effects=!0,a.warn("Side effects in initialization of unused variable {name} [{file}:{line},{col}]",c),!0):(a.warn("Dropping unused variable {name} [{file}:{line},{col}]",c),!1)});m=p(m,function(a,b){return!a.value&&b.value?-1:!b.value&&a.value?1:0});for(var n=[],k=0;k0&&(n.push(o.value),o.value=Kb.from_array(n),n=[]),++k)}return n=n.length>0?b($,e,{body:[b(Y,e,{body:Kb.from_array(n)})]}):null,0!=m.length||n?0==m.length?n:(e.definitions=m,n&&(n.body.unshift(e),e=n),e):b(_,e)}if(e instanceof gb&&(g(e,this),e.init instanceof $)){var q=e.init.body.slice(0,-1);return e.init=e.init.body.slice(-1)[0].body,q.push(e),h?S.splice(q):b($,e,{body:q})}return e instanceof jb&&e!==c?e:void 0});c.transform(j)}}),jb.DEFMETHOD("hoist_declarations",function(a){var c=a.option("hoist_funs"),d=a.option("hoist_vars"),e=this;if(c||d){var f=[],h=[],i=new u,j=0,k=0;e.walk(new x(function(a){return a instanceof jb&&a!==e?!0:a instanceof Fb?(++k,!0):void 0})),d=d&&k>1;var l=new N(function(a){if(a!==e){if(a instanceof X)return f.push(a),b(_,a);if(a instanceof ob&&c)return h.push(a),b(_,a);if(a instanceof Fb&&d){a.definitions.forEach(function(a){i.set(a.name.name,a),++j});var g=a.to_assignments(),k=l.parent();return k instanceof hb&&k.init===a?null==g?a.definitions[0].name:g:k instanceof gb&&k.init===a?g:g?b(Y,a,{body:g}):b(_,a)}if(a instanceof jb)return a}});if(e=e.transform(l),j>0){var m=[];if(i.each(function(a,b){e instanceof lb&&g(function(b){return b.name==a.name.name},e.argnames)?i.del(b):(a=a.clone(),a.value=null,m.push(a),i.set(b,a))}),m.length>0){for(var n=0;n1){if(d[1])return b(gb,a,{body:a.body});if(a instanceof fb&&c.option("dead_code")){var e=[];return j(c,a.body,e),b($,a,{body:e})}}return a}),a(fb,function(a,c){return c.option("loops")?(a=db.prototype.optimize.call(a,c),a instanceof fb&&(r(a,c),a=b(gb,a,a).transform(c)),a):a}),a(gb,function(a,c){var d=a.condition;if(d&&(d=d.evaluate(c),a.condition=d[0]),!c.option("loops"))return a;if(d&&d.length>1&&!d[1]&&c.option("dead_code")){var e=[];return a.init instanceof V?e.push(a.init):a.init&&e.push(b(Y,a.init,{body:a.init})),j(c,a.body,e),b($,a,{body:e})}return r(a,c),a}),a(wb,function(a,c){if(!c.option("conditionals"))return a;var d=a.condition.evaluate(c);if(a.condition=d[0],d.length>1)if(d[1]){if(c.warn("Condition always true [{file}:{line},{col}]",a.condition.start),c.option("dead_code")){var f=[];return a.alternative&&j(c,a.alternative,f),f.push(a.body),b($,a,{body:f}).transform(c)}}else if(c.warn("Condition always false [{file}:{line},{col}]",a.condition.start),c.option("dead_code")){var f=[];return j(c,a.body,f),a.alternative&&f.push(a.alternative),b($,a,{body:f}).transform(c)}e(a.alternative)&&(a.alternative=null);var g=a.condition.negate(c),h=k(a.condition,g)===g;if(a.alternative&&h){h=!1,a.condition=g;var i=a.body;a.body=a.alternative||b(_),a.alternative=i}if(e(a.body)&&e(a.alternative))return b(Y,a.condition,{body:a.condition}).transform(c);if(a.body instanceof Y&&a.alternative instanceof Y)return b(Y,a,{body:b(Sb,a,{condition:a.condition,consequent:a.body.body,alternative:a.alternative.body})}).transform(c);if(e(a.alternative)&&a.body instanceof Y)return h?b(Y,a,{body:b(Rb,a,{operator:"||",left:g,right:a.body.body})}).transform(c):b(Y,a,{body:b(Rb,a,{operator:"&&",left:a.condition,right:a.body.body})}).transform(c);if(a.body instanceof _&&a.alternative&&a.alternative instanceof Y)return b(Y,a,{body:b(Rb,a,{operator:"||",left:a.condition,right:a.alternative.body})}).transform(c);if(a.body instanceof qb&&a.alternative instanceof qb&&a.body.TYPE==a.alternative.TYPE)return b(a.body.CTOR,a,{value:b(Sb,a,{condition:a.condition,consequent:a.body.value||b(sc,a.body).optimize(c),alternative:a.alternative.value||b(sc,a.alternative).optimize(c)})}).transform(c);if(a.body instanceof wb&&!a.body.alternative&&!a.alternative&&(a.condition=b(Rb,a.condition,{operator:"&&",left:a.condition,right:a.body.condition}).transform(c),a.body=a.body.body),q(a.body)&&a.alternative){var l=a.alternative;return a.alternative=null,b($,a,{body:[a,l]}).transform(c)}if(q(a.alternative)){var m=a.body;return a.body=a.alternative,a.condition=h?g:a.condition.negate(c),a.alternative=null,b($,a,{body:[a,m]}).transform(c)}return a}),a(xb,function(a,c){if(0==a.body.length&&c.option("conditionals"))return b(Y,a,{body:a.expression}).transform(c);for(;;){var d=a.body[a.body.length-1];if(d){var e=d.body[d.body.length-1];if(e instanceof ub&&h(c.loopcontrol_target(e.label))===a&&d.body.pop(),d instanceof zb&&0==d.body.length){a.body.pop();continue}}break}var f=a.expression.evaluate(c);a:if(2==f.length)try{if(a.expression=f[0],!c.option("dead_code"))break a;var g=f[1],i=!1,j=!1,k=!1,l=!1,m=!1,n=new N(function(d,e,f){if(d instanceof lb||d instanceof Y)return d;if(d instanceof xb&&d===a)return d=d.clone(),e(d,this),m?d:b($,d,{body:d.body.reduce(function(a,b){return a.concat(b.body)},[])}).transform(c);if(d instanceof wb||d instanceof Bb){var h=i;return i=!j,e(d,this),i=h,d}if(d instanceof ab||d instanceof xb){var h=j;return j=!0,e(d,this),j=h,d}if(d instanceof ub&&this.loopcontrol_target(d.label)===a)return i?(m=!0,d):j?d:(l=!0,f?S.skip:b(_,d));if(d instanceof yb&&this.parent()===a){if(l)return S.skip;if(d instanceof Ab){var n=d.expression.evaluate(c);if(n.length<2)throw a;return n[1]===g||k?(k=!0,q(d)&&(l=!0),e(d,this),d):S.skip}return e(d,this),d}});n.stack=c.stack.slice(),a=a.transform(n)}catch(o){if(o!==a)throw o}return a}),a(Ab,function(a,b){return a.body=i(a.body,b),a}),a(Bb,function(a,b){return a.body=i(a.body,b),a}),Eb.DEFMETHOD("remove_initializers",function(){this.definitions.forEach(function(a){a.value=null})}),Eb.DEFMETHOD("to_assignments",function(){var a=this.definitions.reduce(function(a,c){if(c.value){var d=b(ic,c.name,c.name);a.push(b(Tb,c,{operator:"=",left:d,right:c.value}))}return a},[]);return 0==a.length?null:Kb.from_array(a)}),a(Eb,function(a){return 0==a.definitions.length?b(_,a):a}),a(nb,function(a,b){return a=lb.prototype.optimize.call(a,b),b.option("unused")&&a.name&&a.name.unreferenced()&&(a.name=null),a}),a(Ib,function(a,d){if(d.option("unsafe")){var e=a.expression;if(e instanceof ic&&e.undeclared())switch(e.name){case"Array":if(1!=a.args.length)return b(Ub,a,{elements:a.args}).transform(d);break;case"Object":if(0==a.args.length)return b(Vb,a,{properties:[]});break;case"String":if(0==a.args.length)return b(mc,a,{value:""});if(a.args.length<=1)return b(Rb,a,{left:a.args[0],operator:"+",right:b(mc,a,{value:""})}).transform(d);break;case"Number":if(0==a.args.length)return b(nc,a,{value:0});if(1==a.args.length)return b(Pb,a,{expression:a.args[0],operator:"+"}).transform(d);case"Boolean":if(0==a.args.length)return b(wc,a);if(1==a.args.length)return b(Pb,a,{expression:b(Pb,null,{expression:a.args[0],operator:"!"}),operator:"!"}).transform(d);break;case"Function":if(t(a.args,function(a){return a instanceof mc}))try{var f="(function("+a.args.slice(0,-1).map(function(a){return a.value}).join(",")+"){"+a.args[a.args.length-1].value+"})()",g=M(f);g.figure_out_scope({screw_ie8:d.option("screw_ie8")});var h=new Q(d.options);g=g.transform(h),g.figure_out_scope({screw_ie8:d.option("screw_ie8")}),g.mangle_names();var i;try{g.walk(new x(function(a){if(a instanceof lb)throw i=a,g}))}catch(j){if(j!==g)throw j}var l=i.argnames.map(function(c,d){return b(mc,a.args[d],{value:c.print_to_string()})}),f=P();return $.prototype._codegen.call(i,i,f),f=f.toString().replace(/^\{|\}$/g,""),l.push(b(mc,a.args[a.args.length-1],{value:f})),a.args=l,a}catch(j){if(!(j instanceof I))throw console.log(j),j;d.warn("Error parsing code passed to new Function [{file}:{line},{col}]",a.args[a.args.length-1].start),d.warn(j.toString())}}else{if(e instanceof Mb&&"toString"==e.property&&0==a.args.length)return b(Rb,a,{left:b(mc,a,{value:""}),operator:"+",right:e.expression}).transform(d);if(e instanceof Mb&&e.expression instanceof Ub&&"join"==e.property){var m=0==a.args.length?",":a.args[0].evaluate(d)[1];if(null!=m){var n=e.expression.elements.reduce(function(a,b){if(b=b.evaluate(d),0==a.length||1==b.length)a.push(b);else{var e=a[a.length-1];if(2==e.length){var f=""+e[1]+m+b[1];a[a.length-1]=[c(d,f,e[0]),f]}else a.push(b)}return a},[]);if(0==n.length)return b(mc,a,{value:""});if(1==n.length)return n[0][0];if(""==m){var o;return o=n[0][0]instanceof mc||n[1][0]instanceof mc?n.shift()[0]:b(mc,a,{value:""}),n.reduce(function(a,c){return b(Rb,c[0],{operator:"+",left:a,right:c[0]})},o).transform(d)}var p=a.clone();return p.expression=p.expression.clone(),p.expression.expression=p.expression.expression.clone(),p.expression.expression.elements=n.map(function(a){return a[0]}),k(a,p)}}}}return d.option("side_effects")&&a.expression instanceof nb&&0==a.args.length&&!Z.prototype.has_side_effects.call(a.expression,d)?b(sc,a).transform(d):d.option("drop_console")&&a.expression instanceof Lb&&a.expression.expression instanceof ic&&"console"==a.expression.expression.name&&a.expression.expression.undeclared()?b(sc,a).transform(d):a.evaluate(d)[0]}),a(Jb,function(a,c){if(c.option("unsafe")){var d=a.expression;if(d instanceof ic&&d.undeclared())switch(d.name){case"Object":case"RegExp":case"Function":case"Error":case"Array":return b(Ib,a,a).transform(c)}}return a}),a(Kb,function(a,c){if(!c.option("side_effects"))return a;if(!a.car.has_side_effects(c)){var d;if(!(a.cdr instanceof ic&&"eval"==a.cdr.name&&a.cdr.undeclared()&&(d=c.parent())instanceof Ib&&d.expression===a))return a.cdr}if(c.option("cascade")){if(a.car instanceof Tb&&!a.car.left.has_side_effects(c)){if(a.car.left.equivalent_to(a.cdr))return a.car;if(a.cdr instanceof Ib&&a.cdr.expression.equivalent_to(a.car.left))return a.cdr.expression=a.car,a.cdr}if(!a.car.has_side_effects(c)&&!a.cdr.has_side_effects(c)&&a.car.equivalent_to(a.cdr))return a.car}return a.cdr instanceof Pb&&"void"==a.cdr.operator&&!a.cdr.expression.has_side_effects(c)?(a.cdr.operator=a.car,a.cdr):a.cdr instanceof sc?b(Pb,a,{operator:"void",expression:a.car}):a}),Ob.DEFMETHOD("lift_sequences",function(a){if(a.option("sequences")&&this.expression instanceof Kb){var b=this.expression,c=b.to_array();return this.expression=c.pop(),c.push(this),b=Kb.from_array(c).transform(a)}return this}),a(Qb,function(a,b){return a.lift_sequences(b)}),a(Pb,function(a,c){a=a.lift_sequences(c);var d=a.expression;if(c.option("booleans")&&c.in_boolean_context()){switch(a.operator){case"!":if(d instanceof Pb&&"!"==d.operator)return d.expression;break;case"typeof":return c.warn("Boolean expression always true [{file}:{line},{col}]",a.start),b(xc,a)}d instanceof Rb&&"!"==a.operator&&(a=k(a,d.negate(c)))}return a.evaluate(c)[0]}),Rb.DEFMETHOD("lift_sequences",function(a){if(a.option("sequences")){if(this.left instanceof Kb){var b=this.left,c=b.to_array();return this.left=c.pop(),c.push(this),b=Kb.from_array(c).transform(a)}if(this.right instanceof Kb&&this instanceof Tb&&!v(this.left,a)){var b=this.right,c=b.to_array();return this.right=c.pop(),c.push(this),b=Kb.from_array(c).transform(a)}}return this});var y=s("== === != !== * & | ^");a(Rb,function(a,c){var d=c.has_directive("use asm")?l:function(b,d){if(d||!a.left.has_side_effects(c)&&!a.right.has_side_effects(c)){b&&(a.operator=b);var e=a.left;a.left=a.right,a.right=e}};if(y(a.operator)&&(a.right instanceof lc&&!(a.left instanceof lc)&&(a.left instanceof Rb&&Qc[a.left.operator]>=Qc[a.operator]||d(null,!0)),/^[!=]==?$/.test(a.operator))){if(a.left instanceof ic&&a.right instanceof Sb){if(a.right.consequent instanceof ic&&a.right.consequent.definition()===a.left.definition()){if(/^==/.test(a.operator))return a.right.condition;if(/^!=/.test(a.operator))return a.right.condition.negate(c)}if(a.right.alternative instanceof ic&&a.right.alternative.definition()===a.left.definition()){if(/^==/.test(a.operator))return a.right.condition.negate(c);if(/^!=/.test(a.operator))return a.right.condition}}if(a.right instanceof ic&&a.left instanceof Sb){if(a.left.consequent instanceof ic&&a.left.consequent.definition()===a.right.definition()){if(/^==/.test(a.operator))return a.left.condition;if(/^!=/.test(a.operator))return a.left.condition.negate(c)}if(a.left.alternative instanceof ic&&a.left.alternative.definition()===a.right.definition()){if(/^==/.test(a.operator))return a.left.condition.negate(c);if(/^!=/.test(a.operator))return a.left.condition}}}if(a=a.lift_sequences(c),c.option("comparisons"))switch(a.operator){case"===":case"!==":(a.left.is_string(c)&&a.right.is_string(c)||a.left.is_boolean()&&a.right.is_boolean())&&(a.operator=a.operator.substr(0,2));case"==":case"!=":a.left instanceof mc&&"undefined"==a.left.value&&a.right instanceof Pb&&"typeof"==a.right.operator&&c.option("unsafe")&&(a.right.expression instanceof ic&&a.right.expression.undeclared()||(a.right=a.right.expression,a.left=b(sc,a.left).optimize(c),2==a.operator.length&&(a.operator+="=")))}if(c.option("booleans")&&c.in_boolean_context())switch(a.operator){case"&&":var e=a.left.evaluate(c),f=a.right.evaluate(c);if(e.length>1&&!e[1]||f.length>1&&!f[1])return c.warn("Boolean && always false [{file}:{line},{col}]",a.start),b(wc,a);if(e.length>1&&e[1])return f[0];if(f.length>1&&f[1])return e[0];break;case"||":var e=a.left.evaluate(c),f=a.right.evaluate(c);if(e.length>1&&e[1]||f.length>1&&f[1])return c.warn("Boolean || always true [{file}:{line},{col}]",a.start),b(xc,a);if(e.length>1&&!e[1])return f[0];if(f.length>1&&!f[1])return e[0];break;case"+":var e=a.left.evaluate(c),f=a.right.evaluate(c);if(e.length>1&&e[0]instanceof mc&&e[1]||f.length>1&&f[0]instanceof mc&&f[1])return c.warn("+ in boolean context always true [{file}:{line},{col}]",a.start),b(xc,a)}if(c.option("comparisons")){if(!(c.parent()instanceof Rb)||c.parent()instanceof Tb){var g=b(Pb,a,{operator:"!",expression:a.negate(c)});a=k(a,g)}switch(a.operator){case"<":d(">");break;case"<=":d(">=")}}return"+"==a.operator&&a.right instanceof mc&&""===a.right.getValue()&&a.left instanceof Rb&&"+"==a.left.operator&&a.left.is_string(c)?a.left:(c.option("evaluate")&&"+"==a.operator&&(a.left instanceof lc&&a.right instanceof Rb&&"+"==a.right.operator&&a.right.left instanceof lc&&a.right.is_string(c)&&(a=b(Rb,a,{operator:"+",left:b(mc,null,{value:""+a.left.getValue()+a.right.left.getValue(),start:a.left.start,end:a.right.left.end}),right:a.right.right})),a.right instanceof lc&&a.left instanceof Rb&&"+"==a.left.operator&&a.left.right instanceof lc&&a.left.is_string(c)&&(a=b(Rb,a,{operator:"+",left:a.left.left,right:b(mc,null,{value:""+a.left.right.getValue()+a.right.getValue(),start:a.left.right.start,end:a.right.end})})),a.left instanceof Rb&&"+"==a.left.operator&&a.left.is_string(c)&&a.left.right instanceof lc&&a.right instanceof Rb&&"+"==a.right.operator&&a.right.left instanceof lc&&a.right.is_string(c)&&(a=b(Rb,a,{operator:"+",left:b(Rb,a.left,{operator:"+",left:a.left.left,right:b(mc,null,{value:""+a.left.right.getValue()+a.right.left.getValue(),start:a.left.right.start,end:a.right.left.end})}),right:a.right.right}))),a.right instanceof Rb&&a.right.operator==a.operator&&("*"==a.operator||"&&"==a.operator||"||"==a.operator)?(a.left=b(Rb,a.left,{operator:a.operator,left:a.left,right:a.right.left}),a.right=a.right.right,a.transform(c)):a.evaluate(c)[0])}),a(ic,function(a,d){if(a.undeclared()){var e=d.option("global_defs");if(e&&e.hasOwnProperty(a.name))return c(d,e[a.name],a);switch(a.name){case"undefined":return b(sc,a);case"NaN":return b(rc,a);case"Infinity":return b(uc,a)}}return a}),a(sc,function(a,c){if(c.option("unsafe")){var d=c.find_parent(jb),e=d.find_variable("undefined");if(e){var f=b(ic,a,{name:"undefined",scope:d,thedef:e});return f.reference(),f}}return a});var z=["+","-","/","*","%",">>","<<",">>>","|","^","&"];a(Tb,function(a,b){return a=a.lift_sequences(b),"="==a.operator&&a.left instanceof ic&&a.right instanceof Rb&&a.right.left instanceof ic&&a.right.left.name==a.left.name&&f(a.right.operator,z)&&(a.operator=a.right.operator+"=",a.right=a.right.right),a}),a(Sb,function(a,c){if(!c.option("conditionals"))return a;if(a.condition instanceof Kb){var d=a.condition.car;return a.condition=a.condition.cdr,Kb.cons(d,a)}var e=a.condition.evaluate(c);if(e.length>1)return e[1]?(c.warn("Condition always true [{file}:{line},{col}]",a.start),a.consequent):(c.warn("Condition always false [{file}:{line},{col}]",a.start),a.alternative);var f=e[0].negate(c);k(e[0],f)===f&&(a=b(Sb,a,{condition:f,consequent:a.alternative,alternative:a.consequent}));var g=a.consequent,h=a.alternative;if(g instanceof Tb&&h instanceof Tb&&g.operator==h.operator&&g.left.equivalent_to(h.left))return b(Tb,a,{operator:g.operator,left:g.left,right:b(Sb,a,{condition:a.condition,consequent:g.right,alternative:h.right})});if(g instanceof Ib&&h.TYPE===g.TYPE&&g.args.length==h.args.length&&g.expression.equivalent_to(h.expression)){if(0==g.args.length)return b(Kb,a,{car:a.condition,cdr:g});if(1==g.args.length)return g.args[0]=b(Sb,a,{condition:a.condition,consequent:g.args[0],alternative:h.args[0]}),g}return g instanceof Sb&&g.alternative.equivalent_to(h)?b(Sb,a,{condition:b(Rb,a,{left:a.condition,operator:"&&",right:g.condition}),consequent:g.consequent,alternative:h}):a}),a(vc,function(a,c){if(c.option("booleans")){var d=c.parent();return d instanceof Rb&&("=="==d.operator||"!="==d.operator)?(c.warn("Non-strict equality against boolean: {operator} {value} [{file}:{line},{col}]",{operator:d.operator,value:a.value,file:d.start.file,line:d.start.line,col:d.start.col}),b(nc,a,{value:+a.value})):b(Pb,a,{operator:"!",expression:b(nc,a,{value:1-a.value})})}return a}),a(Nb,function(a,c){var d=a.property;if(d instanceof mc&&c.option("properties")){if(d=d.getValue(),Ac(d)?c.option("screw_ie8"):G(d))return b(Mb,a,{expression:a.expression,property:d}).optimize(c);var e=parseFloat(d);isNaN(e)||e.toString()!=d||(a.property=b(nc,a.property,{value:e}))}return a}),a(Mb,function(a,b){return a.evaluate(b)[0]}),a(Ub,w),a(Vb,w),a(oc,w)}(),function(){function a(a){var d="prefix"in a?a.prefix:"UnaryExpression"==a.type?!0:!1;return new(d?Pb:Qb)({start:b(a),end:c(a),operator:a.operator,expression:e(a.argument)})}function b(a){return new T({file:a.loc&&a.loc.source,line:a.loc&&a.loc.start.line,col:a.loc&&a.loc.start.column,pos:a.start,endpos:a.start})}function c(a){return new T({file:a.loc&&a.loc.source,line:a.loc&&a.loc.end.line,col:a.loc&&a.loc.end.column,pos:a.end,endpos:a.end})}function d(a,d,g){var h="function From_Moz_"+a+"(M){\n";return h+="return new mytype({\nstart: my_start_token(M),\nend: my_end_token(M)",g&&g.split(/\s*,\s*/).forEach(function(a){var b=/([a-z0-9$_]+)(=|@|>|%)([a-z0-9$_]+)/i.exec(a);if(!b)throw new Error("Can't understand property map: "+a);var c="M."+b[1],d=b[2],e=b[3];if(h+=",\n"+e+": ","@"==d)h+=c+".map(from_moz)";else if(">"==d)h+="from_moz("+c+")";else if("="==d)h+=c;else{if("%"!=d)throw new Error("Can't understand operator in propmap: "+a);h+="from_moz("+c+").body"}}),h+="\n})}",h=new Function("mytype","my_start_token","my_end_token","from_moz","return("+h+")")(d,b,c,e),f[a]=h}function e(a){g.push(a);var b=null!=a?f[a.type](a):null;return g.pop(),b}var f={TryStatement:function(a){return new Bb({start:b(a),end:c(a),body:e(a.block).body,bcatch:e(a.handlers?a.handlers[0]:a.handler),bfinally:a.finalizer?new Db(e(a.finalizer)):null})},CatchClause:function(a){return new Cb({start:b(a),end:c(a),argname:e(a.param),body:e(a.body).body})},ObjectExpression:function(a){return new Vb({start:b(a),end:c(a),properties:a.properties.map(function(a){var d=a.key,f="Identifier"==d.type?d.name:d.value,g={start:b(d),end:c(a.value),key:f,value:e(a.value)};switch(a.kind){case"init":return new Xb(g);case"set":return g.value.name=e(d),new Yb(g);case"get":return g.value.name=e(d),new Zb(g)}})})},SequenceExpression:function(a){return Kb.from_array(a.expressions.map(e))},MemberExpression:function(a){return new(a.computed?Nb:Mb)({start:b(a),end:c(a),property:a.computed?e(a.property):a.property.name,expression:e(a.object)})},SwitchCase:function(a){return new(a.test?Ab:zb)({start:b(a),end:c(a),expression:e(a.test),body:a.consequent.map(e)})},Literal:function(a){var d=a.value,e={start:b(a),end:c(a)};if(null===d)return new qc(e);switch(typeof d){case"string":return e.value=d,new mc(e);case"number":return e.value=d,new nc(e);case"boolean":return new(d?xc:wc)(e);default:return e.value=d,new oc(e)}},UnaryExpression:a,UpdateExpression:a,Identifier:function(a){var d=g[g.length-2];return new("this"==a.name?kc:"LabeledStatement"==d.type?hc:"VariableDeclarator"==d.type&&d.id===a?"const"==d.kind?cc:bc:"FunctionExpression"==d.type?d.id===a?fc:dc:"FunctionDeclaration"==d.type?d.id===a?ec:dc:"CatchClause"==d.type?gc:"BreakStatement"==d.type||"ContinueStatement"==d.type?jc:ic)({start:b(a),end:c(a),name:a.name})}};d("Node",U),d("Program",kb,"body@body"),d("Function",nb,"id>name, params@argnames, body%body"),d("EmptyStatement",_),d("BlockStatement",$,"body@body"),d("ExpressionStatement",Y,"expression>body"),d("IfStatement",wb,"test>condition, consequent>body, alternate>alternative"),d("LabeledStatement",bb,"label>label, body>body"),d("BreakStatement",ub,"label>label"),d("ContinueStatement",vb,"label>label"),d("WithStatement",ib,"object>expression, body>body"),d("SwitchStatement",xb,"discriminant>expression, cases@body"),d("ReturnStatement",rb,"argument>value"),d("ThrowStatement",sb,"argument>value"),d("WhileStatement",fb,"test>condition, body>body"),d("DoWhileStatement",eb,"test>condition, body>body"),d("ForStatement",gb,"init>init, test>condition, update>step, body>body"),d("ForInStatement",hb,"left>init, right>object, body>body"),d("DebuggerStatement",W),d("FunctionDeclaration",ob,"id>name, params@argnames, body%body"),d("VariableDeclaration",Fb,"declarations@definitions"),d("VariableDeclarator",Hb,"id>name, init>value"),d("ThisExpression",kc),d("ArrayExpression",Ub,"elements@elements"),d("FunctionExpression",nb,"id>name, params@argnames, body%body"),d("BinaryExpression",Rb,"operator=operator, left>left, right>right"),d("AssignmentExpression",Tb,"operator=operator, left>left, right>right"),d("LogicalExpression",Rb,"operator=operator, left>left, right>right"),d("ConditionalExpression",Sb,"test>condition, consequent>consequent, alternate>alternative"),d("NewExpression",Jb,"callee>expression, arguments@args"),d("CallExpression",Ib,"callee>expression, arguments@args");var g=null;U.from_mozilla_ast=function(a){var b=g;g=[];var c=e(a);return g=b,c}}(),a.array_to_hash=c,a.slice=d,a.characters=e,a.member=f,a.find_if=g,a.repeat_string=h,a.DefaultsError=i,a.defaults=j,a.merge=k,a.noop=l,a.MAP=S,a.push_uniq=m,a.string_template=n,a.remove=o,a.mergeSort=p,a.set_difference=q,a.set_intersection=r,a.makePredicate=s,a.all=t,a.Dictionary=u,a.DEFNODE=v,a.AST_Token=T,a.AST_Node=U,a.AST_Statement=V,a.AST_Debugger=W,a.AST_Directive=X,a.AST_SimpleStatement=Y,a.walk_body=w,a.AST_Block=Z,a.AST_BlockStatement=$,a.AST_EmptyStatement=_,a.AST_StatementWithBody=ab,a.AST_LabeledStatement=bb,a.AST_IterationStatement=cb,a.AST_DWLoop=db,a.AST_Do=eb,a.AST_While=fb,a.AST_For=gb,a.AST_ForIn=hb,a.AST_With=ib,a.AST_Scope=jb,a.AST_Toplevel=kb,a.AST_Lambda=lb,a.AST_Accessor=mb,a.AST_Function=nb,a.AST_Defun=ob,a.AST_Jump=pb,a.AST_Exit=qb,a.AST_Return=rb,a.AST_Throw=sb,a.AST_LoopControl=tb,a.AST_Break=ub,a.AST_Continue=vb,a.AST_If=wb,a.AST_Switch=xb,a.AST_SwitchBranch=yb,a.AST_Default=zb,a.AST_Case=Ab,a.AST_Try=Bb,a.AST_Catch=Cb,a.AST_Finally=Db,a.AST_Definitions=Eb,a.AST_Var=Fb,a.AST_Const=Gb,a.AST_VarDef=Hb,a.AST_Call=Ib,a.AST_New=Jb,a.AST_Seq=Kb,a.AST_PropAccess=Lb,a.AST_Dot=Mb,a.AST_Sub=Nb,a.AST_Unary=Ob,a.AST_UnaryPrefix=Pb,a.AST_UnaryPostfix=Qb,a.AST_Binary=Rb,a.AST_Conditional=Sb,a.AST_Assign=Tb,a.AST_Array=Ub,a.AST_Object=Vb,a.AST_ObjectProperty=Wb,a.AST_ObjectKeyVal=Xb,a.AST_ObjectSetter=Yb,a.AST_ObjectGetter=Zb,a.AST_Symbol=$b,a.AST_SymbolAccessor=_b,a.AST_SymbolDeclaration=ac,a.AST_SymbolVar=bc,a.AST_SymbolConst=cc,a.AST_SymbolFunarg=dc,a.AST_SymbolDefun=ec,a.AST_SymbolLambda=fc,a.AST_SymbolCatch=gc,a.AST_Label=hc,a.AST_SymbolRef=ic,a.AST_LabelRef=jc,a.AST_This=kc,a.AST_Constant=lc,a.AST_String=mc,a.AST_Number=nc,a.AST_RegExp=oc,a.AST_Atom=pc,a.AST_Null=qc,a.AST_NaN=rc,a.AST_Undefined=sc,a.AST_Hole=tc,a.AST_Infinity=uc,a.AST_Boolean=vc,a.AST_False=wc,a.AST_True=xc,a.TreeWalker=x,a.KEYWORDS=yc,a.KEYWORDS_ATOM=zc,a.RESERVED_WORDS=Ac,a.KEYWORDS_BEFORE_EXPRESSION=Bc,a.OPERATOR_CHARS=Cc,a.RE_HEX_NUMBER=Dc,a.RE_OCT_NUMBER=Ec,a.RE_DEC_NUMBER=Fc,a.OPERATORS=Gc,a.WHITESPACE_CHARS=Hc,a.PUNC_BEFORE_EXPRESSION=Ic,a.PUNC_CHARS=Jc,a.REGEXP_MODIFIERS=Kc,a.UNICODE=Lc,a.is_letter=y,a.is_digit=z,a.is_alphanumeric_char=A,a.is_unicode_combining_mark=B,a.is_unicode_connector_punctuation=C,a.is_identifier=D,a.is_identifier_start=E,a.is_identifier_char=F,a.is_identifier_string=G,a.parse_js_number=H,a.JS_Parse_Error=I,a.js_error=J,a.is_token=K,a.EX_EOF=Mc,a.tokenizer=L,a.UNARY_PREFIX=Nc,a.UNARY_POSTFIX=Oc,a.ASSIGNMENT=Pc,a.PRECEDENCE=Qc,a.STATEMENTS_WITH_LABELS=Rc,a.ATOMIC_START_TOKEN=Sc,a.parse=M,a.TreeTransformer=N,a.SymbolDef=O,a.base54=Tc,a.OutputStream=P,a.Compressor=Q,a.SourceMap=R}({},function(){return this}()),/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */ -function(a){"use strict";if(a.URL=a.URL||a.webkitURL,a.Blob&&a.URL)try{return void new Blob}catch(b){}var c=a.BlobBuilder||a.WebKitBlobBuilder||a.MozBlobBuilder||function(a){var b=function(a){return Object.prototype.toString.call(a).match(/^\[object\s(.*)\]$/)[1]},c=function(){this.data=[]},d=function(a,b,c){this.data=a,this.size=a.length,this.type=b,this.encoding=c},e=c.prototype,f=d.prototype,g=a.FileReaderSync,h=function(a){this.code=this[this.name=a]},i="NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR".split(" "),j=i.length,k=a.URL||a.webkitURL||a,l=k.createObjectURL,m=k.revokeObjectURL,n=k,o=a.btoa,p=a.atob,q=a.ArrayBuffer,r=a.Uint8Array,s=/^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/;for(d.fake=f.fake=!0;j--;)h.prototype[i[j]]=j+1;return k.createObjectURL||(n=a.URL=function(a){var b,c=document.createElementNS("http://www.w3.org/1999/xhtml","a");return c.href=a,"origin"in c||("data:"===c.protocol.toLowerCase()?c.origin=null:(b=a.match(s),c.origin=b&&b[1])),c}),n.createObjectURL=function(a){var b,c=a.type;return null===c&&(c="application/octet-stream"),a instanceof d?(b="data:"+c,"base64"===a.encoding?b+";base64,"+a.data:"URI"===a.encoding?b+","+decodeURIComponent(a.data):o?b+";base64,"+o(a.data):b+","+encodeURIComponent(a.data)):l?l.call(k,a):void 0},n.revokeObjectURL=function(a){"data:"!==a.substring(0,5)&&m&&m.call(k,a)},e.append=function(a){var c=this.data;if(r&&(a instanceof q||a instanceof r)){for(var e="",f=new r(a),i=0,j=f.length;j>i;i++)e+=String.fromCharCode(f[i]);c.push(e)}else if("Blob"===b(a)||"File"===b(a)){if(!g)throw new h("NOT_READABLE_ERR");var k=new g;c.push(k.readAsBinaryString(a))}else a instanceof d?"base64"===a.encoding&&p?c.push(p(a.data)):"URI"===a.encoding?c.push(decodeURIComponent(a.data)):"raw"===a.encoding&&c.push(a.data):("string"!=typeof a&&(a+=""),c.push(unescape(encodeURIComponent(a))))},e.getBlob=function(a){return arguments.length||(a=null),new d(this.data.join(""),a,"raw")},e.toString=function(){return"[object BlobBuilder]"},f.slice=function(a,b,c){var e=arguments.length;return 3>e&&(c=null),new d(this.data.slice(a,e>1?b:this.data.length),c,this.encoding)},f.toString=function(){return"[object Blob]"},f.close=function(){this.size=0,delete this.data},c}(a);a.Blob=function(a,b){var d=b?b.type||"":"",e=new c;if(a)for(var f=0,g=a.length;g>f;f++)e.append(a[f]);return e.getBlob(d)}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content||this);/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */ -var saveAs=saveAs||"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob&&navigator.msSaveOrOpenBlob.bind(navigator)||function(a){"use strict";if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var b=a.document,c=function(){return a.URL||a.webkitURL||a},d=b.createElementNS("http://www.w3.org/1999/xhtml","a"),e="download"in d,f=function(c){var d=b.createEvent("MouseEvents");d.initMouseEvent("click",!0,!1,a,0,0,0,0,0,!1,!1,!1,!1,0,null),c.dispatchEvent(d)},g=a.webkitRequestFileSystem,h=a.requestFileSystem||g||a.mozRequestFileSystem,i=function(b){(a.setImmediate||a.setTimeout)(function(){throw b},0)},j="application/octet-stream",k=0,l=10,m=function(b){var d=function(){"string"==typeof b?c().revokeObjectURL(b):b.remove()};a.chrome?d():setTimeout(d,l)},n=function(a,b,c){b=[].concat(b);for(var d=b.length;d--;){var e=a["on"+b[d]];if("function"==typeof e)try{e.call(a,c||a)}catch(f){i(f)}}},o=function(b,i){var l,o,p,q=this,r=b.type,s=!1,t=function(){n(q,"writestart progress write writeend".split(" "))},u=function(){if((s||!l)&&(l=c().createObjectURL(b)),o)o.location.href=l;else{var d=a.open(l,"_blank");void 0==d&&"undefined"!=typeof safari&&(a.location.href=l)}q.readyState=q.DONE,t(),m(l)},v=function(a){return function(){return q.readyState!==q.DONE?a.apply(this,arguments):void 0}},w={create:!0,exclusive:!1};return q.readyState=q.INIT,i||(i="download"),e?(l=c().createObjectURL(b),d.href=l,d.download=i,f(d),q.readyState=q.DONE,t(),void m(l)):(a.chrome&&r&&r!==j&&(p=b.slice||b.webkitSlice,b=p.call(b,0,b.size,j),s=!0),g&&"download"!==i&&(i+=".download"),(r===j||g)&&(o=a),h?(k+=b.size,void h(a.TEMPORARY,k,v(function(a){a.root.getDirectory("saved",w,v(function(a){var c=function(){a.getFile(i,w,v(function(a){a.createWriter(v(function(c){c.onwriteend=function(b){o.location.href=a.toURL(),q.readyState=q.DONE,n(q,"writeend",b),m(a)},c.onerror=function(){var a=c.error;a.code!==a.ABORT_ERR&&u()},"writestart progress write abort".split(" ").forEach(function(a){c["on"+a]=q["on"+a]}),c.write(b),q.abort=function(){c.abort(),q.readyState=q.DONE},q.readyState=q.WRITING}),u)}),u)};a.getFile(i,{create:!1},v(function(a){a.remove(),c()}),v(function(a){a.code===a.NOT_FOUND_ERR?c():u()}))}),u)}),u)):void u())},p=o.prototype,q=function(a,b){return new o(a,b)};return p.abort=function(){var a=this;a.readyState=a.DONE,n(a,"abort")},p.readyState=p.INIT=0,p.WRITING=1,p.DONE=2,p.error=p.onwritestart=p.onprogress=p.onwrite=p.onabort=p.onerror=p.onwriteend=null,q}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);"undefined"!=typeof module&&null!==module?module.exports=saveAs:"undefined"!=typeof define&&null!==define&&null!=define.amd&&define([],function(){return saveAs});/*! - * Bootstrap v3.3.2 (http://getbootstrap.com) - * Copyright 2011-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -var __js={"affix.js":"/* ========================================================================\n * Bootstrap: affix.js v3.3.2\n * http://getbootstrap.com/javascript/#affix\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n this.$target = $(this.options.target)\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed =\n this.unpin =\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.3.2'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = $('body').height()\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n","alert.js":"/* ========================================================================\n * Bootstrap: alert.js v3.3.2\n * http://getbootstrap.com/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.3.2'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = $(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n","button.js":"/* ========================================================================\n * Bootstrap: button.js v3.3.2\n * http://getbootstrap.com/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.3.2'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state = state + 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked') && this.$element.hasClass('active')) changed = false\n else $parent.find('.active').removeClass('active')\n }\n if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n }\n\n if (changed) this.$element.toggleClass('active')\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target)\n if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')\n Plugin.call($btn, 'toggle')\n e.preventDefault()\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n","carousel.js":"/* ========================================================================\n * Bootstrap: carousel.js v3.3.2\n * http://getbootstrap.com/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused =\n this.sliding =\n this.interval =\n this.$active =\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.3.2'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n $next[0].offsetWidth // force reflow\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var href\n var $this = $(this)\n var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n if (!$target.hasClass('carousel')) return\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n","collapse.js":"/* ========================================================================\n * Bootstrap: collapse.js v3.3.2\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $(this.options.trigger).filter('[href=\"#' + element.id + '\"], [data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.3.2'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true,\n trigger: '[data-toggle=\"collapse\"]'\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && option == 'show') options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this })\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n","dropdown.js":"/* ========================================================================\n * Bootstrap: dropdown.js v3.3.2\n * http://getbootstrap.com/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.3.2'\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $('
    ').insertAfter($(this)).on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger('shown.bs.dropdown', relatedTarget)\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.divider):visible a'\n var $items = $parent.find('[role=\"menu\"]' + desc + ', [role=\"listbox\"]' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)\n })\n }\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector && $(selector)\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '[role=\"menu\"]', Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '[role=\"listbox\"]', Dropdown.prototype.keydown)\n\n}(jQuery);\n","modal.js":"/* ========================================================================\n * Bootstrap: modal.js v3.3.2\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$backdrop =\n this.isShown = null\n this.scrollbarWidth = 0\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.3.2'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n if (that.options.backdrop) that.adjustBackdrop()\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element\n .addClass('in')\n .attr('aria-hidden', false)\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$element.find('.modal-dialog') // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .attr('aria-hidden', true)\n .off('click.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $('
    ')\n .prependTo(this.$element)\n .on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus.call(this.$element[0])\n : this.hide.call(this)\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n if (this.options.backdrop) this.adjustBackdrop()\n this.adjustDialog()\n }\n\n Modal.prototype.adjustBackdrop = function () {\n this.$backdrop\n .css('height', 0)\n .css('height', this.$element[0].scrollHeight)\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n this.bodyIsOverflowing = document.body.scrollHeight > document.documentElement.clientHeight\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', '')\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n","popover.js":"/* ========================================================================\n * Bootstrap: popover.js v3.3.2\n * http://getbootstrap.com/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.3.2'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

    '\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)\n $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events\n this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'\n ](content)\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n Popover.prototype.tip = function () {\n if (!this.$tip) this.$tip = $(this.options.template)\n return this.$tip\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && option == 'destroy') return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n","scrollspy.js":"/* ========================================================================\n * Bootstrap: scrollspy.js v3.3.2\n * http://getbootstrap.com/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n var process = $.proxy(this.process, this)\n\n this.$body = $('body')\n this.$scrollElement = $(element).is('body') ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', process)\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.3.2'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n var self = this\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n self.offsets.push(this[0])\n self.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (!offsets[i + 1] || scrollTop <= offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n","tab.js":"/* ========================================================================\n * Bootstrap: tab.js v3.3.2\n * http://getbootstrap.com/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n this.element = $(element)\n }\n\n Tab.VERSION = '3.3.2'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu')) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n","tooltip.js":"/* ========================================================================\n * Bootstrap: tooltip.js v3.3.2\n * http://getbootstrap.com/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type =\n this.options =\n this.enabled =\n this.timeout =\n this.hoverState =\n this.$element = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.3.2'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
    ',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n }\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n options = $.extend({}, this.getDefaults(), this.$element.data(), options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (self && self.$tip && self.$tip.is(':visible')) {\n self.hoverState = 'in'\n return\n }\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var $container = this.options.container ? $(this.options.container) : this.$element.parent()\n var containerDim = this.getPosition($container)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < containerDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top = offset.top + marginTop\n offset.left = offset.left + marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isHorizontal) {\n this.arrow()\n .css(isHorizontal ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isHorizontal ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = this.tip()\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var elOffset = isBody ? { top: 0, left: 0 } : $element.offset()\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n return (this.$tip = this.$tip || $(this.options.template))\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n })\n }\n\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && option == 'destroy') return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n","transition.js":"/* ========================================================================\n * Bootstrap: transition.js v3.3.2\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // http://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n"},__less={"alerts.less":"//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n \n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n \n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","badges.less":"//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: baseline;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n \n .btn-xs & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n \n .list-group-item > & {\n float: right;\n }\n \n .list-group-item > & + & {\n margin-right: 5px;\n }\n \n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","bootstrap.less":'// Core variables and mixins\n@import "variables.less";\n@import "mixins.less";\n\n// Reset and dependencies\n@import "normalize.less";\n@import "print.less";\n@import "glyphicons.less";\n\n// Core CSS\n@import "scaffolding.less";\n@import "type.less";\n@import "code.less";\n@import "grid.less";\n@import "tables.less";\n@import "forms.less";\n@import "buttons.less";\n\n// Components\n@import "component-animations.less";\n@import "dropdowns.less";\n@import "button-groups.less";\n@import "input-groups.less";\n@import "navs.less";\n@import "navbar.less";\n@import "breadcrumbs.less";\n@import "pagination.less";\n@import "pager.less";\n@import "labels.less";\n@import "badges.less";\n@import "jumbotron.less";\n@import "thumbnails.less";\n@import "alerts.less";\n@import "progress-bars.less";\n@import "media.less";\n@import "list-group.less";\n@import "panels.less";\n@import "responsive-embed.less";\n@import "wells.less";\n@import "close.less";\n\n// Components w/ JavaScript\n@import "modals.less";\n@import "tooltip.less";\n@import "popovers.less";\n@import "carousel.less";\n\n// Utility classes\n@import "utilities.less";\n@import "responsive-utilities.less";\n',"breadcrumbs.less":'//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: "@{breadcrumb-separator}\\00a0"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n',"button-groups.less":'//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the "active" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child\'s margin\n &:extend(.clearfix all);\n\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn\'t apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don\'t show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n border-top-right-radius: @border-radius-base;\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n border-bottom-left-radius: @border-radius-base;\n .border-top-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser\'s form validation feedback, powered by the\n// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle="buttons"] {\n > .btn,\n > .btn-group > .btn {\n input[type="radio"],\n input[type="checkbox"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n',"buttons.less":'//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n pointer-events: none; // Future-proof disabling of clicks\n .opacity(.65);\n .box-shadow(none);\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type="submit"],\ninput[type="reset"],\ninput[type="button"] {\n &.btn-block {\n width: 100%;\n }\n}\n',"carousel.less":"//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n\n > .item {\n display: none;\n position: relative;\n .transition(.6s ease-in-out left);\n\n // Account for jankitude on images\n > img,\n > a > img {\n &:extend(.img-responsive);\n line-height: 1;\n }\n\n // WebKit CSS3 transforms for supported devices\n @media all and (transform-3d), (-webkit-transform-3d) {\n .transition-transform(~'0.6s ease-in-out');\n .backface-visibility(~'hidden');\n .perspective(1000);\n\n &.next,\n &.active.right {\n .translate3d(100%, 0, 0);\n left: 0;\n }\n &.prev,\n &.active.left {\n .translate3d(-100%, 0, 0);\n left: 0;\n }\n &.next.left,\n &.prev.right,\n &.active {\n .translate3d(0, 0, 0);\n left: 0;\n }\n }\n }\n\n > .active,\n > .next,\n > .prev {\n display: block;\n }\n\n > .active {\n left: 0;\n }\n\n > .next,\n > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n > .next {\n left: 100%;\n }\n > .prev {\n left: -100%;\n }\n > .next.left,\n > .prev.right {\n left: 0;\n }\n\n > .active.left {\n left: -100%;\n }\n > .active.right {\n left: 100%;\n }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: @carousel-control-width;\n .opacity(@carousel-control-opacity);\n font-size: @carousel-control-font-size;\n color: @carousel-control-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n // We can't have this transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Set gradients for backgrounds\n &.left {\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n // Hover/focus state\n &:hover,\n &:focus {\n outline: 0;\n color: @carousel-control-color;\n text-decoration: none;\n .opacity(.9);\n }\n\n // Toggles\n .icon-prev,\n .icon-next,\n .glyphicon-chevron-left,\n .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n }\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n }\n .icon-prev,\n .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n line-height: 1;\n font-family: serif;\n }\n\n\n .icon-prev {\n &:before {\n content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n }\n }\n .icon-next {\n &:before {\n content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n }\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n\n li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid @carousel-indicator-border-color;\n border-radius: 10px;\n cursor: pointer;\n\n // IE8-9 hack for event handling\n //\n // Internet Explorer 8-9 does not support clicks on elements without a set\n // `background-color`. We cannot use `filter` since that's not viewed as a\n // background color by the browser. Thus, a hack is needed.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer\n //\n // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n // set alpha transparency for the best results possible.\n background-color: #000 \\9; // IE8\n background-color: rgba(0,0,0,0); // IE9\n }\n .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: @carousel-indicator-active-bg;\n }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: @carousel-caption-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n & .btn {\n text-shadow: none; // No shadow for button elements in carousel-caption\n }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicon-chevron-left,\n .glyphicon-chevron-right,\n .icon-prev,\n .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .glyphicon-chevron-left,\n .icon-prev {\n margin-left: -15px;\n }\n .glyphicon-chevron-right,\n .icon-next {\n margin-right: -15px;\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n\n // Move up the indicators\n .carousel-indicators {\n bottom: 20px;\n }\n}\n","close.less":'//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href="#"`.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n',"code.less":"//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","component-animations.less":'//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don\'t use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n visibility: hidden;\n\n &.in { display: block; visibility: visible; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~"height, visibility");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n',"dropdowns.less":'//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base solid;\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on "open" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you\'re set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base solid;\n content: "";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n',"forms.less":'//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn\'t specific enough)\ninput[type="search"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type="radio"],\ninput[type="checkbox"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\n// Set the height of file controls to match text inputs\ninput[type="file"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type="range"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type="file"]:focus,\ninput[type="radio"]:focus,\ninput[type="checkbox"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type="text"]\n// input[type="password"]\n// input[type="datetime"]\n// input[type="datetime-local"]\n// input[type="date"]\n// input[type="month"]\n// input[type="time"]\n// input[type="week"]\n// input[type="number"]\n// input[type="email"]\n// input[type="url"]\n// input[type="search"]\n// input[type="tel"]\n// input[type="color"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won\'t be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don\'t honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n background-color: @input-bg-disabled;\n opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it\'s not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type="search"] {\n -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type="date"],\n input[type="time"],\n input[type="datetime-local"],\n input[type="month"] {\n line-height: @input-height-base;\n\n &.input-sm,\n .input-group-sm & {\n line-height: @input-height-small;\n }\n\n &.input-lg,\n .input-group-lg & {\n line-height: @input-height-large;\n }\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: 15px;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n\n label {\n min-height: @line-height-computed; // Ensure the input doesn\'t jump when there is no text\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n }\n}\n.radio input[type="radio"],\n.radio-inline input[type="radio"],\n.checkbox input[type="checkbox"],\n.checkbox-inline input[type="checkbox"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because