CINXE.COM

<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><meta name="generator" content="Gatsby 2.32.13"/><title data-react-helmet="true"></title><link rel="icon" href="/favicon-32x32.png?v=6fe933b597bc422f15f1d811c829b29e" type="image/png"/><link rel="manifest" href="/manifest.webmanifest" crossorigin="anonymous"/><link rel="apple-touch-icon" sizes="48x48" href="/icons/icon-48x48.png?v=6fe933b597bc422f15f1d811c829b29e"/><link rel="apple-touch-icon" sizes="72x72" href="/icons/icon-72x72.png?v=6fe933b597bc422f15f1d811c829b29e"/><link rel="apple-touch-icon" sizes="96x96" href="/icons/icon-96x96.png?v=6fe933b597bc422f15f1d811c829b29e"/><link rel="apple-touch-icon" sizes="144x144" href="/icons/icon-144x144.png?v=6fe933b597bc422f15f1d811c829b29e"/><link rel="apple-touch-icon" sizes="192x192" href="/icons/icon-192x192.png?v=6fe933b597bc422f15f1d811c829b29e"/><link rel="apple-touch-icon" sizes="256x256" href="/icons/icon-256x256.png?v=6fe933b597bc422f15f1d811c829b29e"/><link rel="apple-touch-icon" sizes="384x384" href="/icons/icon-384x384.png?v=6fe933b597bc422f15f1d811c829b29e"/><link rel="apple-touch-icon" sizes="512x512" href="/icons/icon-512x512.png?v=6fe933b597bc422f15f1d811c829b29e"/><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/static/webfonts/s/lora/v24/0QI6MX1D_JOuGQbT0gvTJPa787weuxJBkq0.woff2"/><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/static/webfonts/s/lora/v24/0QI6MX1D_JOuGQbT0gvTJPa787z5vBJBkq0.woff2"/><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/static/webfonts/s/roboto/v30/KFOmCnqEu92Fr1Mu4mxK.woff2"/><link rel="preload" as="font" type="font/woff2" crossorigin="anonymous" href="/static/webfonts/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfBBc4.woff2"/><style>@font-face{font-family:Lora;font-style:normal;font-weight:400;src:url(/static/webfonts/s/lora/v24/0QI6MX1D_JOuGQbT0gvTJPa787weuxJBkq0.woff2) format("woff2");font-display:swap}@font-face{font-family:Lora;font-style:normal;font-weight:700;src:url(/static/webfonts/s/lora/v24/0QI6MX1D_JOuGQbT0gvTJPa787z5vBJBkq0.woff2) format("woff2");font-display:swap}@font-face{font-family:Lora;font-style:normal;font-weight:400;src:url(/static/webfonts/s/lora/v24/0QI6MX1D_JOuGQbT0gvTJPa787weuxJBkqs.woff) format("woff");font-display:swap}@font-face{font-family:Lora;font-style:normal;font-weight:700;src:url(/static/webfonts/s/lora/v24/0QI6MX1D_JOuGQbT0gvTJPa787z5vBJBkqs.woff) format("woff");font-display:swap}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(/static/webfonts/s/roboto/v30/KFOmCnqEu92Fr1Mu4mxK.woff2) format("woff2");font-display:swap}@font-face{font-family:Roboto;font-style:normal;font-weight:700;src:url(/static/webfonts/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfBBc4.woff2) format("woff2");font-display:swap}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(/static/webfonts/s/roboto/v30/KFOmCnqEu92Fr1Mu4mxM.woff) format("woff");font-display:swap}@font-face{font-family:Roboto;font-style:normal;font-weight:700;src:url(/static/webfonts/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfBBc-.woff) format("woff");font-display:swap}</style><style type="text/css"> .anchor.before { position: absolute; top: 0; left: 0; transform: translateX(-100%); padding-right: 4px; } .anchor.after { display: inline-block; padding-left: 4px; } h1 .anchor svg, h2 .anchor svg, h3 .anchor svg, h4 .anchor svg, h5 .anchor svg, h6 .anchor svg { visibility: hidden; } h1:hover .anchor svg, h2:hover .anchor svg, h3:hover .anchor svg, h4:hover .anchor svg, h5:hover .anchor svg, h6:hover .anchor svg, h1 .anchor:focus svg, h2 .anchor:focus svg, h3 .anchor:focus svg, h4 .anchor:focus svg, h5 .anchor:focus svg, h6 .anchor:focus svg { visibility: visible; } </style><script> document.addEventListener("DOMContentLoaded", function(event) { var hash = window.decodeURI(location.hash.replace('#', '')) if (hash !== '') { var element = document.getElementById(hash) if (element) { var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop var clientTop = document.documentElement.clientTop || document.body.clientTop || 0 var offset = element.getBoundingClientRect().top + scrollTop - clientTop // Wait for the browser to finish rendering before scrolling. setTimeout((function() { window.scrollTo(0, offset - 0) }), 0) } } }) </script><link as="script" rel="preload" href="/webpack-runtime-90b402f85379a04cefbd.js"/><link as="script" rel="preload" href="/framework-caaca52af16d464f8089.js"/><link as="script" rel="preload" href="/app-ab0b2e166b078cba7648.js"/><link as="script" rel="preload" href="/component---src-pages-index-js-1c6294bb8b36f45fa835.js"/><link as="fetch" rel="preload" href="/page-data/index/page-data.json" crossorigin="anonymous"/><link as="fetch" rel="preload" href="/page-data/app-data.json" crossorigin="anonymous"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"polyfill":["/polyfill-4245afbccd88fd6f0b01.js"],"app":["/app-ab0b2e166b078cba7648.js"],"component---src-pages-404-js":["/component---src-pages-404-js-2f5d668d6cf2b4e546e9.js"],"component---src-pages-glossary-js":["/component---src-pages-glossary-js-19f84ff6b1138d25b596.js"],"component---src-pages-index-js":["/component---src-pages-index-js-1c6294bb8b36f45fa835.js"],"component---src-pages-rules-js":["/component---src-pages-rules-js-73ebb55bca0ff38fa352.js"],"component---src-templates-changelog-js":["/component---src-templates-changelog-js-200eee19b1ca69eac2ba.js"],"component---src-templates-default-js":["/component---src-templates-default-js-8de82b13c3c509662894.js"],"component---src-templates-implementations-js":["/component---src-templates-implementations-js-03cfd879b7b95b617a19.js"],"component---src-templates-implementer-incomplete-js":["/component---src-templates-implementer-incomplete-js-d050df4183f131db7a18.js"],"component---src-templates-implementer-js":["/component---src-templates-implementer-js-277643159836f6ec1be7.js"],"component---src-templates-rule-js":["/component---src-templates-rule-js-4898566e69f7edfbf9e6.js"]};/*]]>*/</script><script src="/polyfill-4245afbccd88fd6f0b01.js" nomodule=""></script><script src="/component---src-pages-index-js-1c6294bb8b36f45fa835.js" async=""></script><script src="/app-ab0b2e166b078cba7648.js" async=""></script><script src="/framework-caaca52af16d464f8089.js" async=""></script><script src="/webpack-runtime-90b402f85379a04cefbd.js" async=""></script></body></html>