:root{--light-color-text: #333;--light-color-link: #9600ff;--light-color-divider: #c5c7c9;--light-color-background: #f2f4f8;--light-color-background-header: #eff0f1;--light-color-header: #285786;--dark-color-text: #f5f5f5;--dark-color-link: #b958ff;--dark-color-divider: #9096a2;--dark-color-background: #2b2e33;--dark-color-background-header: #1e2024;--dark-color-header: #c87bff}@media(prefers-color-scheme: light){:root{--color-text: var(--light-color-text);--color-link: var(--light-color-link);--color-divider: var(--light-color-divider);--color-background: var(--light-color-background);--color-background-header: var(--light-color-background-header);--color-header: var(--light-color-header)}code[class*=language-],pre[class*=language-]{color:#393a34;font-family:Consolas,"Bitstream Vera Sans Mono","Courier New",Courier,monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;font-size:.9em;line-height:1.2em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre>code[class*=language-]{font-size:1em}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{background:#c1def1}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{background:#c1def1}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border:1px solid #ddd;background-color:#fff}:not(pre)>code[class*=language-]{padding:.2em;padding-top:1px;padding-bottom:1px;background:#f8f8f8;border:1px solid #ddd}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:green;font-style:italic}.token.namespace{opacity:.7}.token.string{color:#a31515}.token.operator,.token.punctuation{color:#393a34}.token.boolean,.token.constant,.token.inserted,.token.number,.token.symbol,.token.url,.token.variable{color:#36acaa}.language-autohotkey .token.selector,.language-json .token.boolean,.language-json .token.number,.token.atrule,.token.attr-value,.token.keyword,code[class*=language-css]{color:blue}.token.function{color:#393a34}.language-autohotkey .token.tag,.token.deleted{color:#9a050f}.language-autohotkey .token.keyword,.token.selector{color:#00009f}.token.important{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.language-json .token.property,.token.class-name{color:#2b91af}.token.selector,.token.tag{color:maroon}.token.attr-name,.token.entity,.token.property,.token.regex{color:red}.token.directive.tag .tag{background:#ff0;color:#393a34}.line-numbers.line-numbers .line-numbers-rows{border-right-color:#a5a5a5}.line-numbers .line-numbers-rows>span:before{color:#2b91af}.line-highlight.line-highlight{background:rgba(193, 222, 241, 0.2);background:-webkit-linear-gradient(left, rgba(193, 222, 241, 0.2) 70%, rgba(221, 222, 241, 0));background:linear-gradient(to right, rgba(193, 222, 241, 0.2) 70%, rgba(221, 222, 241, 0))}}@media(prefers-color-scheme: dark){:root{--color-text: var(--dark-color-text);--color-link: var(--dark-color-link);--color-divider: var(--dark-color-divider);--color-background: var(--dark-color-background);--color-background-header: var(--dark-color-background-header);--color-header: var(--dark-color-header)}code[class*=language-],pre[class*=language-]{color:#d4d4d4;font-size:13px;text-shadow:none;font-family:Menlo,Monaco,Consolas,"Andale Mono","Ubuntu Mono","Courier New",monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#264f78}}@media print and (prefers-color-scheme: dark){code[class*=language-],pre[class*=language-]{text-shadow:none}}@media(prefers-color-scheme: dark){pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;background:#1e1e1e}}@media(prefers-color-scheme: dark){:not(pre)>code[class*=language-]{padding:.1em .3em;border-radius:.3em;color:#db4c69;background:#1e1e1e}}@media(prefers-color-scheme: dark){.namespace{opacity:.7}}@media(prefers-color-scheme: dark){.token.doctype .token.doctype-tag{color:#569cd6}}@media(prefers-color-scheme: dark){.token.doctype .token.name{color:#9cdcfe}}@media(prefers-color-scheme: dark){.token.comment,.token.prolog{color:#6a9955}}@media(prefers-color-scheme: dark){.language-html .language-css .token.punctuation,.language-html .language-javascript .token.punctuation,.token.punctuation{color:#d4d4d4}}@media(prefers-color-scheme: dark){.token.boolean,.token.constant,.token.inserted,.token.number,.token.property,.token.symbol,.token.tag,.token.unit{color:#b5cea8}}@media(prefers-color-scheme: dark){.token.attr-name,.token.builtin,.token.char,.token.deleted,.token.selector,.token.string{color:#ce9178}}@media(prefers-color-scheme: dark){.language-css .token.string.url{text-decoration:underline}}@media(prefers-color-scheme: dark){.token.entity,.token.operator{color:#d4d4d4}}@media(prefers-color-scheme: dark){.token.operator.arrow{color:#569cd6}}@media(prefers-color-scheme: dark){.token.atrule{color:#ce9178}}@media(prefers-color-scheme: dark){.token.atrule .token.rule{color:#c586c0}}@media(prefers-color-scheme: dark){.token.atrule .token.url{color:#9cdcfe}}@media(prefers-color-scheme: dark){.token.atrule .token.url .token.function{color:#dcdcaa}}@media(prefers-color-scheme: dark){.token.atrule .token.url .token.punctuation{color:#d4d4d4}}@media(prefers-color-scheme: dark){.token.keyword{color:#569cd6}}@media(prefers-color-scheme: dark){.token.keyword.control-flow,.token.keyword.module{color:#c586c0}}@media(prefers-color-scheme: dark){.token.function,.token.function .token.maybe-class-name{color:#dcdcaa}}@media(prefers-color-scheme: dark){.token.regex{color:#d16969}}@media(prefers-color-scheme: dark){.token.important{color:#569cd6}}@media(prefers-color-scheme: dark){.token.italic{font-style:italic}}@media(prefers-color-scheme: dark){.token.constant{color:#9cdcfe}}@media(prefers-color-scheme: dark){.token.class-name,.token.maybe-class-name{color:#4ec9b0}}@media(prefers-color-scheme: dark){.token.console{color:#9cdcfe}}@media(prefers-color-scheme: dark){.token.parameter{color:#9cdcfe}}@media(prefers-color-scheme: dark){.token.interpolation{color:#9cdcfe}}@media(prefers-color-scheme: dark){.token.punctuation.interpolation-punctuation{color:#569cd6}}@media(prefers-color-scheme: dark){.token.boolean{color:#569cd6}}@media(prefers-color-scheme: dark){.token.exports .token.maybe-class-name,.token.imports .token.maybe-class-name,.token.property,.token.variable{color:#9cdcfe}}@media(prefers-color-scheme: dark){.token.selector{color:#d7ba7d}}@media(prefers-color-scheme: dark){.token.escape{color:#d7ba7d}}@media(prefers-color-scheme: dark){.token.tag{color:#569cd6}}@media(prefers-color-scheme: dark){.token.tag .token.punctuation{color:grey}}@media(prefers-color-scheme: dark){.token.cdata{color:grey}}@media(prefers-color-scheme: dark){.token.attr-name{color:#9cdcfe}}@media(prefers-color-scheme: dark){.token.attr-value,.token.attr-value .token.punctuation{color:#ce9178}}@media(prefers-color-scheme: dark){.token.attr-value .token.punctuation.attr-equals{color:#d4d4d4}}@media(prefers-color-scheme: dark){.token.entity{color:#569cd6}}@media(prefers-color-scheme: dark){.token.namespace{color:#4ec9b0}}@media(prefers-color-scheme: dark){code[class*=language-javascript],code[class*=language-jsx],code[class*=language-tsx],code[class*=language-typescript],pre[class*=language-javascript],pre[class*=language-jsx],pre[class*=language-tsx],pre[class*=language-typescript]{color:#9cdcfe}}@media(prefers-color-scheme: dark){code[class*=language-css],pre[class*=language-css]{color:#ce9178}}@media(prefers-color-scheme: dark){code[class*=language-html],pre[class*=language-html]{color:#d4d4d4}}@media(prefers-color-scheme: dark){.language-regex .token.anchor{color:#dcdcaa}}@media(prefers-color-scheme: dark){.language-html .token.punctuation{color:grey}}@media(prefers-color-scheme: dark){pre[class*=language-]>code[class*=language-]{position:relative;z-index:1}}@media(prefers-color-scheme: dark){.line-highlight.line-highlight{background:#f7ebc6;box-shadow:inset 5px 0 0 #f7d87c;z-index:0}}:root[data-theme=light]{--color-text: var(--light-color-text);--color-link: var(--light-color-link);--color-divider: var(--light-color-divider);--color-background: var(--light-color-background);--color-background-header: var(--light-color-background-header);--color-header: var(--light-color-header)}:root[data-theme=light] code[class*=language-],:root[data-theme=light] pre[class*=language-]{color:#393a34;font-family:Consolas,"Bitstream Vera Sans Mono","Courier New",Courier,monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;font-size:.9em;line-height:1.2em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}:root[data-theme=light] pre>code[class*=language-]{font-size:1em}:root[data-theme=light] code[class*=language-] ::-moz-selection,:root[data-theme=light] code[class*=language-]::-moz-selection,:root[data-theme=light] pre[class*=language-] ::-moz-selection,:root[data-theme=light] pre[class*=language-]::-moz-selection{background:#c1def1}:root[data-theme=light] code[class*=language-] ::selection,:root[data-theme=light] code[class*=language-]::selection,:root[data-theme=light] pre[class*=language-] ::selection,:root[data-theme=light] pre[class*=language-]::selection{background:#c1def1}:root[data-theme=light] pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border:1px solid #ddd;background-color:#fff}:root[data-theme=light] :not(pre)>code[class*=language-]{padding:.2em;padding-top:1px;padding-bottom:1px;background:#f8f8f8;border:1px solid #ddd}:root[data-theme=light] .token.cdata,:root[data-theme=light] .token.comment,:root[data-theme=light] .token.doctype,:root[data-theme=light] .token.prolog{color:green;font-style:italic}:root[data-theme=light] .token.namespace{opacity:.7}:root[data-theme=light] .token.string{color:#a31515}:root[data-theme=light] .token.operator,:root[data-theme=light] .token.punctuation{color:#393a34}:root[data-theme=light] .token.boolean,:root[data-theme=light] .token.constant,:root[data-theme=light] .token.inserted,:root[data-theme=light] .token.number,:root[data-theme=light] .token.symbol,:root[data-theme=light] .token.url,:root[data-theme=light] .token.variable{color:#36acaa}:root[data-theme=light] .language-autohotkey .token.selector,:root[data-theme=light] .language-json .token.boolean,:root[data-theme=light] .language-json .token.number,:root[data-theme=light] .token.atrule,:root[data-theme=light] .token.attr-value,:root[data-theme=light] .token.keyword,:root[data-theme=light] code[class*=language-css]{color:blue}:root[data-theme=light] .token.function{color:#393a34}:root[data-theme=light] .language-autohotkey .token.tag,:root[data-theme=light] .token.deleted{color:#9a050f}:root[data-theme=light] .language-autohotkey .token.keyword,:root[data-theme=light] .token.selector{color:#00009f}:root[data-theme=light] .token.important{color:#e90}:root[data-theme=light] .token.bold,:root[data-theme=light] .token.important{font-weight:700}:root[data-theme=light] .token.italic{font-style:italic}:root[data-theme=light] .language-json .token.property,:root[data-theme=light] .token.class-name{color:#2b91af}:root[data-theme=light] .token.selector,:root[data-theme=light] .token.tag{color:maroon}:root[data-theme=light] .token.attr-name,:root[data-theme=light] .token.entity,:root[data-theme=light] .token.property,:root[data-theme=light] .token.regex{color:red}:root[data-theme=light] .token.directive.tag .tag{background:#ff0;color:#393a34}:root[data-theme=light] .line-numbers.line-numbers .line-numbers-rows{border-right-color:#a5a5a5}:root[data-theme=light] .line-numbers .line-numbers-rows>span:before{color:#2b91af}:root[data-theme=light] .line-highlight.line-highlight{background:rgba(193, 222, 241, 0.2);background:-webkit-linear-gradient(left, rgba(193, 222, 241, 0.2) 70%, rgba(221, 222, 241, 0));background:linear-gradient(to right, rgba(193, 222, 241, 0.2) 70%, rgba(221, 222, 241, 0))}:root[data-theme=dark]{--color-text: var(--dark-color-text);--color-link: var(--dark-color-link);--color-divider: var(--dark-color-divider);--color-background: var(--dark-color-background);--color-background-header: var(--dark-color-background-header);--color-header: var(--dark-color-header)}:root[data-theme=dark] code[class*=language-],:root[data-theme=dark] pre[class*=language-]{color:#d4d4d4;font-size:13px;text-shadow:none;font-family:Menlo,Monaco,Consolas,"Andale Mono","Ubuntu Mono","Courier New",monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}:root[data-theme=dark] code[class*=language-] ::selection,:root[data-theme=dark] code[class*=language-]::selection,:root[data-theme=dark] pre[class*=language-] ::selection,:root[data-theme=dark] pre[class*=language-]::selection{text-shadow:none;background:#264f78}@media print{:root[data-theme=dark] code[class*=language-],:root[data-theme=dark] pre[class*=language-]{text-shadow:none}}:root[data-theme=dark] pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;background:#1e1e1e}:root[data-theme=dark] :not(pre)>code[class*=language-]{padding:.1em .3em;border-radius:.3em;color:#db4c69;background:#1e1e1e}:root[data-theme=dark] .namespace{opacity:.7}:root[data-theme=dark] .token.doctype .token.doctype-tag{color:#569cd6}:root[data-theme=dark] .token.doctype .token.name{color:#9cdcfe}:root[data-theme=dark] .token.comment,:root[data-theme=dark] .token.prolog{color:#6a9955}:root[data-theme=dark] .language-html .language-css .token.punctuation,:root[data-theme=dark] .language-html .language-javascript .token.punctuation,:root[data-theme=dark] .token.punctuation{color:#d4d4d4}:root[data-theme=dark] .token.boolean,:root[data-theme=dark] .token.constant,:root[data-theme=dark] .token.inserted,:root[data-theme=dark] .token.number,:root[data-theme=dark] .token.property,:root[data-theme=dark] .token.symbol,:root[data-theme=dark] .token.tag,:root[data-theme=dark] .token.unit{color:#b5cea8}:root[data-theme=dark] .token.attr-name,:root[data-theme=dark] .token.builtin,:root[data-theme=dark] .token.char,:root[data-theme=dark] .token.deleted,:root[data-theme=dark] .token.selector,:root[data-theme=dark] .token.string{color:#ce9178}:root[data-theme=dark] .language-css .token.string.url{text-decoration:underline}:root[data-theme=dark] .token.entity,:root[data-theme=dark] .token.operator{color:#d4d4d4}:root[data-theme=dark] .token.operator.arrow{color:#569cd6}:root[data-theme=dark] .token.atrule{color:#ce9178}:root[data-theme=dark] .token.atrule .token.rule{color:#c586c0}:root[data-theme=dark] .token.atrule .token.url{color:#9cdcfe}:root[data-theme=dark] .token.atrule .token.url .token.function{color:#dcdcaa}:root[data-theme=dark] .token.atrule .token.url .token.punctuation{color:#d4d4d4}:root[data-theme=dark] .token.keyword{color:#569cd6}:root[data-theme=dark] .token.keyword.control-flow,:root[data-theme=dark] .token.keyword.module{color:#c586c0}:root[data-theme=dark] .token.function,:root[data-theme=dark] .token.function .token.maybe-class-name{color:#dcdcaa}:root[data-theme=dark] .token.regex{color:#d16969}:root[data-theme=dark] .token.important{color:#569cd6}:root[data-theme=dark] .token.italic{font-style:italic}:root[data-theme=dark] .token.constant{color:#9cdcfe}:root[data-theme=dark] .token.class-name,:root[data-theme=dark] .token.maybe-class-name{color:#4ec9b0}:root[data-theme=dark] .token.console{color:#9cdcfe}:root[data-theme=dark] .token.parameter{color:#9cdcfe}:root[data-theme=dark] .token.interpolation{color:#9cdcfe}:root[data-theme=dark] .token.punctuation.interpolation-punctuation{color:#569cd6}:root[data-theme=dark] .token.boolean{color:#569cd6}:root[data-theme=dark] .token.exports .token.maybe-class-name,:root[data-theme=dark] .token.imports .token.maybe-class-name,:root[data-theme=dark] .token.property,:root[data-theme=dark] .token.variable{color:#9cdcfe}:root[data-theme=dark] .token.selector{color:#d7ba7d}:root[data-theme=dark] .token.escape{color:#d7ba7d}:root[data-theme=dark] .token.tag{color:#569cd6}:root[data-theme=dark] .token.tag .token.punctuation{color:grey}:root[data-theme=dark] .token.cdata{color:grey}:root[data-theme=dark] .token.attr-name{color:#9cdcfe}:root[data-theme=dark] .token.attr-value,:root[data-theme=dark] .token.attr-value .token.punctuation{color:#ce9178}:root[data-theme=dark] .token.attr-value .token.punctuation.attr-equals{color:#d4d4d4}:root[data-theme=dark] .token.entity{color:#569cd6}:root[data-theme=dark] .token.namespace{color:#4ec9b0}:root[data-theme=dark] code[class*=language-javascript],:root[data-theme=dark] code[class*=language-jsx],:root[data-theme=dark] code[class*=language-tsx],:root[data-theme=dark] code[class*=language-typescript],:root[data-theme=dark] pre[class*=language-javascript],:root[data-theme=dark] pre[class*=language-jsx],:root[data-theme=dark] pre[class*=language-tsx],:root[data-theme=dark] pre[class*=language-typescript]{color:#9cdcfe}:root[data-theme=dark] code[class*=language-css],:root[data-theme=dark] pre[class*=language-css]{color:#ce9178}:root[data-theme=dark] code[class*=language-html],:root[data-theme=dark] pre[class*=language-html]{color:#d4d4d4}:root[data-theme=dark] .language-regex .token.anchor{color:#dcdcaa}:root[data-theme=dark] .language-html .token.punctuation{color:grey}:root[data-theme=dark] pre[class*=language-]>code[class*=language-]{position:relative;z-index:1}:root[data-theme=dark] .line-highlight.line-highlight{background:#f7ebc6;box-shadow:inset 5px 0 0 #f7d87c;z-index:0}body{background-color:var(--color-background);padding:0;margin:0;color:var(--color-text);font-family:"Segoe UI",sans-serif;font-size:16px}.typography h1{position:relative;left:-3px;font-weight:300;font-size:42px;color:var(--color-header);margin:0 0 1rem 0}.typography h2{position:relative;left:-2px;font-weight:300;font-size:32px;color:var(--color-header);margin:1.5rem 0 1rem 0}.typography h3{position:relative;left:-2px;font-weight:300;font-size:24px;color:var(--color-header);margin:1.5rem 0 1rem 0}.typography p{line-height:1.5em;margin:1em 0}.typography a{color:var(--color-link);text-decoration:none}.typography a:hover{text-decoration:underline}.typography code,.typography pre{font-family:"Segoe UI Mono",monospace;padding:.2em;margin:0;font-size:85%;white-space:pre-wrap}.typography pre{padding:10px}.typography pre code{padding:0;font-size:100%;background-color:rgba(0,0,0,0)}.container{max-width:1600px;margin:0 auto}.row{display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"navigation typography sidebar";gap:10px;padding:1em}@media(max-width: 768px){.row{grid-template-areas:"typography" "navigation"}}header{background-color:var(--color-background-header);border-bottom:1px solid var(--color-divider);text-transform:uppercase;z-index:10}@media(min-width: 768px){header .container{display:flex;justify-content:space-between}}header .logo{padding-left:37px;text-decoration:none;color:var(--color-text);font-size:20px;line-height:60px;height:60px;display:block;background-image:url(../images/logo-32.png);background-repeat:no-repeat;background-position:left center}header nav ul{display:inline-block;padding:0;margin:0 -15px 0 0;list-style:none}header nav li{display:inline}header nav a{display:inline-block;margin-right:1rem;color:var(--color-text);text-decoration:none;margin-bottom:.5rem;transition:opacity .2s}header nav a.current{color:var(--color-link)}header nav a:hover{opacity:.75}@media(min-width: 768px){header nav{margin-right:1em}header nav a{margin-bottom:0;font-size:20px;line-height:60px}}.content{height:100%;min-height:calc(100vh - 60px - 60px)}.lead{font-size:24px;font-weight:300}.main{padding:1rem}@media(min-width: 768px){nav.navigation{max-height:calc(100vh - 60px - 2em);overflow:auto;position:sticky;top:calc(30px + 1em)}}.navigation{box-sizing:border-box;grid-area:navigation;padding-right:1em;padding-bottom:1.5rem}.navigation ul{list-style:none;padding-left:1.5em}.navigation>ul{padding:0;margin:0}.navigation a{display:inline-block;padding:.2em;text-decoration:none;color:var(--color-text);transition:opacity .2s}.navigation a.current{color:var(--color-link)}.navigation a:hover{color:var(--color-link);text-decoration:underline}.toc-container{position:sticky;top:0;max-height:100vh;overflow-y:auto;display:none}@media(min-width: 768px){.toc-container{display:inline-block}}.toc-container ol{list-style:none;padding-left:20px}.toc-container a{color:var(--color-text);text-decoration:none}.toc-container a:hover{color:var(--color-link);text-decoration:underline}.tag-info{border-left:1px solid var(--color-divider);display:grid;grid-auto-flow:row;grid-template-columns:auto 1fr;gap:0 1em}.tag-info dt{grid-column-start:1;font-weight:bold;padding-left:1em}.tag-info dt::after{content:":"}.tag-info dd{margin:0}.box{padding:.5em;padding-left:1em;margin-bottom:1em}.box p{margin:0;padding-left:1em}.box .title{padding-left:0}table{border-collapse:collapse;margin-bottom:1rem}th,td{border:1px solid var(--color-divider);padding:.2em .5em}footer{display:flex;flex-direction:row;justify-content:space-between;padding-bottom:1em}.theme-container{display:flex;align-items:center}#theme{margin-left:.5em}.edit-github{text-decoration:none;color:var(--color-text);border:1px solid var(--color-divider);padding:.5em}.edit-github:hover{color:var(--color-link);border-color:var(--color-link)}