├── .bowerrc ├── .dockerignore ├── .gitignore ├── .npmrc ├── Makefile ├── README.md ├── bower.json ├── build.js ├── circle.yml ├── config ├── nginx-extras │ └── Dockerfile └── nginx │ ├── maps │ ├── main.map │ ├── meta.map │ └── wpd.map │ └── sites-enabled │ └── docs.conf ├── docker-compose.yml ├── layouts └── default.hbs ├── lib ├── handlebars │ └── index.js └── remarkable │ ├── highlighter.js │ └── index.js ├── package.json ├── partials ├── attributions.hbs ├── breadcrumb.hbs ├── metadata.hbs └── notice.hbs ├── serve.js ├── static ├── _internal │ ├── fancy.css │ ├── footer.html │ └── header.html ├── assets │ ├── css │ │ └── docs.css │ └── js │ │ └── docs.js └── favicon.ico └── yarn.lock /.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "analytics": false, 3 | "directory": "static/bower_components", 4 | "tmp": "./.tmp_bower" 5 | } 6 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | src/.git/ 2 | src/WPD/.git/ 3 | src/Meta/.git/ 4 | build/ 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .npm/ 2 | node_modules/ 3 | bower_components/ 4 | build/ 5 | npm-debug.log 6 | src/ 7 | static/assets/css/highlight.css 8 | logs/ 9 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | prefix = ./node_modules 2 | cache = ./.npm 3 | tmp = ./.tmp_npm 4 | HOME = .npmhome 5 | cwd = . 6 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | SHELL := bash 2 | PATH := bin:${PATH} 3 | DATE := `date '+%Y%m%d'` 4 | PWD := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) 5 | .DEFAULT_GOAL := build 6 | 7 | # https://www.gnu.org/software/make/manual/make.html 8 | 9 | 10 | .PHONY: build 11 | build: src/ \ 12 | static/assets/css/highlight.css 13 | time npm run build 14 | 15 | 16 | src/: 17 | @if [[ ! -d src ]]; then\ 18 | git clone https://github.com/webplatform/docs.git src;\ 19 | cd src;\ 20 | git submodule update --init --recursive;\ 21 | cd ..;\ 22 | fi 23 | 24 | 25 | static/bower_components/: node_modules/ 26 | node_modules/.bin/bower install 27 | 28 | 29 | static/assets/css/highlight.css: node_modules/ 30 | cp node_modules/highlight.js/styles/solarized_dark.css static/assets/css/highlight.css 31 | 32 | 33 | node_modules/: package.json 34 | yarn install 35 | 36 | 37 | .PHONY: package 38 | package: build 39 | find build -type d -name .git -exec rm -rf {} + 40 | find build -type f -name .git\* -exec rm {} + 41 | tar cfjv ../docs.tar.bz2 build/ 42 | 43 | 44 | ## Use local Node.js reading serve script from package.json 45 | .PHONY: serve 46 | serve: 47 | npm run serve 48 | 49 | 50 | ## Build a nginx 1.9+ Docker container for NGINX confiration testing 51 | .PHONY: nginx-extras 52 | nginx-extras: 53 | docker build --rm --no-cache -t nginx-extras - < config/nginx-extras/Dockerfile 54 | 55 | 56 | ## Build pages using Docker, instead of local Node.js 57 | .PHONY: docker-build 58 | docker-build: src node_modules static/bower_components 59 | docker run -it --rm -v "${PWD}":/usr/src/app -w /usr/src/app node:4 node build.js 60 | 61 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # WebPlatform Docs static site generator 2 | 3 | This repository serves as a static-site generator for *docs.webplatform.org*, anything related generating HTML. 4 | 5 | No content should be stored in this repo, but only what it takes to generate the docs pages. 6 | The content itself is pulled in this workspace as git submodule so we can compile the static HTML files. 7 | 8 | To get the docs pages, refer to the following git repositories. 9 | 10 | | Directory | Submodule | Note | 11 | |---------------|------------------------------------|---------------------| 12 | | **src/** | [webplatform/docs][docs] | The main docs pages | 13 | | **src/Meta/** | [webplatform/docs-meta][docs-meta] | Archived content that needed to be moved during mass imports. We kept them there to cherry-pick and merge into the main content section. Was accessible under the URL *docs.webplatform.org/wiki/Meta:...* | 14 | | **src/WPD/** | [webplatform/docs-wpd][docs-wpd] | Community and notes section. Was accessible under the URL *docs.webplatform.org/wiki/WPD:...* | 15 | 16 | 17 | ### Expected steps 18 | 19 | What’s left to do prior to use this project to replace WebPlatform Docs MediaWiki instance. 20 | 21 | Roughly [all issues described in **webplatform/mediawiki-conversion**](https://github.com/webplatform/mediawiki-conversion/issues?q=is%3Aopen+is%3Aissue). 22 | 23 | * [x] [Convert MediaWiki history into Git source-controlled text files](https://github.com/webplatform/mediawiki-conversion/issues/4) 24 | * [x] [Pass a filter to every page to make it suitable for a static site generator](https://github.com/webplatform/mediawiki-conversion/issues/9) 25 | * [x] [Reproduce directory listing for pages without content](https://github.com/webplatform/mediawiki-conversion/issues/3) 26 | * [x] [Make sure all uploads are visible from generated site](https://github.com/webplatform/mediawiki-conversion/issues/5) 27 | * [ ] ~~[Reproduce search functionality](https://github.com/webplatform/mediawiki-conversion/issues/8)~~ (at least leave metadata to help making the feature) 28 | * [x] [Ensure ALL URLs are kept with appropriate redirects](https://github.com/webplatform/mediawiki-conversion/issues/6) (almost there! **needs testing**) 29 | * [x] [Get list of views the static site won’t be reproducing anymore so we can create appropriate "410 Gone" response #11](https://github.com/webplatform/mediawiki-conversion/issues/11) 30 | 31 | 32 | 33 | ## How was it done? 34 | 35 | To learn how the conversion was done, take a look at the [MediaWiki conversion project][mediawiki-conversion] utility and the [content converter][content-converter] library. 36 | 37 | [docs-wpd]: https://github.com/webplatform/docs-wpd 38 | [docs-meta]: https://github.com/webplatform/docs-meta 39 | [docs]: https://github.com/webplatform/docs 40 | [mediawiki-conversion]: https://github.com/webplatform/mediawiki-conversion "MediaWiki Conversion utility" 41 | [content-converter]: https://github.com/webplatform/content-converter "Content Converter abstract library" 42 | 43 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "generator-docs", 3 | "version": "2.0.0", 4 | "description": "WebPlatform Docs Static site generatora static site generator.", 5 | "homepage": "https://github.com/webplatform/generator-docs#readme", 6 | "license": "CC-BY-3.0", 7 | "authors": [ 8 | "Renoir Boulanger " 9 | ], 10 | "ignore": [ 11 | "build", 12 | "node_modules", 13 | "bower_components" 14 | ], 15 | "dependencies": { 16 | "jquery": "~1.11", 17 | "vue": "~0.12", 18 | "ie7-js": "*" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /build.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Build static HTML files using Metalsmith 4 | */ 5 | 6 | var metalsmith = require("metalsmith") 7 | , changed = require("metalsmith-changed") 8 | , ignore = require("metalsmith-ignore") 9 | , layouts = require("metalsmith-layouts") 10 | , assets = require("metalsmith-assets") 11 | , remarkable = require("metalsmith-markdown-remarkable") 12 | , remarkableHighlighter = require("./lib/remarkable/highlighter") 13 | , remarkableExtender = require("./lib/remarkable") 14 | , handlebarsExtender = require("./lib/handlebars")() 15 | , pkg = require("./package.json"); 16 | 17 | metalsmith(__dirname) 18 | .clean(false) 19 | .use(changed()) 20 | .use(ignore([ 21 | ".git" 22 | ])) 23 | .source("./src") 24 | .destination("./build") 25 | //.concurrency(2024) 26 | .use(remarkable("full", { 27 | html: true 28 | ,breaks: true 29 | ,typographer: true 30 | ,langPrefix: "" 31 | ,highlight: remarkableHighlighter 32 | }).use(remarkableExtender)) 33 | .use(layouts({ 34 | engine: "handlebars" 35 | ,default: "default.hbs" 36 | ,partials: "partials" 37 | })) 38 | .use(assets({ 39 | source: "./static" 40 | ,destination: "./" 41 | })) 42 | .build(function (err) { 43 | if (err) { 44 | console.log(err); 45 | } else { 46 | console.log("Site build complete!"); 47 | } 48 | }); 49 | -------------------------------------------------------------------------------- /circle.yml: -------------------------------------------------------------------------------- 1 | machine: 2 | node: 3 | version: 4.2.2 4 | 5 | dependencies: 6 | override: 7 | - npm install yarn bower -g 8 | 9 | test: 10 | override: 11 | - make 12 | post: 13 | - 'find build -type d -name .git -exec rm -rf {} +' 14 | - 'find build -type f -name .\* -exec rm {} +' 15 | - mv build docs 16 | - tar cfj $CIRCLE_ARTIFACTS/docs.tar.bz2 docs/ 17 | 18 | notify: 19 | webhooks: 20 | - url: $HOOK_ENDPOINT/generator-docs?HOOK_SHARED_TOKEN=$HOOK_SHARED_TOKEN 21 | -------------------------------------------------------------------------------- /config/nginx-extras/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | 3 | ## TODO: Make this a shell script or run those inside a blank Debian Jessie VM 4 | ## https://wiki.debian.org/DebianExperimental 5 | ## https://packages.debian.org/experimental/nginx-extras 6 | RUN echo "deb http://httpredir.debian.org/debian jessie-backports main" >> /etc/apt/sources.list \ 7 | && apt-get update \ 8 | && apt-get upgrade -y \ 9 | && apt-get install -t jessie-backports -y nginx-extras \ 10 | && rm -rf /var/lib/apt/lists/* \ 11 | && ln -sf /dev/stdout /var/log/nginx/access.log \ 12 | && ln -sf /dev/stderr /var/log/nginx/error.log 13 | 14 | EXPOSE 80 443 15 | 16 | CMD ["nginx", "-g", "daemon off;"] 17 | -------------------------------------------------------------------------------- /config/nginx/maps/main.map: -------------------------------------------------------------------------------- 1 | # 2 | # This File attempts to fix original MediaWiki links to redirect to static files 3 | # 4 | # Any document created after the migration MUST be valid URL that can be stored without potential problems 5 | # on a file system (i.e. consistent casing, no spaces, nor any special characters ?&!()[]:). 6 | # 7 | # This map was originally generated using webplatform/mediawiki-conversion[1] project on GitHub and written into 8 | # reports/nginx_redirects.map 9 | # 10 | # This file was generated against namespace 0 and 108 from app1.production.wpdn on 2015-07- 11 | # 12 | # # From the MediaWiki installation; 13 | # php maintenance/dumpBackup.php --full --filter=namespace:0,108 > /home/renoirb/main_full.xml 14 | # 15 | # # From a MediaWiki Converter clone; 16 | # app/console mediawiki:summary 17 | # 18 | # Once generated, it has been manually edited to remove duplicates and had attempts to fix redirect loops. 19 | # 20 | # [1]: https://github.com/webplatform/mediawiki-conversion 21 | # 22 | # @author Renoir Boulanger 23 | # 24 | 25 | location / { 26 | fancyindex on; 27 | fancyindex_exact_size off; 28 | fancyindex_footer /_internal/footer.html; 29 | fancyindex_header /_internal/header.html; 30 | } 31 | 32 | rewrite ^/wiki/(.*)$ /$1 permanent; # MUST be the first 33 | rewrite ^/$ /Main_Page permanent; 34 | 35 | rewrite ^/WPD/Community$ /Community permanent; 36 | rewrite ^/WPD/Contributors_Guide$ /CONTRIBUTING.html permanent; 37 | rewrite ^/WPD/Contributing$ /CONTRIBUTING.html permanent; 38 | rewrite (?i)^/Contribut(e|ing)$ /CONTRIBUTING.html permanent; 39 | rewrite ^/WPD/Contribute$ /CONTRIBUTING.html permanent; 40 | 41 | rewrite /Meta\:(.*)$ /Meta/$1 permanent; 42 | rewrite /WPD\:(.*)$ /WPD/$1 permanent; 43 | 44 | ## Images hardcoded in wiki source before we migrated to DreamObjects 45 | rewrite ^/w/images/(.*)$ /assets/$1; 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | # Replace MediaWiki specific. Not meta. Not main content. 56 | rewrite (?i)^/MediaWiki\:Site-terms-of-service /Contributor_Agreement permanent; 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | # Redirect loops 67 | rewrite (?i)^/after$ /css/selectors/pseudo-elements/after permanent; 68 | rewrite (?i)^/tutorials/What(\ |_)is(\ |_)CSS(\?|)$ /tutorials/learning_what_css_is permanent; 69 | rewrite (?i)^/tutorials/learning\ what\ css\ is$ /tutorials/learning_what_css_is permanent; 70 | rewrite (?i)^/html/attributes/type(\ |_)type(\ |_)\(a,(\ |_)link,(\ |_)embed\)$ /html/attributes/type permanent; 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | # Potential casing mess 81 | rewrite (?i)^/concepts/Detecting_device_and_browser$ /concepts/Detecting_device_and_browser break; 82 | rewrite (?i)^/concepts/IA$ /concepts/IA break; 83 | rewrite (?i)^/concepts/Internet_and_Web$ /concepts/Internet_and_Web break; 84 | rewrite (?i)^/concepts/IntrotoArt$ /concepts/IntrotoArt break; 85 | rewrite (?i)^/concepts/Pointer_Events$ /concepts/Pointer_Events break; 86 | rewrite (?i)^/concepts/VTT_Captioning$ /concepts/VTT_Captioning break; 87 | rewrite (?i)^/concepts/accessibility$ /concepts/accessibility break; 88 | rewrite (?i)^/concepts/an_introduction_to_web_design$ /concepts/an_introduction_to_web_design break; 89 | rewrite (?i)^/concepts/color_theory$ /concepts/color_theory break; 90 | rewrite (?i)^/concepts/creating_prototypes$ /concepts/creating_prototypes break; 91 | rewrite (?i)^/concepts/cross_browser_techniques$ /concepts/cross_browser_techniques break; 92 | rewrite (?i)^/concepts/design_theory$ /concepts/design_theory break; 93 | rewrite (?i)^/concepts/domain_names$ /concepts/domain_names break; 94 | rewrite (?i)^/concepts/experimental_features$ /concepts/experimental_features break; 95 | rewrite (?i)^/concepts/general_programming$ /concepts/general_programming break; 96 | rewrite (?i)^/concepts/graceful_degradation$ /concepts/graceful_degradation break; 97 | rewrite (?i)^/concepts/ia_and_usability$ /concepts/ia_and_usability break; 98 | rewrite (?i)^/concepts/information_architecture$ /concepts/information_architecture break; 99 | rewrite (?i)^/concepts/internationalization$ /concepts/internationalization break; 100 | rewrite (?i)^/concepts/internet_web$ /concepts/internet_web break; 101 | rewrite (?i)^/concepts/javascript$ /concepts/javascript break; 102 | rewrite (?i)^/concepts/mobile_web$ /concepts/mobile_web break; 103 | rewrite (?i)^/concepts/network_architecture$ /concepts/network_architecture break; 104 | rewrite (?i)^/concepts/one_web$ /concepts/one_web break; 105 | rewrite (?i)^/concepts/performance$ /concepts/performance break; 106 | rewrite (?i)^/concepts/polyfill$ /concepts/polyfill break; 107 | rewrite (?i)^/concepts/programming$ /concepts/programming break; 108 | rewrite (?i)^/concepts/progressive_enhancement$ /concepts/progressive_enhancement break; 109 | rewrite (?i)^/concepts/proprietary_internet_explorer_techniques$ /concepts/proprietary_internet_explorer_techniques break; 110 | rewrite (?i)^/concepts/protocols$ /concepts/protocols break; 111 | rewrite (?i)^/concepts/redirect_no_javascript$ /concepts/redirect_no_javascript break; 112 | rewrite (?i)^/concepts/responsive$ /concepts/responsive break; 113 | rewrite (?i)^/concepts/security$ /concepts/security break; 114 | rewrite (?i)^/concepts/ux$ /concepts/ux break; 115 | rewrite (?i)^/concepts/web_design$ /concepts/web_design break; 116 | rewrite (?i)^/concepts/web_typography$ /concepts/web_typography break; 117 | rewrite (?i)^/concepts/wireframing_a_site$ /concepts/wireframing_a_site break; 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | # 1_nginx.map 128 | rewrite (?i)^/css/atrules/@charset$ /css/atrules/charset break; 129 | rewrite (?i)^/css/atrules/@font-face$ /css/atrules/font-face break; 130 | rewrite (?i)^/css/atrules/@import$ /css/atrules/import break; 131 | rewrite (?i)^/css/atrules/@keyframes$ /css/atrules/keyframes break; 132 | rewrite (?i)^/css/atrules/@media$ /css/atrules/media break; 133 | rewrite (?i)^/css/atrules/@namespace$ /css/atrules/namespace break; 134 | rewrite (?i)^/css/atrules/@page$ /css/atrules/page break; 135 | rewrite (?i)^/css/atrules/@region$ /css/atrules/region break; 136 | rewrite (?i)^/css/atrules/@supports$ /css/atrules/supports break; 137 | rewrite (?i)^/css/atrules/@viewport$ /css/atrules/viewport break; 138 | rewrite (?i)^/css/functions/matrix\(\)$ /css/functions/matrix break; 139 | rewrite (?i)^/css/functions/rotate\(\)$ /css/functions/rotate break; 140 | rewrite (?i)^/css/functions/rotate3d\(\)$ /css/functions/rotate3d break; 141 | rewrite (?i)^/css/functions/rotateX\(\)$ /css/functions/rotateX break; 142 | rewrite (?i)^/css/functions/rotateY\(\)$ /css/functions/rotateY break; 143 | rewrite (?i)^/css/functions/rotateZ\(\)$ /css/functions/rotateZ break; 144 | rewrite (?i)^/css/functions/scale\(\)$ /css/functions/scale break; 145 | rewrite (?i)^/css/functions/scale3d\(\)$ /css/functions/scale3d break; 146 | rewrite (?i)^/css/functions/scaleX\(\)$ /css/functions/scaleX break; 147 | rewrite (?i)^/css/functions/scaleY\(\)$ /css/functions/scaleY break; 148 | rewrite (?i)^/css/functions/scaleZ\(\)$ /css/functions/scaleZ break; 149 | rewrite (?i)^/css/functions/skew\(\)$ /css/functions/skew break; 150 | rewrite (?i)^/css/functions/skewX\(\)$ /css/functions/skewX break; 151 | rewrite (?i)^/css/functions/skewY\(\)$ /css/functions/skewY break; 152 | rewrite (?i)^/css/functions/translate\(\)$ /css/functions/translate break; 153 | rewrite (?i)^/css/functions/translate3d\(\)$ /css/functions/translate3d break; 154 | rewrite (?i)^/css/functions/translateX\(\)$ /css/functions/translateX break; 155 | rewrite (?i)^/css/functions/translateY\(\)$ /css/functions/translateY break; 156 | rewrite (?i)^/css/functions/translateZ\(\)$ /css/functions/translateZ break; 157 | rewrite (?i)^/css/functions/url\(\)$ /css/functions/url break; 158 | rewrite (?i)^/css/selectors/pseudo-classes/\:-ms-input-placeholder$ /css/selectors/pseudo-classes/-ms-input-placeholder break; 159 | rewrite (?i)^/css/selectors/pseudo-classes/\:active$ /css/selectors/pseudo-classes/active break; 160 | rewrite (?i)^/css/selectors/pseudo-classes/\:checked$ /css/selectors/pseudo-classes/checked break; 161 | rewrite (?i)^/css/selectors/pseudo-classes/\:disabled$ /css/selectors/pseudo-classes/disabled break; 162 | rewrite (?i)^/css/selectors/pseudo-classes/\:empty$ /css/selectors/pseudo-classes/empty break; 163 | rewrite (?i)^/css/selectors/pseudo-classes/\:enabled$ /css/selectors/pseudo-classes/enabled break; 164 | rewrite (?i)^/css/selectors/pseudo-classes/\:first-child$ /css/selectors/pseudo-classes/first-child break; 165 | rewrite (?i)^/css/selectors/pseudo-classes/\:first-of-type$ /css/selectors/pseudo-classes/first-of-type break; 166 | rewrite (?i)^/css/selectors/pseudo-classes/\:focus$ /css/selectors/pseudo-classes/focus break; 167 | rewrite (?i)^/css/selectors/pseudo-classes/\:hover$ /css/selectors/pseudo-classes/hover break; 168 | rewrite (?i)^/css/selectors/pseudo-classes/\:in-range$ /css/selectors/pseudo-classes/in-range break; 169 | rewrite (?i)^/css/selectors/pseudo-classes/\:indeterminate$ /css/selectors/pseudo-classes/indeterminate break; 170 | rewrite (?i)^/css/selectors/pseudo-classes/\:invalid$ /css/selectors/pseudo-classes/invalid break; 171 | rewrite (?i)^/css/selectors/pseudo-classes/\:lang\(c\)$ /css/selectors/pseudo-classes/lang break; 172 | rewrite (?i)^/css/selectors/pseudo-classes/\:last-child$ /css/selectors/pseudo-classes/last-child break; 173 | rewrite (?i)^/css/selectors/pseudo-classes/\:last-of-type$ /css/selectors/pseudo-classes/last-of-type break; 174 | rewrite (?i)^/css/selectors/pseudo-classes/\:link$ /css/selectors/pseudo-classes/link break; 175 | rewrite (?i)^/css/selectors/pseudo-classes/\:not$ /css/selectors/pseudo-classes/not break; 176 | rewrite (?i)^/css/selectors/pseudo-classes/\:nth-child\(n\)$ /css/selectors/pseudo-classes/nth-child break; 177 | rewrite (?i)^/css/selectors/pseudo-classes/\:nth-last-child\(n\)$ /css/selectors/pseudo-classes/nth-last-child break; 178 | rewrite (?i)^/css/selectors/pseudo-classes/\:nth-last-of-type\(n\)$ /css/selectors/pseudo-classes/nth-last-of-type break; 179 | rewrite (?i)^/css/selectors/pseudo-classes/\:nth-of-type\(n\)$ /css/selectors/pseudo-classes/nth-of-type break; 180 | rewrite (?i)^/css/selectors/pseudo-classes/\:only-child$ /css/selectors/pseudo-classes/only-child break; 181 | rewrite (?i)^/css/selectors/pseudo-classes/\:only-of-type$ /css/selectors/pseudo-classes/only-of-type break; 182 | rewrite (?i)^/css/selectors/pseudo-classes/\:optional$ /css/selectors/pseudo-classes/optional break; 183 | rewrite (?i)^/css/selectors/pseudo-classes/\:required$ /css/selectors/pseudo-classes/required break; 184 | rewrite (?i)^/css/selectors/pseudo-classes/\:root$ /css/selectors/pseudo-classes/root break; 185 | rewrite (?i)^/css/selectors/pseudo-classes/\:target$ /css/selectors/pseudo-classes/target break; 186 | rewrite (?i)^/css/selectors/pseudo-classes/\:valid$ /css/selectors/pseudo-classes/valid break; 187 | rewrite (?i)^/css/selectors/pseudo-classes/\:visited$ /css/selectors/pseudo-classes/visited break; 188 | rewrite (?i)^/css/selectors/pseudo-elements/\:\:after$ /css/selectors/pseudo-elements/after break; 189 | rewrite (?i)^/css/selectors/pseudo-elements/\:\:before$ /css/selectors/pseudo-elements/before break; 190 | rewrite (?i)^/css/selectors/pseudo-elements/\:\:first-letter$ /css/selectors/pseudo-elements/first-letter break; 191 | rewrite (?i)^/css/selectors/pseudo-elements/\:\:first-line$ /css/selectors/pseudo-elements/first-line break; 192 | rewrite (?i)^/css/selectors/pseudo-elements/\:\:region$ /css/selectors/pseudo-elements/region break; 193 | rewrite (?i)^/css/selectors/pseudo-elements/\:\:selection$ /css/selectors/pseudo-elements/selection break; 194 | rewrite (?i)^/css/syntax/!important$ /css/syntax/important break; 195 | rewrite (?i)^/html/attributes/max\(HTMLProgressElement\)$ /html/attributes/maxHTMLProgressElement break; 196 | rewrite (?i)^/html/elements/!DOCTYPE$ /html/elements/DOCTYPE break; 197 | rewrite (?i)^/html/elements/!DOCTYPE/ja$ /html/elements/DOCTYPE/ja break; 198 | rewrite (?i)^/Accept$ /http/headers/Accept break; 199 | rewrite (?i)^/apis/css-regions/NamedFlow/regionlayoutupdate$ /apis/css-regions/NamedFlow/regionfragmentchange break; 200 | rewrite (?i)^/apis/indexeddb/IDBCuror/update$ /apis/indexeddb/IDBCursor/update break; 201 | rewrite (?i)^/apis/pointerevents/PointerEvent$ /dom/objects/PointerEvent break; 202 | rewrite (?i)^/apis/timing/methods/requestAnimationFrame$ /dom/Window/requestAnimationFrame break; 203 | rewrite (?i)^/apis/timing/properties/domContentLoadedEventEnd$ /apis/navigation_timing/PerformanceTiming/domContentLoadedEventEnd break; 204 | rewrite (?i)^/apis/webrtc/objects/MediaStream/properties/videoTracks$ /apis/webrtc/MediaStream/videoTracks break; 205 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrack$ /apis/webrtc/MediaStreamTrack break; 206 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrack/events/ended$ /apis/webrtc/MediaStreamTrack/ended break; 207 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrack/events/muted$ /apis/webrtc/MediaStreamTrack/muted break; 208 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrack/events/unmuted$ /apis/webrtc/MediaStreamTrack/unmuted break; 209 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrack/properties/enabled$ /apis/webrtc/MediaStreamTrack/enabled break; 210 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrack/properties/kind$ /apis/webrtc/MediaStreamTrack/kind break; 211 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrack/properties/label$ /apis/webrtc/MediaStreamTrack/label break; 212 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrack/properties/onended$ /apis/webrtc/MediaStreamTrack/onended break; 213 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrack/properties/onmute$ /apis/webrtc/MediaStreamTrack/onmute break; 214 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrack/properties/readyState$ /apis/webrtc/MediaStreamTrack/readyState break; 215 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrackList$ /apis/webrtc/MediaStreamTrackList break; 216 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrackList/events/addtrack$ /apis/webrtc/MediaStreamTrackList/addtrack break; 217 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrackList/events/removetrack$ /apis/webrtc/MediaStreamTrackList/removetrack break; 218 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrackList/methods/add$ /apis/webrtc/MediaStreamTrackList/add break; 219 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrackList/methods/item$ /apis/webrtc/MediaStreamTrackList/item break; 220 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrackList/methods/remove$ /apis/webrtc/MediaStreamTrackList/remove break; 221 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrackList/properties/length$ /apis/webrtc/MediaStreamTrackList/length break; 222 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrackList/properties/onaddtrack$ /apis/webrtc/MediaStreamTrackList/onaddtrack break; 223 | rewrite (?i)^/apis/webrtc/objects/MediaStreamTrackList/properties/onremovetrack$ /apis/webrtc/MediaStreamTrackList/onremovetrack break; 224 | rewrite (?i)^/apis/websockets/CloseEvent$ /apis/websocket/CloseEvent break; 225 | rewrite (?i)^/apis/websockets/CloseEvent/code$ /apis/websocket/CloseEvent/code break; 226 | rewrite (?i)^/apis/websockets/CloseEvent/reason$ /apis/websocket/CloseEvent/reason break; 227 | rewrite (?i)^/apis/websockets/CloseEvent/wasClean$ /apis/websocket/CloseEvent/wasClean break; 228 | rewrite (?i)^/apis/websockets/MessageEvent$ /apis/websocket/MessageEvent break; 229 | rewrite (?i)^/apis/websockets/MessageEvent/data$ /apis/websocket/MessageEvent/data break; 230 | rewrite (?i)^/A(\ |_)Quick(\ |_)Start(\ |_)to(\ |_)getting(\ |_)started(\ |_)contributing(\ |_)to(\ |_)Web(\ |_)Platform.org$ /WPD/Quick_Start break; 231 | rewrite (?i)^/bdi$ /html/elements/bdi break; 232 | rewrite (?i)^/border-image$ /css/properties/border-image break; 233 | rewrite (?i)^/canvas$ /html/elements/canvas break; 234 | rewrite (?i)^/concepts/localisation$ /concepts/internationalization break; 235 | rewrite (?i)^/concepts/PointerEvents$ /concepts/Pointer_Events break; 236 | rewrite (?i)^/concepts/proprietary-ie-techniques$ /concepts/proprietary_internet_explorer_techniques break; 237 | rewrite (?i)^/cross-fade$ /css/functions/cross-fade break; 238 | rewrite (?i)^/css/atrules/-ms-viewport$ /css/atrules/viewport break; 239 | rewrite (?i)^/css/cross-fade$ /css/functions/cross-fade break; 240 | rewrite (?i)^/css/cssom/CSSRegionStyleRule$ /OLDcss/cssom/CSSRegionStyleRule break; 241 | rewrite (?i)^/css/cssom/CSSRule/CSSRule$ /css/cssom/CSSRule break; 242 | rewrite (?i)^/css/cssom/methods/removeImport$ /css/cssom/styleSheet/removeImport break; 243 | rewrite (?i)^/css/cssom/methods/removeProperty$ /css/cssom/CSSStyleDeclaration/removeProperty break; 244 | rewrite (?i)^/css/cssom/methods/removeRule$ /css/cssom/styleSheet/removeRule break; 245 | rewrite (?i)^/css/cssom/methods/setProperty$ /css/cssom/CSSStyleDeclaration/setProperty break; 246 | rewrite (?i)^/css/cssom/NamedFlow$ /apis/css-regions/NamedFlow break; 247 | rewrite (?i)^/css/cssom/NamedFlow/firstEmptyRegionIndex$ /apis/css-regions/NamedFlow/firstEmptyRegionIndex break; 248 | rewrite (?i)^/css/cssom/NamedFlow/getContent$ /apis/css-regions/NamedFlow/getContent break; 249 | rewrite (?i)^/css/cssom/NamedFlow/getNamedFlows$ /apis/css-regions/NamedFlow/getNamedFlows break; 250 | rewrite (?i)^/css/cssom/NamedFlow/getRegions$ /apis/css-regions/NamedFlow/getRegions break; 251 | rewrite (?i)^/css/cssom/NamedFlow/getRegionsByContent$ /apis/css-regions/NamedFlow/getRegionsByContent break; 252 | rewrite (?i)^/css/cssom/NamedFlow/name$ /apis/css-regions/NamedFlow/name break; 253 | rewrite (?i)^/css/cssom/NamedFlow/overset$ /apis/css-regions/NamedFlow/overset break; 254 | rewrite (?i)^/css/cssom/NamedFlow/regionlayoutupdate$ /apis/css-regions/NamedFlow/regionlayoutupdate break; 255 | rewrite (?i)^/css/cssom/Region$ /apis/css-regions/Region break; 256 | rewrite (?i)^/css/cssom/Region/getComputedRegionStyle$ /apis/css-regions/Region/getComputedRegionStyle break; 257 | rewrite (?i)^/css/cssom/Region/getRegionFlowRanges$ /apis/css-regions/Region/getRegionFlowRanges break; 258 | rewrite (?i)^/css/cssom/Region/regionOverset$ /apis/css-regions/Region/regionOverset break; 259 | rewrite (?i)^/css/flexbox$ /css/properties/flex break; 260 | rewrite (?i)^/css/functions/transition-timing-function$ /css/properties/transition-timing-function break; 261 | rewrite (?i)^/css/linear-gradient$ /css/functions/linear-gradient break; 262 | rewrite (?i)^/css/properties/-ms-block-progression$ /css/properties/block-progression break; 263 | rewrite (?i)^/css/properties/-ms-box-align$ /css/properties/box-align break; 264 | rewrite (?i)^/css/properties/-ms-box-direction$ /css/properties/box-direction break; 265 | rewrite (?i)^/css/properties/-ms-box-flex$ /css/properties/box-flex break; 266 | rewrite (?i)^/css/properties/-ms-box-line-progression$ /css/properties/box-line-progression break; 267 | rewrite (?i)^/css/properties/-ms-box-lines$ /css/properties/box-lines break; 268 | rewrite (?i)^/css/properties/-ms-box-ordinal-group$ /css/properties/box-ordinal-group break; 269 | rewrite (?i)^/css/properties/-ms-box-pack$ /css/properties/box-pack break; 270 | rewrite (?i)^/css/properties/-ms-content-zoom-factor$ /css/properties/msContentZoomFactor break; 271 | rewrite (?i)^/css/properties/-ms-flex-align$ /css/properties/flex-align break; 272 | rewrite (?i)^/css/properties/-ms-flex-item-align$ /css/properties/flex-item-align break; 273 | rewrite (?i)^/css/properties/-ms-flex-line-pack$ /css/properties/flex-line-pack break; 274 | rewrite (?i)^/css/properties/-ms-flex-order$ /css/properties/flex-order break; 275 | rewrite (?i)^/css/properties/-ms-flex-pack$ /css/properties/justify-content break; 276 | rewrite (?i)^/css/properties/-ms-linear-gradient$ /css/functions/linear-gradient break; 277 | rewrite (?i)^/css/properties/animation/animation$ /css/properties/animation break; 278 | rewrite (?i)^/css/properties/box-align$ /css/properties/align-items break; 279 | rewrite (?i)^/css/properties/flex-align$ /css/properties/align-items break; 280 | rewrite (?i)^/css/properties/flex-item-align$ /css/properties/align-self break; 281 | rewrite (?i)^/css/properties/flex-line-pack$ /css/properties/align-content break; 282 | rewrite (?i)^/css/properties/flex-order$ /css/properties/order break; 283 | rewrite (?i)^/css/properties/flex-pack$ /css/properties/justify-content break; 284 | rewrite (?i)^/css/properties/foo$ /css/properties/grid-row break; 285 | rewrite (?i)^/css/properties/mask-border-image$ /css/properties/mask-border break; 286 | rewrite (?i)^/css/properties/mask-box-image$ /css/properties/mask-border-image break; 287 | rewrite (?i)^/css/properties/mask-box-image-outset$ /css/properties/mask-border-outset break; 288 | rewrite (?i)^/css/properties/mask-box-image-repeat$ /css/properties/mask-border-repeat break; 289 | rewrite (?i)^/css/properties/mask-box-image-slice$ /css/properties/mask-border-slice break; 290 | rewrite (?i)^/css/properties/mask-box-image-source$ /css/properties/mask-border-source break; 291 | rewrite (?i)^/css/properties/mask-box-image-width$ /css/properties/mask-border-width break; 292 | rewrite (?i)^/css/properties/mask-source-type$ /css/properties/mask-mode break; 293 | rewrite (?i)^/css/properties/ms-block-progression$ /css/properties/-ms-block-progression break; 294 | rewrite (?i)^/css/properties/ms-box-align$ /css/properties/-ms-box-align break; 295 | rewrite (?i)^/css/properties/ms-box-direction$ /css/properties/-ms-box-direction break; 296 | rewrite (?i)^/css/properties/ms-box-flex$ /css/properties/-ms-box-flex break; 297 | rewrite (?i)^/css/properties/ms-box-line-progression$ /css/properties/-ms-box-line-progression break; 298 | rewrite (?i)^/css/properties/ms-box-lines$ /css/properties/-ms-box-lines break; 299 | rewrite (?i)^/css/properties/ms-box-ordinal-group$ /css/properties/-ms-box-ordinal-group break; 300 | rewrite (?i)^/css/properties/ms-box-orient$ /css/properties/-ms-box-orient break; 301 | rewrite (?i)^/css/properties/ms-box-pack$ /css/properties/-ms-box-pack break; 302 | rewrite (?i)^/css/properties/ms-content-zoom-chaining$ /css/properties/-ms-content-zoom-chaining break; 303 | rewrite (?i)^/css/properties/ms-content-zoom-factor$ /css/properties/msContentZoomFactor break; 304 | rewrite (?i)^/css/properties/ms-content-zoom-limit$ /css/properties/-ms-content-zoom-limit break; 305 | rewrite (?i)^/css/properties/ms-content-zoom-limit-max$ /css/properties/-ms-content-zoom-limit-max break; 306 | rewrite (?i)^/css/properties/ms-content-zoom-limit-min$ /css/properties/-ms-content-zoom-limit-min break; 307 | rewrite (?i)^/css/properties/ms-content-zoom-snap$ /css/properties/-ms-content-zoom-snap break; 308 | rewrite (?i)^/css/properties/ms-content-zoom-snap-points$ /css/properties/-ms-content-zoom-snap-points break; 309 | rewrite (?i)^/css/properties/ms-content-zoom-snap-type$ /css/properties/-ms-content-zoom-snap-type break; 310 | rewrite (?i)^/css/properties/ms-content-zooming$ /css/properties/-ms-content-zooming break; 311 | rewrite (?i)^/css/properties/ms-flex$ /css/properties/-ms-flex break; 312 | rewrite (?i)^/css/properties/ms-flex-align$ /css/properties/-ms-flex-align break; 313 | rewrite (?i)^/css/properties/ms-flex-direction$ /css/properties/-ms-flex-direction break; 314 | rewrite (?i)^/css/properties/ms-flex-flow$ /css/properties/-ms-flex-flow break; 315 | rewrite (?i)^/css/properties/ms-flex-item-align$ /css/properties/-ms-flex-item-align break; 316 | rewrite (?i)^/css/properties/ms-flex-line-pack$ /css/properties/-ms-flex-line-pack break; 317 | rewrite (?i)^/css/properties/ms-flex-order$ /css/properties/-ms-flex-order break; 318 | rewrite (?i)^/css/properties/ms-flex-pack$ /css/properties/-ms-flex-pack break; 319 | rewrite (?i)^/css/properties/ms-flex-wrap$ /css/properties/-ms-flex-wrap break; 320 | rewrite (?i)^/css/properties/ms-grid-column$ /css/properties/grid-column break; 321 | rewrite (?i)^/css/properties/ms-grid-column-span$ /css/properties/grid-column-span break; 322 | rewrite (?i)^/css/properties/ms-hyphenate-limit-lines$ /css/properties/hyphenate-limit-lines break; 323 | rewrite (?i)^/css/properties/ms-hyphens$ /css/properties/hyphens break; 324 | rewrite (?i)^/css/properties/ms-touch-action$ /css/properties/-ms-touch-action break; 325 | rewrite (?i)^/css/properties/region-break-after$ /css/properties/break-after break; 326 | rewrite (?i)^/css/properties/region-break-before$ /css/properties/break-before break; 327 | rewrite (?i)^/css/properties/region-break-inside$ /css/properties/break-inside break; 328 | rewrite (?i)^/css/properties/region-overflow$ /css/properties/region-fragment break; 329 | rewrite (?i)^/css/properties/region-verflow$ /css/properties/region-overflow break; 330 | rewrite (?i)^/css/radial-gradient$ /css/functions/radial-gradient break; 331 | rewrite (?i)^/css/repeating-linear-gradient$ /css/functions/repeating-linear-gradient break; 332 | rewrite (?i)^/css/repeating-radial-gradient$ /css/functions/repeating-radial-gradient break; 333 | rewrite (?i)^/css/selectors/-ms-scrollbar-shadow-color$ /css/properties/-ms-scrollbar-shadow-color break; 334 | rewrite (?i)^/css/selectors/border-image$ /css/properties/border-image break; 335 | rewrite (?i)^/css/selectors/cursor$ /css/properties/cursor break; 336 | rewrite (?i)^/css/selectors/outline$ /css/properties/outline break; 337 | rewrite (?i)^/css/selectors/outline-color$ /css/properties/outline-color break; 338 | rewrite (?i)^/css/selectors/outline-style$ /css/properties/outline-style break; 339 | rewrite (?i)^/css/selectors/outline-width$ /css/properties/outline-width break; 340 | rewrite (?i)^/css/selectors/user-select$ /css/properties/user-select break; 341 | rewrite (?i)^/css/selectors/zoom$ /css/properties/zoom break; 342 | rewrite (?i)^/css/text/word-spacing/word-spacing$ /css/properties/word-spacing break; 343 | rewrite (?i)^/css/Training$ /css/tutorials break; 344 | rewrite (?i)^/css/transforms$ /css/properties/transform break; 345 | rewrite (?i)^/css/transforms/transform$ /css/properties/transform break; 346 | rewrite (?i)^/css/tutorials/css-regions$ /tutorials/css-regions break; 347 | rewrite (?i)^/css/units/color$ /css/data_types/color break; 348 | rewrite (?i)^/css/units/text$ /css/data_types/text break; 349 | rewrite (?i)^/data$ /html/elements/data break; 350 | rewrite (?i)^/dom/events/DOMContentLoaded$ /dom/Event/DOMContentLoaded break; 351 | rewrite (?i)^/dom/events/load$ /dom/Element/load break; 352 | rewrite (?i)^/dom/images$ /dom/Image break; 353 | rewrite (?i)^/dom/object/PointerEvent/pointercancel$ /dom/objects/PointerEvent/pointercancel break; 354 | rewrite (?i)^/html/elements/applets$ /html/elements/applet break; 355 | rewrite (?i)^/html/elements/comment$ /html/elements/html_comment_data-type break; 356 | rewrite (?i)^/html/elements/dl-test$ /html/elements/dl break; 357 | rewrite (?i)^/http$ /concepts/protocols/http break; 358 | rewrite (?i)^/ImageCapture$ /apis/image_capture/ImageCapture break; 359 | rewrite (?i)^/js/objects/parseFloat$ /javascript/functions/parseFloat break; 360 | rewrite (?i)^/js/objects/parseInt$ /javascript/functions/parseInt break; 361 | rewrite (?i)^/keygen$ /html/elements/keygen break; 362 | rewrite (?i)^/mask-composite$ /css/properties/mask-composite break; 363 | rewrite (?i)^/rb$ /html/elements/rb break; 364 | rewrite (?i)^/rp$ /html/elements/rp break; 365 | rewrite (?i)^/rtc$ /html/elements/rtc break; 366 | rewrite (?i)^/svg/elements/feColorMix$ /svg/elements/feColorMatrix break; 367 | rewrite (?i)^/svg/elements/feFuncGelement$ /svg/elements/feFuncG break; 368 | rewrite (?i)^/svg/elements/patterrn$ /svg/elements/pattern break; 369 | rewrite (?i)^/tutorial/JavaScript-Statements$ /tutorials/javascript_statements break; 370 | rewrite (?i)^/tutorials/google-chrome-frame$ /tutorials/google_chrome_frame break; 371 | rewrite (?i)^/tutorials/JavaScript-About$ /tutorials/javascript_about break; 372 | rewrite (?i)^/tutorials/Mobile$ /tutorials/mobile_optimization_best_practices break; 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | # 2_nginx_almost_same_casing 383 | rewrite (?i)^/apis/indexedDB$ /apis/indexeddb break; 384 | rewrite (?i)^/beginners$ /Beginners break; 385 | rewrite (?i)^/beginners/advanced$ /Beginners/advanced break; 386 | rewrite (?i)^/beginners/css$ /Beginners/css break; 387 | rewrite (?i)^/beginners/es$ /Beginners/es break; 388 | rewrite (?i)^/beginners/glossary$ /Beginners/glossary break; 389 | rewrite (?i)^/beginners/html$ /Beginners/html break; 390 | rewrite (?i)^/beginners/ja$ /Beginners/ja break; 391 | rewrite (?i)^/beginners/javascript$ /Beginners/javascript break; 392 | rewrite (?i)^/beginners/ko$ /Beginners/ko break; 393 | rewrite (?i)^/beginners/planning$ /Beginners/planning break; 394 | rewrite (?i)^/beginners/programming$ /Beginners/programming break; 395 | rewrite (?i)^/beginners/pt-br$ /Beginners/pt-br break; 396 | rewrite (?i)^/beginners/tr$ /Beginners/tr break; 397 | rewrite (?i)^/beginners/zh$ /Beginners/zh break; 398 | rewrite (?i)^/concepts/accessibility/POUR$ /concepts/accessibility/pour break; 399 | rewrite (?i)^/concepts/internet(\ |_)and(\ |_)web/About(\ |_)proxy(\ |_)based(\ |_)browsers$ /concepts/Internet_and_Web/About_proxy_based_browsers break; 400 | rewrite (?i)^/concepts/programming/javascript/LiveConnect$ /concepts/programming/javascript/liveconnect break; 401 | rewrite (?i)^/css/Mediaqueries$ /css/mediaqueries break; 402 | rewrite (?i)^/css/Namespaces$ /css/namespaces break; 403 | rewrite (?i)^/css/Properties/color$ /css/properties/color break; 404 | rewrite (?i)^/css/Properties/opacity$ /css/properties/opacity break; 405 | rewrite (?i)^/css/selectors/Type$ /css/selectors/type break; 406 | rewrite (?i)^/html/attributes/dateTime$ /html/attributes/datetime break; 407 | rewrite (?i)^/html/attributes/longDesc$ /html/attributes/longdesc break; 408 | rewrite (?i)^/html/attributes/readOnly$ /html/attributes/readonly break; 409 | rewrite (?i)^/tutorials/Closures$ /tutorials/closures break; 410 | rewrite (?i)^/tutorials/Forms$ /tutorials/forms break; 411 | rewrite (?i)^/tutorials/Location$ /tutorials/location break; 412 | rewrite (?i)^/tutorials/Offline$ /tutorials/offline break; 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | # 3_nginx_almost_same 1 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | # 3_nginx_almost_same 2 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | # 4_nginx_redirects_spaces 443 | rewrite (?i)^/apis/xhr/methods/open(\ |_)\(XDomainRequest\)$ /apis/xhr/methods/open_XDomainRequest break; 444 | rewrite (?i)^/apis/xhr/methods/send(\ |_)\(XDomainRequest\)$ /apis/xhr/methods/send_XDomainRequest break; 445 | rewrite (?i)^/canvas/properties/height(\ |_)\(canvas\)$ /canvas/properties/height_canvas break; 446 | rewrite (?i)^/html/attributes/align(\ |_)\(Table,(\ |_)iframe(\ |_)elements\)$ /html/attributes/align_Table_iframe_elements break; 447 | rewrite (?i)^/html/attributes/align(\ |_)\(Table(\ |_)caption,(\ |_)legend(\ |_)element\)$ /html/attributes/align_Table_caption_legend_element break; 448 | rewrite (?i)^/html/attributes/autocomplete(\ |_)\(input,(\ |_)form(\ |_)elements\)$ /html/attributes/autocomplete_input_form_elements break; 449 | rewrite (?i)^/html/attributes/background(\ |_)\(Body(\ |_)element\)$ /html/attributes/background_Body_element break; 450 | rewrite (?i)^/html/attributes/background(\ |_)\(Table,(\ |_)table(\ |_)cell,(\ |_)td,(\ |_)th(\ |_)elements\)$ /html/attributes/background_Table_table_cell_td_th_elements break; 451 | rewrite (?i)^/html/attributes/border(\ |_)\(frameSet,(\ |_)iframe\)$ /html/attributes/border_frameSet_iframe break; 452 | rewrite (?i)^/html/attributes/cols(\ |_)\(frameSet\)$ /html/attributes/cols_frameSet break; 453 | rewrite (?i)^/html/attributes/cols(\ |_)\(TextArea(\ |_)element\)$ /html/attributes/cols_TextArea_element break; 454 | rewrite (?i)^/html/attributes/href(\ |_)\(base\)$ /html/attributes/href_base break; 455 | rewrite (?i)^/html/attributes/label(\ |_)\(optGroup\)$ /html/attributes/label_optGroup break; 456 | rewrite (?i)^/html/attributes/max(\ |_)\(HTMLInputElement\)$ /html/attributes/max_HTMLInputElement break; 457 | rewrite (?i)^/html/attributes/name(\ |_)\(frames\)$ /html/attributes/name_frames break; 458 | rewrite (?i)^/html/attributes/name(\ |_)\(meta(\ |_)object\)$ /html/attributes/name_meta_object break; 459 | rewrite (?i)^/html/attributes/name(\ |_)\(window\)$ /html/attributes/name_window break; 460 | rewrite (?i)^/html/attributes/name(\ |_)param(\ |_)element\)$ /html/attributes/name_param_element break; 461 | rewrite (?i)^/html/attributes/size(\ |_)\(control\)$ /html/attributes/size_control break; 462 | rewrite (?i)^/html/attributes/size(\ |_)\(hr\)$ /html/attributes/size_hr break; 463 | rewrite (?i)^/html/attributes/src(\ |_)\(iframe,(\ |_)embed,(\ |_)xml\)$ /html/attributes/src_iframe_embed_xml break; 464 | rewrite (?i)^/html/attributes/src(\ |_)\(input,(\ |_)img\)$ /html/attributes/src_input_img break; 465 | rewrite (?i)^/html/attributes/src(\ |_)\(script\)$ /html/attributes/src_script break; 466 | rewrite (?i)^/html/attributes/start(\ |_)\(ol\)$ /html/attributes/start_ol break; 467 | rewrite (?i)^/html/attributes/type(\ |_)\(button(\ |_)element\)$ /html/attributes/type_button_element break; 468 | rewrite (?i)^/html/attributes/type(\ |_)\(param(\ |_)element\)$ /html/attributes/type_param_element break; 469 | rewrite (?i)^/html/attributes/type(\ |_)\(script(\ |_)element\)$ /html/attributes/type_script_element break; 470 | rewrite (?i)^/html/attributes/type(\ |_)\(select(\ |_)element\)$ /html/attributes/type_select_element break; 471 | rewrite (?i)^/html/attributes/type(\ |_)\(textarea(\ |_)element\)$ /html/attributes/type_textarea_element break; 472 | rewrite (?i)^/html/attributes/type(\ |_)\(ul,li,ol(\ |_)elements\)$ /html/attributes/type_ulliol_elements break; 473 | rewrite (?i)^/html/attributes/vAlign(\ |_)\(table(\ |_)caption\)$ /html/attributes/vAlign_table_caption break; 474 | rewrite (?i)^/html/attributes/value(\ |_)\(button(\ |_)element\)$ /html/attributes/value_button_element break; 475 | rewrite (?i)^/html/attributes/value(\ |_)\(HTMLProgressElement\)$ /html/attributes/value_HTMLProgressElement break; 476 | rewrite (?i)^/html/attributes/value(\ |_)\(input(\ |_)elements\)$ /html/attributes/value_input_elements break; 477 | rewrite (?i)^/html/attributes/value(\ |_)\(li(\ |_)element\)$ /html/attributes/value_li_element break; 478 | rewrite (?i)^/html/attributes/value(\ |_)\(param(\ |_)element\)$ /html/attributes/value_param_element break; 479 | rewrite (?i)^/html/attributes/value(\ |_)\(select,(\ |_)option(\ |_)element\)$ /html/attributes/value_select_option_element break; 480 | rewrite (?i)^/html/attributes/value(\ |_)\(textarea(\ |_)element\)$ /html/attributes/value_textarea_element break; 481 | rewrite (?i)^/html/attributes/version(\ |_)\(dom/version$ /html/attributes/version_dom/version break; 482 | rewrite (?i)^/html/attributes/width(\ |_)\(img,(\ |_)input(\ |_)elements\)$ /html/attributes/width_img_input_elements break; 483 | rewrite (?i)^/html/attributes/width(\ |_)\(merge(\ |_)candidate\)$ /html/attributes/width_merge_candidate break; 484 | rewrite (?i)^/Notes\:The(\ |_)future(\ |_)of(\ |_)the(\ |_)open(\ |_)web$ /NotesThe_future_of_the_open_web break; 485 | rewrite (?i)^/svg/elements(\ |_)\(alphabetical(\ |_)order\)$ /svg/elements_alphabetical_order break; 486 | rewrite (?i)^/svg/properties/animVal(\ |_)\(SVGAnimatedAngle\)$ /svg/properties/animVal_SVGAnimatedAngle break; 487 | rewrite (?i)^/svg/properties/animVal(\ |_)\(SVGAnimatedBoolean\)$ /svg/properties/animVal_SVGAnimatedBoolean break; 488 | rewrite (?i)^/svg/properties/animVal(\ |_)\(SVGAnimatedEnumeration\)$ /svg/properties/animVal_SVGAnimatedEnumeration break; 489 | rewrite (?i)^/svg/properties/animVal(\ |_)\(SVGAnimatedInteger\)$ /svg/properties/animVal_SVGAnimatedInteger break; 490 | rewrite (?i)^/svg/properties/animVal(\ |_)\(SVGAnimatedLength\)$ /svg/properties/animVal_SVGAnimatedLength break; 491 | rewrite (?i)^/svg/properties/animVal(\ |_)\(SVGAnimatedLengthList\)$ /svg/properties/animVal_SVGAnimatedLengthList break; 492 | rewrite (?i)^/svg/properties/animVal(\ |_)\(SVGAnimatedNumber\)$ /svg/properties/animVal_SVGAnimatedNumber break; 493 | rewrite (?i)^/svg/properties/animVal(\ |_)\(SVGAnimatedNumberList\)$ /svg/properties/animVal_SVGAnimatedNumberList break; 494 | rewrite (?i)^/svg/properties/animVal(\ |_)\(SVGAnimatedPreserveAspectRatio\)$ /svg/properties/animVal_SVGAnimatedPreserveAspectRatio break; 495 | rewrite (?i)^/svg/properties/animVal(\ |_)\(SVGAnimatedRect\)$ /svg/properties/animVal_SVGAnimatedRect break; 496 | rewrite (?i)^/svg/properties/animVal(\ |_)\(SVGAnimatedString\)$ /svg/properties/animVal_SVGAnimatedString break; 497 | rewrite (?i)^/svg/properties/animVal(\ |_)\(SVGAnimatedTransformList\)$ /svg/properties/animVal_SVGAnimatedTransformList break; 498 | rewrite (?i)^/svg/properties/baseVal(\ |_)\(SVGAnimatedAngle\)$ /svg/properties/baseVal_SVGAnimatedAngle break; 499 | rewrite (?i)^/svg/properties/baseVal(\ |_)\(SVGAnimatedBoolean\)$ /svg/properties/baseVal_SVGAnimatedBoolean break; 500 | rewrite (?i)^/svg/properties/baseVal(\ |_)\(SVGAnimatedEnumeration\)$ /svg/properties/baseVal_SVGAnimatedEnumeration break; 501 | rewrite (?i)^/svg/properties/baseVal(\ |_)\(SVGAnimatedInteger\)$ /svg/properties/baseVal_SVGAnimatedInteger break; 502 | rewrite (?i)^/svg/properties/baseVal(\ |_)\(SVGAnimatedLength\)$ /svg/properties/baseVal_SVGAnimatedLength break; 503 | rewrite (?i)^/svg/properties/baseVal(\ |_)\(SVGAnimatedLengthList\)$ /svg/properties/baseVal_SVGAnimatedLengthList break; 504 | rewrite (?i)^/svg/properties/baseVal(\ |_)\(SVGAnimatedNumber\)$ /svg/properties/baseVal_SVGAnimatedNumber break; 505 | rewrite (?i)^/svg/properties/baseVal(\ |_)\(SVGAnimatedNumberList\)$ /svg/properties/baseVal_SVGAnimatedNumberList break; 506 | rewrite (?i)^/svg/properties/baseVal(\ |_)\(SVGAnimatedPreserveAspectRatio\)$ /svg/properties/baseVal_SVGAnimatedPreserveAspectRatio break; 507 | rewrite (?i)^/svg/properties/baseVal(\ |_)\(SVGAnimatedRect\)$ /svg/properties/baseVal_SVGAnimatedRect break; 508 | rewrite (?i)^/svg/properties/baseVal(\ |_)\(SVGAnimatedString\)$ /svg/properties/baseVal_SVGAnimatedString break; 509 | rewrite (?i)^/svg/properties/baseVal(\ |_)\(SVGAnimatedTransformList\)$ /svg/properties/baseVal_SVGAnimatedTransformList break; 510 | rewrite (?i)^/svg/properties/cx(\ |_)\(SVGRadialGradientElement\)$ /svg/properties/cx_SVGRadialGradientElement break; 511 | rewrite (?i)^/svg/properties/cy(\ |_)\(SVGRadialGradientElement\)$ /svg/properties/cy_SVGRadialGradientElement break; 512 | rewrite (?i)^/svg/properties/r(\ |_)\(SVGRadialGradientElement\)$ /svg/properties/r_SVGRadialGradientElement break; 513 | rewrite (?i)^/svg/properties/rx(\ |_)\(SVGEllipseElement\)$ /svg/properties/rx_SVGEllipseElement break; 514 | rewrite (?i)^/svg/properties/rx(\ |_)\(SVGRectElement\)$ /svg/properties/rx_SVGRectElement break; 515 | rewrite (?i)^/svg/properties/ry(\ |_)\(SVGEllipseElement\)$ /svg/properties/ry_SVGEllipseElement break; 516 | rewrite (?i)^/svg/properties/ry(\ |_)\(SVGRectElement\)$ /svg/properties/ry_SVGRectElement break; 517 | rewrite (?i)^/svg/properties/type(\ |_)\(SVGComponentTransferFunctionElement\)$ /svg/properties/type_SVGComponentTransferFunctionElement break; 518 | rewrite (?i)^/svg/properties/type(\ |_)\(SVGFEColorMatrixElement\)$ /svg/properties/type_SVGFEColorMatrixElement break; 519 | rewrite (?i)^/svg/properties/type(\ |_)\(SVGFETurbulenceElement\)$ /svg/properties/type_SVGFETurbulenceElement break; 520 | rewrite (?i)^/svg/properties/type(\ |_)\(SVGScriptElement\)$ /svg/properties/type_SVGScriptElement break; 521 | rewrite (?i)^/svg/properties/type(\ |_)\(SVGStyleElement\)$ /svg/properties/type_SVGStyleElement break; 522 | rewrite (?i)^/svg/properties/type(\ |_)\(SVGTransform\)$ /svg/properties/type_SVGTransform break; 523 | rewrite (?i)^/svg/properties/unitType(\ |_)\(SVGLength\)$ /svg/properties/unitType_SVGLength break; 524 | rewrite (?i)^/svg/properties/x1(\ |_)\(SVGLinearGradientElement\)$ /svg/properties/x1_SVGLinearGradientElement break; 525 | rewrite (?i)^/svg/properties/x1(\ |_)\(SVGLineElement\)$ /svg/properties/x1_SVGLineElement break; 526 | rewrite (?i)^/svg/properties/x2(\ |_)\(SVGLinearGradientElement\)$ /svg/properties/x2_SVGLinearGradientElement break; 527 | rewrite (?i)^/svg/properties/x2(\ |_)\(SVGLineElement\)$ /svg/properties/x2_SVGLineElement break; 528 | rewrite (?i)^/svg/properties/y1(\ |_)\(SVGLinearGradientElement\)$ /svg/properties/y1_SVGLinearGradientElement break; 529 | rewrite (?i)^/svg/properties/y1(\ |_)\(SVGLineElement\)$ /svg/properties/y1_SVGLineElement break; 530 | rewrite (?i)^/svg/properties/y2(\ |_)\(SVGLinearGradientElement\)$ /svg/properties/y2_SVGLinearGradientElement break; 531 | rewrite (?i)^/svg/properties/y2(\ |_)\(SVGLineElement\)$ /svg/properties/y2_SVGLineElement break; 532 | rewrite (?i)^/tutorials/Raw(\ |_)WebGL(\ |_)101(\ |_)—(\ |_)Part(\ |_)4\:(\ |_)Textures$ /tutorials/Raw_WebGL_101_-_Part_4_Textures break; 533 | rewrite (?i)^/canvas/tutorial/Canvas(\ |_)tutorial$ /tutorials/canvas/Canvas_tutorial break; 534 | rewrite (?i)^/canvas/tutorial/Canvas(\ |_)tutorial/Applying(\ |_)styles(\ |_)and(\ |_)colors$ /tutorials/canvas/Canvas_tutorial/Applying_styles_and_colors break; 535 | rewrite (?i)^/canvas/tutorial/Canvas(\ |_)tutorial/Basic(\ |_)animations$ /tutorials/canvas/Canvas_tutorial/Basic_animations break; 536 | rewrite (?i)^/canvas/tutorial/Canvas(\ |_)tutorial/Basic(\ |_)usage$ /tutorials/canvas/Canvas_tutorial/Basic_usage break; 537 | rewrite (?i)^/canvas/tutorial/Canvas(\ |_)tutorial/Compositing$ /tutorials/canvas/Canvas_tutorial/Compositing break; 538 | rewrite (?i)^/canvas/tutorial/Canvas(\ |_)tutorial/Drawing(\ |_)shapes$ /tutorials/canvas/Canvas_tutorial/Drawing_shapes break; 539 | rewrite (?i)^/canvas/tutorial/Canvas(\ |_)tutorial/Transformations$ /tutorials/canvas/Canvas_tutorial/Transformations break; 540 | rewrite (?i)^/canvas/tutorial/Canvas(\ |_)tutorial/Using(\ |_)images$ /tutorials/canvas/Canvas_tutorial/Using_images break; 541 | rewrite (?i)^/ConceptMarking(\ |_)up(\ |_)textual(\ |_)content(\ |_)in(\ |_)HTML$ /Marking_up_textual_content_in_HTML break; 542 | rewrite (?i)^/concepts/About(\ |_)mobile(\ |_)web$ /concepts/mobile_web/mobile_web break; 543 | rewrite (?i)^/concepts/an(\ |_)introduction(\ |_)to(\ |_)digital(\ |_)design$ /concepts/an_introduction_to_web_design break; 544 | rewrite (?i)^/concepts/at(\ |_)tools$ /concepts/accessibility/at_tools break; 545 | rewrite (?i)^/concepts/bringing(\ |_)accessibility(\ |_)into(\ |_)your(\ |_)organization$ /concepts/accessibility/bringing_accessibility_into_your_organization break; 546 | rewrite (?i)^/concepts/color(\ |_)schemes(\ |_)and(\ |_)mockups$ /concepts/color_theory/color_schemes_and_mockups break; 547 | rewrite (?i)^/concepts/IA/planning(\ |_)a(\ |_)website$ /concepts/information_architecture/planning_a_website break; 548 | rewrite (?i)^/concepts/Internet(\ |_)and(\ |_)Web/About(\ |_)HTML5(\ |_)hybrid(\ |_)applications$ /concepts/Internet_and_Web/html5_hybrid_applications break; 549 | rewrite (?i)^/concepts/internet(\ |_)web/mime(\ |_)types$ /concepts/Internet_and_Web/mime_types break; 550 | rewrite (?i)^/concepts/mobile(\ |_)web/About(\ |_)mobile(\ |_)friendly(\ |_)web(\ |_)design(\ |_)and(\ |_)development(\ |_)overview$ /concepts/mobile_web/mobile_friendly_web_dev_overview break; 551 | rewrite (?i)^/concepts/mobile(\ |_)web/About(\ |_)mobile(\ |_)JavaScript(\ |_)best(\ |_)practices$ /concepts/mobile_web/mobile_javascript_best_practices break; 552 | rewrite (?i)^/concepts/mobile(\ |_)web/About(\ |_)mobile(\ |_)web$ /concepts/mobile_web/mobile_web break; 553 | rewrite (?i)^/concepts/Pointer(\ |_)Events(\ |_)sandbox$ /PointerEvents break; 554 | rewrite (?i)^/concepts/Pointer(\ |_)Events(\ |_)sandbox/documentation$ /PointerEvents/documentation break; 555 | rewrite (?i)^/concepts/Pointer(\ |_)Events(\ |_)sandbox/experimental$ /PointerEvents/experimental break; 556 | rewrite (?i)^/concepts/Pointer(\ |_)Events(\ |_)sandbox/learn$ /PointerEvents/learn break; 557 | rewrite (?i)^/concepts/Pointer(\ |_)Events(\ |_)sandbox/prototypes$ /PointerEvents/prototypes break; 558 | rewrite (?i)^/concepts/Pointer(\ |_)Events(\ |_)sandbox/specifications$ /PointerEvents/specifications break; 559 | rewrite (?i)^/concepts/Pointer(\ |_)Events(\ |_)sandbox/test$ /PointerEvents/test break; 560 | rewrite (?i)^/concepts/Pointer(\ |_)Events(\ |_)sandbox/try$ /PointerEvents/try break; 561 | rewrite (?i)^/concepts/programming/programming(\ |_)basics/ja$ /concepts/programming/programming_basics/langja break; 562 | rewrite (?i)^/concepts/programming/programming(\ |_)basics/langja$ /ja/concepts/programming/programming_basics break; 563 | rewrite (?i)^/concepts/user(\ |_)experience(\ |_)design$ /concepts/ux/user_experience_design break; 564 | rewrite (?i)^/concepts/ux/user(\ |_)experience(\ |_)design(\ |_)techniques$ /concepts/ux/techniques/stakeholder_mapping break; 565 | rewrite (?i)^/concepts/what(\ |_)does(\ |_)a(\ |_)good(\ |_)web(\ |_)page(\ |_)need$ /concepts/ux/What_does_a_good_web_page_need break; 566 | rewrite (?i)^/css/color/color(\ |_)table$ /css/color/ break; 567 | rewrite (?i)^/css/data(\ |_)types/uri$ /css/data_types/url break; 568 | rewrite (?i)^/css/media(\ |_)queries/behavior$ /css/properties/behavior break; 569 | rewrite (?i)^/css/selectors/pseudo-classes/Dynamic(\ |_)pseudo-classes$ /css/selectors/pseudo-classes break; 570 | rewrite (?i)^/guides/css(\ |_)shorthand(\ |_)reference$ /guides/css_shorthand break; 571 | rewrite (?i)^/guides/html5(\ |_)form(\ |_)features$ /tutorials/html5_form_features break; 572 | rewrite (?i)^/html/attributes/BGCOLOR(\ |_)html(\ |_)attribute$ /html/attributes/BGCOLOR break; 573 | rewrite (?i)^/html/attributes/STYLE(\ |_)html(\ |_)attribute$ /html/attributes/style break; 574 | rewrite (?i)^/html/attributes/type(\ |_)type(\ |_)a(\ |_)link(\ |_)embed$ /html/attributes/type break; 575 | rewrite (?i)^/html(\ |_)text/es$ /guides/html_text/es break; 576 | rewrite (?i)^/javascript/regular(\ |_)expression/compile$ /javascript/RegExp/compile break; 577 | rewrite (?i)^/javascript/regular(\ |_)expression/exec$ /javascript/RegExp/exec break; 578 | rewrite (?i)^/javascript/regular(\ |_)expression/global$ /javascript/RegExp/global break; 579 | rewrite (?i)^/javascript/regular(\ |_)expression/ignoreCase$ /javascript/RegExp/ignoreCase break; 580 | rewrite (?i)^/javascript/regular(\ |_)expression/multiline$ /javascript/RegExp/multiline break; 581 | rewrite (?i)^/javascript/regular(\ |_)expression/source$ /javascript/RegExp/source break; 582 | rewrite (?i)^/javascript/regular(\ |_)expression/sticky$ /javascript/RegExp/sticky break; 583 | rewrite (?i)^/javascript/regular(\ |_)expression/test$ /javascript/RegExp/test break; 584 | rewrite (?i)^/javascript/regular(\ |_)expression/unicode$ /javascript/RegExp/unicode break; 585 | rewrite (?i)^/JavaScript(\ |_)animation$ /tutorials/animation_in_javascript_2 break; 586 | rewrite (?i)^/Proposalstest/css(\ |_)properties(\ |_)display$ /WPD/Proposals/CSS_Property_Milestone/css_prop_enhancements/test/css_properties_display break; 587 | rewrite (?i)^/Styling(\ |_)lists(\ |_)and(\ |_)links$ /guides/Styling_lists_and_links break; 588 | rewrite (?i)^/svg/tutorials/smarter(\ |_)svg(\ |_)basics$ /svg/tutorials/smarter_svg_shapes break; 589 | rewrite (?i)^/svg/tutorials/smarter(\ |_)svg(\ |_)filter$ /svg/tutorials/smarter_svg_filters break; 590 | rewrite (?i)^/svg/tutorials/smarter(\ |_)svg(\ |_)interaction$ /Meta/svg/tutorials/smarter_svg_interaction break; 591 | rewrite (?i)^/svg/tutorials/smarter(\ |_)svg(\ |_)scope$ /svg/tutorials/smarter_svg_overview break; 592 | rewrite (?i)^/svg/tutorials/smarter(\ |_)svg(\ |_)script$ /svg/tutorials/smarter_svg_interaction break; 593 | rewrite (?i)^/sxsw(\ |_)talk(\ |_)proposal$ /WPD/sxsw_talk_proposal break; 594 | rewrite (?i)^/tutorial/html(\ |_)links$ /guides/html_lists break; 595 | rewrite (?i)^/tutorials/advanced(\ |_)selectors$ /guides/advanced_selectors_guide break; 596 | rewrite (?i)^/tutorials/anim(\ |_)animations$ /Meta/anim_animations break; 597 | rewrite (?i)^/tutorials/anim(\ |_)transforms$ /Meta/anim_transforms break; 598 | rewrite (?i)^/tutorials/Background(\ |_)images$ /tutorials/using_css_background_images break; 599 | rewrite (?i)^/tutorials/basic(\ |_)shapes$ /tutorials/basic_svg_shapes break; 600 | rewrite (?i)^/tutorials/Color(\ |_)in(\ |_)CSS$ /tutorials/setting_color_in_css break; 601 | rewrite (?i)^/tutorials/creating(\ |_)prototypes$ /concepts/creating_prototypes break; 602 | rewrite (?i)^/tutorials/CSS3(\ |_)animations$ /tutorials/css_animations break; 603 | rewrite (?i)^/tutorials/CSS3(\ |_)transforms$ /tutorials/css_transforms break; 604 | rewrite (?i)^/tutorials/CSS3(\ |_)transitions$ /tutorials/css_transitions break; 605 | rewrite (?i)^/tutorials/CSS(\ |_)border-image$ /tutorials/css_border_image break; 606 | rewrite (?i)^/tutorials/CSS(\ |_)box-shadow$ /tutorials/css_box_shadow break; 607 | rewrite (?i)^/tutorials/CSS(\ |_)gradients$ /tutorials/creating_gradients_in_css break; 608 | rewrite (?i)^/tutorials/CSS(\ |_)text(\ |_)styling(\ |_)advanced$ /guides/advanced_css_text_styling break; 609 | rewrite (?i)^/tutorials/css(\ |_)text(\ |_)styling(\ |_)fundamentals$ /guides/css_text_styling_fundamentals break; 610 | rewrite (?i)^/tutorials/custom(\ |_)filters$ /Meta/tutorials/custom_filters break; 611 | rewrite (?i)^/tutorials/doctypes(\ |_)and(\ |_)markup(\ |_)styles$ /guides/doctypes_and_markup_styles break; 612 | rewrite (?i)^/tutorials/getting(\ |_)started(\ |_)with(\ |_)css$ /guides/getting_started_with_css break; 613 | rewrite (?i)^/tutorials/how(\ |_)browsers(\ |_)work$ /concepts/Internet_and_Web/how_browsers_work break; 614 | rewrite (?i)^/tutorials/html(\ |_)forms(\ |_)basics$ /guides/html_forms_basics break; 615 | rewrite (?i)^/tutorials/html(\ |_)links$ /guides/html_links break; 616 | rewrite (?i)^/tutorials/html(\ |_)lists$ /guides/html_lists break; 617 | rewrite (?i)^/tutorials/html(\ |_)structural(\ |_)elements$ /guides/html_structural_elements break; 618 | rewrite (?i)^/tutorials/html(\ |_)tables$ /guides/html_tables break; 619 | rewrite (?i)^/tutorials/html(\ |_)text$ /guides/html_text break; 620 | rewrite (?i)^/tutorials/html(\ |_)validation$ /guides/html_validation break; 621 | rewrite (?i)^/tutorials/images(\ |_)in(\ |_)html$ /guides/images_in_html break; 622 | rewrite (?i)^/tutorials/Information(\ |_)Architecture(\ |_)-(\ |_)planning(\ |_)out(\ |_)a(\ |_)web(\ |_)site$ /tutorials/information_architecture/Planning_out_a_website break; 623 | rewrite (?i)^/tutorials/intro(\ |_)web(\ |_)audio(\ |_)api(\ |_)1$ /tutorials/audio/intro_web_audio_api_1 break; 624 | rewrite (?i)^/tutorials/intro(\ |_)web(\ |_)audio(\ |_)api(\ |_)2$ /tutorials/audio/intro_web_audio_api_2 break; 625 | rewrite (?i)^/tutorials/lesser-known(\ |_)semantic(\ |_)elements$ /guides/lesser-known_semantic_elements break; 626 | rewrite (?i)^/tutorials/List(\ |_)basics$ /tutorials/using_specific_list_styles break; 627 | rewrite (?i)^/tutorials/Manipulating(\ |_)replaced(\ |_)element(\ |_)content(\ |_)with(\ |_)object-fit$ /tutorials/object_fit break; 628 | rewrite (?i)^/tutorials/more(\ |_)about(\ |_)the(\ |_)html(\ |_)head$ /guides/more_about_the_html_head break; 629 | rewrite (?i)^/tutorials/Programming(\ |_)-(\ |_)the(\ |_)real(\ |_)basics$ /concepts/programming/programming_basics break; 630 | rewrite (?i)^/tutorials/selectors(\ |_)fundamentals$ /tutorials/using_selectors break; 631 | rewrite (?i)^/tutorials/Styling(\ |_)forms$ /guides/styling_forms_guide break; 632 | rewrite (?i)^/tutorials/Styling(\ |_)tables$ /guides/styling_tables break; 633 | rewrite (?i)^/tutorials/Styling(\ |_)XML(\ |_)data(\ |_)with(\ |_)CSS$ /tutorials/styling_xml_with_css break; 634 | rewrite (?i)^/tutorials/Targetting(\ |_)CSS(\ |_)at(\ |_)different(\ |_)media(\ |_)types$ /tutorials/targetting_css_at_different_media break; 635 | rewrite (?i)^/tutorials/the(\ |_)html(\ |_)head$ /guides/the_html_head break; 636 | rewrite (?i)^/tutorials/using(\ |_)web(\ |_)audio(\ |_)api(\ |_)pt1$ /tutorials/intro_web_audio_api_1 break; 637 | rewrite (?i)^/tutorials/why(\ |_)use(\ |_)css$ /tutorials/learning_why_we_use_css break; 638 | -------------------------------------------------------------------------------- /config/nginx/maps/meta.map: -------------------------------------------------------------------------------- 1 | # 2 | # This File attempts to fix original MediaWiki links to redirect to static file 3 | # 4 | # This map was originally generated against namespace 0 and 108 from app1.production.wpdn on 2015-07-25 5 | # 6 | # # From the MediaWiki installation; 7 | # php maintenance/dumpBackup.php --current --filter=namespace:3020 > /home/renoirb/meta.xml 8 | # 9 | # # From a MediaWiki Converter clone 10 | # app/console mediawiki:summary --source-xml=dumps/meta.xml --namespace-prefix=Meta 11 | # 12 | # See comments in docs.main.map for more details 13 | # 14 | # @author Renoir Boulanger 15 | # 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | # Redirect loops 26 | rewrite (?i)^/Meta/web(\ |_)platform(\ |_)wednesday$ /Meta/web_platform_wednesday break; 27 | rewrite (?i)^/Meta/?$ /Meta/Index break; 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | # 1_nginx 38 | rewrite (?i)^/Meta/api$ /WPD/API break; 39 | rewrite (?i)^/Meta/apis/css-regions/CSSRegionStyleRule$ /apis/css-regions/CSSRegionStyleRule break; 40 | rewrite (?i)^/Meta/css/atrules/region$ /css/atrules/region break; 41 | rewrite (?i)^/Meta/Deployment$ /WPD/Infrastructure/Deployment break; 42 | rewrite (?i)^/Meta/HTML/Elements/a$ /html/elements/a break; 43 | rewrite (?i)^/Meta/HTML/Elements/abbr$ /html/elements/abbr break; 44 | rewrite (?i)^/Meta/HTML/Elements/acronym$ /html/elements/acronym break; 45 | rewrite (?i)^/Meta/HTML/Elements/address$ /html/elements/address break; 46 | rewrite (?i)^/Meta/HTML/Elements/applet$ /html/elements/applet break; 47 | rewrite (?i)^/Meta/HTML/Elements/area$ /html/elements/area break; 48 | rewrite (?i)^/Meta/HTML/Elements/article$ /html/elements/article break; 49 | rewrite (?i)^/Meta/HTML/Elements/aside$ /html/elements/aside break; 50 | rewrite (?i)^/Meta/HTML/Elements/b$ /html/elements/b break; 51 | rewrite (?i)^/Meta/HTML/Elements/base$ /html/elements/base break; 52 | rewrite (?i)^/Meta/HTML/Elements/basefont$ /html/elements/basefont break; 53 | rewrite (?i)^/Meta/HTML/Elements/bdo$ /html/elements/bdo break; 54 | rewrite (?i)^/Meta/HTML/Elements/bgsound$ /html/elements/bgsound break; 55 | rewrite (?i)^/Meta/HTML/Elements/big$ /html/elements/big break; 56 | rewrite (?i)^/Meta/HTML/Elements/blink$ /html/elements/blink break; 57 | rewrite (?i)^/Meta/HTML/Elements/blockquote$ /html/elements/blockquote break; 58 | rewrite (?i)^/Meta/HTML/Elements/body$ /html/elements/body break; 59 | rewrite (?i)^/Meta/HTML/Elements/br$ /html/elements/br break; 60 | rewrite (?i)^/Meta/HTML/Elements/button$ /html/elements/button break; 61 | rewrite (?i)^/Meta/HTML/Elements/canvas$ /html/elements/canvas break; 62 | rewrite (?i)^/Meta/HTML/Elements/caption$ /html/elements/caption break; 63 | rewrite (?i)^/Meta/HTML/Elements/center$ /html/elements/center break; 64 | rewrite (?i)^/Meta/HTML/Elements/cite$ /html/elements/cite break; 65 | rewrite (?i)^/Meta/HTML/Elements/code$ /html/elements/code break; 66 | rewrite (?i)^/Meta/HTML/Elements/col$ /html/elements/col break; 67 | rewrite (?i)^/Meta/HTML/Elements/colgroup$ /html/elements/colgroup break; 68 | rewrite (?i)^/Meta/HTML/Elements/datalist$ /html/elements/datalist break; 69 | rewrite (?i)^/Meta/HTML/Elements/dd$ /html/elements/dd break; 70 | rewrite (?i)^/Meta/HTML/Elements/del$ /html/elements/del break; 71 | rewrite (?i)^/Meta/HTML/Elements/details$ /html/elements/details break; 72 | rewrite (?i)^/Meta/HTML/Elements/dfn$ /html/elements/dfn break; 73 | rewrite (?i)^/Meta/HTML/Elements/div$ /html/elements/div break; 74 | rewrite (?i)^/Meta/HTML/Elements/dl$ /html/elements/dl break; 75 | rewrite (?i)^/Meta/HTML/Elements/dt$ /html/elements/dt break; 76 | rewrite (?i)^/Meta/HTML/Elements/em$ /html/elements/em break; 77 | rewrite (?i)^/Meta/HTML/Elements/embed$ /html/elements/embed break; 78 | rewrite (?i)^/Meta/HTML/Elements/fieldset$ /html/elements/fieldset break; 79 | rewrite (?i)^/Meta/HTML/Elements/figcaption$ /html/elements/figcaption break; 80 | rewrite (?i)^/Meta/HTML/Elements/figure$ /html/elements/figure break; 81 | rewrite (?i)^/Meta/HTML/Elements/font$ /html/elements/font break; 82 | rewrite (?i)^/Meta/HTML/Elements/footer$ /html/elements/footer break; 83 | rewrite (?i)^/Meta/HTML/Elements/form$ /html/elements/form break; 84 | rewrite (?i)^/Meta/HTML/Elements/frame$ /html/elements/frame break; 85 | rewrite (?i)^/Meta/HTML/Elements/frameset$ /html/elements/frameSet break; 86 | rewrite (?i)^/Meta/HTML/Elements/head$ /html/elements/head break; 87 | rewrite (?i)^/Meta/HTML/Elements/header$ /html/elements/header break; 88 | rewrite (?i)^/Meta/HTML/Elements/hgroup$ /html/elements/hgroup break; 89 | rewrite (?i)^/Meta/HTML/Elements/hr$ /html/elements/hr break; 90 | rewrite (?i)^/Meta/HTML/Elements/html$ /html/elements/html break; 91 | rewrite (?i)^/Meta/HTML/Elements/i$ /html/elements/i break; 92 | rewrite (?i)^/Meta/HTML/Elements/iframe$ /html/elements/iframe break; 93 | rewrite (?i)^/Meta/HTML/Elements/img$ /html/elements/img break; 94 | rewrite (?i)^/Meta/HTML/Elements/ins$ /html/elements/ins break; 95 | rewrite (?i)^/Meta/HTML/Elements/isindex$ /html/elements/isIndex break; 96 | rewrite (?i)^/Meta/HTML/Elements/kbd$ /html/elements/kbd break; 97 | rewrite (?i)^/Meta/HTML/Elements/keygen$ /html/elements/keygen break; 98 | rewrite (?i)^/Meta/HTML/Elements/label$ /html/elements/label break; 99 | rewrite (?i)^/Meta/HTML/Elements/legend$ /html/elements/legend break; 100 | rewrite (?i)^/Meta/HTML/Elements/li$ /html/elements/li break; 101 | rewrite (?i)^/Meta/HTML/Elements/link$ /html/elements/link break; 102 | rewrite (?i)^/Meta/HTML/Elements/listing$ /html/elements/listing break; 103 | rewrite (?i)^/Meta/HTML/Elements/map$ /html/elements/map break; 104 | rewrite (?i)^/Meta/HTML/Elements/mark$ /html/elements/mark break; 105 | rewrite (?i)^/Meta/HTML/Elements/marquee$ /html/elements/marquee break; 106 | rewrite (?i)^/Meta/HTML/Elements/math$ /mathml/elements/math break; 107 | rewrite (?i)^/Meta/HTML/Elements/meta$ /html/elements/meta break; 108 | rewrite (?i)^/Meta/HTML/Elements/nav$ /html/elements/nav break; 109 | rewrite (?i)^/Meta/HTML/Elements/nextid$ /html/elements/nextID break; 110 | rewrite (?i)^/Meta/HTML/Elements/nobr$ /html/elements/noBR break; 111 | rewrite (?i)^/Meta/HTML/Elements/noframes$ /html/elements/noFrames break; 112 | rewrite (?i)^/Meta/HTML/Elements/noscript$ /html/elements/noscript break; 113 | rewrite (?i)^/Meta/HTML/Elements/object$ /html/elements/object break; 114 | rewrite (?i)^/Meta/HTML/Elements/option$ /html/elements/option break; 115 | rewrite (?i)^/Meta/HTML/Elements/output$ /html/elements/output break; 116 | rewrite (?i)^/Meta/HTML/Elements/p$ /html/elements/p break; 117 | rewrite (?i)^/Meta/HTML/Elements/param$ /html/elements/param break; 118 | rewrite (?i)^/Meta/HTML/Elements/plaintext$ /html/elements/plainText break; 119 | rewrite (?i)^/Meta/HTML/Elements/pre$ /html/elements/pre break; 120 | rewrite (?i)^/Meta/HTML/Elements/progress$ /html/elements/progress break; 121 | rewrite (?i)^/Meta/HTML/Elements/q$ /html/elements/q break; 122 | rewrite (?i)^/Meta/HTML/Elements/rp$ /html/elements/rp break; 123 | rewrite (?i)^/Meta/HTML/Elements/rt$ /html/elements/rt break; 124 | rewrite (?i)^/Meta/HTML/Elements/ruby$ /html/elements/ruby break; 125 | rewrite (?i)^/Meta/HTML/Elements/s$ /html/elements/s break; 126 | rewrite (?i)^/Meta/HTML/Elements/samp$ /html/elements/samp break; 127 | rewrite (?i)^/Meta/HTML/Elements/script$ /html/elements/script break; 128 | rewrite (?i)^/Meta/HTML/Elements/section$ /html/elements/section break; 129 | rewrite (?i)^/Meta/HTML/Elements/select$ /html/elements/select break; 130 | rewrite (?i)^/Meta/HTML/Elements/small$ /html/elements/small break; 131 | rewrite (?i)^/Meta/HTML/Elements/source$ /html/elements/source break; 132 | rewrite (?i)^/Meta/HTML/Elements/span$ /html/elements/span break; 133 | rewrite (?i)^/Meta/HTML/Elements/strike$ /html/elements/strike break; 134 | rewrite (?i)^/Meta/HTML/Elements/strong$ /html/elements/strong break; 135 | rewrite (?i)^/Meta/HTML/Elements/sub$ /html/elements/sub break; 136 | rewrite (?i)^/Meta/HTML/Elements/sup$ /html/elements/sup break; 137 | rewrite (?i)^/Meta/HTML/Elements/svg$ /svg/elements/svg break; 138 | rewrite (?i)^/Meta/HTML/Elements/tbody$ /html/elements/tbody break; 139 | rewrite (?i)^/Meta/HTML/Elements/td$ /html/elements/td break; 140 | rewrite (?i)^/Meta/HTML/Elements/textarea$ /html/elements/textarea break; 141 | rewrite (?i)^/Meta/HTML/Elements/tfoot$ /html/elements/tfoot break; 142 | rewrite (?i)^/Meta/HTML/Elements/th$ /html/elements/th break; 143 | rewrite (?i)^/Meta/HTML/Elements/thead$ /html/elements/thead break; 144 | rewrite (?i)^/Meta/HTML/Elements/time$ /html/elements/time break; 145 | rewrite (?i)^/Meta/HTML/Elements/title$ /html/elements/title break; 146 | rewrite (?i)^/Meta/HTML/Elements/tr$ /html/elements/tr break; 147 | rewrite (?i)^/Meta/HTML/Elements/tt$ /html/elements/tt break; 148 | rewrite (?i)^/Meta/HTML/Elements/u$ /html/elements/u break; 149 | rewrite (?i)^/Meta/HTML/Elements/ul$ /html/elements/ul break; 150 | rewrite (?i)^/Meta/HTML/Elements/video$ /html/elements/video break; 151 | rewrite (?i)^/Meta/HTML/Elements/wbr$ /html/elements/wbr break; 152 | rewrite (?i)^/Meta/HTML/Elements/xmp$ /html/elements/xmp break; 153 | rewrite (?i)^/Meta/Infrastructure/Deployment$ /WPD/Infrastructure/Deployment break; 154 | rewrite (?i)^/Meta/javascript/functions$ /concepts/programming/javascript/functions break; 155 | rewrite (?i)^/Meta/javascript/libraries$ /concepts/programming/javascript/libraries break; 156 | rewrite (?i)^/Meta/Marketing$ /WPD/Marketing break; 157 | rewrite (?i)^/Meta/Marketing/Swag$ /WPD/Marketing/Swag break; 158 | rewrite (?i)^/Meta/Marketing/Videos$ /WPD/Marketing/Videos break; 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | # 2_nginx_almost_same_casing 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | # 3_nginx_almost_same 1 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | # 3_nginx_almost_same 2 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | # 4_nginx_redirects_spaces 196 | rewrite (?i)^/Meta/delete(\ |_)position$ /css/data_types/position break; 197 | rewrite (?i)^/Meta/HTML/Elements/h1(\ |_)h2(\ |_)h3(\ |_)h4(\ |_)h5(\ |_)and(\ |_)h6$ /html/elements/hn break; 198 | rewrite (?i)^/Meta/javascript/feature(\ |_)detection$ /concepts/programming/feature_detection break; 199 | rewrite (?i)^/Meta/svg/tutorials/smarter(\ |_)svg(\ |_)animation$ /svg/tutorials/smarter_svg_animation break; 200 | rewrite (?i)^/Meta/svg/tutorials/smarter(\ |_)svg(\ |_)filters$ /svg/tutorials/smarter_svg_filters break; 201 | rewrite (?i)^/Meta/svg/tutorials/smarter(\ |_)svg(\ |_)interaction$ /svg/tutorials/smarter_svg_interact break; 202 | rewrite (?i)^/Meta/svg/tutorials/smarter(\ |_)svg(\ |_)text$ /svg/tutorials/smarter_svg_text break; 203 | rewrite (?i)^/Meta/svg/tutorials/smarter(\ |_)svg(\ |_)text(\ |_)outline$ /svg/tutorials/smarter_svg_text break; 204 | rewrite (?i)^/Meta/tutorials/custom(\ |_)filters$ /tutorials/svg_filters break; 205 | -------------------------------------------------------------------------------- /config/nginx/maps/wpd.map: -------------------------------------------------------------------------------- 1 | # 2 | # This File attempts to fix original MediaWiki links to redirect to static file 3 | # 4 | # This map was originally generated against namespace 0 and 108 from app1.production.wpdn on 2015-07-25 5 | # 6 | # # From the MediaWiki installation; 7 | # php maintenance/dumpBackup.php --full --filter=namespace:3000 > /home/renoirb/wpd_full.xml 8 | # 9 | # # From a MediaWiki Converter clone; 10 | # app/console mediawiki:summary --source-xml=dumps/wpd.xml --namespace-prefix=WPD 11 | # 12 | # See comments in docs.main.map for more details 13 | # 14 | # @author Renoir Boulanger 15 | # 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | # Redirect loops 26 | rewrite (?i)^/WPD/?$ /WPD/Index break; 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | # 1_nginx 37 | rewrite (?i)^/WPD/Analytics$ /WPD/Community/Meetings/Analytics break; 38 | rewrite (?i)^/WPD/Infrastructure/Components/WebPlatformDocsExtensionBundle$ /WPD/Infrastructure/Components/WebPlatformMediaWikiExtensionBundle break; 39 | rewrite (?i)^/WPD/Infrastructure/Deployment$ /WPD/WPD/Infrastructure/procedures/Deploying_code_changes break; 40 | rewrite (?i)^/WPD/Infrastructure/Extensions/CompaTables$ /WPD/Infrastructure/Components/CompaTables break; 41 | rewrite (?i)^/WPD/Infrastructure/MaintenanceWorkflow$ /WPD/Infrastructure/proposals/Maintenance_and_migration_workflows break; 42 | rewrite (?i)^/WPD/Infrastructure/Tasks$ /WPD/Infrastructure/proposals/Initial_infrastructure break; 43 | rewrite (?i)^/WPD/Management$ /WPD/Policy/Management break; 44 | rewrite (?i)^/WPD/Pillars$ /WPD/Policy/Pillars break; 45 | rewrite (?i)^/WPD/Proposals$ /WPD/Projects break; 46 | rewrite (?i)^/WPD/Proposals/accessibility$ /WPD/Projects/accessibility break; 47 | rewrite (?i)^/WPD/Proposals/translations$ /WPD/Projects/Translations break; 48 | rewrite (?i)^/WPD/Topics$ /WPD/Architecture/Topics break; 49 | rewrite (?i)^/WPD/WPD/Community/Meetings/Content$ /WPD/Community/Meetings/Content break; 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | # 2_nginx_almost_same_casing 59 | rewrite (?i)^/WPD/Volunteer(\ |_)moderators$ /WPD/Volunteer_Moderators break; 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | # 3_nginx_almost_same 1 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | # 3_nginx_almost_same 2 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | # 4_nginx_redirects_spaces 87 | rewrite (?i)^/WPD/Q&A(\ |_)FAQ$ /WPD/QA_FAQ break; 88 | rewrite (?i)^/WPD/Q&A(\ |_)Moderation(\ |_)Guide$ /WPD/QA_Moderation_Guide break; 89 | rewrite (?i)^/WPD/Beta(\ |_)Requirements$ /WPD/Proposals/Beta_Requirements break; 90 | rewrite (?i)^/WPD/Community/Task(\ |_)Force/Community$ /WPD/Community/Task_Force/Community_Development break; 91 | rewrite (?i)^/WPD/Community/Task(\ |_)Force/Template(\ |_)Corps$ /WPD/Community/Task_Force/Templates break; 92 | rewrite (?i)^/WPD/Community/Task(\ |_)Force/Templates$ /WPD/Templates break; 93 | rewrite (?i)^/WPD/Community(\ |_)Engagement(\ |_)Plan$ /WPD/Community/Community_Engagement_Plan break; 94 | rewrite (?i)^/WPD/Content/ContentList/Batch(\ |_)1$ /WPD/Content/Content_List/Batch_1 break; 95 | rewrite (?i)^/WPD/Content/Content(\ |_)List/Topic(\ |_)Pages$ /WPD/Content/Topic_Pages break; 96 | rewrite (?i)^/WPD/Content/Topic(\ |_)Hierarchy$ /WPD/Editors_Guide/Topic_Hierarchy break; 97 | rewrite (?i)^/WPD/Content(\ |_)Categories$ /WPD/Content/Content_Categories break; 98 | rewrite (?i)^/WPD/Content(\ |_)List/Topic(\ |_)Pages$ /WPD/Content/Topic_Pages break; 99 | rewrite (?i)^/WPD/Content(\ |_)Meetings$ /WPD/WPD/Community/Meetings/Content break; 100 | rewrite (?i)^/WPD/Content(\ |_)Requirements$ /WPD/Content/Content_List break; 101 | rewrite (?i)^/WPD/Content(\ |_)Requirements/Batch(\ |_)9$ /WPD/Content/Content_List/Batch_9 break; 102 | rewrite (?i)^/WPD/Content(\ |_)Requirements/Batch(\ |_)11$ /WPD/Content/Content_List/Batch_11 break; 103 | rewrite (?i)^/WPD/Content(\ |_)Requirements/Batch(\ |_)12$ /WPD/Content/Content_List/Batch_12 break; 104 | rewrite (?i)^/WPD/Content(\ |_)Requirements/Batch(\ |_)13$ /WPD/Content/Content_List/Batch_13 break; 105 | rewrite (?i)^/WPD/Content(\ |_)Requirements/Batch(\ |_)Example$ /WPD/Content/Content_List/Batch_Example break; 106 | rewrite (?i)^/WPD/Creating(\ |_)Pages$ /WPD/Creating_API_pages break; 107 | rewrite (?i)^/WPD/CSS(\ |_)Example(\ |_)Article$ /WPD/Example_Pages/CSS break; 108 | rewrite (?i)^/WPD/Design/Logo(\ |_)Branding(\ |_)Guidelines$ /WPD/Logo break; 109 | rewrite (?i)^/WPD/Design(\ |_)changes(\ |_)guide$ /WPD/Infrastructure/procedures/Design_changes_guide break; 110 | rewrite (?i)^/WPD/Editors(\ |_)Guide$ /WPD/Contributors_Guide break; 111 | rewrite (?i)^/WPD/Importing(\ |_)data$ /WPD/Infrastructure/Importing_data break; 112 | rewrite (?i)^/WPD/Infrastructure/Code(\ |_)Viewer$ /WPD/Infrastructure/Components/Code_Viewer break; 113 | rewrite (?i)^/WPD/Infrastructure/Git(\ |_)Examples$ /WPD/Infrastructure/proposals/Git_Examples break; 114 | rewrite (?i)^/WPD/Infrastructure/Importing(\ |_)data$ /WPD/WPD/Infrastructure/procedures/Importing_data_into_MediaWiki break; 115 | rewrite (?i)^/WPD/Infrastructure/Installing(\ |_)Vagrant(\ |_)with(\ |_)Salt(\ |_)stack$ /WPD/WPD/Infrastructure/procedures/Creating_local_multiple_Virtual_Machine_state_development_environment_using_Vagrant_and_Salt_stack break; 116 | rewrite (?i)^/WPD/Infrastructure/Logging(\ |_)aggregation(\ |_)and(\ |_)analytics$ /WPD/Infrastructure/proposals/Logging_aggregation_and_analytics break; 117 | rewrite (?i)^/WPD/Infrastructure/Piwik(\ |_)Tracking(\ |_)code(\ |_)installation$ /WPD/Infrastructure/procedures/Piwik_Tracking_code_installation break; 118 | rewrite (?i)^/WPD/Infrastructure/proposals/Content(\ |_)commenting(\ |_)system$ /WPD/Requirements/Content_commenting_system break; 119 | rewrite (?i)^/WPD/Infrastructure/proposals/Git(\ |_)Examples$ /WPD/Infrastructure/proposals/Content_commenting_system break; 120 | rewrite (?i)^/WPD/Infrastructure/proposals/Maintenance(\ |_)and(\ |_)migration(\ |_)workflows$ /WPD/Infrastructure/proposals/Maintenance_workflows break; 121 | rewrite (?i)^/WPD/Infrastructure/Site(\ |_)Map$ /WPD/Infrastructure/proposals/Site_Map break; 122 | rewrite (?i)^/WPD/Infrastructure/Site(\ |_)status(\ |_)problem(\ |_)notification(\ |_)messages$ /WPD/Infrastructure/proposals/Site_status_problem_notification_messages break; 123 | rewrite (?i)^/WPD/Infrastructure/Testing(\ |_)service(\ |_)availability$ /WPD/Infrastructure/procedures/Testing_service_availability break; 124 | rewrite (?i)^/WPD/Infrastructure/Things(\ |_)to(\ |_)ensure(\ |_)is(\ |_)not(\ |_)changed$ /WPD/Infrastructure/analysis/Things_to_ensure_is_not_changed break; 125 | rewrite (?i)^/WPD/Manual(\ |_)Of(\ |_)Style$ /WPD/Style_Guide break; 126 | rewrite (?i)^/WPD/Manual(\ |_)Of(\ |_)Style/Gotchas$ /WPD/Style_Guide/Gotchas break; 127 | rewrite (?i)^/WPD/Manual(\ |_)Of(\ |_)Style/Sample(\ |_)best(\ |_)practices$ /WPD/Manual_Of_Style/Code_sample_best_practices break; 128 | rewrite (?i)^/WPD/Manual(\ |_)Of(\ |_)Style/Tables$ /WPD/Style_Manual/Tables break; 129 | rewrite (?i)^/WPD/Projects/css(\ |_)prop(\ |_)enhancements$ /WPD/Proposals/CSS_Property_Milestone/css_prop_enhancements break; 130 | rewrite (?i)^/WPD/Projects/June2014(\ |_)QA(\ |_)Sprint$ /WPD/Projects/QASprints/2014-june break; 131 | rewrite (?i)^/WPD/Proposals/api(\ |_)docs$ /WPD/Projects/api_docs break; 132 | rewrite (?i)^/WPD/Proposals/Beta(\ |_)Requirements$ /WPD/Projects/Beta_Requirements break; 133 | rewrite (?i)^/WPD/Proposals/css(\ |_)prop(\ |_)enhancements$ /WPD/Projects/css_prop_enhancements break; 134 | rewrite (?i)^/WPD/Proposals/CSS(\ |_)Property(\ |_)Milestone$ /WPD/Projects/CSS_Property_Milestone break; 135 | rewrite (?i)^/WPD/Proposals/CSS(\ |_)Property(\ |_)Milestone/css(\ |_)prop(\ |_)enhancements$ /WPD/Projects/CSS_Property_Milestone/css_prop_enhancements break; 136 | rewrite (?i)^/WPD/Proposals/CSS(\ |_)Property(\ |_)Milestone/css(\ |_)prop(\ |_)enhancements/test/css(\ |_)properties(\ |_)display$ /WPD/Projects/CSS_Property_Milestone/css_prop_enhancements/test/css_properties_display break; 137 | rewrite (?i)^/WPD/Proposals/DOM(\ |_)API(\ |_)docs$ /WPD/Projects/DOM_API_docs break; 138 | rewrite (?i)^/WPD/Proposals/editors(\ |_)guide$ /WPD/Projects/editors_guide break; 139 | rewrite (?i)^/WPD/Proposals/editors(\ |_)guide/template(\ |_)test$ /WPD/Projects/editors_guide/template_test break; 140 | rewrite (?i)^/WPD/Proposals/Organizing(\ |_)projects$ /WPD/Projects/Organizing_projects break; 141 | rewrite (?i)^/WPD/Proposals/spec(\ |_)status(\ |_)representation$ /WPD/Projects/spec_status_representation break; 142 | rewrite (?i)^/WPD/Site(\ |_)Features$ /WPD/Tasks break; 143 | rewrite (?i)^/WPD/Site(\ |_)Map$ /WPD/Infrastructure/Site_Map break; 144 | rewrite (?i)^/WPD/Site(\ |_)Wishlist$ /WPD/Site/Wishlist break; 145 | rewrite (?i)^/WPD/Style(\ |_)Manual$ /WPD/Style_Guide break; 146 | rewrite (?i)^/WPD/Style(\ |_)Manual/Tables$ /WPD/Style_Guide/Tables break; 147 | rewrite (?i)^/WPD/sxsw(\ |_)talk(\ |_)proposal$ /WPD/Projects/SXSW_2012_Talk_proposal break; 148 | rewrite (?i)^/WPD/Tasks/CSS(\ |_)Property(\ |_)Milestone$ /WPD/Proposals/CSS_Property_Milestone break; 149 | rewrite (?i)^/WPD/Technical(\ |_)Requirements$ /WPD/Site/Technical_Requirements break; 150 | rewrite (?i)^/WPD/Template(\ |_)Corps$ /WPD/Community/Task_Force/Template_Corps break; 151 | rewrite (?i)^/WPD/Templates/Readiness(\ |_)Markers$ /WPD/Content/Readiness_Markers break; 152 | rewrite (?i)^/WPD/To-Do(\ |_)List$ /WPD/Most_Wanted_Tasks break; 153 | rewrite (?i)^/WPD/WPD/Infrastructure/procedures/Creating(\ |_)local(\ |_)multiple(\ |_)Virtual(\ |_)Machine(\ |_)state(\ |_)development(\ |_)environment(\ |_)using(\ |_)Vagrant(\ |_)and(\ |_)Salt(\ |_)stack$ /WPD/Infrastructure/procedures/Creating_local_multiple_Virtual_Machine_state_development_environment_using_Vagrant_and_Salt_stack break; 154 | rewrite (?i)^/WPD/WPD/Infrastructure/procedures/Deploying(\ |_)code(\ |_)changes$ /WPD/Infrastructure/procedures/Deploying_code_changes break; 155 | rewrite (?i)^/WPD/WPD/Infrastructure/procedures/Importing(\ |_)data(\ |_)into(\ |_)MediaWiki$ /WPD/Infrastructure/procedures/Importing_data_into_MediaWiki break; 156 | rewrite (?i)^/WPD/WPD/Infrastructure/procedures/Typical(\ |_)wiki(\ |_)maintenance(\ |_)tasks$ /WPD/Infrastructure/procedures/Typical_wiki_maintenance_tasks break; 157 | -------------------------------------------------------------------------------- /config/nginx/sites-enabled/docs.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80 default_server; 3 | server_name localhost docs.webplatform.org; 4 | 5 | index index.html index.htm; 6 | rewrite_log on; 7 | #error_log /var/log/nginx/error.log notice; 8 | error_log /var/log/nginx/error.log; 9 | 10 | root /usr/share/nginx/html; 11 | 12 | try_files $uri $uri/ $uri.html =404; 13 | merge_slashes on; 14 | 15 | location ~* \.(gif|jpg|png|css|js)$ { 16 | expires 1d; 17 | } 18 | 19 | ## Ref: 20 | ## - https://www.nginx.com/resources/admin-guide/nginx-web-server/ 21 | 22 | rewrite ^/$ /Main_Page/index.html permanent; 23 | rewrite ^/wiki/(.*)$ /$1 permanent; # MUST be the first 24 | rewrite /Meta\:(.*)$ /Meta/$1 permanent; 25 | rewrite /WPD\:(.*)$ /WPD/$1 permanent; 26 | 27 | rewrite ^/WPD/Community$ /community permanent; 28 | rewrite ^/WPD/Contributors_Guide$ /contribute permanent; 29 | 30 | ## Images hardcoded in wiki source before we migrated to DreamObjects 31 | rewrite ^/w/images/(.*)$ /assets/$1; 32 | 33 | rewrite ^/((Special|Template|Property|Form|Concept|UserWiki|User_profile).*)$ /disabled?r=$1 permanent; 34 | rewrite ^/w/(.*)$ /disabled?r=$1 permanent; 35 | 36 | include maps/main.map; 37 | include maps/meta.map; 38 | include maps/wpd.map; 39 | } 40 | 41 | # vim: ai tabstop=4 softtabstop=4 shiftwidth=4 42 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "2" 2 | 3 | ## To use this Docker image, you can use 4 | ## make nginx-extras from Makefile in this repository 5 | ## then execute this using docker-compose 6 | ## 7 | ## ``` 8 | ## make nginx-extras 9 | ## dc up -d 10 | ## ``` 11 | ## 12 | ## Then you can tail the logs from inside the container 13 | ## 14 | ## ``` 15 | ## tail -f logs/error.log logs/access.log 16 | ## ``` 17 | services: 18 | nginx: 19 | image: nginx-extras 20 | ports: 21 | - "80:80" 22 | environment: 23 | - NGINX_HOST=webplatform.org 24 | - NGINX_PORT=80 25 | volumes: 26 | - "./build:/usr/share/nginx/html:ro" 27 | - "./config/nginx/sites-enabled:/etc/nginx/sites-enabled:ro" 28 | - "./config/nginx/maps:/etc/nginx/maps:ro" 29 | - "./logs:/var/log/nginx" 30 | -------------------------------------------------------------------------------- /layouts/default.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{title}} · WebPlatform Docs 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | {{>metadata}} 15 | 16 | 17 | 18 | 19 | {{#readiness_marker}}{{readiness}}{{/readiness_marker}} 20 |
21 |
22 | 25 |
26 |
27 | 37 | 38 | {{>notice}} 39 | 40 |
41 |
42 | 43 |
44 |
45 | {{>breadcrumb}} 46 |
47 |
48 | {{#if uri}} 49 | {{! If we do not have an uri front matter, we might }} 50 | {{! not want edit buttons. Notice that we gotta }} 51 | {{! make sure the content pages always has an uri }} 52 | {{! front-matter. }} 53 | 54 | 59 | {{/if}} 60 |
61 |
62 |
63 |
64 |
65 | 66 |

{{title}}

67 | {{{ contents }}} 68 | {{>attributions}} 69 |
70 |
71 | 81 |
82 |
83 |
84 |
85 |
86 |
87 | 100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /lib/handlebars/index.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Handlebars helpers registry 4 | */ 5 | 6 | var Remarkable = require('remarkable') 7 | , Handlebars = require('handlebars'); 8 | 9 | module.exports = function () { 10 | 'use strict'; 11 | var md = new Remarkable(); 12 | 13 | Handlebars.registerHelper('markdown', function markdownRendererHelper (options) { 14 | var text = md.render(options.fn(this)); 15 | return new Handlebars.SafeString(text); 16 | }); 17 | 18 | Handlebars.registerHelper('history_urlencode', function urlencodeHelper (options) { 19 | var urlArg = options.fn(this) + '/' 20 | , out = urlArg.replace(/\s+/g, '_').replace(/[\(\)]/g,''); 21 | return new Handlebars.SafeString(encodeURI(out)); 22 | }); 23 | 24 | Handlebars.registerHelper('breadcrumbize', function breadcrumbizeHelper (options) { 25 | var fragments = options.fn(this).split('/') 26 | , subpath = '/' 27 | , out = ''; 28 | 29 | fragments.forEach(function(str, index, full){ 30 | subpath += `${str}/`.replace(' ', '_'); 31 | out += `
  • ${str}
  • `; 32 | }); 33 | 34 | return new Handlebars.SafeString(out); 35 | }); 36 | 37 | Handlebars.registerHelper('readiness_marker', function readinessHelper (options) { 38 | var label = options.fn(this) 39 | , className = label.replace(/\s/g, '_') 40 | , template = `

    This page is ${label}

    `; 41 | 42 | if (label.length > 1) { 43 | return new Handlebars.SafeString(template); 44 | } 45 | }); 46 | 47 | }; 48 | -------------------------------------------------------------------------------- /lib/remarkable/highlighter.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Syntax highlighter as a Remarkable Markdown renderer plugin. 4 | * 5 | * https://github.com/jonschlinkert/remarkable 6 | * https://www.npmjs.com/package/remarkable#options 7 | */ 8 | 9 | var hljs = require('highlight.js'); 10 | 11 | /** 12 | * Process code blocks 13 | * 14 | * Roughly an adaptation of the syntax highlight 15 | * example function provided in Remarkable documentation. 16 | */ 17 | module.exports = function (str, lang) { 18 | 'use strict'; 19 | 20 | if (lang && hljs.getLanguage(lang)) { 21 | try { 22 | return hljs.highlight(lang, str).value; 23 | } catch (err) {} 24 | } 25 | 26 | try { 27 | return hljs.highlightAuto(str).value; 28 | } catch (err) {} 29 | 30 | return ''; 31 | }; 32 | -------------------------------------------------------------------------------- /lib/remarkable/index.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Remarkable parser configuration. 4 | */ 5 | 6 | module.exports = function (instance, options) { 7 | 'use strict'; 8 | 9 | instance.block.ruler.enable([ 10 | 'deflist' 11 | ]); 12 | 13 | }; 14 | 15 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "generator-docs", 3 | "version": "2.0.0", 4 | "description": "WebPlatform Docs Static site generator", 5 | "homepage": "https://github.com/webplatform/generator-docs#readme", 6 | "license": "CC-BY-3.0", 7 | "authors": [ 8 | "Renoir Boulanger " 9 | ], 10 | "bugs": { 11 | "url": "https://github.com/webplatform/generator-docs/issues" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "git+https://github.com/webplatform/generator-docs.git" 16 | }, 17 | "main": "build.js", 18 | "engines": { 19 | "node": ">=4" 20 | }, 21 | "scripts": { 22 | "serve": "node serve", 23 | "build": "node build", 24 | "start": "node build" 25 | }, 26 | "devDependencies": { 27 | "bower": "*", 28 | "express": "^4.13.3", 29 | "handlebars": "^2.0", 30 | "remarkable": "^1.6.0", 31 | "highlight.js": "^8.8.0", 32 | "metalsmith": "~2", 33 | "metalsmith-assets": "^0.1.0", 34 | "metalsmith-changed": "~0.2", 35 | "metalsmith-layouts": "~1.4", 36 | "metalsmith-ignore": "~0.1", 37 | "metalsmith-markdown-remarkable": "^0.1.1" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /partials/attributions.hbs: -------------------------------------------------------------------------------- 1 | {{#if attributions}} 2 |

    Attributions

    3 |
      4 | {{#attributions}} 5 |
    • {{#markdown}}{{.}}{{/markdown}}
    • 6 | {{/attributions}} 7 |
    8 | {{else}} 9 | 10 | {{/if}} 11 | -------------------------------------------------------------------------------- /partials/breadcrumb.hbs: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /partials/metadata.hbs: -------------------------------------------------------------------------------- 1 | {{#readiness}}{{/readiness}} 2 | {{#standardization_status}}{{/standardization_status}} 3 | {{#summary}}{{/summary}} 4 | -------------------------------------------------------------------------------- /partials/notice.hbs: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 |
    5 |
    6 | Notice: The WebPlatform project has been discontinued when the Stewards partnership agreement ended in September 2015. This site has been frozen, and the assets we have created will remain. 7 |
    8 |
    9 | 10 |
    11 |
    12 | -------------------------------------------------------------------------------- /serve.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * A minimal webserver for local development 4 | * 5 | * Use with `make serve`. 6 | * 7 | * To serve site for production, refer to notes 8 | * in README.md 9 | */ 10 | 11 | var express = require('express'); 12 | var app = express(); 13 | 14 | app.use(express.static('build')); 15 | 16 | app.get('/', function matchRoot (req, res) { 17 | res.redirect('/Main_Page'); 18 | }); 19 | 20 | app.get(/(?!\.html$)/, function matchNonHtml (req, res) { 21 | req.url += ".html"; 22 | res.redirect(req.url); 23 | }); 24 | 25 | var server = app.listen(process.env.PORT || 4000, function() { 26 | console.log('Listening on port %d', server.address().port); 27 | }); 28 | -------------------------------------------------------------------------------- /static/_internal/fancy.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * WebPlatform Docs 3 | * 4 | * Stylesheet dump coming from MediaWiki asset manager 5 | * 6 | * To regenerate: 7 | * $ wget 'http://docs.webplatform.org/w/load.php?debug=false&lang=en&modules=mediawiki.legacy.commonPrint%2Cshared%7Cskins.webplatform&only=styles&skin=webplatform&*' 8 | * 9 | * @date 2013-09-18 10 | **/ 11 | @media print{div.floatleft p,div.floatright p{font-style:italic}div.center,div.thumbinner{text-align:center}#colophon,#filetoc,#footer-places,#siteNotice,.editsection,.mw-hidden-catlinks,.mw-jump,.noprint,.tochidden,.toctoggle,div#column-one,div#f-copyrightico,div#f-poweredbyico,div#jump-to-nav,div.magnify,div.top,li#about,li#disclaimer,li#mobileview,li#privacy,li#viewcount,span.mw-filepage-other-resolutions,tr.mw-metadata-show-hide-extended{display:none}.diffchange,.mw_metadata caption,h1,h2,h3,h4,h5,h6,li.gallerycaption,table.wikitable>caption{font-weight:700}#toc{border:1px solid #aaa;background-color:#f9f9f9;padding:5px}div.thumbinner,html .thumbcaption{padding:3px!important;font-size:94%}div.floatright{float:right;clear:right;position:relative;margin:.5em 0 .8em 1.4em}div.floatleft{float:left;clear:left;position:relative;margin:.5em 1.4em .8em 0}div.thumb{border:none;width:auto;margin-top:.5em;margin-bottom:.8em;background-color:transparent}#footer,.mw-code,body,pre{background:#fff;color:#000}div.thumbinner,html .thumbimage{border:1px solid #ccc}div.thumbinner{background-color:#fff;overflow:hidden}html .thumbcaption{border:none;text-align:left;line-height:1.4em}div.tright{float:right;clear:right;margin:.5em 0 .8em 1.4em}div.tleft{float:left;clear:left;margin:.5em 1.4em .8em 0}img.thumbborder{border:1px solid #ddd}table.rimage{float:right;width:1pt;position:relative;margin-left:1em;margin-bottom:1em;text-align:center}body{margin:0;padding:0}ul{list-style-type:square}#content{border:none!important;padding:0!important;margin:0!important;direction:ltr}#footer{margin-top:1em;border-top:1px solid #AAA;direction:ltr}p{margin:1em 0;line-height:1.2em;widows:3;orphans:3}.mw-code,pre{border:1pt dashed #000;white-space:pre;font-size:8pt;overflow:auto;padding:1em 0}table.listing,table.listing td{border:1pt solid #000;border-collapse:collapse}a{background:0 0!important;padding:0!important}a:link,a:visited{color:#520;background:0 0;text-decoration:underline}#content,table.diff,td.diff-ntitle,td.diff-otitle{background:#fff}#content a.external.autonumber:after,#content a.external.text:after{content:" (" attr(href) ") "}#globalWrapper{width:100%!important;min-width:0!important}#content{color:#000}#column-content{margin:0!important}#column-content #content{padding:1em;margin:0!important}a,a.external,a.new,a.stub{color:inherit!important;text-decoration:inherit!important}img{border:none;vertical-align:middle}span.texhtml{font-family:serif}li.gallerybox{vertical-align:top;display:-moz-inline-box;display:inline-block}li.gallerybox,ul.gallery{zoom:1}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{text-align:center;border:1px solid #ccc;margin:2px}div.gallerytext{overflow:hidden;font-size:94%;padding:2px 4px;word-wrap:break-word}td.diff-addedline{background:#cfc;font-size:smaller;border:2px solid #000}td.diff-deletedline{background:#ffa;font-size:smaller;border:2px dotted #000}td.diff-context{background:#eee;font-size:smaller}.diffchange{color:silver;text-decoration:underline}table.mw_metadata,table.wikitable{margin:1em 0;border:1px solid #aaa;background:#fff;border-collapse:collapse}.mw_metadata td,.mw_metadata th,table.wikitable>*>tr>td,table.wikitable>*>tr>th,table.wikitable>tr>td,table.wikitable>tr>th{border:1px solid #aaa;padding:.2em}.mw_metadata th,table.wikitable>*>tr>th,table.wikitable>tr>th{text-align:center;background:#fff;font-weight:700}a.sortheader{margin:0 .3em}.thumb,.wikitable,img{page-break-inside:avoid}h2,h3,h4,h5,h6,h7{page-break-after:avoid}.catlinks ul{display:inline;margin:0;padding:0;list-style:none;vertical-align:middle !ie}.catlinks li{line-height:1.15em;padding:0 .4em;border-left:1px solid #AAA;margin:.1em 0;zoom:1;display:inline !ie}.catlinks li:first-child{padding-left:.2em;border-left:none}}@media screen{#wikiPreview.ontop,input#wpSummary{margin-bottom:1em}#shared-image-conflict,#shared-image-dup,.allpagesredirect,.redirect-in-category,.watchlistredir,span.comment{font-style:italic}#editform,#toolbar,#wpTextbox1,h2#filehistory{clear:both}.imagelist td,.imagelist th,.os-suggest-result,.os-suggest-result-hl,table.filehistory td.mw-imagepage-filesize,table.filehistory th.mw-imagepage-filesize,td.mw-submit{white-space:nowrap}.mw-datatable,table.mw_metadata,table.os-suggest-results{border-collapse:collapse}#pagehistory span.minor,.botedit,.minoredit,.newpage,.unpatrolled,table.filehistory td.filehistory-selected,table.mw_metadata caption,table.wikitable>caption{font-weight:700}.mw-content-ltr{direction:ltr}.mw-content-rtl{direction:rtl}.sitedir-ltr input,.sitedir-ltr textarea{direction:ltr}.sitedir-rtl input,.sitedir-rtl textarea,input[dir=rtl],textarea[dir=rtl]{direction:rtl}mark{background-color:#ff0;color:#000}input[dir=ltr],input[type=submit],input[type=button],input[type=reset],input[type=file],textarea[dir=ltr]{direction:ltr}.explain,abbr,acronym{border-bottom:1px dotted;cursor:help}.mw-plusminus-pos{color:#006400}.mw-plusminus-neg{color:#8b0000}.mw-plusminus-null{color:#aaa}span.changedby{font-size:95%}.texvc{direction:ltr;unicode-bidi:embed}img.tex{vertical-align:middle}table.filehistory td,table.filehistory th,td.mw-label{vertical-align:top}span.texhtml{font-family:serif}#toolbar img{cursor:pointer}.mw-content-ltr .editsection,.mw-content-rtl .mw-content-ltr .editsection{float:right;margin-left:5px}.mw-content-ltr .mw-content-rtl .editsection,.mw-content-rtl .editsection{float:left;margin-right:5px}div.mw-filepage-resolutioninfo{font-size:smaller}table.filehistory th{text-align:left}#file img:hover,.filehistory a img{background:url(http://docs.webplatform.org/w/skins/common/images/Checker-16x16.png?2013-06-05T19:36:40Z) #fff}li span.deleted,span.history-deleted{text-decoration:line-through;color:#888;font-style:italic}.not-patrolled{background-color:#ffa}.unpatrolled{color:red}div.patrollink{font-size:75%;text-align:right}td.mw-label{text-align:right}td.mw-input,td.mw-submit{text-align:left}.prefsection td.mw-label{width:20%}.prefsection table{width:100%}table.mw-htmlform-nolabel td.mw-label{width:1px}tr.mw-htmlform-vertical-label td.mw-label{text-align:left!important}.mw-htmlform-invalid-input td.mw-input input{border-color:red}.mw-htmlform-flatlist div.mw-htmlform-flatlist-item{display:inline;margin-right:1em;white-space:nowrap}input#wpSummary{width:80%}#catlinks{text-align:left}.catlinks ul{display:inline;margin:0;padding:0;list-style:none;vertical-align:middle !ie}.catlinks li{line-height:1.25em;border-left:1px solid #AAA;margin:.125em 0;padding:0 .5em;zoom:1;display:inline !ie}.catlinks-allhidden,.mw-hidden-cats-hidden,table.collapsed tr.collapsable{display:none}.catlinks li:first-child{padding-left:.25em;border-left:none}p.mw-delete-editreasons,p.mw-filedelete-editreasons,p.mw-ipb-conveniencelinks,p.mw-protect-editreasons,p.mw-revdel-editreasons{font-size:90%;text-align:right}.os-suggest{overflow:auto;overflow-x:hidden;position:absolute;top:0;left:0;width:0;background-color:#fff;border-style:solid;border-color:#AAA;border-width:1px;z-index:99;font-size:95%}table.os-suggest-results{font-size:95%;cursor:pointer;border:0;width:100%}.os-suggest-result,.os-suggest-result-hl{background-color:#fff;color:#000;padding:2px}.os-suggest-result-hl,.os-suggest-result-hl-webkit{background-color:#4C59A6;color:#fff}.os-suggest-toggle{position:relative;left:1ex;font-size:65%}.os-suggest-toggle-def{position:absolute;top:0;left:0;font-size:65%;visibility:hidden}.autocomment{color:gray}#pagehistory .history-user{margin-left:.4em;margin-right:.2em}#pagehistory li{border:1px solid #fff}#pagehistory li.selected{background-color:#f9f9f9;border:1px dashed #aaa}#mw-fileduplicatesearch-icon,.mw-history-revisiondelete-button{float:right}div.mw-warning-with-logexcerpt{padding:3px;margin-bottom:3px;border:2px solid #2F6FAB;clear:both}div.mw-warning-with-logexcerpt ul li,span.mw-revdelundel-link,strong.mw-revdelundel-link{font-size:90%}.error,.success,.warning{font-size:larger}input.mw-revdelundel-hidden,span.mw-revdelundel-hidden{visibility:hidden}td.mw-revdel-checkbox,th.mw-revdel-checkbox{padding-right:10px;text-align:center}a.new{color:#BA0000}a.feedlink{background:url(http://docs.webplatform.org/w/skins/common/images/feed-icon.png?2013-06-05T19:36:40Z) center left;padding-left:16px}.plainlinks a{background:0 0!important;padding:0!important}.mw-ajax-loader,.mw-small-spinner{background-position:center center}.mw-ajax-loader,.mw-help-field-hint,.mw-small-spinner{background-repeat:no-repeat}.rtl a.external.autonumber,.rtl a.external.free{direction:ltr;unicode-bidi:embed}table.wikitable{margin:1em 0}.success{color:green}.warning{color:orange}.error{color:red}.errorbox,.successbox,.warningbox{font-size:larger;border:2px solid;padding:.5em 1em;float:left;margin-bottom:2em;color:#000}.errorbox{border-color:red;background-color:#fff2f2}.warningbox{border-color:#FF8C00;background-color:#FFFFC0}.successbox{border-color:green;background-color:#dfd}.errorbox h2,.successbox h2,.warningbox h2{font-size:1em;font-weight:700;display:inline;margin:0 .5em 0 0;border:none}.mw-infobox{border:2px solid #ff7f00;margin:.5em;clear:left;overflow:hidden}.mw-infobox-left{margin:7px;float:left;width:35px}.mw-infobox-right{margin:.5em .5em .5em 49px}.previewnote{color:#c00;margin-bottom:1em}.previewnote p{text-indent:3em;margin:.8em 0}.visualClear{clear:both}#mw_trackbacks{border:1px solid #bbf;background-color:#eef;padding:.2em}.mw-datatable,.mw-datatable td,.mw-datatable th{border:1px solid #aaa;padding:0 .15em}.mw-datatable th{background-color:#ddf}.mw-datatable td{background-color:#fff}.imagelist .TablePager_col_links,.mw-datatable tr:hover td{background-color:#eef}.TablePager{min-width:80%}.TablePager_nav{margin:0 auto}.TablePager_nav td{padding:3px;text-align:center}.TablePager_nav a{text-decoration:none}.imagelist .TablePager_col_img_description{white-space:normal}.imagelist th.TablePager_sort{background-color:#ccf}ul#filetoc{text-align:center;border:1px solid #aaa;background-color:#f9f9f9;padding:5px;font-size:95%;margin-bottom:.5em;margin-left:0;margin-right:0}#filetoc li{display:inline;list-style-type:none;padding-right:2em}table.mw_metadata{font-size:.8em;margin-left:.5em;margin-bottom:.5em;width:400px;border:none}table.mw_metadata th{font-weight:400;background-color:#f9f9f9}table.mw_metadata td{padding:.1em;background-color:#fcfcfc}table.mw_metadata td,table.mw_metadata th{text-align:center;border:1px solid #aaa;padding-left:5px;padding-right:5px}table.mw_metadata ul.metadata-langlist{list-style-type:none;list-style-image:none;padding-right:5px;padding-left:5px;margin:0}.mw-content-ltr ul,.mw-content-rtl .mw-content-ltr ul{margin:.3em 0 0 1.6em;padding:0}.mw-content-ltr .mw-content-rtl ul,.mw-content-rtl ul{margin:.3em 1.6em 0 0;padding:0}.mw-content-ltr ol,.mw-content-rtl .mw-content-ltr ol{margin:.3em 0 0 3.2em;padding:0}.mw-content-ltr .mw-content-rtl ol,.mw-content-rtl ol{margin:.3em 3.2em 0 0;padding:0}.mw-content-ltr dd,.mw-content-rtl .mw-content-ltr dd{margin-left:1.6em;margin-right:0}.mw-content-ltr .mw-content-rtl dd,.mw-content-rtl dd{margin-right:1.6em;margin-left:0}li.gallerybox{vertical-align:top;display:-moz-inline-box;display:inline-block}li.gallerybox,ul.gallery{zoom:1}ul.gallery{margin:2px;padding:2px;display:block}li.gallerycaption{font-weight:700;text-align:center;display:block;word-wrap:break-word}li.gallerybox div.thumb{text-align:center;border:1px solid #ccc;background-color:#f9f9f9;margin:2px}.mw-help-field-data,.tipsy-inner{background-color:#d6f3ff;border:1px solid #5dc9f4}li.gallerybox div.thumb img{display:block;margin:0 auto}div.gallerytext{overflow:hidden;font-size:94%;padding:2px 4px;word-wrap:break-word}.mw-ajax-loader{background-image:url(data:image/gif;base64,R0lGODlhIAAgAOMAAP///wAAAMbGxoSEhLa2tpqamjY2NlZWVtjY2OTk5Ly8vB4eHgQEBP///////////yH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgAPACwAAAAAIAAgAAAE5/DJSWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBk+EDskxTBDPZwuAkkqIfxIQyhBQBFvHwSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5g/qXGLDaC457D1zZ/V/nmOM82XiHRLYKhKP1oZmADdEAAAh+QQFCgAPACwAAAAAGAAXAAAEcvDJSesiNetplqlDsYnUYlIGw2jGV55SoS5sq0wmLS3qoBWtAw42mG0ehxYp90CoGKRNy8U8qFzNweCGwlJkgolCq0VIEAbMkUIghxLrDcLti2/Gg7D9qN774wkKBIOEfw+ChIV/gYmDho+QkZKTR3p7EQAh+QQFCgAPACwBAAAAHQAOAAAEcvDJSScxNev9jjkZwU2IUhkodSzLKA2DOKGYRLD1CA/InEoGlkui2PlyuKGkADM9aI8EayGbJDYI4zM1YIEmAwajkCAoehNmTNNaLsQMHmGuuEYHgpHAAGfUBHNzeUp9VBQJCoFOLmFxWHNoQweRWEocEQAh+QQFCgAPACwHAAAAGQARAAAEavDJ+cQQNOtdRsnf9iRINpyZYYgEgU3nQKnr1hIJjEqHGmqIlkInexRUB5FE0So9YhKaUpK4SaAPlWaxIFAETQ3B4BxzF2Kn8nBeJKebdm3SgksKXDt8kNP7/xoMgoMLP36DiAyAD4kMhREAIfkEBQoADwAsDgAAABIAGAAABGUQFfSqvZiUghXF1cZZxTCA4WYh5omKVqugD/woLV2rT/u9KoJpFDIYaIJBwnIwGogoivOoq0wPs6r1qe16v5WFeEzVjc+LKnphIIC9g193wGC4uvX6Aoo05BllVQULeXdadAxuEQAh+QQFCgAPACwOAAAAEgAeAAAEgDCp9Kq9WBGFBb5ECBbFV4XERaYmahGk14qPQJbm4z53foq2AquiGAwQJsQQYTRyfIlCc4DzTY8+i8CZxQy74KxhTD58P+S0Qaw+hN8WyruwWMDrdcM5ecAv3CYDDDIEBngmBwwMaxeGJgmKDFVdggx2bwuKA28EkXAGinJhVCYRACH5BAUKAA8ALA8AAQARAB8AAAR88Mn5UKIYC0KyT5ziZQqHjBQSohRHXGzFCSkHU/eTlCa7uTSUi6DIeVSEU0yiXDo9g6i0EIRKr6hrlPrsOgkGQ8EZDh+eZcOosKAcymPKYLE4TwphCWMvoS86HnsME3RqgXwSBnQjghR+h4MTB4sZjRiAGAsMbU4FDHFLEQAh+QQFCgAPACwIAA4AGAASAAAEbPDJSesjOKtk+8yg4nkgto1oihIqKgyD2FpwjcxUUtRDMROG2wPBkz0EjEHHYKgoYMKHgcE4PBZYCbM5KlAZHOxCUmBaPQuq8pqVHJg+GnUsEVO2nTQjzqZPmB1UXHVtE3wVOxUGC4M4H34qEQAh+QQFCgAPACwCABIAHQAOAAAEePDJSat96FJ0tEUEkV0DwwwepYSEklDEYpopJbCEIBkzY+geweD1SKxCiJJpUZAgmBbCYNCcIFaJggk1OSwWKINYMh2MLMRJ7LsbPxTl2sTAbhsmhalC/vje7VZxNXQLBHNuEnlcKV8dh38TCmcehhUHBo58cpA1EQAh+QQFCgAPACwAAA8AGQARAAAEZ7AsRuu7OOtbO9tgJnlfaJ7omQwpuixFCxrvK2dHvRwoQmw1w+8i3PgIggzBpjEYLoPohUBNoJzPR5T1OCpOB2dMK70oqIhQwcmDlh8J6nCDzWwzAmrIqblnEFZqGgUDYzcaAgNJGxEAIfkEBQoADwAsAQAIABEAGAAABFyQMDaevfiOyVbJ4GNwjCGEWLGQaLZRbYZUcW3feK7vaGEYNsXh96sRgYiW73e4JAYn0O9zKQwGhAdhi5pdLdts6DpQgLkgBfkSHl+TZ7ELi2mDEHKLgmC+JRQJEQAh+QQFCgAPACwAAAIADgAdAAAEcvDJ+cqgeDJmMt4M4U3DtozTsl1oASJpRxnbkS6LIT4Cw0oHHO4A8xAMwhPqgSssH4nnknAwWK+Zq1ZGoW650vAOpRgMBCOEee2xrAtRTNlcQEsI8Yd6oKAICARFHgmAYx4KgIIZCIB9ZIB5RgR2KAmKEQA7);background-image:url(http://docs.webplatform.org/w/skins/common/images/ajax-loader.gif?2013-06-05T19:36:40Z) !ie;padding:16px;position:relative;top:-16px}.tipsy,.tipsy-arrow,.xdebug-error{position:absolute}.mw-small-spinner{padding:10px!important;margin-right:.6em;background-image:url(data:image/gif;base64,R0lGODlhFAAUAIQQAAYJBRkbGCYnJTI0MT9APk5QTVhZV2ZoZXR2c4SGg5CSj52fnKyuq7m7uMfJxtPV0v///////////////////////////////////////////////////////////////yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJCgABACwAAAAAFAAUAAAFc2AgjuNQkCipHCMAiI6TjoWAiG7gNM08CgTca+cbGWyBXEMm6okMJxGBNWLuGo8ngWBY+HgxlIFwm4VnimKKkWgn1Dzwwv0uxpfqfJWZ2p1hV0VXTA9gMCRETXxOOj08jXxfMo+NcHiUgT5nlAFZejqRKCEAIfkECQoADAAsAAAAABQAFAAABXYgI45jcZAouSSjIIjDkI4HwTJBIALvLBIFUY4xAPhoA1ZAcAjIRI2RQlFCkIIMR6PxEC0UiYXDt3WMSdOFz0w+prTb6DHeMNPd9LN7n9WjtGwjdnIzcGeGIn5aI3WMglFbWY14kHKLR4AMkZKEb2ebDF18fUchACH5BAkKAAEALAAAAAAUABQAAAV6YCCO44GQKOkw40CIxZuKi9KIwyAK8hwkCpyOIPCNFglWTjEojAgJkeMmUixIhiABADhIGw3HwycACLyqsI+ATo2NqCmY6puH5WC43QHvjxx8M3KBUnJGgyIPYIGEAVMjaiJ0j3lTjTN5eQGadWqainQpgJJ0b36jPiEAIfkECQoAAQAsAAAAABQAFAAABXVgII7jwpAo+TxjkoiGkY5OwwauSBTz2DSinIHQozUcuISCIIMpRDUfcoRYBAwCwQH6c9xSBAEBgapNUwfy7Fs0/oBFgBwwqL3bcwCvzYeey10qdkV2Uw+BAX9RIkc+RgE/iY1tkZGSlI2Wgz0OU5YBbG2dRSEAIfkECQoACAAsAAAAABQAFAAABXcgIo4j05Ao+TjjsohuOjoNi8RIoshjDb+KBG/mczUUL9EhSevZYKwDgSBE0GoPXmFgqBKfqIMXlR2iro3TMCBgF9BqXpt9MKPGJAeYRAhw81dDAwAAAyIPaTZgTSIChiJxTWlWPmaTk5SWPpiBPHqQcWV2VnskIQAh+QQJCgABACwAAAAAFAAUAAAFemAgjqPjkCj5nGLTiAyTlg3rios8t/bLLDvayeXIjRYsx4tHcjwCi0RCp6w9Z4qEQifcxXbXYNN1Cw7Og0O1vEMTEGKUYmfaGQaEQ7O6WxQEAwUiD0QiLCIEAiMEBCNLAUoBNwcAA3E3ZQIAYoVllI10PSMHCXGGhykhACH5BAkKAAEALAAAAAAUABQAAAV3YCCOo+OQKPmcYtOIZlo2T/sGDSvjrBs4t90vh6MRYbXh6Igc0mAuRzIV1UGtpJhsKpy5grKEOLEAfrvjBKOLUuy0KQTBkMiadwsDYS56RGEkBwQjBQZLMwEAAAEIAoZdPooiBAKQRJKMAgVCWpgBB25sAQUDQiEAIfkECQoAEAAsAAAAABQAFAAABXsgJI6j45Ao+Zxi04hmWjZP+0INK+OsCzm33S+HoxFhteHoiBzSYC5HMhXVQa2kmGwqnLmCsm8O+O2KseadNrVQKBhZsnqRSChEj6iIQEIURm5LIwMBCAIBEAkDB10QAAIQAYgQBnxChyKYiQSMOwKQEJ8jCQuNIgd/OyEAIfkECQoAHwAsAAAAABQAFAAABXzgJ46j45Ao+Zxi04hmWjZP+34NK+Os+zm33S+HoxFhteHoiBzSYC5HMhXVQa2kmGwqnLmCsm8O+O2KsV0u6UDYAbWigwAg2K2iIgMAMPgsDCQMCkssCW0iBQMKA30MCQtdHwNtjCILCV0EfZKbDY9CBAUimiMMaDIIgDshACH5BAkKAB8ALAAAAAAUABQAAAV44CeOo+OQKPmcYtOIZlo2T/t+DSvjrPs5t90vh6MRYbXh6Igc0mAuRzIV1UGtpJhsKhwVAGBA1xUdhMVCMrMr4pIQhx1QK0IQBITdKio6CAQFHwsIWUFHCoEiBgQKCQlDWCkEgY5QXQV5H5WQQgWJmx8PbjsMC0IhACH5BAkKAB8ALAAAAAAUABQAAAV14CeOo+OQKPmcYtO0bwo/cC3b7pffotOcrsevRPsMBKMh8eNrFAcBwEBxczlRUMLNdEvwUgWAGPC1/gZjMs9c/I7aqMRh62KJEoZB4bay3gkEcw4LJD5JMQtzIgsKfj52XVQ7OzcKVDoxQjEyCoSYb3A8XDchACH5BAEKAB8ALAAAAAAUABQAAAV64CeOo+OQKJkcY9OIZjoSAPu5Ii6LgJC/jtdONKjdGo/GCfYQEQYjAYHkaAaVosJgUFjsXDHS07ALpxTDFOK5TbvAh217+MamSU0Zg1FWLkUMCgloMg9XSwwJCV6GVEI3Sw5eMEg4QX9fJzo6X0I6SZgoYZwPeXdmKSEAOw==);background-image:url(http://docs.webplatform.org/w/skins/common/images/spinner.gif?2013-06-05T19:36:40Z) !ie}h1:lang(as),h1:lang(bh),h1:lang(bho),h1:lang(bn),h1:lang(gu),h1:lang(hi),h1:lang(kn),h1:lang(ml),h1:lang(mr),h1:lang(my),h1:lang(or),h1:lang(pa),h1:lang(sa),h1:lang(ta),h1:lang(te){line-height:1.6em!important}h2:lang(as),h2:lang(bh),h2:lang(bho),h2:lang(bn),h2:lang(gu),h2:lang(hi),h2:lang(kn),h2:lang(ml),h2:lang(mr),h2:lang(my),h2:lang(or),h2:lang(pa),h2:lang(sa),h2:lang(ta),h2:lang(te),h3:lang(as),h3:lang(bh),h3:lang(bho),h3:lang(bn),h3:lang(gu),h3:lang(hi),h3:lang(kn),h3:lang(ml),h3:lang(mr),h3:lang(my),h3:lang(or),h3:lang(pa),h3:lang(sa),h3:lang(ta),h3:lang(te),h4:lang(as),h4:lang(bh),h4:lang(bho),h4:lang(bn),h4:lang(gu),h4:lang(hi),h4:lang(kn),h4:lang(ml),h4:lang(mr),h4:lang(my),h4:lang(or),h4:lang(pa),h4:lang(sa),h4:lang(ta),h4:lang(te),h5:lang(as),h5:lang(bh),h5:lang(bho),h5:lang(bn),h5:lang(gu),h5:lang(hi),h5:lang(kn),h5:lang(ml),h5:lang(mr),h5:lang(my),h5:lang(or),h5:lang(pa),h5:lang(sa),h5:lang(ta),h5:lang(te),h6:lang(as),h6:lang(bh),h6:lang(bho),h6:lang(bn),h6:lang(gu),h6:lang(hi),h6:lang(kn),h6:lang(ml),h6:lang(mr),h6:lang(my),h6:lang(or),h6:lang(pa),h6:lang(sa),h6:lang(ta),h6:lang(te){line-height:1.2em}ol:lang(bcc) li,ol:lang(bqi) li,ol:lang(fa) li,ol:lang(glk) li,ol:lang(kk-arab) li,ol:lang(mzn) li{list-style-type:persian}ol:lang(ckb) li{list-style-type:arabic-indic}ol:lang(hi) li,ol:lang(mr) li{list-style-type:devanagari}ol:lang(as) li,ol:lang(bn) li{list-style-type:bengali}ol:lang(or) li{list-style-type:oriya}#toc ul,.toc ul{margin:.3em 0}.mw-content-ltr #toc ul,.mw-content-ltr .toc ul,.mw-content-rtl .mw-content-ltr #toc ul,.mw-content-rtl .mw-content-ltr .toc ul{text-align:left}.mw-content-ltr .mw-content-rtl #toc ul,.mw-content-ltr .mw-content-rtl .toc ul,.mw-content-rtl #toc ul,.mw-content-rtl .toc ul{text-align:right}.mw-content-ltr #toc ul ul,.mw-content-ltr .toc ul ul,.mw-content-rtl .mw-content-ltr #toc ul ul,.mw-content-rtl .mw-content-ltr .toc ul ul{margin:0 0 0 2em}.mw-content-ltr .mw-content-rtl #toc ul ul,.mw-content-ltr .mw-content-rtl .toc ul ul,.mw-content-rtl #toc ul ul,.mw-content-rtl .toc ul ul{margin:0 2em 0 0}#toc #toctitle,#toc .toctitle,.toc #toctitle,.toc .toctitle{direction:ltr}.mw-help-field-hint{display:none;margin-left:2px;margin-bottom:-8px;padding:0 0 0 15px;background-image:url(data:image/gif;base64,R0lGODlhCwALALMAAP///01NTZOTk1lZWefn57i4uJSUlPPz82VlZdDQ0HFxcaysrNvb28TExAAAAAAAACH5BAAAAAAALAAAAAALAAsAAAQrUIRJqQQ455nNNBgHJANBDAwgZsVwqIG2IEQYYwXy2lq/Kg3NqqeSVCqCCAA7);background-image:url(http://docs.webplatform.org/w/skins/common/images/help-question.gif?2013-06-05T19:36:40Z) !ie;background-position:left center;cursor:pointer;font-size:.8em;text-decoration:underline;color:#0645ad}.mw-help-field-hint:hover{background-image:url(data:image/gif;base64,R0lGODlhCwALALMAAAtop+7z+GCWwpW51oStz8rb6yZzrafF3bnR5Nzn8QBcoD91oABQmf///wAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjAyODAxMTc0MDcyMDY4MTE5NkQ0QUQzRjI0NzRCNUQwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJBN0FFQTQwQjlGQzExREY5RDlBQTRBODQyMkJCMkFDIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJBN0FFQTNGQjlGQzExREY5RDlBQTRBODQyMkJCMkFDIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDUzUgTWFjaW50b3NoIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RkM3RjExNzQwNzIwNjgxMTk1RkVBQ0ZBOEQxNTU5MkUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDI4MDExNzQwNzIwNjgxMTk2RDRBRDNGMjQ3NEI1RDAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQAAAAAACwAAAAACwALAAAEK3CxSalsOOeZxRQY1yBKkihFI2aDEqiMRgBJGGMD8NpavxoHzaqnklQqiwgAOw==);background-image:url(http://docs.webplatform.org/w/skins/common/images/help-question-hover.gif?2013-06-05T19:36:40Z) !ie}.mw-help-field-data{display:block;padding:5px 8px 4px;margin-left:20px}.tipsy{padding:5px 5px 10px;font-size:12px;z-index:100000;overflow:visible}.tipsy-inner{padding:5px 8px 4px;color:#000;max-width:300px;text-align:left}.tipsy-arrow{background:url(http://docs.webplatform.org/w/skins/common/images/tipsy-arrow.gif?2013-06-05T19:36:40Z) top no-repeat;width:13px;height:13px}.tipsy-se .tipsy-arrow{bottom:-2px;right:10px;background-position:0 100%}#mw-clearyourcache,#mw-sitecsspreview,#mw-sitejspreview,#mw-usercsspreview,#mw-userjspreview,.diff,.diff-currentversion-title{direction:ltr;unicode-bidi:embed}.diff-contentalign-right td{direction:rtl;unicode-bidi:embed}.diff-contentalign-left td{direction:ltr;unicode-bidi:embed}.diff-lineno,.diff-ntitle,.diff-otitle{direction:ltr!important;unicode-bidi:embed}#mw-revision-info,#mw-revision-info-current,#mw-revision-nav{direction:ltr;display:inline}#mw-credits a{unicode-bidi:embed}#jump-to-nav,.mw-jump{overflow:hidden;height:0;zoom:1}.printfooter{display:none}.xdebug-error{z-index:99}.editsection,.toctoggle{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}}code,dt,h1,h2,h3,h4,h5,strong{font-weight:700}.comment-count,.dropdown>ul>li,.prefix,.standardization_status,.toolbar .button,label.checkboxLabel{white-space:nowrap}#p-search,.container,div.floatleft,div.floatright,table.floatleft,table.floatright{position:relative}code,code.block,pre{font-family:Consolas,Monaco,'Andale Mono',monospace}@font-face{font-family:Gudea;font-weight:400;src:url(http://docs.webplatform.org/w/skins/webplatform/fonts/gudea-regular-webfont.eot);src:url(http://docs.webplatform.org/w/skins/webplatform/fonts/gudea-regular-webfont.eot?#iefix) format('embedded-opentype'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/gudea-regular-webfont.woff) format('woff'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/gudea-regular-webfont.ttf) format('truetype'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/gudea-regular-webfont.svg#GudeaRegular) format('svg')}@font-face{font-family:Gudea;font-weight:700;src:url(http://docs.webplatform.org/w/skins/webplatform/fonts/gudea-bold-webfont.eot);src:url(http://docs.webplatform.org/w/skins/webplatform/fonts/gudea-bold-webfont.eot?#iefix) format('embedded-opentype'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/gudea-bold-webfont.woff) format('woff'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/gudea-bold-webfont.ttf) format('truetype'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/gudea-bold-webfont.svg#GudeaRegular) format('svg')}@font-face{font-family:Gudea;font-weight:400;font-style:italic;src:url(http://docs.webplatform.org/w/skins/webplatform/fonts/gudea-italic-webfont.eot);src:url(http://docs.webplatform.org/w/skins/webplatform/fonts/gudea-italic-webfont.eot?#iefix) format('embedded-opentype'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/gudea-italic-webfont.woff) format('woff'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/gudea-italic-webfont.ttf) format('truetype'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/gudea-italic-webfont.svg#GudeaRegular) format('svg')}@font-face{font-family:Bitter;font-weight:400;src:url(http://docs.webplatform.org/w/skins/webplatform/fonts/bitter-regular-webfont.eot);src:url(http://docs.webplatform.org/w/skins/webplatform/fonts/bitter-regular-webfont.eot?#iefix) format('embedded-opentype'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/bitter-regular-webfont.woff) format('woff'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/bitter-regular-webfont.ttf) format('truetype'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/bitter-regular-webfont.svg#BitterRegular) format('svg')}@font-face{font-family:Bitter;font-weight:700;src:url(http://docs.webplatform.org/w/skins/webplatform/fonts/bitter-bold-webfont.eot);src:url(http://docs.webplatform.org/w/skins/webplatform/fonts/bitter-bold-webfont.eot?#iefix) format('embedded-opentype'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/bitter-bold-webfont.woff) format('woff'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/bitter-bold-webfont.ttf) format('truetype'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/bitter-bold-webfont.svg#BitterBold) format('svg')}@font-face{font-family:Bitter;font-weight:400;font-style:italic;src:url(http://docs.webplatform.org/w/skins/webplatform/fonts/bitter-italic-webfont.eot);src:url(http://docs.webplatform.org/w/skins/webplatform/fonts/bitter-italic-webfont.eot?#iefix) format('embedded-opentype'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/bitter-italic-webfont.woff) format('woff'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/bitter-italic-webfont.ttf) format('truetype'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/bitter-italic-webfont.svg#BitterBold) format('svg')}@font-face{font-family:WPSymbols;src:url(http://docs.webplatform.org/w/skins/webplatform/fonts/WPSymbols.eot);src:url(http://docs.webplatform.org/w/skins/webplatform/fonts/WPSymbols.eot?#iefix) format('embedded-opentype'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/WPSymbols.svg#WPSymbols) format('svg'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/WPSymbols.woff) format('woff'),url(http://docs.webplatform.org/w/skins/webplatform/fonts/WPSymbols.ttf) format('truetype')}footer,header{display:block}body{color:#3C3C3C;font-family:Gudea,Arial,sans-serif;font-size:14px;margin:0;padding:0;background:url(http://docs.webplatform.org/w/skins/webplatform/images/bg-pattern.png) #ece5d7;widows:2;orphans:2}h1,h2,h3,h4,h5{color:#58595b;margin:0 0 14px;font-family:Bitter,Cambria,Georgia,serif}h2,h3{font-weight:400}#firstHeading,h1{line-height:40px}#firstHeading{border-bottom:2px solid #ffc621}h2{font-size:20px;border-bottom:1px solid #e2e3e4}h2 .editsection{font-size:14px}dt,h3{font-size:16px}h3{color:#6d685b;border-bottom:1px solid #eae3d3}h2,h3,h4{padding-top:14px}header h5,span.subpages{display:none}#mw-content-text h5{display:inline}strong{font-style:normal}dt{padding-bottom:7px;color:#000}dd{padding-bottom:15px}blockquote{padding:1em;border-left:.5em solid #F99D1C;border-left-color:hsla(35,94%,54%,.4);margin:1em 0 1em 3em;background:hsla(35,94%,54%,.16);color:#945804;font-style:italic}blockquote>p:first-child{margin-top:0}blockquote.testimonial{margin-right:310px}blockquote.testimonial address{text-align:right;font-style:normal}blockquote.testimonial address:before{content:'—'}blockquote::before{content:'❝';float:left;margin:-.3em 0 0 -1.2em;color:#F99D1C;color:hsla(35,94%,54%,.6);font-size:400%;line-height:1;font-family:'Zapf Dingbats',serif;font-style:normal}code.block,pre{display:block;padding:10px!important;background-color:#fff;border:1px dotted #9b9689!important;overflow-x:auto}p:empty:not([id]):not([class]){display:none}em code,i code{font-weight:inherit}fieldset{border:none;padding:0}fieldset fieldset>legend,fieldset>legend{width:100%;border-bottom:1px solid #e2e3e4;color:#58595b;font-family:Bitter,Cambria,Georgia,serif;font-weight:400}fieldset>legend{margin:0 0 12px;padding-top:14px;font-size:20px}fieldset fieldset>legend{margin:0 0 8px;padding-top:20px;font-size:14px}a{color:#256a84;text-decoration:none;-webkit-transition:color .2s}[id=mw-content-text] a{text-decoration:underline}#mw-head a,#p-namespaces a,#p-namespaces a:visited,#sidebar a,#sitenav a,.tool-area a,.toolbar .button,a:hover{text-decoration:none}a:hover{color:#2dafbc}a.new,a.new:hover{color:#BA0000}a.external{padding-right:15px;margin-right:5px;background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/link-external.png);background-repeat:no-repeat;background-position:right 3px}a.external:hover{background-position:right -17px}code a.external,pre a.external{background:0 0;padding-right:0;margin-right:0}a.new:hover{font-weight:700}a img{border:none}input,textarea{padding:.3em .5em;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #d4c6a9;border-radius:.3em;background:#fcfbf9;font:inherit;box-shadow:1px 2px 2px rgba(0,0,0,.15) inset}.articleFeedback-title,.thumbcaption{font-family:Bitter,Cambria,Georgia,serif}input:focus,textarea:focus{background:#fff}.mw-body .button,.mw-body button,.mw-body input[type=submit],.mw-body input[type=button]{display:inline-block;position:relative;padding:.5em .8em;border:1px solid #cfc6b0;border-radius:.4em;background-color:#F0EBDD;background-repeat:no-repeat;background-image:-webkit-linear-gradient(hsla(0,0%,100%,.5),hsla(0,0%,100%,0));background-image:-moz-linear-gradient(hsla(0,0%,100%,.5),hsla(0,0%,100%,0));background-image:-o-linear-gradient(hsla(0,0%,100%,.5),hsla(0,0%,100%,0));background-image:linear-gradient(hsla(0,0%,100%,.5),hsla(0,0%,100%,0));box-shadow:0 2px 2px -1px rgba(0,0,0,.1);color:#74663e;text-shadow:0 1px 1px #fff;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap;font-size:85%;line-height:1;-webkit-transition:.3s box-shadow;transition:.3s box-shadow}.mw-body button:focus,.mw-body button:hover,.mw-body input[type=submit]:focus,.mw-body input[type=submit]:hover,.mw-body input[type=button]:focus,.mw-body input[type=button]:hover{color:#000;box-shadow:0 0 0 .4em #694D9F,0 2px 2px -1px rgba(0,0,0,.1);outline:0}.mw-body button:active,.mw-body input[type=submit]:active,.mw-body input[type=button]:active{top:1px;left:1px;box-shadow:0 0 0 999px rgba(0,0,0,.03) inset,1px 1px 5px rgba(0,0,0,.3) inset}.mw-body button[type=submit],.mw-body input[type=submit]{background-color:#B4E1E4;border-color:#79ccd2;color:#144d51}.thumb{padding:10px 10px 8px;border:1px solid #eae3d3;margin-bottom:10px;background:#fff;color:#58595b;transition:.4s .2s}.thumb:hover{-webkit-transform:translate(-2px,-3px) rotate(-1deg);transform:translate(-2px,-3px) rotate(-1deg);box-shadow:2px 2px 4px rgba(0,0,0,.2)}.thumb.tright:hover{-webkit-transform:translate(2px,-3px) rotate(1deg);transform:translate(2px,-3px) rotate(1deg)}div.floatright,div.tright,table.floatright{clear:right;float:right;margin-left:25px}div.floatleft,div.tleft,table.floatleft{float:left;clear:left;margin-right:25px}#bodyContent img{height:auto;max-width:100%}.thumbcaption{margin-top:5px;font-style:italic}.mw-content-ltr .thumbcaption{text-align:left}#mw-head,.mw-content-rtl .thumbcaption{text-align:right}.mw-content-ltr .magnify{float:right}.mw-content-rtl .magnify{float:left}.articleFeedback-rating{width:120px!important}.articleFeedback-submit{margin:0!important}.printfooter{padding-top:20px}.profile-info textarea{width:400px}.editors-only{padding:.2em .3em;border:1px solid #a1b1dd;border-radius:.3em;background:#e1e6f4;color:#548faf;font-weight:400;font-size:smaller}.note,.warning{padding:.8em 1em;margin:0 0 1em;border:2px solid;text-shadow:0 1px 1px #fff;font:italic 100%/1.5 Bitter,Cambria,Georgia,serif}.note{border-color:#ffc621;background:#fff5d9;color:#de6525}.warning{border-color:#d02e27;background:#fff;color:#d02e27}.container{width:950px;margin:auto}.right{float:right}#hierarchy-menu,.left{float:left}.clear{clear:both}.profile-info{background:0 0!important}#editform,#toolbar,#wpTextbox1{clear:none}.visualClear{clear:left}.clearfixboth,.languages{clear:both}#p-search{display:inline-block}@media print{#p-personal,#p-search{display:none}}#search input:not([type]),#search input[type=text],#search input[type=search]{padding:3px 20px 3px 5px;background:#fff;border:1px solid #333;box-shadow:1px 1px 1px #5b5b5d;color:#000;font-size:14px;font-family:Gudea,Arial,sans-serif;line-height:11px;-webkit-appearance:none;width:11em}#search input::-webkit-input-placeholder{line-height:1.3em}#search>input[type=submit]{position:absolute;top:7px;right:7px;width:14px;height:14px;border:none;cursor:pointer;font-family:Gudea,Arial,sans-serif;background:url(http://docs.webplatform.org/w/skins/webplatform/images/btn-search.svg);background-repeat:no-repeat}input:focus{outline:0}#mw-head{padding:3px 0;height:30px;color:#fff;background:#4e4e50;background-image:-webkit-linear-gradient(bottom,#454547 40%,#4e4f50 70%);background-image:-o-linear-gradient(bottom,#454547 40%,#4e4f50 70%);background-image:-moz-linear-gradient(bottom,#454547 40%,#4e4f50 70%);background-image:linear-gradient(bottom,#454547 40%,#4e4f50 70%);border-bottom:2px solid #606062;box-shadow:0 1px 5px rgba(0,0,0,.75)}#mw-head .container{padding-right:18px;max-width:932px}#mw-head a{color:#fff}#p-personal{vertical-align:middle;text-transform:uppercase;z-index:100}#p-personal a{text-shadow:0 -1px 2px #000}#p-personal>a{display:block;border-color:transparent;background:0 0;line-height:1;border-radius:.3em .3em 0 0}#p-personal.focus>a,#p-personal:hover>a,#p-personal>a:focus{background:#333;border-color:#000 #000 transparent}#p-personal>a:before{content:url(http://docs.webplatform.org/w/skins/webplatform/images/icon-head.svg);margin-right:.3em}#p-personal>a:after{content:"\25BE";padding-left:.5em}#p-personal>ul{text-align:left;font-size:90%;background:#333;background:linear-gradient(#333,rgba(0,0,0,.8));border-color:#000;box-shadow:1px 4px 15px rgba(0,0,0,.5);color:inherit;text-shadow:inherit}#p-personal>ul>li+li{border-top-color:#555;border-top-color:hsla(0,0%,100%,.1)}#p-personal>ul>li:not(:last-child){border-bottom-color:#000}#p-personal>ul a:focus,#p-personal>ul a:hover{background:#2EB3C4;box-shadow:0 0 0 2px #2EB3C4}#p-logo{position:absolute;top:-5px}#p-logo a{display:block;width:100px;height:100px;border-radius:0 0 7px 7px;border:1px solid #fff;border-top:none;box-shadow:1px 1px 1px #cbc6ba}#sitenav{background-color:#ece5d7;background-position:bottom;background-repeat:repeat-x;padding:30px 0 35px}@media print{#sitenav{display:none}}.mediawiki ul li{margin-bottom:10px;list-style-image:url(http://docs.webplatform.org/w/skins/webplatform/images/bullet.svg)}ul.links{margin:0;padding:0;list-style:none}#sitenav .links{padding-left:150px;text-transform:uppercase}.mw-content-ltr ol,.mw-content-ltr ul,.mw-content-rtl .mw-content-ltr ol,.mw-content-rtl .mw-content-ltr ul{margin:.3em 0 0 1.6em;padding:0}.links>li{display:inline-block;margin:0!important}#preftoc{margin:0 0 0 10px;padding:0;list-style:none}#preftoc li{display:inline-block;margin-right:5px;padding:5px;border-radius:2px 2px 0 0;border:1px solid #EFECE2;border-bottom:none;background:#EFECE2}#preftoc li.selected{background:#fff}#sitenav a{padding-right:20px;font-family:Bitter;font-weight:700;font-size:16px;-webkit-transition:all .2s;transition:all .2s;color:#58595b;text-shadow:1px 1px 1px #dad5c8}#sitenav a:hover{color:#2dafbc;text-shadow:1px 1px 1px #fff}.page-WPD_Editors_Guide #sitenav a[href$="WPD:Editors_Guide"],body:not(.page-WPD_Editors_Guide) #sitenav a.active{color:#d37e00;text-shadow:1px 1px 1px #fff}#page-top{background:#efece2;border-radius:5px 5px 0 0}#p-namespaces a,#p-namespaces a:visited{display:block;padding:15px;font-size:12px;color:#256a84;border-radius:5px 5px 0 0}#p-namespaces .selected a{background:#f9f7f3;color:#58595b}#page-top>.right{padding:9px}ol.breadcrumbs{margin:0 0 0 -1.1em;padding:0;height:1em;text-transform:uppercase;float:left}ol.breadcrumbs:only-child{float:none}ol.breadcrumbs li{list-style:none}ol.breadcrumbs>li{float:left;position:relative;margin:0}ol.breadcrumbs>li:first-child{margin-left:1em;border-left:solid 2px #ded8c9}ol.breadcrumbs>li:not(:last-child)>a::before,ol.breadcrumbs>li>a{border:1px solid #ded8c9;border-width:1px 0;background-color:#F0EBDD}ol.breadcrumbs>li>a{padding:.6em 1.5em .6em .4em;margin-left:-1px;box-shadow:0 1px hsla(0,0%,100%,.5) inset,0 -1px hsla(0,0%,100%,.8) inset}ol.breadcrumbs>li:last-child>a,ol.breadcrumbs>li:not(:last-child)>a::before{border-radius:0 1.2em 1.2em 0;box-shadow:0 1px hsla(0,0%,100%,.5) inset,0 -1px hsla(0,0%,100%,.8) inset,-1px 0 hsla(0,0%,100%,.8) inset}ol.breadcrumbs>li:not(:last-child)>a::before{content:'';position:absolute;right:2px;top:0;bottom:0;z-index:3;padding:1em .6em;border:inherit;border-right-width:1px}ol.breadcrumbs>li:last-child>a,ol.breadcrumbs>li:last-child>ul{background-color:#f9f7f3}ol.breadcrumbs>li:last-child>a{border-right-width:1px;box-shadow:0 1px hsla(0,0%,100%,.5) inset,0 -1px hsla(0,0%,100%,.8) inset,-1px 0 #fff inset}ol.breadcrumbs>li.focus:not(:nth-last-child(2))>a:not(:last-child),ol.breadcrumbs>li:hover:not(:nth-last-child(2))>a:not(:last-child){background-image:none}ol.breadcrumbs>li:nth-last-child(2)>a{background-image:-webkit-linear-gradient(right,#f9f7f3 100%,transparent);background-image:linear-gradient(to left,#f9f7f3 100%,transparent);background-repeat:no-repeat;background-size:1em 100%;background-position:right}ol.breadcrumbs>li:first-child>a{box-shadow:0 1px #f7f1e0 inset,0 -1px #f7f1e0 inset,1px 0 #f7f1e0 inset;padding-left:1em}ol.breadcrumbs>li.focus>a:not(:last-child),ol.breadcrumbs>li.focus>a:not(:last-child):before,ol.breadcrumbs>li:hover>a:not(:last-child),ol.breadcrumbs>li:hover>a:not(:last-child):before{border-bottom-right-radius:0;border-bottom-color:transparent}ol.breadcrumbs>li:not(:last-child).focus>a:not(:last-child),ol.breadcrumbs>li:not(:last-child):hover>a:not(:last-child){box-shadow:0 1px hsla(0,0%,100%,.5) inset}ol.breadcrumbs>li:not(:last-child).focus>a:not(:last-child):before,ol.breadcrumbs>li:not(:last-child):hover>a:not(:last-child):before{box-shadow:0 1px hsla(0,0%,100%,.5) inset,-1px 0 hsla(0,0%,100%,.8) inset}ol.breadcrumbs>li:last-child.focus>a:not(:last-child),ol.breadcrumbs>li:last-child:hover>a:not(:last-child){box-shadow:0 1px hsla(0,0%,100%,.5) inset,-1px 0 #fff inset}ol.breadcrumbs>li.focus>a:not(:last-child):after,ol.breadcrumbs>li:hover>a:not(:last-child):after{content:'';position:absolute;left:-.8em;bottom:-1px;width:1.2em;height:2px;background-color:inherit}ol.breadcrumbs li a{display:block}ol.breadcrumbs>li>ul{margin:-1px 0 0 -1.2em;border-color:#ded8c9}ol.breadcrumbs>li.focus>ul,ol.breadcrumbs>li:hover>ul{z-index:-1}ol.breadcrumbs .dropdown>ul{overflow-y:auto}.tool-area{padding:10px 0}@media print{.tool-area{display:none}}.tool-area a{color:#74663e;font-size:85%}.tool-area:after{content:'';display:block;clear:both}.dropdown,.toolbar .button{position:relative;display:inline-block}.toolbar{float:right}.toolbar .button{min-width:7em;box-shadow:0 2px 2px -1px rgba(0,0,0,.1);text-align:center;text-transform:uppercase;background-image:-webkit-linear-gradient(hsla(0,0%,100%,.5),hsla(0,0%,100%,0));background-image:-moz-linear-gradient(hsla(0,0%,100%,.5),hsla(0,0%,100%,0));background-image:-o-linear-gradient(hsla(0,0%,100%,.5),hsla(0,0%,100%,0));background-image:linear-gradient(hsla(0,0%,100%,.5),hsla(0,0%,100%,0))}.toolbar .button:focus,.toolbar .button:hover{color:#000}.toolbar .button:active{box-shadow:0 0 0 999px rgba(0,0,0,.03) inset,1px 1px 5px rgba(0,0,0,.3) inset;padding-top:.7em;padding-bottom:.5em}.dropdown>a,.dropdown>ul,.toolbar .button{border:1px solid #cfc6b0;color:#74663e;text-shadow:0 1px 1px #fff}.dropdown>a,.toolbar .button{padding:.6em .8em}.dropdown>a img,.dropdown>ul>li img,.toolbar .button img{vertical-align:-.3em;margin-right:.3em}.dropdown>ul,.toolbar .button{background-color:#F0EBDD;background-repeat:no-repeat;border-radius:.5em}.toolbar>div{float:right;margin-left:.3em}.dropdown{margin-left:.3em;z-index:1}.dropdown.focus,.dropdown:hover{z-index:101}.dropdown>a.button{min-width:4.4em;padding-right:2.7em}.dropdown>a{position:relative;z-index:2}.toolbar .dropdown>a:after{content:'▾';position:absolute;right:0;top:.6em;bottom:.6em;padding:.4em 1em .4em .8em;box-shadow:1px 0 0 rgba(0,0,0,.2) inset,2px 0 0 #fff inset;font:80%/1.05 serif}.dropdown>a,.dropdown>ul{background-color:#F0EBDD}.dropdown>ul{position:absolute;z-index:1;min-width:0;max-width:0;max-height:0;padding:0;margin:-1px 0 0;border-width:0;border-radius:0 .5em .5em;overflow:hidden;box-shadow:0 2px 2px -1px rgba(0,0,0,.1);list-style:none;text-transform:uppercase;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;transition:.2s}.dropdown>ul>li{margin:0;list-style:none;border-width:1px 0;border-style:solid;border-color:hsla(0,0%,100%,.5) transparent rgba(0,0,0,.1)}.dropdown>ul>li:first-child{border-top:0}.dropdown>ul>li:last-child{border-bottom:0}.dropdown li>a{display:block;padding:.5em;overflow:hidden;text-overflow:ellipsis;-webkit-transition:0s;-moz-transition:0s;-o-transition:0s;transition:0s}.dropdown ul>li>a:focus,.dropdown ul>li>a:hover{position:relative;background:#4e408a;color:#fff;text-shadow:0 -1px 2px #000;border-radius:.2em;box-shadow:0 0 0 2px #4e408a}#sidebar a,#sidebar ul{text-shadow:1px 1px 1px #cffcff}.dropdown.focus>ul,.dropdown:hover>ul,.dropdown>a:focus+ul{min-width:100%;max-width:25em;max-height:30em;padding:.6em;border-width:1px}.dropdown.focus>a.button,.dropdown:hover>a.button,.dropdown>a.button:focus{border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}.dropdown.focus>a.button:not(:active),.dropdown:hover>a.button:not(:active){box-shadow:none}.highlighted.button,.highlighted.button+ul{background-color:#B4E1E4;border-color:#79ccd2}.highlighted.button,.highlighted.button+ul a{color:#144d51}.button.tools:before,.button.watch:before,.edit.button:before{margin-right:.5em;font:100% WPSymbols,serif;opacity:.6}.dropdown>.highlighted.button:after{box-shadow:1px 0 0 #79ccd2 inset,2px 0 0 hsla(0,0%,100%,.6) inset}.edit.button:before{content:"\270e"}.watch.button:before{content:"\1f440"}.tools.button:before{content:"\2699"}.down-arrow{position:absolute;top:50%;right:10px;margin-top:-2px;width:5px;height:5px;background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/arrow-down.svg);background-repeat:no-repeat;background-position:right center}#page{background:#f9f7f3;border-radius:5px;box-shadow:0 0 1px #a7a9ac;margin-bottom:20px}#page-content{position:relative;z-index:0;padding:18px}body:not(.mediawiki) #sidebar+#main-content{padding-right:230px}#main-content{line-height:1.5}#sidebar{position:absolute;left:100%;top:0;padding:14px;margin:0 0 0 10px;width:182px;background-color:#B4E1E4;box-shadow:inset 0 0 5px #81c7e1;border-radius:6px;-webkit-transition:.5s top;-moz-transition:.5s top;-o-transition:.5s top;transition:.5s top}#sidebar a{font-family:Bitter;font-weight:700;color:#226077;-webkit-transition:color .2s}.comment-count,.languages a,span.editsection a{text-decoration:none!important}#sidebar a:hover{color:#2dafbc}#sidebar ul{margin:0;color:#256a84;font-size:13px}#sidebar hr{border-top:1px solid #7bccd1;border-bottom:1px solid #bcebee;border-left:none;margin:20px 0}#sidebar-title{border-bottom:2px solid #7BCCD1;font-family:Gudea,Arial,sans-serif;font-size:14px;font-weight:400;margin-top:14px;margin-bottom:0;padding:6px 0;text-align:center;text-transform:uppercase}#sidebar:before{content:"•";display:block;position:absolute;top:-11px;left:50%;width:22px;height:22px;border-radius:50%;margin-left:-11px;background:url(http://docs.webplatform.org/w/skins/webplatform/images/bg-pattern.png) #B4E1E4;box-shadow:0 3px 7px -3px #81c7e1;color:#7BCCD1;text-align:center;font-size:32px;line-height:25px;font-family:Arial,sans-serif}html.with-doc #main-content{padding-right:0}@media screen and (max-width:1400px){html.with-toc #main-content{padding-right:220px}#sidebar{left:auto;right:18px;margin-top:18px;border-radius:0}#sidebar:before{background:#f9f7f3}}@media screen and (max-width:700px){html.with-toc #main-content{padding-right:0}#sidebar{position:relative;width:100%;-moz-box-sizing:border-box;box-sizing:border-box;margin-top:0}}@media screen and (max-width:700px) and (min-width:500px){#sidebar>ol{-moz-column-count:2;-webkit-column-count:2;column-count:2}}@media print{#sidebar{display:none}}.custom-toc>ol{margin:0;padding-left:0}.custom-toc>ol ol{padding-left:1.2em;font-size:95%}.custom-toc>ol>li{padding:.6em 0;margin-bottom:0;list-style:none;border-top:1px solid hsla(0,0%,100%,.5);border-bottom:1px solid #7accd0;color:#256a83}.custom-toc>ol>li:first-child{border-top:0}.custom-toc>ol>li:last-child{border-bottom:0}.custom-toc>ol>li li{list-style:disc;margin-bottom:0;padding:.3em 0}.custom-toc>ol>li li:last-child{padding-bottom:.2em}.mw-prefs-buttons{padding-top:20px}#pt-login a,#pt-userpage a{padding-left:20px;background-position:left center;background-repeat:no-repeat;background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/icon-head.svg)}#ca-protect .icon{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/icon-protect.svg)}#ca-delete .icon{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/icon-delete.svg)}#ca-move .icon{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/icon-move.svg)}#ca-edit .icon{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/icon-edit.svg)}#ca-view .icon{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/icon-view.svg)}#ca-history .icon{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/icon-history.svg)}#ca-watch .icon{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/icon-watch.svg)}#ca-unwatch .icon{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/icon-unwatch.svg)}#ca-unwatch>span#watch_label,#ca-watch>span#watch_label{background-color:#F9F7F3;border-radius:5px;box-shadow:0 0 1px #A7A9AC;display:none;margin-left:-.5em;margin-top:-2em;padding:.25em;position:absolute}#ca-unwatch:hover>span#watch_label,#ca-watch:hover>span#watch_label{display:block}span.editsection a{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/icon-edit.svg);display:inline-block;width:17px;height:22px}.standardization_status{position:relative;float:right;width:13px;height:13px;padding:15px;background:url(http://docs.webplatform.org/w/skins/webplatform/images/standardization-status.svg) #eae3d5;background-size:100% 700%;margin:13px 0 15px 10px;border-radius:50%;font-size:0;color:transparent;box-shadow:0 -1px 2px 1px hsla(40,34%,30%,.2) inset,0 1px #fff,0 0 0 10px #f9f7f3}.standardization_status[title="W3C Working Draft"]{background-position:0 -100%}.standardization_status[title="W3C Last Call Working Draft"]{background-position:0 -200%}.standardization_status[title="W3C Candidate Recommendation"]{background-position:0 -300%}.standardization_status[title="W3C Proposed Recommendation"]{background-position:0 -400%}.standardization_status[title="W3C Recommendation"]{background-image:none;box-shadow:0 -1px 2px 1px hsla(40,34%,30%,.2) inset,0 0 0 7px #005A9C inset,0 1px #fff,0 0 0 10px #f9f7f3}.standardization_status[title=Mixed]{background-position:0 -500%}.standardization_status[title=Deprecated]{background-position:0 -600%}.standardization_status[title=Non-Standard]{background-image:none;box-shadow:0 -1px 2px 1px hsla(40,34%,30%,.2) inset,0 0 0 7px #e00 inset,0 1px #fff,0 0 0 10px #f9f7f3}.standardization_status[title="De Facto Standard"]{background-image:none;box-shadow:0 -1px 2px 1px hsla(40,34%,30%,.2) inset,0 0 0 7px #1f9374 inset,0 1px #fff,0 0 0 10px #f9f7f3}.standardization_status:before{content:url(http://docs.webplatform.org/w/skins/webplatform/images/w3c-small.svg);position:absolute;top:13px;left:10px;text-align:center;width:24px}@media screen{.standardization_status[title^="W3C Last Call Working Draft"]:after,.standardization_status[title^="W3C Recommendation"]:after{content:'';position:absolute;left:50%;width:7px;height:7px;margin-left:-6.5px;background:#fff;border:3px solid #005A9C;border-radius:50%}.standardization_status[title^="W3C Last Call Working Draft"]:after{bottom:-3px}.standardization_status[title^="W3C Recommendation"]:after{top:-3px}.standardization_status[title^=Non-Standard]:after,.standardization_status[title^="De Facto Standard"]:after,.standardization_status[title^=Experimental]:after{content:'';position:absolute;top:50%;right:8px;left:8px;border-top:4px hsla(0,100%,40%,.8) solid;margin-top:-3px}}@media print{.standardization_status:after{content:attr(title);text-transform:uppercase}}#flags{position:relative;margin-top:20px;left:-18px;width:100%;padding:0 7px 5px;background:#ffdedb}#flags li,#flags ul,#flags:empty{margin:0;padding:0}#flags:not(:empty):before{content:'';position:absolute;left:-.55em;top:1.3em;width:0;height:0;border:.5em solid transparent;border-left-width:0;border-right-color:#7a271e}#flags *{display:inline}#flags>div>p,p>br:only-child{display:none}#flags a{display:inline-block;padding:0 1.5em;margin:.4em 0;background:no-repeat #e2887a;background-image:-webkit-linear-gradient(210deg,#FFDEDB .5em,hsla(5,100%,93%,0) .6em),-webkit-linear-gradient(30deg,#FFDEDB .5em,hsla(5,100%,93%,0) .6em),-webkit-linear-gradient(330deg,#FFDEDB .5em,hsla(5,100%,93%,0) .6em),-webkit-linear-gradient(150deg,#FFDEDB .5em,hsla(5,100%,93%,0) .6em);background-image:-moz-linear-gradient(210deg,#FFDEDB .5em,hsla(5,100%,93%,0) .6em),-moz-linear-gradient(30deg,#FFDEDB .5em,hsla(5,100%,93%,0) .6em),-moz-linear-gradient(330deg,#FFDEDB .5em,hsla(5,100%,93%,0) .6em),-moz-linear-gradient(150deg,#FFDEDB .5em,hsla(5,100%,93%,0) .6em);background-image:-o-linear-gradient(210deg,#FFDEDB .5em,hsla(5,100%,93%,0) .6em),-o-linear-gradient(30deg,#FFDEDB .5em,hsla(5,100%,93%,0) .6em),-o-linear-gradient(330deg,#FFDEDB .5em,hsla(5,100%,93%,0) .6em),-o-linear-gradient(150deg,#FFDEDB .5em,hsla(5,100%,93%,0) .6em);background-image:linear-gradient(240deg,#FFDEDB .5em,hsla(5,100%,93%,0) .6em),linear-gradient(60deg,#FFDEDB .5em,hsla(5,100%,93%,0) .6em),linear-gradient(120deg,#FFDEDB .5em,hsla(5,100%,93%,0) .6em),linear-gradient(300deg,#FFDEDB .5em,hsla(5,100%,93%,0) .6em);background-position:top right,top left,bottom left,bottom right;background-size:1.2em 53%;color:#fff;text-shadow:0 -.1em .1em rgba(0,0,0,.3);font:700 90%/1.5 Bitter,Cambria,Georgia,serif}#flag-label,.prefix{color:#fff;font-size:12px}#flags a:hover{background-color:#973a2c}#flag-label{display:block;position:relative;left:-15px;top:-5px;width:101%;padding:.3em 1em;margin:0;font-weight:700;font-family:Bitter;background-color:#ce4a3a}.wikiEditor-ui{clear:left!important}.prefix{display:inline-block;padding:2px 4px;text-align:center;font-family:Gudea,Arial,sans-serif;font-weight:400;text-shadow:0 1px #000;border:1px solid;box-shadow:0 1px 3px rgba(0,0,0,.5);border-radius:3px}.prefix.webkit{border-color:#fff;background:#46b7e4;background:-moz-linear-gradient(rgba(70,183,228,1) 0,rgba(74,125,186,1) 100%);background:-webkit-linear-gradient(rgba(70,183,228,1) 0,rgba(74,125,186,1) 100%);background:-o-linear-gradient(rgba(70,183,228,1) 0,rgba(74,125,186,1) 100%);background:linear-gradient(rgba(70,183,228,1) 0,rgba(74,125,186,1) 100%)}.prefix.moz{border-color:#fff;background:#e1780b;background:-moz-linear-gradient(rgba(225,120,11,1) 0,rgba(212,82,13,1) 100%);background:-webkit-linear-gradient(rgba(225,120,11,1) 0,rgba(212,82,13,1) 100%);background:-o-linear-gradient(rgba(225,120,11,1) 0,rgba(212,82,13,1) 100%);background:linear-gradient(rgba(225,120,11,1) 0,rgba(212,82,13,1) 100%)}.prefix.ms{border-color:#f9ec71;background:#82cee7;background:-moz-linear-gradient(rgba(130,206,231,1) 0,rgba(47,147,212,1) 100%);background:-webkit-linear-gradient(rgba(130,206,231,1) 0,rgba(47,147,212,1) 100%);background:-o-linear-gradient(rgba(130,206,231,1) 0,rgba(47,147,212,1) 100%);background:linear-gradient(rgba(130,206,231,1) 0,rgba(47,147,212,1) 100%)}.prefix.o{border-color:#fff;background:#ea393a;background:-moz-linear-gradient(rgba(234,57,58,1) 0,rgba(155,10,10,1) 100%);background:-webkit-linear-gradient(rgba(234,57,58,1) 0,rgba(155,10,10,1) 100%);background:-o-linear-gradient(rgba(234,57,58,1) 0,rgba(155,10,10,1) 100%);background:linear-gradient(rgba(234,57,58,1) 0,rgba(155,10,10,1) 100%)}.language{position:absolute;top:1px;right:1px;color:#6d685b;font-family:Bitter;font-weight:700;text-shadow:0 1px 0 #fff;padding:5px 15px;background:#d6c8b4;background:-moz-linear-gradient(rgba(214,200,180,1) 0,rgba(200,185,156,1) 100%);background:-webkit-linear-gradient(rgba(214,200,180,1) 0,rgba(200,185,156,1) 100%);background:-o-linear-gradient(rgba(214,200,180,1) 0,rgba(200,185,156,1) 100%);background:linear-gradient(rgba(214,200,180,1) 0,rgba(200,185,156,1) 100%)}.css-property{border-bottom:1px solid #E2E3E4}table,table.wikitable{max-width:100%}td,th{border:0}.action-view table:not([class]),.compat-table,.wikitable{position:relative;border-collapse:separate;border-spacing:0;box-shadow:0 -1px 0 #eae8e5;border-radius:6px 6px 0 0;border:1px solid #ddd3c2;font-family:Bitter;table-layout:fixed}.action-view table:not([class]) tr,.compat-table tr,.wikitable tr{background:#e1dccf}.action-view table:not([class]) tr:nth-child(even),.compat-table tr:nth-child(even),.wikitable tr:nth-child(even){background:#fbf7ef}.action-view table:not([class]) tbody:first-child tr:first-child th:first-child,.action-view table:not([class]) thead th:first-child,.compat-table tbody:first-child tr:first-child th:first-child,.compat-table thead th:first-child,.wikitable tbody:first-child tr:first-child th:first-child,.wikitable thead th:first-child{border-top-left-radius:5px;border-left:none}.action-view table:not([class]) tr:first-child td:last-child,.action-view table:not([class]) tr:first-child th:last-child,.compat-table tr:first-child td:last-child,.compat-table tr:first-child th:last-child,.wikitable tr:first-child td:last-child,.wikitable tr:first-child th:last-child{border-top-right-radius:5px;border-right:none}.action-view table:not([class]) tr td:last-child,.compat-table tr td:last-child,.wikitable tr td:last-child{border-right:none}.action-view table:not([class]) tr:nth-child(n+2) td,.compat-table tr:nth-child(n+2) td,.wikitable tr:nth-child(n+2) td{border-bottom:none}.action-view table:not([class]) tbody th:first-child,.action-view table:not([class]) td:first-child,.compat-table tbody th:first-child,.compat-table td:first-child,.wikitable tbody th:first-child,.wikitable td:first-child{border-top:1px solid #fff;border-left:none;color:#fff;background:#6c6657;font-weight:400}.action-view table:not([class]) tbody th:first-child a:hover,.action-view table:not([class]) td:first-child a:hover,.compat-table tbody th:first-child a:hover,.compat-table td:first-child a:hover,.wikitable tbody th:first-child a:hover,.wikitable td:first-child a:hover{color:#F89C20}#mw-footer a,.action-view table:not([class]) a,.compat-table a,.wikitable a{color:inherit}.action-view table:not([class]) tbody:first-child>tr:first-child>th:not(:only-of-type),.action-view table:not([class]) thead th,.compat-table tbody:first-child>tr:first-child>th:not(:only-of-type),.compat-table thead th,.wikitable tbody:first-child>tr:first-child>th:not(:only-of-type),.wikitable thead th{font-weight:400;padding:10px;border:1px solid #fff;border-bottom-color:#b8af98;border-left:none;background:#e1d9c6;background:-moz-linear-gradient(#e6e2d8,#e1d9c6);background:-webkit-linear-gradient(#e6e2d8,#e1d9c6);background:-o-linear-gradient(#e6e2d8,#e1d9c6);background:linear-gradient(#e6e2d8,#e1d9c6);color:inherit}.action-view table:not([class]) tbody:first-child>tr:first-child>th:not(:only-of-type):last-child,.action-view table:not([class]) thead th:last-child,.compat-table tbody:first-child>tr:first-child>th:not(:only-of-type):last-child,.compat-table thead th:last-child,.wikitable tbody:first-child>tr:first-child>th:not(:only-of-type):last-child,.wikitable thead th:last-child{border-right:none}.action-view table:not([class]) td,.compat-table td,.wikitable td{padding:5px 15px;border:1px solid #fff;border-left:none}.action-view table:not([class]) th,.compat-table th,.wikitable th{padding:10px 15px;font-family:Bitter;text-align:left}.compat-table td{font-weight:700}#mw-footer{padding:40px 0;border-top:1px solid #f1eddf;background-color:#efeadd}#footer-wordmark>a.license{display:block;margin-bottom:1em}#footer-wordmark>a.license>img{width:120px;height:42px;opacity:.4}#footer-title{display:block;font:700 24px Bitter,serif}#footer-title-light{color:#9f9c97}footer ul.stewards{padding:0;margin:0}footer ul.stewards>li{display:inline;list-style:none}footer ul.stewards>li>a{display:inline-block;vertical-align:middle;width:124px;height:60px;background:url(http://docs.webplatform.org/w/skins/webplatform/images/footer-images.png) no-repeat;text-indent:200px;overflow:hidden;color:gray;color:rgba(0,0,0,.4);text-align:center;font:700 140%/2.5 Bitter,Cambria,Georgia,serif}footer ul.stewards>li.steward-adobe>a{background-position:-124px 0}footer ul.stewards>li.steward-intel>a{background-position:-248px 0}footer ul.stewards>li.steward-facebook>a{background-position:-372px 0}footer ul.stewards>li.steward-google>a{background-position:-496px 0}footer ul.stewards>li.steward-hp>a{background-position:0 -60px}footer ul.stewards>li.steward-microsoft>a{background-position:-124px -60px}footer ul.stewards>li.steward-nokia>a{background-position:-248px -60px}footer ul.stewards>li.steward-mozilla>a{background-position:-372px -60px}footer ul.stewards>li.steward-opera>a{background-position:-496px -60px}@media (min-width:880px){#footer-wordmark,footer ul.stewards{display:table-cell;vertical-align:top}footer ul.stewards{max-width:650px;padding-left:100px}}@media (max-width:880px){footer ul.stewards{margin-top:1em}}.comment-count{position:relative;float:right;height:1.5em;padding:.15em .4em 0;margin-top:-4em;border-radius:.3em;background:#30B4C5;color:#fff;text-shadow:0 -.1em .1em rgba(0,0,0,.3);text-align:center;font:700 120%/1.5 Bitter,Cambria,Georgia,serif}.comment-count>span{display:inline-block;max-width:0;overflow:hidden;margin-left:-.3em;vertical-align:top;-webkit-transition:.4s max-width,.05s .4s margin-left;-moz-transition:.4s max-width,.05s .4s margin-left;-o-transition:.4s max-width,.05s .4s margin-left;transition:.4s max-width,.05s .4s margin-left}.comment-count:hover>span{max-width:15em;margin-left:0;-webkit-transition:.05s margin-left,.4s .05s max-width;-moz-transition:.05s margin-left,.4s .05s max-width;-o-transition:.05s margin-left,.4s .05s max-width;transition:.05s margin-left,.4s .05s max-width}.comment-count:after{content:'';position:absolute;bottom:-.3em;left:50%;width:0;height:0;margin-left:-.15em;border:.3em solid transparent;border-left-color:#30B4C5;border-right:0}.comment-count:hover{background:#4e408a;color:#fff!important}.comment-count:hover:after{border-left-color:#4e408a}#primary .comment-count:after{border-top:0}#mw-content-text .comment-count{position:absolute;right:100%;margin:.1em -6px 0 0;border:1px solid transparent;box-shadow:0 1px hsla(0,0%,100%,.5) inset,0 .2em .3em -.2em rgba(0,0,0,.5);font-size:70%}#mw-content-text .comment-count:after{top:50%;bottom:auto;left:100%;margin-top:-.3em;margin-left:0}.comment-count.comments-hidden:before{content:'+';line-height:.9;font-size:140%}#mw-content-text .comment-count:not(:hover){background:#d1bc93}#mw-content-text .comment-count:not(:hover):after{border-left-color:#d1bc93}code[class*=language-]{color:#000;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono',monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;font-weight:400;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f3efe6}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8e7d4c}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.number,.token.property,.token.tag{color:#248a97}.token.attr-name,.token.selector,.token.string{color:#694D9F}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#a67f59;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#c57506}.token.important,.token.regex{color:#e90}.token.important{color:#E54E27;font-weight:700}.token.entity{cursor:help}pre[data-line]{position:relative;padding:1em 0 1em 3em}.line-highlight{position:absolute;left:0;right:0;padding:inherit 0;margin-top:1em;background:hsla(24,20%,50%,.08);background:-moz-linear-gradient(left,hsla(24,20%,50%,.1) 70%,hsla(24,20%,50%,0));background:-webkit-linear-gradient(left,hsla(24,20%,50%,.1) 70%,hsla(24,20%,50%,0));background:-o-linear-gradient(left,hsla(24,20%,50%,.1) 70%,hsla(24,20%,50%,0));background:linear-gradient(left,hsla(24,20%,50%,.1) 70%,hsla(24,20%,50%,0));pointer-events:none;line-height:inherit;white-space:pre}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);position:absolute;top:.4em;left:.6em;min-width:1em;padding:0 .5em;background-color:hsla(24,20%,50%,.4);color:#f4f1ef;font:700 65%/1.5 sans-serif;text-align:center;vertical-align:.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px #fff}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}.topics-nav{position:relative;margin:3em -26px 0;box-shadow:0 5px 12px -5px hsla(43,24%,20%,.8)}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}.topics-nav{display:none}}.topics-nav>ul{display:table;width:100%;padding:0;margin:0}.topics-nav>ul>li{display:table-cell;width:12.5%;margin:0;list-style:none;text-align:center}.topics-nav>ul>li>a{display:block;padding:.9em .5em .5em;border:1px solid transparent;border-left-color:hsla(0,0%,100%,.6);border-right-color:hsla(0,0%,0%,.15);border-bottom-color:#bbaf90;box-shadow:0 1px hsla(0,0%,100%,.4) inset,0 .5em #c4baa0 inset;background:#DED8C9;color:#756c56;text-shadow:0 .1em .05em #fff;font:120% Bitter,serif;-webkit-transition-property:background,box-shadow;-moz-transition-property:background,box-shadow;-o-transition-property:background,box-shadow;transition-property:background,box-shadow}.topics-nav>ul>li:first-child>a:before,.topics-nav>ul>li:last-child>a:before{content:'';position:absolute;width:0;height:0;top:-8px;border:8px solid transparent;border-bottom:0}.topics-nav>ul>li:first-child>a:before{left:0;border-right-color:#9e8c60;border-left:0}.topics-nav>ul>li:last-child>a:before{right:0;border-left-color:#9e8c60;border-right:0}.topics-nav>ul>li:first-child>a:focus:before,.topics-nav>ul>li:first-child>a:hover:before{border-right-color:#1d717c}.topics-nav>ul>li:last-child>a{border-right-color:hsla(0,0%,0%,.1)}.topics-nav>ul>li>a:focus,.topics-nav>ul>li>a:hover{border-bottom-color:rgba(0,0,0,.2);background:#30B4C5;box-shadow:0 1px hsla(0,0%,100%,.4) inset,0 .5em hsla(0,0%,0%,.1) inset;color:#fff;text-shadow:0 -.1em .1em rgba(0,0,0,.5)}.topics-nav>ul>li>a:focus:before,.topics-nav>ul>li>a:hover:before{border-left-color:#1d717c}.topics-nav>ul>li:nth-child(5n)>a:focus,.topics-nav>ul>li:nth-child(5n)>a:hover{background:#694D9F}.topics-nav>ul>li:nth-child(5n)>a:focus:before,.topics-nav>ul>li:nth-child(5n)>a:hover:before{border-left-color:#433167}.topics-nav>ul>li:nth-child(5n+2)>a:focus,.topics-nav>ul>li:nth-child(5n+2)>a:hover{background:#E54E27}.topics-nav>ul>li:nth-child(5n+2)>a:focus:before,.topics-nav>ul>li:nth-child(5n+2)>a:hover:before{border-left-color:#892810}.topics-nav>ul>li:nth-child(5n+3)>a:focus,.topics-nav>ul>li:nth-child(5n+3)>a:hover{background:#D02E27}.topics-nav>ul>li:nth-child(5n+3)>a:focus:before,.topics-nav>ul>li:nth-child(5n+3)>a:hover:before{border-left-color:#811b17}.topics-nav>ul>li:nth-child(5n+4)>a:focus,.topics-nav>ul>li:nth-child(5n+4)>a:hover{background:#F99D1C}.topics-nav>ul>li:nth-child(5n+4)>a:focus:before,.topics-nav>ul>li:nth-child(5n+4)>a:hover:before{border-left-color:#ad6705}@media (max-width:660px){.topics-nav>ul{display:block}.topics-nav>ul>li{display:block;width:auto}}dl.compat-list{position:relative;margin:0;font-size:16px;font-size:1rem;line-height:1}:not(dd)>dl.compat-list{float:right;margin-top:-8px}@-webkit-keyframes show{from{-webkit-transform:scale(0);opacity:0}}@-moz-keyframes show{from{-moz-transform:scale(0);opacity:0}}@-o-keyframes show{from{-o-transform:scale(0);opacity:0}}@keyframes show{from{transform:scale(0);opacity:0}}dl.compat-list dd>dl.compat-list{display:none;position:absolute;z-index:2;background:#fff;width:98px;padding:10px 7px 10px 15px;border-radius:10px;margin:-35px 0 0 15px;box-shadow:2px 2px 5px rgba(0,0,0,.2);-webkit-transform-origin:0 1em;-moz-transform-origin:0 1em;-o-transform-origin:0 1em;transform-origin:0 1em}dl.compat-list dd:focus>dl.compat-list,dl.compat-list dd:hover>dl.compat-list,dl.compat-list dt:focus+dd>dl.compat-list,dl.compat-list dt:hover+dd>dl.compat-list,dl.compat-list>dt:hover>span{display:block;-webkit-animation:show .3s cubic-bezier(.2,1.2,.7,1.2);-moz-animation:show .3s cubic-bezier(.2,1.2,.7,1.2);-o-animation:show .3s cubic-bezier(.2,1.2,.7,1.2);animation:show .3s cubic-bezier(.2,1.2,.7,1.2)}dl.compat-list dd>dl.compat-list:before,dl.compat-list dt+dd>dl.compat-list:before{content:'';position:absolute;left:-10px;top:20px;width:0;height:0;border:10px solid transparent;border-right-color:#fff;border-left:0}dl.compat-list dt{position:relative;display:inline-block;width:36px;height:36px;background:url(http://docs.webplatform.org/w/skins/webplatform/images/cloud.svg) center no-repeat;margin:0}dl.compat-list>dt>span{display:none;position:absolute;top:35px;left:0;z-index:3;padding:.3em .5em;border-radius:.3em;margin-left:.2em;background:#694D9F;box-shadow:1px 1px 5px rgba(0,0,0,.3);color:#fff;white-space:pre;font-weight:700;line-height:1.3;pointer-events:none;-webkit-transform-origin:.5em 0;-moz-transform-origin:.5em 0;-o-transform-origin:.5em 0;transform-origin:.5em 0}dl.compat-list>dt>span:before{content:'';position:absolute;top:-.3em;left:.4em;width:0;height:0;border:.5em solid transparent;border-bottom-color:#694D9F;border-top:0}dl.compat-list>dt>span:after{font-weight:400;font-size:smaller}dl.compat-list>dt.Supported>span:after{content:'\ASupported'}dl.compat-list>dt.Unsupported>span:after{content:'\AUnsupported'}dl.compat-list>dt.Partial>span:after{content:'\APartial support'}dl.compat-list>dt.Unknown>span:after{content:'\AUnknown'}dl.compat-list dt:before{content:'';position:absolute;top:0;right:0;bottom:0;left:0;background:center no-repeat}dl.compat-list dt.and_chr:before,dl.compat-list dt.chrome:before{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/browsers/chrome.png)}dl.compat-list dt.and_ff:before,dl.compat-list dt.firefox:before{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/browsers/firefox.png)}dl.compat-list dt.ie:before,dl.compat-list dt.ie_mob:before{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/browsers/ie.png);background-position:40% 50%}dl.compat-list dt.op_mini:before,dl.compat-list dt.op_mob:before,dl.compat-list dt.opera:before{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/browsers/opera.png)}dl.compat-list dt.ios_saf:before,dl.compat-list dt.safari:before{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/browsers/safari.png)}dl.compat-list dt.mobiles:before{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/browsers/mobile.png)}dl.compat-list dt.android:before{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/browsers/android.png)}dl.compat-list dt.bb:before{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/browsers/blackberry.png)}dl.compat-list dd{display:inline-block;position:relative;top:-16px;width:13px;height:13px;padding:0;margin:0 0 0 -11px;border-radius:50%;box-shadow:1px 1px 3px rgba(0,0,0,.3),0 1px 1px #fff inset;background:url(http://docs.webplatform.org/w/skins/webplatform/images/questionmark.svg) center no-repeat #f9f7f3;background-size:8px auto;font-size:0;line-height:0;color:transparent}dl.compat-list dl.compat-list dd{margin-right:10px}dl.compat-list dd.Unsupported{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/x.svg)}dl.compat-list dd.Partial{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/warning.svg)}dl.compat-list dd.Supported{background-image:url(http://docs.webplatform.org/w/skins/webplatform/images/checkmark.svg)}.ui-sortable .multipleTemplateInstance{border-radius:.5em;background:#ece6d9;border-color:#ddd1ba;box-shadow:0 1px #fff inset}.mw-editsection{display:none}.languages{display:inline-block;border-radius:.5em;border-spacing:0;margin:.5em 0;padding:.6em 0;background:#DED8C9;text-shadow:0 1px hsla(0,0%,100%,.6);font-size:90%;line-height:1;color:rgba(0,0,0,.5)}#content,#content p{line-height:1.5}.languages .mbox-image{white-space:nowrap;padding:0 1em;border-right:1px solid rgba(0,0,0,.1)}.languages .mbox-text{padding:.4em 1em;border-left:1px solid hsla(0,0%,100%,.6)}.languages .mbox-text b{color:#000}.topic-container>.long-topic,.topic-container>.short-topic{padding:0 5px}@media (min-width:870px){.topic-container>.long-topic,.topic-container>.short-topic{float:left;width:290px}.topic-container>.long-topic{height:170px}.topic-container>.short-topic{height:100px}.topic-container .image+.inner{float:right;width:240px}.topic-container.editors .inner{min-height:150px}}@media (max-width:870px){.topic-container>.long-topic{margin:10px 0}}.topic-container.editors .inner{border:1px solid #fff;padding:5px 5px 5px 10px;border-radius:.5em;box-shadow:-1px -1px rgba(0,0,0,.1),-1px -1px rgba(0,0,0,.1) inset}.topic-container .inner h3{padding:0;margin:0;border-bottom:none}.topic-container.editors .inner h3 a{color:#d75f1e}.topic-container .image{width:32px;height:32px;float:left;margin:4px 8px 8px 0}.icon-accessibility{background:url(http://docs.webplatform.org/w/images/7/7b/WPD-Accessibility-32px.png)}.icon-beginners{background:url(http://docs.webplatform.org/w/images/8/8a/WPD-Beginners-32px.png)}.icon-concept{background:url(http://docs.webplatform.org/w/images/8/83/WPD-Concepts-32px.png)}.icon-css{background:url(http://docs.webplatform.org/w/images/7/74/WPD-CSS-32px.png)}.icon-dom{background:url(http://docs.webplatform.org/w/images/a/ae/WPD-DOM-32px.png)}.icon-html{background:url(http://docs.webplatform.org/w/images/d/d1/WPD-HTML-B-32px.png)}.icon-html5{background:url(http://docs.webplatform.org/w/images/2/26/WPD-HTML5-32px.png)}.icon-js{background:url(http://docs.webplatform.org/w/images/4/4c/WPD-JS-32px.png)}.icon-svg{background:url(http://docs.webplatform.org/w/images/d/db/WPD-SVG-32px.png)}.icon-api{background:url(http://docs.webplatform.org/w/images/d/d3/WPD-API-32px.png)}@media print{@media print{.tool-area,nav#sitenav,ul.stewards{display:none!important}}}@media screen and (max-width:950px){.container{padding:0 10px;width:auto}}@media screen and (max-width:705px){#page-top>.right{display:none}#main-content{padding-right:0}}@media screen and (max-width:520px){#mw-head,#sitenav .links{padding:0}#p-logo{position:static}#p-logo a{width:auto;margin-bottom:10px}#p-personal,#p-search{display:none}#sitenav{padding-top:80px}nav{padding:10px 0}nav li{display:block!important;padding:10px;margin:5px;text-align:center}nav a{display:block}}@font-face{font-family:WPSymbols;src:url(//www.webplatform.org/assets/fonts/WPSymbols.eot);src:url(//www.webplatform.org/assets/fonts/WPSymbols.eot?#iefix) format('embedded-opentype'),url(//www.webplatform.org/assets/fonts/WPSymbols.svg#WPSymbols) format('svg'),url(//www.webplatform.org/assets/fonts/WPSymbols.woff) format('woff'),url(//www.webplatform.org/assets/fonts/WPSymbols.ttf) format('truetype')}@font-face{font-family:Gudea;font-weight:400;src:url(//www.webplatform.org/assets/fonts/gudea-regular-webfont.eot);src:url(//www.webplatform.org/assets/fonts/gudea-regular-webfont.eot?#iefix) format('embedded-opentype'),url(//www.webplatform.org/assets/fonts/gudea-regular-webfont.woff) format('woff'),url(//www.webplatform.org/assets/fonts/gudea-regular-webfont.ttf) format('truetype'),url(//www.webplatform.org/assets/fonts/gudea-regular-webfont.svg#GudeaRegular) format('svg')}@font-face{font-family:Gudea;font-weight:700;src:url(//www.webplatform.org/assets/fonts/gudea-bold-webfont.eot);src:url(//www.webplatform.org/assets/fonts/gudea-bold-webfont.eot?#iefix) format('embedded-opentype'),url(//www.webplatform.org/assets/fonts/gudea-bold-webfont.woff) format('woff'),url(//www.webplatform.org/assets/fonts/gudea-bold-webfont.ttf) format('truetype'),url(//www.webplatform.org/assets/fonts/gudea-bold-webfont.svg#GudeaRegular) format('svg')}@font-face{font-family:Gudea;font-weight:400;font-style:italic;src:url(//www.webplatform.org/assets/fonts/gudea-italic-webfont.eot);src:url(//www.webplatform.org/assets/fonts/gudea-italic-webfont.eot?#iefix) format('embedded-opentype'),url(//www.webplatform.org/assets/fonts/gudea-italic-webfont.woff) format('woff'),url(//www.webplatform.org/assets/fonts/gudea-italic-webfont.ttf) format('truetype'),url(//www.webplatform.org/assets/fonts/gudea-italic-webfont.svg#GudeaRegular) format('svg')}@font-face{font-family:Bitter;font-weight:400;src:url(//www.webplatform.org/assets/fonts/bitter-regular-webfont.eot);src:url(//www.webplatform.org/assets/fonts/bitter-regular-webfont.eot?#iefix) format('embedded-opentype'),url(//www.webplatform.org/assets/fonts/bitter-regular-webfont.woff) format('woff'),url(//www.webplatform.org/assets/fonts/bitter-regular-webfont.ttf) format('truetype'),url(//www.webplatform.org/assets/fonts/bitter-regular-webfont.svg#BitterRegular) format('svg')}@font-face{font-family:Bitter;font-weight:700;src:url(//www.webplatform.org/assets/fonts/bitter-bold-webfont.eot);src:url(//www.webplatform.org/assets/fonts/bitter-bold-webfont.eot?#iefix) format('embedded-opentype'),url(//www.webplatform.org/assets/fonts/bitter-bold-webfont.woff) format('woff'),url(//www.webplatform.org/assets/fonts/bitter-bold-webfont.ttf) format('truetype'),url(//www.webplatform.org/assets/fonts/bitter-bold-webfont.svg#BitterBold) format('svg')}@font-face{font-family:Bitter;font-weight:400;font-style:italic;src:url(//www.webplatform.org/assets/fonts/bitter-italic-webfont.eot);src:url(//www.webplatform.org/assets/fonts/bitter-italic-webfont.eot?#iefix) format('embedded-opentype'),url(//www.webplatform.org/assets/fonts/bitter-italic-webfont.woff) format('woff'),url(//www.webplatform.org/assets/fonts/bitter-italic-webfont.ttf) format('truetype'),url(//www.webplatform.org/assets/fonts/bitter-italic-webfont.svg#BitterBold) format('svg')}@font-face{font-family:WPSymbols;src:url(//www.webplatform.org/assets/fonts/WPSymbols.eot);src:url(//www.webplatform.org/assets/fonts/WPSymbols.eot?#iefix) format('embedded-opentype'),url(//www.webplatform.org/assets/fonts/WPSymbols.svg#WPSymbols) format('svg'),url(//www.webplatform.org/assets/fonts/WPSymbols.woff) format('woff'),url(//www.webplatform.org/assets/fonts/WPSymbols.ttf) format('truetype')}#jump-to-nav,.mw-jump{display:none}body.sitedir-ltr{background-image:url(//www.webplatform.org/assets/bg-pattern.png)!important}#search>input[type=submit]{background-image:url(//www.webplatform.org/assets/btn-search.svg)!important}#p-logo a{background:url(//www.webplatform.org/assets/logo.svg) #f7f5f1;background-repeat:no-repeat;background-position:center}#sitenav{background-image:url(//www.webplatform.org/assets/nav-bg.png)}footer ul.stewards>li>a{background-image:url(//www.webplatform.org/assets/footer-images.png)!important}@media screen and (max-width:950px){blockquote.testimonial{margin-right:0}hgroup h1 img{margin-bottom:.2em}}hgroup{text-align:center}hgroup h1{font-size:800%;font-weight:700;letter-spacing:-.1em}hgroup h1 img{height:1.5em}hgroup h2{font-size:300%}hgroup+p{font-size:140%}#content{margin-top:1em;font-size:110%} 12 | 13 | html{background-color:transparent!important} 14 | -------------------------------------------------------------------------------- /static/_internal/footer.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /static/_internal/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 14 |
    15 |
    16 | 19 |
    20 |
    21 | 31 | 32 |
    33 |
    34 | Notice: The WebPlatform project has been discontinued when the Stewards partnership agreement ended in September 2015. This site has been frozen, and the assets we have created will remain. 35 |
    36 |
    37 | 38 |
    39 |
    40 |
    41 |
    42 |
    43 | 44 |

    Sub pages of 45 | -------------------------------------------------------------------------------- /static/assets/js/docs.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * WebPlatform Docs 3 | */ 4 | 5 | /** 6 | * WebPlatform Docs JavaScript 7 | * 8 | * Notice that functions that starts by "mw." were originally 9 | * managed by MediaWiki ("MW"), but this project doesn't use MW at all. 10 | * 11 | * If you refactor, please ensure we remove any requirement for them. 12 | * 13 | * In the meantime, the following will let any MW code to work 14 | * without breaking. 15 | * 16 | * ```js 17 | * var mw = {loader:{state:function getState(){console.log('mw loader state',arguments);return null;}},config:{get:function getConfig(){console.log('mw config get',arguments); return {};}}}; 18 | * `` 19 | * 20 | * The following scripts were extracted from MW with the following requests 21 | * 22 | * - https://docs.webplatform.org/w/load.php?debug=true&lang=en&modules=jquery&only=scripts&skin=webplatform&version=20150623T190654Z 23 | * - https://docs.webplatform.org/w/load.php?debug=false&lang=en&modules=skins.webplatform&only=scripts&skin=webplatform&* 24 | */ 25 | 26 | /* 27 | * Add Hypothes.is sidebar 28 | */ 29 | function annotatorLoader() { 30 | var ssl = !!document.location.protocol.match(/^https:/), 31 | embedUrl = '//notes.webplatform.org/embed.js', 32 | mwContentNamespaces = mw.config.get('wgContentNamespaces'), 33 | showAnnotator = false; 34 | if (showAnnotator === true) { 35 | if (ssl && embedUrl.match( 36 | /^https:/)) { 37 | var msg = ('Sorry, but the annotator sidebar is currently unavailable ' + 'on pages that are served through HTTPS.'); 38 | mw.notify(msg, { 39 | title: "Cannot load annotation sidebar" 40 | }); 41 | } else { 42 | var embed = document.createElement('script'); 43 | embed.setAttribute('src', embedUrl); 44 | document.body.appendChild(embed); 45 | } 46 | } 47 | } 48 | 49 | 50 | 51 | 52 | /* 53 | * Generate Table of Contents on any page 54 | */ 55 | function mainToc () { 56 | var readinessBlock = document.querySelectorAll('#main-content .readiness-state')[0] || {}; 57 | if(!!readinessBlock.tagName && readinessBlock.tagName.toLowerCase() === 'div') { 58 | document.body.appendChild(readinessBlock); 59 | } 60 | 61 | var mainContent = document.getElementById('main-content'); 62 | if (mainContent === null) { 63 | return; 64 | } 65 | var headings = Array.prototype.slice.apply(mainContent.querySelectorAll('h2, h3, h4, h5, h6')); 66 | if (headings.length < 2) { 67 | return; 68 | } 69 | document.body.classList.add('with-toc'); 70 | var ol = document.createElement('ol'), 71 | li, rootOl = ol; 72 | for (var i = 0, h; h = headings[i++];) { 73 | var level = hLevel(h); 74 | if (level > previousLevel) { 75 | ol = li.appendChild(document.createElement('ol')); 76 | } else if (level < previousLevel) { 77 | ol = ol. 78 | parentNode.parentNode; 79 | } 80 | li = tocItem(h); 81 | if (li) { 82 | ol.appendChild(li); 83 | } 84 | var previousLevel = level; 85 | } 86 | 87 | function tocItem(h) { 88 | var li = document.createElement('li'), 89 | a = document.createElement('a'); 90 | var id, text; 91 | var headline = h.querySelector('.mw-headline[id]'); 92 | if (headline) { 93 | id = headline.id; 94 | text = headline.textContent; 95 | } else { 96 | id = h.id; 97 | text = h.firstChild.textContent || h.textContent; 98 | if (!id) { 99 | id = text.replace(/\s+/g, '-'); 100 | if (document.getElementById(id)) { 101 | id += '-2'; 102 | } 103 | h.id = id; 104 | } 105 | } 106 | a.textContent = text; 107 | a.href = '#' + id; 108 | li.appendChild(a); 109 | return li; 110 | } 111 | 112 | function hLevel(h) { 113 | return +h.nodeName.match(/h(\d)/i)[1]; 114 | } 115 | var toc = document.createElement('aside'); 116 | toc.id = 'sidebar'; 117 | toc.className = 'custom-toc'; 118 | var tocH = document.createElement('h2'); 119 | tocH.id = 'sidebar-title'; 120 | tocH.innerHTML = 'Contents'; 121 | toc.appendChild(tocH); 122 | toc.appendChild(rootOl); 123 | mainContent.parentNode.insertBefore(toc, mainContent); 124 | 125 | console.log('mainToc loaded'); 126 | } 127 | 128 | 129 | 130 | 131 | /* 132 | * Handle Edit button to send to GitHub. 133 | * 134 | * initialized through mainInit 135 | */ 136 | function mainEditButton(){ 137 | 'use strict'; 138 | 139 | var title = document.querySelectorAll('h1 .mw-headline')[0] || {}, 140 | editBtn = document.querySelectorAll('.toolbar a.edit')[0] || {}, 141 | baseSourceRepo = "https://github.com/webplatform/docs{0}/blob/manual-edits", 142 | namespaceTests = [[/^\/Meta/, '-meta'], [/^\/WPD/, '-wpd']], 143 | urlObj = new URL(window.location.href), 144 | pathName = urlObj.pathname.replace('.html', ''), 145 | sourceFile = baseSourceRepo + pathName, 146 | namespaceTestsIdx, 147 | namespacePrefixOutcome = '', 148 | editHref; 149 | 150 | if(typeof editBtn === 'object' && typeof editBtn.text === 'string') { 151 | for(namespaceTestsIdx = 0; namespaceTestsIdx <= namespaceTests.length - 1; namespaceTestsIdx ++) { 152 | if(namespaceTests[namespaceTestsIdx][0].test(pathName)){ 153 | namespacePrefixOutcome = namespaceTests[namespaceTestsIdx][1]; 154 | } 155 | } 156 | sourceFile = sourceFile.format(namespacePrefixOutcome).replace(/manual-edits\/(Meta|WPD)\//, 'master/'); 157 | editHref = sourceFile + ((/\/$/.test(pathName))?'index.md':'.md'); 158 | editBtn.setAttribute('href', editHref); 159 | } 160 | 161 | if(typeof title === 'object' && typeof title.textContent === 'string'){ 162 | document.title = title.textContent + ' - ' + document.title; 163 | } 164 | 165 | console.log('mainEditButton loaded'); 166 | } 167 | 168 | 169 | 170 | 171 | 172 | /* 173 | * Strig.format polyfill 174 | */ 175 | if (!String.prototype.format) { 176 | String.prototype.format = function() { 177 | var args = arguments; 178 | return this.replace(/{(\d+)}/g, function(match, number) { 179 | return typeof args[number] != 'undefined' 180 | ? args[number] 181 | : match 182 | ; 183 | }); 184 | }; 185 | } 186 | 187 | 188 | 189 | 190 | 191 | /* 192 | * Bootstrap it all 193 | */ 194 | (function init () { 195 | if (document.querySelectorAll && !!document.body.addEventListener) { 196 | var dropdowns = document.querySelectorAll('.dropdown'); 197 | for (var i = 0, dropdown; dropdown = dropdowns[i++];) { 198 | dropdown.addEventListener('focus', function() { 199 | this.className += ' focus'; 200 | }, true); 201 | dropdown.addEventListener('blur', function() { 202 | this.className = this.className.replace(/\s+focus\b/, ' '); 203 | }, true); 204 | } 205 | 206 | mainEditButton(); 207 | mainToc(); 208 | } 209 | }()); 210 | -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/webplatform/generator-docs/48fa65f1bad67fa2673d6db4ca92f70ae7107969/static/favicon.ico -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | absolute@0.0.1: 4 | version "0.0.1" 5 | resolved "https://registry.yarnpkg.com/absolute/-/absolute-0.0.1.tgz#c22822f87e1c939f579887504d9c109c4173829d" 6 | 7 | accepts@~1.3.3: 8 | version "1.3.3" 9 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" 10 | dependencies: 11 | mime-types "~2.1.11" 12 | negotiator "0.6.1" 13 | 14 | amdefine@>=0.0.4: 15 | version "1.0.0" 16 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.0.tgz#fd17474700cb5cc9c2b709f0be9d23ce3c198c33" 17 | 18 | ansi-red@^0.1.1: 19 | version "0.1.1" 20 | resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" 21 | dependencies: 22 | ansi-wrap "0.1.0" 23 | 24 | ansi-regex@^2.0.0: 25 | version "2.0.0" 26 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107" 27 | 28 | ansi-styles@^2.2.1: 29 | version "2.2.1" 30 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 31 | 32 | ansi-wrap@0.1.0: 33 | version "0.1.0" 34 | resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" 35 | 36 | argparse@^1.0.7: 37 | version "1.0.9" 38 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" 39 | dependencies: 40 | sprintf-js "~1.0.2" 41 | 42 | argparse@~0.1.15: 43 | version "0.1.16" 44 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-0.1.16.tgz#cfd01e0fbba3d6caed049fbd758d40f65196f57c" 45 | dependencies: 46 | underscore "~1.7.0" 47 | underscore.string "~2.4.0" 48 | 49 | arr-diff@^2.0.0: 50 | version "2.0.0" 51 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 52 | dependencies: 53 | arr-flatten "^1.0.1" 54 | 55 | arr-flatten@^1.0.1: 56 | version "1.0.1" 57 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" 58 | 59 | array-differ@^1.0.0: 60 | version "1.0.0" 61 | resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" 62 | 63 | array-flatten@1.1.1: 64 | version "1.1.1" 65 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 66 | 67 | array-union@^1.0.1: 68 | version "1.0.2" 69 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 70 | dependencies: 71 | array-uniq "^1.0.1" 72 | 73 | array-uniq@^1.0.1: 74 | version "1.0.3" 75 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 76 | 77 | array-unique@^0.2.1: 78 | version "0.2.1" 79 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 80 | 81 | arrify@^1.0.0: 82 | version "1.0.1" 83 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 84 | 85 | async@^0.7.0: 86 | version "0.7.0" 87 | resolved "https://registry.yarnpkg.com/async/-/async-0.7.0.tgz#4429e0e62f5de0a54f37458c49f0b897eb52ada5" 88 | 89 | async@^1.3.0: 90 | version "1.5.2" 91 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 92 | 93 | async@~0.2.6: 94 | version "0.2.10" 95 | resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" 96 | 97 | autolinker@~0.15.0: 98 | version "0.15.3" 99 | resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-0.15.3.tgz#342417d8f2f3461b14cf09088d5edf8791dc9832" 100 | 101 | balanced-match@^0.4.1: 102 | version "0.4.2" 103 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" 104 | 105 | bluebird@^3.1.1: 106 | version "3.4.6" 107 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f" 108 | 109 | bower@*: 110 | version "1.7.9" 111 | resolved "https://registry.yarnpkg.com/bower/-/bower-1.7.9.tgz#b7296c2393e0d75edaa6ca39648132dd255812b0" 112 | 113 | brace-expansion@^1.0.0: 114 | version "1.1.6" 115 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" 116 | dependencies: 117 | balanced-match "^0.4.1" 118 | concat-map "0.0.1" 119 | 120 | braces@^1.8.2: 121 | version "1.8.5" 122 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 123 | dependencies: 124 | expand-range "^1.8.1" 125 | preserve "^0.2.0" 126 | repeat-element "^1.1.2" 127 | 128 | chalk@^1.1.3: 129 | version "1.1.3" 130 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 131 | dependencies: 132 | ansi-styles "^2.2.1" 133 | escape-string-regexp "^1.0.2" 134 | has-ansi "^2.0.0" 135 | strip-ansi "^3.0.0" 136 | supports-color "^2.0.0" 137 | 138 | clone@^1.0.2: 139 | version "1.0.2" 140 | resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" 141 | 142 | co-from-stream@~0.0.0: 143 | version "0.0.0" 144 | resolved "https://registry.yarnpkg.com/co-from-stream/-/co-from-stream-0.0.0.tgz#1a5cd8ced77263946094fa39f2499a63297bcaf9" 145 | dependencies: 146 | co-read "0.0.1" 147 | 148 | co-fs-extra@^1.2.1: 149 | version "1.2.1" 150 | resolved "https://registry.yarnpkg.com/co-fs-extra/-/co-fs-extra-1.2.1.tgz#3b6ad77cf2614530f677b1cf62664f5ba756b722" 151 | dependencies: 152 | co-from-stream "~0.0.0" 153 | fs-extra "~0.26.5" 154 | thunkify-wrap "~1.0.4" 155 | 156 | co-read@0.0.1: 157 | version "0.0.1" 158 | resolved "https://registry.yarnpkg.com/co-read/-/co-read-0.0.1.tgz#f81b3eb8a86675fec51e3d883a7f564e873c9389" 159 | 160 | co@~3.1.0, co@3.1.0: 161 | version "3.1.0" 162 | resolved "https://registry.yarnpkg.com/co/-/co-3.1.0.tgz#4ea54ea5a08938153185e15210c68d9092bc1b78" 163 | 164 | commander@^2.6.0: 165 | version "2.9.0" 166 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" 167 | dependencies: 168 | graceful-readlink ">= 1.0.0" 169 | 170 | concat-map@0.0.1: 171 | version "0.0.1" 172 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 173 | 174 | consolidate@^0.14.0: 175 | version "0.14.1" 176 | resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.14.1.tgz#506d529ef7e211624d2e4a5f337df8be136ef727" 177 | dependencies: 178 | bluebird "^3.1.1" 179 | 180 | content-disposition@0.5.1: 181 | version "0.5.1" 182 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.1.tgz#87476c6a67c8daa87e32e87616df883ba7fb071b" 183 | 184 | content-type@~1.0.2: 185 | version "1.0.2" 186 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" 187 | 188 | cookie-signature@1.0.6: 189 | version "1.0.6" 190 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 191 | 192 | cookie@0.3.1: 193 | version "0.3.1" 194 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" 195 | 196 | debug@^0.8.1: 197 | version "0.8.1" 198 | resolved "https://registry.yarnpkg.com/debug/-/debug-0.8.1.tgz#20ff4d26f5e422cb68a1bacbbb61039ad8c1c130" 199 | 200 | debug@^2.1.3, debug@^2.2.0, debug@~2.2.0: 201 | version "2.2.0" 202 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" 203 | dependencies: 204 | ms "0.7.1" 205 | 206 | depd@~1.1.0: 207 | version "1.1.0" 208 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" 209 | 210 | destroy@~1.0.4: 211 | version "1.0.4" 212 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 213 | 214 | ee-first@1.1.1: 215 | version "1.1.1" 216 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 217 | 218 | enable@1: 219 | version "1.3.2" 220 | resolved "https://registry.yarnpkg.com/enable/-/enable-1.3.2.tgz#9eba6837d16d0982b59f87d889bf754443d52931" 221 | 222 | encodeurl@~1.0.1: 223 | version "1.0.1" 224 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" 225 | 226 | escape-html@~1.0.3: 227 | version "1.0.3" 228 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 229 | 230 | escape-string-regexp@^1.0.2: 231 | version "1.0.5" 232 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 233 | 234 | esprima@^2.6.0: 235 | version "2.7.3" 236 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" 237 | 238 | etag@~1.7.0: 239 | version "1.7.0" 240 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8" 241 | 242 | expand-brackets@^0.1.4: 243 | version "0.1.5" 244 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 245 | dependencies: 246 | is-posix-bracket "^0.1.0" 247 | 248 | expand-range@^1.8.1: 249 | version "1.8.2" 250 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 251 | dependencies: 252 | fill-range "^2.1.0" 253 | 254 | express@^4.13.3: 255 | version "4.14.0" 256 | resolved "https://registry.yarnpkg.com/express/-/express-4.14.0.tgz#c1ee3f42cdc891fb3dc650a8922d51ec847d0d66" 257 | dependencies: 258 | accepts "~1.3.3" 259 | array-flatten "1.1.1" 260 | content-disposition "0.5.1" 261 | content-type "~1.0.2" 262 | cookie "0.3.1" 263 | cookie-signature "1.0.6" 264 | debug "~2.2.0" 265 | depd "~1.1.0" 266 | encodeurl "~1.0.1" 267 | escape-html "~1.0.3" 268 | etag "~1.7.0" 269 | finalhandler "0.5.0" 270 | fresh "0.3.0" 271 | merge-descriptors "1.0.1" 272 | methods "~1.1.2" 273 | on-finished "~2.3.0" 274 | parseurl "~1.3.1" 275 | path-to-regexp "0.1.7" 276 | proxy-addr "~1.1.2" 277 | qs "6.2.0" 278 | range-parser "~1.2.0" 279 | send "0.14.1" 280 | serve-static "~1.11.1" 281 | type-is "~1.6.13" 282 | utils-merge "1.0.0" 283 | vary "~1.1.0" 284 | 285 | extend-shallow@^2.0.1: 286 | version "2.0.1" 287 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 288 | dependencies: 289 | is-extendable "^0.1.0" 290 | 291 | extend@^3.0.0: 292 | version "3.0.0" 293 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" 294 | 295 | extglob@^0.3.1: 296 | version "0.3.2" 297 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 298 | dependencies: 299 | is-extglob "^1.0.0" 300 | 301 | filename-regex@^2.0.0: 302 | version "2.0.0" 303 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" 304 | 305 | fill-range@^2.1.0: 306 | version "2.2.3" 307 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" 308 | dependencies: 309 | is-number "^2.1.0" 310 | isobject "^2.0.0" 311 | randomatic "^1.1.3" 312 | repeat-element "^1.1.2" 313 | repeat-string "^1.5.2" 314 | 315 | finalhandler@0.5.0: 316 | version "0.5.0" 317 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.0.tgz#e9508abece9b6dba871a6942a1d7911b91911ac7" 318 | dependencies: 319 | debug "~2.2.0" 320 | escape-html "~1.0.3" 321 | on-finished "~2.3.0" 322 | statuses "~1.3.0" 323 | unpipe "~1.0.0" 324 | 325 | for-in@^0.1.5: 326 | version "0.1.6" 327 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8" 328 | 329 | for-own@^0.1.4: 330 | version "0.1.4" 331 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072" 332 | dependencies: 333 | for-in "^0.1.5" 334 | 335 | forwarded@~0.1.0: 336 | version "0.1.0" 337 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" 338 | 339 | fresh@0.3.0: 340 | version "0.3.0" 341 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f" 342 | 343 | fs-extra@~0.26.5: 344 | version "0.26.7" 345 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9" 346 | dependencies: 347 | graceful-fs "^4.1.2" 348 | jsonfile "^2.1.0" 349 | klaw "^1.0.0" 350 | path-is-absolute "^1.0.0" 351 | rimraf "^2.2.8" 352 | 353 | fs-readdir-recursive@^1.0.0: 354 | version "1.0.0" 355 | resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" 356 | 357 | fs.realpath@^1.0.0: 358 | version "1.0.0" 359 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 360 | 361 | glob-base@^0.3.0: 362 | version "0.3.0" 363 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 364 | dependencies: 365 | glob-parent "^2.0.0" 366 | is-glob "^2.0.0" 367 | 368 | glob-parent@^2.0.0: 369 | version "2.0.0" 370 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 371 | dependencies: 372 | is-glob "^2.0.0" 373 | 374 | glob@^7.0.5: 375 | version "7.1.1" 376 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 377 | dependencies: 378 | fs.realpath "^1.0.0" 379 | inflight "^1.0.4" 380 | inherits "2" 381 | minimatch "^3.0.2" 382 | once "^1.3.0" 383 | path-is-absolute "^1.0.0" 384 | 385 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: 386 | version "4.1.9" 387 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.9.tgz#baacba37d19d11f9d146d3578bc99958c3787e29" 388 | 389 | "graceful-readlink@>= 1.0.0": 390 | version "1.0.1" 391 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 392 | 393 | gray-matter@^2.0.0: 394 | version "2.1.0" 395 | resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-2.1.0.tgz#df14c28793a9219720482c3996d12f548200ff75" 396 | dependencies: 397 | ansi-red "^0.1.1" 398 | extend-shallow "^2.0.1" 399 | js-yaml "^3.4.3" 400 | 401 | handlebars@^2.0: 402 | version "2.0.0" 403 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-2.0.0.tgz#6e9d7f8514a3467fa5e9f82cc158ecfc1d5ac76f" 404 | dependencies: 405 | optimist "~0.3" 406 | optionalDependencies: 407 | uglify-js "~2.3" 408 | 409 | has-ansi@^2.0.0: 410 | version "2.0.0" 411 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 412 | dependencies: 413 | ansi-regex "^2.0.0" 414 | 415 | has-generators@^1.0.1: 416 | version "1.0.1" 417 | resolved "https://registry.yarnpkg.com/has-generators/-/has-generators-1.0.1.tgz#a6a2e55486011940482e13e2c93791c449acf449" 418 | 419 | highlight.js@^8.8.0: 420 | version "8.9.1" 421 | resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-8.9.1.tgz#b8a9c5493212a9392f0222b649c9611497ebfb88" 422 | 423 | http-errors@~1.5.0: 424 | version "1.5.0" 425 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.0.tgz#b1cb3d8260fd8e2386cad3189045943372d48211" 426 | dependencies: 427 | inherits "2.0.1" 428 | setprototypeof "1.0.1" 429 | statuses ">= 1.3.0 < 2" 430 | 431 | inflight@^1.0.4: 432 | version "1.0.6" 433 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 434 | dependencies: 435 | once "^1.3.0" 436 | wrappy "1" 437 | 438 | inherits@2: 439 | version "2.0.3" 440 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 441 | 442 | inherits@2.0.1: 443 | version "2.0.1" 444 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 445 | 446 | ipaddr.js@1.1.1: 447 | version "1.1.1" 448 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.1.1.tgz#c791d95f52b29c1247d5df80ada39b8a73647230" 449 | 450 | is-buffer@^1.0.2: 451 | version "1.1.4" 452 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" 453 | 454 | is-dotfile@^1.0.0: 455 | version "1.0.2" 456 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" 457 | 458 | is-equal-shallow@^0.1.3: 459 | version "0.1.3" 460 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 461 | dependencies: 462 | is-primitive "^2.0.0" 463 | 464 | is-extendable@^0.1.0, is-extendable@^0.1.1: 465 | version "0.1.1" 466 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 467 | 468 | is-extglob@^1.0.0: 469 | version "1.0.0" 470 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 471 | 472 | is-glob@^2.0.0, is-glob@^2.0.1: 473 | version "2.0.1" 474 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 475 | dependencies: 476 | is-extglob "^1.0.0" 477 | 478 | is-number@^2.0.2, is-number@^2.1.0: 479 | version "2.1.0" 480 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 481 | dependencies: 482 | kind-of "^3.0.2" 483 | 484 | is-posix-bracket@^0.1.0: 485 | version "0.1.1" 486 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 487 | 488 | is-primitive@^2.0.0: 489 | version "2.0.0" 490 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 491 | 492 | is-utf8@^0.2.0, is-utf8@~0.2.0: 493 | version "0.2.1" 494 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 495 | 496 | is@^3.1.0: 497 | version "3.2.0" 498 | resolved "https://registry.yarnpkg.com/is/-/is-3.2.0.tgz#a362e3daf7df3fd8b7114115d624c5b7e1cb90f7" 499 | 500 | isarray@1.0.0: 501 | version "1.0.0" 502 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 503 | 504 | isobject@^2.0.0: 505 | version "2.1.0" 506 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 507 | dependencies: 508 | isarray "1.0.0" 509 | 510 | js-yaml@^3.4.3: 511 | version "3.6.1" 512 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30" 513 | dependencies: 514 | argparse "^1.0.7" 515 | esprima "^2.6.0" 516 | 517 | jsonfile@^2.1.0: 518 | version "2.4.0" 519 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" 520 | optionalDependencies: 521 | graceful-fs "^4.1.6" 522 | 523 | kind-of@^3.0.2: 524 | version "3.0.4" 525 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.0.4.tgz#7b8ecf18a4e17f8269d73b501c9f232c96887a74" 526 | dependencies: 527 | is-buffer "^1.0.2" 528 | 529 | klaw@^1.0.0: 530 | version "1.3.1" 531 | resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" 532 | optionalDependencies: 533 | graceful-fs "^4.1.9" 534 | 535 | lodash.omit@^4.0.2: 536 | version "4.5.0" 537 | resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" 538 | 539 | lodash@~2.4.1: 540 | version "2.4.2" 541 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e" 542 | 543 | lru-cache@2: 544 | version "2.7.3" 545 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" 546 | 547 | media-typer@0.3.0: 548 | version "0.3.0" 549 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 550 | 551 | merge-descriptors@1.0.1: 552 | version "1.0.1" 553 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 554 | 555 | merge@^1.1.3: 556 | version "1.2.0" 557 | resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" 558 | 559 | metalsmith-assets@^0.1.0: 560 | version "0.1.0" 561 | resolved "https://registry.yarnpkg.com/metalsmith-assets/-/metalsmith-assets-0.1.0.tgz#c838d483f09723ede8387449c6bfda9b3da3cc40" 562 | dependencies: 563 | async "^0.7.0" 564 | debug "^0.8.1" 565 | merge "^1.1.3" 566 | recursive-readdir "^1.0.0" 567 | stat-mode "^0.2.0" 568 | 569 | metalsmith-changed@~0.2: 570 | version "0.2.0" 571 | resolved "https://registry.yarnpkg.com/metalsmith-changed/-/metalsmith-changed-0.2.0.tgz#b6802e93559ca9529844383b7a4e16de96f2a39b" 572 | dependencies: 573 | debug "^2.2.0" 574 | micromatch "^2.1.6" 575 | 576 | metalsmith-ignore@~0.1: 577 | version "0.1.2" 578 | resolved "https://registry.yarnpkg.com/metalsmith-ignore/-/metalsmith-ignore-0.1.2.tgz#6ae6c694ba62a41585e8b481a11e2928c5ac4028" 579 | dependencies: 580 | multimatch "^0.1.0" 581 | 582 | metalsmith-layouts@~1.4: 583 | version "1.4.4" 584 | resolved "https://registry.yarnpkg.com/metalsmith-layouts/-/metalsmith-layouts-1.4.4.tgz#986c0952f0d3303e0dc035afba4852ae9b1674f8" 585 | dependencies: 586 | async "^1.3.0" 587 | consolidate "^0.14.0" 588 | debug "^2.2.0" 589 | extend "^3.0.0" 590 | fs-readdir-recursive "^1.0.0" 591 | is-utf8 "^0.2.0" 592 | lodash.omit "^4.0.2" 593 | multimatch "^2.0.0" 594 | 595 | metalsmith-markdown-remarkable@^0.1.1: 596 | version "0.1.1" 597 | resolved "https://registry.yarnpkg.com/metalsmith-markdown-remarkable/-/metalsmith-markdown-remarkable-0.1.1.tgz#bbfcff4f1590ae62b40fa0f3fd35779c09abbd8e" 598 | dependencies: 599 | debug "^2.1.3" 600 | remarkable "^1.6.0" 601 | 602 | metalsmith@~2: 603 | version "2.3.0" 604 | resolved "https://registry.yarnpkg.com/metalsmith/-/metalsmith-2.3.0.tgz#833afbb5a2a6385e2d9ae3d935e39e33eaea5231" 605 | dependencies: 606 | absolute "0.0.1" 607 | chalk "^1.1.3" 608 | clone "^1.0.2" 609 | co-fs-extra "^1.2.1" 610 | commander "^2.6.0" 611 | gray-matter "^2.0.0" 612 | has-generators "^1.0.1" 613 | is "^3.1.0" 614 | is-utf8 "~0.2.0" 615 | recursive-readdir "^2.1.0" 616 | rimraf "^2.2.8" 617 | stat-mode "^0.2.0" 618 | thunkify "^2.1.2" 619 | unyield "0.0.1" 620 | ware "^1.2.0" 621 | win-fork "^1.1.1" 622 | 623 | methods@~1.1.2: 624 | version "1.1.2" 625 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 626 | 627 | micromatch@^2.1.6: 628 | version "2.3.11" 629 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 630 | dependencies: 631 | arr-diff "^2.0.0" 632 | array-unique "^0.2.1" 633 | braces "^1.8.2" 634 | expand-brackets "^0.1.4" 635 | extglob "^0.3.1" 636 | filename-regex "^2.0.0" 637 | is-extglob "^1.0.0" 638 | is-glob "^2.0.1" 639 | kind-of "^3.0.2" 640 | normalize-path "^2.0.1" 641 | object.omit "^2.0.0" 642 | parse-glob "^3.0.4" 643 | regex-cache "^0.4.2" 644 | 645 | mime-db@~1.24.0: 646 | version "1.24.0" 647 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.24.0.tgz#e2d13f939f0016c6e4e9ad25a8652f126c467f0c" 648 | 649 | mime-types@~2.1.11: 650 | version "2.1.12" 651 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.12.tgz#152ba256777020dd4663f54c2e7bc26381e71729" 652 | dependencies: 653 | mime-db "~1.24.0" 654 | 655 | mime@1.3.4: 656 | version "1.3.4" 657 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" 658 | 659 | minimatch@^3.0.0, minimatch@^3.0.2: 660 | version "3.0.3" 661 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" 662 | dependencies: 663 | brace-expansion "^1.0.0" 664 | 665 | minimatch@~0.2.14: 666 | version "0.2.14" 667 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" 668 | dependencies: 669 | lru-cache "2" 670 | sigmund "~1.0.0" 671 | 672 | minimatch@0.3.0: 673 | version "0.3.0" 674 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" 675 | dependencies: 676 | lru-cache "2" 677 | sigmund "~1.0.0" 678 | 679 | minimatch@3.0.2: 680 | version "3.0.2" 681 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.2.tgz#0f398a7300ea441e9c348c83d98ab8c9dbf9c40a" 682 | dependencies: 683 | brace-expansion "^1.0.0" 684 | 685 | ms@0.7.1: 686 | version "0.7.1" 687 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" 688 | 689 | multimatch@^0.1.0: 690 | version "0.1.0" 691 | resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-0.1.0.tgz#099d9f8f8463ac36cfbfa27360bc16cee87ded64" 692 | dependencies: 693 | lodash "~2.4.1" 694 | minimatch "~0.2.14" 695 | 696 | multimatch@^2.0.0: 697 | version "2.1.0" 698 | resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" 699 | dependencies: 700 | array-differ "^1.0.0" 701 | array-union "^1.0.1" 702 | arrify "^1.0.0" 703 | minimatch "^3.0.0" 704 | 705 | negotiator@0.6.1: 706 | version "0.6.1" 707 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" 708 | 709 | normalize-path@^2.0.1: 710 | version "2.0.1" 711 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" 712 | 713 | object.omit@^2.0.0: 714 | version "2.0.1" 715 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 716 | dependencies: 717 | for-own "^0.1.4" 718 | is-extendable "^0.1.1" 719 | 720 | on-finished@~2.3.0: 721 | version "2.3.0" 722 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 723 | dependencies: 724 | ee-first "1.1.1" 725 | 726 | once@^1.3.0: 727 | version "1.4.0" 728 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 729 | dependencies: 730 | wrappy "1" 731 | 732 | optimist@~0.3, optimist@~0.3.5: 733 | version "0.3.7" 734 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9" 735 | dependencies: 736 | wordwrap "~0.0.2" 737 | 738 | parse-glob@^3.0.4: 739 | version "3.0.4" 740 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 741 | dependencies: 742 | glob-base "^0.3.0" 743 | is-dotfile "^1.0.0" 744 | is-extglob "^1.0.0" 745 | is-glob "^2.0.0" 746 | 747 | parseurl@~1.3.1: 748 | version "1.3.1" 749 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" 750 | 751 | path-is-absolute@^1.0.0: 752 | version "1.0.1" 753 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 754 | 755 | path-to-regexp@0.1.7: 756 | version "0.1.7" 757 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 758 | 759 | preserve@^0.2.0: 760 | version "0.2.0" 761 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 762 | 763 | proxy-addr@~1.1.2: 764 | version "1.1.2" 765 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.2.tgz#b4cc5f22610d9535824c123aef9d3cf73c40ba37" 766 | dependencies: 767 | forwarded "~0.1.0" 768 | ipaddr.js "1.1.1" 769 | 770 | qs@6.2.0: 771 | version "6.2.0" 772 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b" 773 | 774 | randomatic@^1.1.3: 775 | version "1.1.5" 776 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.5.tgz#5e9ef5f2d573c67bd2b8124ae90b5156e457840b" 777 | dependencies: 778 | is-number "^2.0.2" 779 | kind-of "^3.0.2" 780 | 781 | range-parser@~1.2.0: 782 | version "1.2.0" 783 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" 784 | 785 | recursive-readdir@^1.0.0: 786 | version "1.3.0" 787 | resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-1.3.0.tgz#c6e66c9ae473f4928f8e6c67a05d80e7a56528ef" 788 | dependencies: 789 | minimatch "0.3.0" 790 | 791 | recursive-readdir@^2.1.0: 792 | version "2.1.0" 793 | resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.1.0.tgz#78b7bfd79582d3d7596b8ff1bd29fbd50229f6aa" 794 | dependencies: 795 | minimatch "3.0.2" 796 | 797 | regex-cache@^0.4.2: 798 | version "0.4.3" 799 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" 800 | dependencies: 801 | is-equal-shallow "^0.1.3" 802 | is-primitive "^2.0.0" 803 | 804 | remarkable@^1.6.0: 805 | version "1.7.1" 806 | resolved "https://registry.yarnpkg.com/remarkable/-/remarkable-1.7.1.tgz#aaca4972100b66a642a63a1021ca4bac1be3bff6" 807 | dependencies: 808 | argparse "~0.1.15" 809 | autolinker "~0.15.0" 810 | 811 | repeat-element@^1.1.2: 812 | version "1.1.2" 813 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 814 | 815 | repeat-string@^1.5.2: 816 | version "1.6.1" 817 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 818 | 819 | rimraf@^2.2.8: 820 | version "2.5.4" 821 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" 822 | dependencies: 823 | glob "^7.0.5" 824 | 825 | send@0.14.1: 826 | version "0.14.1" 827 | resolved "https://registry.yarnpkg.com/send/-/send-0.14.1.tgz#a954984325392f51532a7760760e459598c89f7a" 828 | dependencies: 829 | debug "~2.2.0" 830 | depd "~1.1.0" 831 | destroy "~1.0.4" 832 | encodeurl "~1.0.1" 833 | escape-html "~1.0.3" 834 | etag "~1.7.0" 835 | fresh "0.3.0" 836 | http-errors "~1.5.0" 837 | mime "1.3.4" 838 | ms "0.7.1" 839 | on-finished "~2.3.0" 840 | range-parser "~1.2.0" 841 | statuses "~1.3.0" 842 | 843 | serve-static@~1.11.1: 844 | version "1.11.1" 845 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.1.tgz#d6cce7693505f733c759de57befc1af76c0f0805" 846 | dependencies: 847 | encodeurl "~1.0.1" 848 | escape-html "~1.0.3" 849 | parseurl "~1.3.1" 850 | send "0.14.1" 851 | 852 | setprototypeof@1.0.1: 853 | version "1.0.1" 854 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.1.tgz#52009b27888c4dc48f591949c0a8275834c1ca7e" 855 | 856 | sigmund@~1.0.0: 857 | version "1.0.1" 858 | resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" 859 | 860 | source-map@~0.1.7: 861 | version "0.1.43" 862 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" 863 | dependencies: 864 | amdefine ">=0.0.4" 865 | 866 | sprintf-js@~1.0.2: 867 | version "1.0.3" 868 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 869 | 870 | stat-mode@^0.2.0: 871 | version "0.2.2" 872 | resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" 873 | 874 | "statuses@>= 1.3.0 < 2", statuses@~1.3.0: 875 | version "1.3.0" 876 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.0.tgz#8e55758cb20e7682c1f4fce8dcab30bf01d1e07a" 877 | 878 | strip-ansi@^3.0.0: 879 | version "3.0.1" 880 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 881 | dependencies: 882 | ansi-regex "^2.0.0" 883 | 884 | supports-color@^2.0.0: 885 | version "2.0.0" 886 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 887 | 888 | thunkify-wrap@~1.0.4: 889 | version "1.0.4" 890 | resolved "https://registry.yarnpkg.com/thunkify-wrap/-/thunkify-wrap-1.0.4.tgz#b52be548ddfefda20e00b58c6096762b43dd6880" 891 | dependencies: 892 | enable "1" 893 | 894 | thunkify@^2.1.2: 895 | version "2.1.2" 896 | resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" 897 | 898 | type-is@~1.6.13: 899 | version "1.6.13" 900 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.13.tgz#6e83ba7bc30cd33a7bb0b7fb00737a2085bf9d08" 901 | dependencies: 902 | media-typer "0.3.0" 903 | mime-types "~2.1.11" 904 | 905 | uglify-js@~2.3: 906 | version "2.3.6" 907 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a" 908 | dependencies: 909 | async "~0.2.6" 910 | optimist "~0.3.5" 911 | source-map "~0.1.7" 912 | 913 | underscore.string@~2.4.0: 914 | version "2.4.0" 915 | resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz#8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b" 916 | 917 | underscore@~1.7.0: 918 | version "1.7.0" 919 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" 920 | 921 | unpipe@~1.0.0: 922 | version "1.0.0" 923 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 924 | 925 | unyield@0.0.1: 926 | version "0.0.1" 927 | resolved "https://registry.yarnpkg.com/unyield/-/unyield-0.0.1.tgz#150e65da42bf7742445b958a64eb9b85d1d2b180" 928 | dependencies: 929 | co "~3.1.0" 930 | 931 | utils-merge@1.0.0: 932 | version "1.0.0" 933 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" 934 | 935 | vary@~1.1.0: 936 | version "1.1.0" 937 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140" 938 | 939 | ware@^1.2.0: 940 | version "1.3.0" 941 | resolved "https://registry.yarnpkg.com/ware/-/ware-1.3.0.tgz#d1b14f39d2e2cb4ab8c4098f756fe4b164e473d4" 942 | dependencies: 943 | wrap-fn "^0.1.0" 944 | 945 | win-fork@^1.1.1: 946 | version "1.1.1" 947 | resolved "https://registry.yarnpkg.com/win-fork/-/win-fork-1.1.1.tgz#8f58e0656fca00adc8c86a2b89e3cd2d6a2d5e5e" 948 | 949 | wordwrap@~0.0.2: 950 | version "0.0.3" 951 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 952 | 953 | wrap-fn@^0.1.0: 954 | version "0.1.5" 955 | resolved "https://registry.yarnpkg.com/wrap-fn/-/wrap-fn-0.1.5.tgz#f21b6e41016ff4a7e31720dbc63a09016bdf9845" 956 | dependencies: 957 | co "3.1.0" 958 | 959 | wrappy@1: 960 | version "1.0.2" 961 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 962 | 963 | --------------------------------------------------------------------------------