<!DOCTYPE html>

<html lang="en" theme="light">

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="mobile-web-app-capable" content="yes">
    <title>
        Atomic Reduction Operations
    </title>

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha256-eZrrJcwDc/3uDhsdt61sL2oOBY362qM3lon1gyExkL0=" crossorigin="anonymous" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css" integrity="sha256-3iu9jgsy9TpTwXKb7bNQzqWekRX7pPK+2OLj3R922fo=" crossorigin="anonymous" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/octicons/3.5.0/octicons.min.css" integrity="sha256-QiWfLIsCT02Sdwkogf6YMiQlj4NE84MKkzEMkZnMGdg=" crossorigin="anonymous" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.5.1/themes/prism.min.css" integrity="sha256-vtR0hSWRc3Tb26iuN2oZHt3KRUomwTufNIf5/4oeCyg=" crossorigin="anonymous" />
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@3.0.0/dist/css/basic/emojify.min.css" integrity="sha256-UOrvMOsSDSrW6szVLe8ZDZezBxh5IoIfgTwdNDgTjiU=" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@phosphor-icons/web@2.1.1/src/regular/style.min.css" integrity="sha256-QNJMddvOw2nuxWB7NDDMV3LXV9/S3Hf80zdG2sLr4Jc=" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@phosphor-icons/web@2.1.1/src/fill/style.min.css" integrity="sha256-e/kq5booqe0h3GOTLwByK2LKSYGL9pY7V5cqtjO7lCY=" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@phosphor-icons/web@2.1.1/src/bold/style.min.css" integrity="sha256-+uBilIEtXSdSLQpN4P3R5+EFKt5E2ZpfEiYOJIq6y48=" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/highlight.js@11.11.1/styles/github.min.css" integrity="sha256-Oppd74ucMR5a5Dq96FxjEzGF7tTw2fZ/6ksAqDCM8GY=" crossorigin="anonymous">
    <style>
        @import url(https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,500,500i|Source+Code+Pro:300,400,500|Source+Sans+Pro:300,300i,400,400i,600,600i|Source+Serif+Pro&subset=latin-ext);@import url(https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.7/katex.min.css);.tooltip{word-wrap:break-word;display:block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:.875rem;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;margin:0;opacity:0;position:absolute;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;top:0;white-space:normal;word-break:normal;word-spacing:normal;z-index:1070}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{border-color:unset;border-style:unset;display:block;height:.4rem;position:absolute;width:.8rem}.tooltip .tooltip-arrow:before{border-color:#0000;border-style:solid;content:"";position:absolute}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .tooltip-arrow:before,.bs-tooltip-top .tooltip-arrow:before{border-top-color:#777;border-width:.4rem .4rem 0;top:0}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .tooltip-arrow,.bs-tooltip-right .tooltip-arrow{height:.8rem;left:0;width:.4rem}.bs-tooltip-auto[x-placement^=right] .tooltip-arrow:before,.bs-tooltip-right .tooltip-arrow:before{border-right-color:#777;border-width:.4rem .4rem .4rem 0;right:0}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .tooltip-arrow:before,.bs-tooltip-bottom .tooltip-arrow:before{border-bottom-color:#777;border-width:0 .4rem .4rem;bottom:0}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .tooltip-arrow,.bs-tooltip-left .tooltip-arrow{height:.8rem;right:0;width:.4rem}.bs-tooltip-auto[x-placement^=left] .tooltip-arrow:before,.bs-tooltip-left .tooltip-arrow:before{border-left-color:#777;border-width:.4rem 0 .4rem .4rem;left:0}.tooltip-inner{background-color:#777;border-radius:.25rem;color:#fff;max-width:200px;padding:.25rem .5rem;text-align:center}

/*!
  Theme: GitHub
  Description: Light theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-light
  Current colors taken from GitHub's CSS
*/:root[theme=light] :not([theme])>*>.markdown-body .hljs-doctag,:root[theme=light] :not([theme])>*>.markdown-body .hljs-keyword,:root[theme=light] :not([theme])>*>.markdown-body .hljs-meta .hljs-keyword,:root[theme=light] :not([theme])>*>.markdown-body .hljs-template-tag,:root[theme=light] :not([theme])>*>.markdown-body .hljs-template-variable,:root[theme=light] :not([theme])>*>.markdown-body .hljs-type,:root[theme=light] :not([theme])>*>.markdown-body .hljs-variable.language_,:root[theme] [theme=light] .markdown-body .hljs-doctag,:root[theme] [theme=light] .markdown-body .hljs-keyword,:root[theme] [theme=light] .markdown-body .hljs-meta .hljs-keyword,:root[theme] [theme=light] .markdown-body .hljs-template-tag,:root[theme] [theme=light] .markdown-body .hljs-template-variable,:root[theme] [theme=light] .markdown-body .hljs-type,:root[theme] [theme=light] .markdown-body .hljs-variable.language_{color:#d73a49}:root[theme=light] :not([theme])>*>.markdown-body .hljs-title,:root[theme=light] :not([theme])>*>.markdown-body .hljs-title.class_,:root[theme=light] :not([theme])>*>.markdown-body .hljs-title.class_.inherited__,:root[theme=light] :not([theme])>*>.markdown-body .hljs-title.function_,:root[theme] [theme=light] .markdown-body .hljs-title,:root[theme] [theme=light] .markdown-body .hljs-title.class_,:root[theme] [theme=light] .markdown-body .hljs-title.class_.inherited__,:root[theme] [theme=light] .markdown-body .hljs-title.function_{color:#6f42c1}:root[theme=light] :not([theme])>*>.markdown-body .hljs-attr,:root[theme=light] :not([theme])>*>.markdown-body .hljs-attribute,:root[theme=light] :not([theme])>*>.markdown-body .hljs-literal,:root[theme=light] :not([theme])>*>.markdown-body .hljs-meta,:root[theme=light] :not([theme])>*>.markdown-body .hljs-number,:root[theme=light] :not([theme])>*>.markdown-body .hljs-operator,:root[theme=light] :not([theme])>*>.markdown-body .hljs-selector-attr,:root[theme=light] :not([theme])>*>.markdown-body .hljs-selector-class,:root[theme=light] :not([theme])>*>.markdown-body .hljs-selector-id,:root[theme=light] :not([theme])>*>.markdown-body .hljs-variable,:root[theme] [theme=light] .markdown-body .hljs-attr,:root[theme] [theme=light] .markdown-body .hljs-attribute,:root[theme] [theme=light] .markdown-body .hljs-literal,:root[theme] [theme=light] .markdown-body .hljs-meta,:root[theme] [theme=light] .markdown-body .hljs-number,:root[theme] [theme=light] .markdown-body .hljs-operator,:root[theme] [theme=light] .markdown-body .hljs-selector-attr,:root[theme] [theme=light] .markdown-body .hljs-selector-class,:root[theme] [theme=light] .markdown-body .hljs-selector-id,:root[theme] [theme=light] .markdown-body .hljs-variable{color:#005cc5}:root[theme=light] :not([theme])>*>.markdown-body .hljs-meta .hljs-string,:root[theme=light] :not([theme])>*>.markdown-body .hljs-regexp,:root[theme=light] :not([theme])>*>.markdown-body .hljs-string,:root[theme] [theme=light] .markdown-body .hljs-meta .hljs-string,:root[theme] [theme=light] .markdown-body .hljs-regexp,:root[theme] [theme=light] .markdown-body .hljs-string{color:#032f62}:root[theme=light] :not([theme])>*>.markdown-body .hljs-built_in,:root[theme=light] :not([theme])>*>.markdown-body .hljs-symbol,:root[theme] [theme=light] .markdown-body .hljs-built_in,:root[theme] [theme=light] .markdown-body .hljs-symbol{color:#e36209}:root[theme=light] :not([theme])>*>.markdown-body .hljs-code,:root[theme=light] :not([theme])>*>.markdown-body .hljs-comment,:root[theme=light] :not([theme])>*>.markdown-body .hljs-formula,:root[theme] [theme=light] .markdown-body .hljs-code,:root[theme] [theme=light] .markdown-body .hljs-comment,:root[theme] [theme=light] .markdown-body .hljs-formula{color:#6a737d}:root[theme=light] :not([theme])>*>.markdown-body .hljs-name,:root[theme=light] :not([theme])>*>.markdown-body .hljs-quote,:root[theme=light] :not([theme])>*>.markdown-body .hljs-selector-pseudo,:root[theme=light] :not([theme])>*>.markdown-body .hljs-selector-tag,:root[theme] [theme=light] .markdown-body .hljs-name,:root[theme] [theme=light] .markdown-body .hljs-quote,:root[theme] [theme=light] .markdown-body .hljs-selector-pseudo,:root[theme] [theme=light] .markdown-body .hljs-selector-tag{color:#22863a}:root[theme=light] :not([theme])>*>.markdown-body .hljs-subst,:root[theme] [theme=light] .markdown-body .hljs-subst{color:#24292e}:root[theme=light] :not([theme])>*>.markdown-body .hljs-section,:root[theme] [theme=light] .markdown-body .hljs-section{color:#005cc5;font-weight:700}:root[theme=light] :not([theme])>*>.markdown-body .hljs-bullet,:root[theme] [theme=light] .markdown-body .hljs-bullet{color:#735c0f}:root[theme=light] :not([theme])>*>.markdown-body .hljs-emphasis,:root[theme] [theme=light] .markdown-body .hljs-emphasis{color:#24292e;font-style:italic}:root[theme=light] :not([theme])>*>.markdown-body .hljs-strong,:root[theme] [theme=light] .markdown-body .hljs-strong{color:#24292e;font-weight:700}:root[theme=light] :not([theme])>*>.markdown-body .hljs-addition,:root[theme] [theme=light] .markdown-body .hljs-addition{background-color:#f0fff4;color:#22863a}:root[theme=light] :not([theme])>*>.markdown-body .hljs-deletion,:root[theme] [theme=light] .markdown-body .hljs-deletion{background-color:#ffeef0;color:#b31d28}

/*!
  Theme: GitHub Dark Dimmed
  Description: Dark dimmed theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Colors taken from GitHub's CSS
*/:root[theme=dark] :not([theme])>*>.markdown-body .hljs-doctag,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-keyword,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-meta .hljs-keyword,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-template-tag,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-template-variable,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-type,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-variable.language_,:root[theme] [theme=dark] .markdown-body .hljs-doctag,:root[theme] [theme=dark] .markdown-body .hljs-keyword,:root[theme] [theme=dark] .markdown-body .hljs-meta .hljs-keyword,:root[theme] [theme=dark] .markdown-body .hljs-template-tag,:root[theme] [theme=dark] .markdown-body .hljs-template-variable,:root[theme] [theme=dark] .markdown-body .hljs-type,:root[theme] [theme=dark] .markdown-body .hljs-variable.language_{color:#f47067}:root[theme=dark] :not([theme])>*>.markdown-body .hljs-title,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-title.class_,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-title.class_.inherited__,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-title.function_,:root[theme] [theme=dark] .markdown-body .hljs-title,:root[theme] [theme=dark] .markdown-body .hljs-title.class_,:root[theme] [theme=dark] .markdown-body .hljs-title.class_.inherited__,:root[theme] [theme=dark] .markdown-body .hljs-title.function_{color:#dcbdfb}:root[theme=dark] :not([theme])>*>.markdown-body .hljs-attr,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-attribute,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-literal,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-meta,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-number,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-operator,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-selector-attr,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-selector-class,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-selector-id,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-variable,:root[theme] [theme=dark] .markdown-body .hljs-attr,:root[theme] [theme=dark] .markdown-body .hljs-attribute,:root[theme] [theme=dark] .markdown-body .hljs-literal,:root[theme] [theme=dark] .markdown-body .hljs-meta,:root[theme] [theme=dark] .markdown-body .hljs-number,:root[theme] [theme=dark] .markdown-body .hljs-operator,:root[theme] [theme=dark] .markdown-body .hljs-selector-attr,:root[theme] [theme=dark] .markdown-body .hljs-selector-class,:root[theme] [theme=dark] .markdown-body .hljs-selector-id,:root[theme] [theme=dark] .markdown-body .hljs-variable{color:#6cb6ff}:root[theme=dark] :not([theme])>*>.markdown-body .hljs-meta .hljs-string,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-regexp,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-string,:root[theme] [theme=dark] .markdown-body .hljs-meta .hljs-string,:root[theme] [theme=dark] .markdown-body .hljs-regexp,:root[theme] [theme=dark] .markdown-body .hljs-string{color:#96d0ff}:root[theme=dark] :not([theme])>*>.markdown-body .hljs-built_in,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-symbol,:root[theme] [theme=dark] .markdown-body .hljs-built_in,:root[theme] [theme=dark] .markdown-body .hljs-symbol{color:#f69d50}:root[theme=dark] :not([theme])>*>.markdown-body .hljs-code,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-comment,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-formula,:root[theme] [theme=dark] .markdown-body .hljs-code,:root[theme] [theme=dark] .markdown-body .hljs-comment,:root[theme] [theme=dark] .markdown-body .hljs-formula{color:#768390}:root[theme=dark] :not([theme])>*>.markdown-body .hljs-name,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-quote,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-selector-pseudo,:root[theme=dark] :not([theme])>*>.markdown-body .hljs-selector-tag,:root[theme] [theme=dark] .markdown-body .hljs-name,:root[theme] [theme=dark] .markdown-body .hljs-quote,:root[theme] [theme=dark] .markdown-body .hljs-selector-pseudo,:root[theme] [theme=dark] .markdown-body .hljs-selector-tag{color:#8ddb8c}:root[theme=dark] :not([theme])>*>.markdown-body .hljs-subst,:root[theme] [theme=dark] .markdown-body .hljs-subst{color:#adbac7}:root[theme=dark] :not([theme])>*>.markdown-body .hljs-section,:root[theme] [theme=dark] .markdown-body .hljs-section{color:#316dca;font-weight:700}:root[theme=dark] :not([theme])>*>.markdown-body .hljs-bullet,:root[theme] [theme=dark] .markdown-body .hljs-bullet{color:#eac55f}:root[theme=dark] :not([theme])>*>.markdown-body .hljs-emphasis,:root[theme] [theme=dark] .markdown-body .hljs-emphasis{color:#adbac7;font-style:italic}:root[theme=dark] :not([theme])>*>.markdown-body .hljs-strong,:root[theme] [theme=dark] .markdown-body .hljs-strong{color:#adbac7;font-weight:700}:root[theme=dark] :not([theme])>*>.markdown-body .hljs-addition,:root[theme] [theme=dark] .markdown-body .hljs-addition{background-color:#1b4721;color:#b4f1b4}:root[theme=dark] :not([theme])>*>.markdown-body .hljs-deletion,:root[theme] [theme=dark] .markdown-body .hljs-deletion{background-color:#78191b;color:#ffd8d3}:root[theme=dark] :not([theme])>*>.markdown-body code[class*=language-],:root[theme=dark] :not([theme])>*>.markdown-body pre[class*=language-],:root[theme] [theme=dark] .markdown-body code[class*=language-],:root[theme] [theme=dark] .markdown-body pre[class*=language-]{word-wrap:normal;background:none;color:#ccc;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;-webkit-hyphens:none;hyphens:none;line-height:1.5;tab-size:4;text-align:left;white-space:pre;word-break:normal;word-spacing:normal}:root[theme=dark] :not([theme])>*>.markdown-body pre[class*=language-],:root[theme] [theme=dark] .markdown-body pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}:root[theme=dark] :not([theme])>*>.markdown-body :not(pre)>code[class*=language-],:root[theme=dark] :not([theme])>*>.markdown-body pre[class*=language-],:root[theme] [theme=dark] .markdown-body :not(pre)>code[class*=language-],:root[theme] [theme=dark] .markdown-body pre[class*=language-]{background:#2d2d2d}:root[theme=dark] :not([theme])>*>.markdown-body :not(pre)>code[class*=language-],:root[theme] [theme=dark] .markdown-body :not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}:root[theme=dark] :not([theme])>*>.markdown-body .token.block-comment,:root[theme=dark] :not([theme])>*>.markdown-body .token.cdata,:root[theme=dark] :not([theme])>*>.markdown-body .token.comment,:root[theme=dark] :not([theme])>*>.markdown-body .token.doctype,:root[theme=dark] :not([theme])>*>.markdown-body .token.prolog,:root[theme] [theme=dark] .markdown-body .token.block-comment,:root[theme] [theme=dark] .markdown-body .token.cdata,:root[theme] [theme=dark] .markdown-body .token.comment,:root[theme] [theme=dark] .markdown-body .token.doctype,:root[theme] [theme=dark] .markdown-body .token.prolog{color:#999}:root[theme=dark] :not([theme])>*>.markdown-body .token.punctuation,:root[theme] [theme=dark] .markdown-body .token.punctuation{color:#ccc}:root[theme=dark] :not([theme])>*>.markdown-body .token.attr-name,:root[theme=dark] :not([theme])>*>.markdown-body .token.deleted,:root[theme=dark] :not([theme])>*>.markdown-body .token.namespace,:root[theme=dark] :not([theme])>*>.markdown-body .token.tag,:root[theme] [theme=dark] .markdown-body .token.attr-name,:root[theme] [theme=dark] .markdown-body .token.deleted,:root[theme] [theme=dark] .markdown-body .token.namespace,:root[theme] [theme=dark] .markdown-body .token.tag{color:#e2777a}:root[theme=dark] :not([theme])>*>.markdown-body .token.function-name,:root[theme] [theme=dark] .markdown-body .token.function-name{color:#6196cc}:root[theme=dark] :not([theme])>*>.markdown-body .token.boolean,:root[theme=dark] :not([theme])>*>.markdown-body .token.function,:root[theme=dark] :not([theme])>*>.markdown-body .token.number,:root[theme] [theme=dark] .markdown-body .token.boolean,:root[theme] [theme=dark] .markdown-body .token.function,:root[theme] [theme=dark] .markdown-body .token.number{color:#f08d49}:root[theme=dark] :not([theme])>*>.markdown-body .token.class-name,:root[theme=dark] :not([theme])>*>.markdown-body .token.constant,:root[theme=dark] :not([theme])>*>.markdown-body .token.property,:root[theme=dark] :not([theme])>*>.markdown-body .token.symbol,:root[theme] [theme=dark] .markdown-body .token.class-name,:root[theme] [theme=dark] .markdown-body .token.constant,:root[theme] [theme=dark] .markdown-body .token.property,:root[theme] [theme=dark] .markdown-body .token.symbol{color:#f8c555}:root[theme=dark] :not([theme])>*>.markdown-body .token.atrule,:root[theme=dark] :not([theme])>*>.markdown-body .token.builtin,:root[theme=dark] :not([theme])>*>.markdown-body .token.important,:root[theme=dark] :not([theme])>*>.markdown-body .token.keyword,:root[theme=dark] :not([theme])>*>.markdown-body .token.selector,:root[theme] [theme=dark] .markdown-body .token.atrule,:root[theme] [theme=dark] .markdown-body .token.builtin,:root[theme] [theme=dark] .markdown-body .token.important,:root[theme] [theme=dark] .markdown-body .token.keyword,:root[theme] [theme=dark] .markdown-body .token.selector{color:#cc99cd}:root[theme=dark] :not([theme])>*>.markdown-body .token.attr-value,:root[theme=dark] :not([theme])>*>.markdown-body .token.char,:root[theme=dark] :not([theme])>*>.markdown-body .token.regex,:root[theme=dark] :not([theme])>*>.markdown-body .token.string,:root[theme=dark] :not([theme])>*>.markdown-body .token.variable,:root[theme] [theme=dark] .markdown-body .token.attr-value,:root[theme] [theme=dark] .markdown-body .token.char,:root[theme] [theme=dark] .markdown-body .token.regex,:root[theme] [theme=dark] .markdown-body .token.string,:root[theme] [theme=dark] .markdown-body .token.variable{color:#7ec699}:root[theme=dark] :not([theme])>*>.markdown-body .token.entity,:root[theme=dark] :not([theme])>*>.markdown-body .token.operator,:root[theme=dark] :not([theme])>*>.markdown-body .token.url,:root[theme] [theme=dark] .markdown-body .token.entity,:root[theme] [theme=dark] .markdown-body .token.operator,:root[theme] [theme=dark] .markdown-body .token.url{color:#67cdcc}:root[theme=dark] :not([theme])>*>.markdown-body .token.bold,:root[theme=dark] :not([theme])>*>.markdown-body .token.important,:root[theme] [theme=dark] .markdown-body .token.bold,:root[theme] [theme=dark] .markdown-body .token.important{font-weight:700}:root[theme=dark] :not([theme])>*>.markdown-body .token.italic,:root[theme] [theme=dark] .markdown-body .token.italic{font-style:italic}:root[theme=dark] :not([theme])>*>.markdown-body .token.entity,:root[theme] [theme=dark] .markdown-body .token.entity{cursor:help}:root[theme=dark] :not([theme])>*>.markdown-body .token.inserted,:root[theme] [theme=dark] .markdown-body .token.inserted{color:green}:root[theme=light] :not([theme])>*>.markdown-body code[class*=language-],:root[theme=light] :not([theme])>*>.markdown-body pre[class*=language-],:root[theme] [theme=light] .markdown-body code[class*=language-],:root[theme] [theme=light] .markdown-body pre[class*=language-]{word-wrap:normal;background:none;color:#000;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;-webkit-hyphens:none;hyphens:none;line-height:1.5;tab-size:4;text-align:left;text-shadow:0 1px #fff;white-space:pre;word-break:normal;word-spacing:normal}:root[theme=light] :not([theme])>*>.markdown-body code[class*=language-] ::selection,:root[theme=light] :not([theme])>*>.markdown-body code[class*=language-]::selection,:root[theme=light] :not([theme])>*>.markdown-body pre[class*=language-] ::selection,:root[theme=light] :not([theme])>*>.markdown-body pre[class*=language-]::selection,:root[theme] [theme=light] .markdown-body code[class*=language-] ::selection,:root[theme] [theme=light] .markdown-body code[class*=language-]::selection,:root[theme] [theme=light] .markdown-body pre[class*=language-] ::selection,:root[theme] [theme=light] .markdown-body pre[class*=language-]::selection{background:#b3d4fc;text-shadow:none}:root[theme=light] :not([theme])>*>.markdown-body pre[class*=language-],:root[theme] [theme=light] .markdown-body pre[class*=language-]{margin:.5em 0;overflow:auto;padding:1em}:root[theme=light] :not([theme])>*>.markdown-body :not(pre)>code[class*=language-],:root[theme=light] :not([theme])>*>.markdown-body pre[class*=language-],:root[theme] [theme=light] .markdown-body :not(pre)>code[class*=language-],:root[theme] [theme=light] .markdown-body pre[class*=language-]{background:#f5f2f0}:root[theme=light] :not([theme])>*>.markdown-body :not(pre)>code[class*=language-],:root[theme] [theme=light] .markdown-body :not(pre)>code[class*=language-]{border-radius:.3em;padding:.1em;white-space:normal}:root[theme=light] :not([theme])>*>.markdown-body .token.cdata,:root[theme=light] :not([theme])>*>.markdown-body .token.comment,:root[theme=light] :not([theme])>*>.markdown-body .token.doctype,:root[theme=light] :not([theme])>*>.markdown-body .token.prolog,:root[theme] [theme=light] .markdown-body .token.cdata,:root[theme] [theme=light] .markdown-body .token.comment,:root[theme] [theme=light] .markdown-body .token.doctype,:root[theme] [theme=light] .markdown-body .token.prolog{color:#708090}:root[theme=light] :not([theme])>*>.markdown-body .token.punctuation,:root[theme] [theme=light] .markdown-body .token.punctuation{color:#999}:root[theme=light] :not([theme])>*>.markdown-body .token.namespace,:root[theme] [theme=light] .markdown-body .token.namespace{opacity:.7}:root[theme=light] :not([theme])>*>.markdown-body .token.boolean,:root[theme=light] :not([theme])>*>.markdown-body .token.constant,:root[theme=light] :not([theme])>*>.markdown-body .token.deleted,:root[theme=light] :not([theme])>*>.markdown-body .token.number,:root[theme=light] :not([theme])>*>.markdown-body .token.property,:root[theme=light] :not([theme])>*>.markdown-body .token.symbol,:root[theme=light] :not([theme])>*>.markdown-body .token.tag,:root[theme] [theme=light] .markdown-body .token.boolean,:root[theme] [theme=light] .markdown-body .token.constant,:root[theme] [theme=light] .markdown-body .token.deleted,:root[theme] [theme=light] .markdown-body .token.number,:root[theme] [theme=light] .markdown-body .token.property,:root[theme] [theme=light] .markdown-body .token.symbol,:root[theme] [theme=light] .markdown-body .token.tag{color:#905}:root[theme=light] :not([theme])>*>.markdown-body .token.attr-name,:root[theme=light] :not([theme])>*>.markdown-body .token.builtin,:root[theme=light] :not([theme])>*>.markdown-body .token.char,:root[theme=light] :not([theme])>*>.markdown-body .token.inserted,:root[theme=light] :not([theme])>*>.markdown-body .token.selector,:root[theme=light] :not([theme])>*>.markdown-body .token.string,:root[theme] [theme=light] .markdown-body .token.attr-name,:root[theme] [theme=light] .markdown-body .token.builtin,:root[theme] [theme=light] .markdown-body .token.char,:root[theme] [theme=light] .markdown-body .token.inserted,:root[theme] [theme=light] .markdown-body .token.selector,:root[theme] [theme=light] .markdown-body .token.string{color:#690}:root[theme=light] :not([theme])>*>.markdown-body .language-css .token.string,:root[theme=light] :not([theme])>*>.markdown-body .style .token.string,:root[theme=light] :not([theme])>*>.markdown-body .token.entity,:root[theme=light] :not([theme])>*>.markdown-body .token.operator,:root[theme=light] :not([theme])>*>.markdown-body .token.url,:root[theme] [theme=light] .markdown-body .language-css .token.string,:root[theme] [theme=light] .markdown-body .style .token.string,:root[theme] [theme=light] .markdown-body .token.entity,:root[theme] [theme=light] .markdown-body .token.operator,:root[theme] [theme=light] .markdown-body .token.url{background:#ffffff80;color:#9a6e3a}:root[theme=light] :not([theme])>*>.markdown-body .token.atrule,:root[theme=light] :not([theme])>*>.markdown-body .token.attr-value,:root[theme=light] :not([theme])>*>.markdown-body .token.keyword,:root[theme] [theme=light] .markdown-body .token.atrule,:root[theme] [theme=light] .markdown-body .token.attr-value,:root[theme] [theme=light] .markdown-body .token.keyword{color:#07a}:root[theme=light] :not([theme])>*>.markdown-body .token.class-name,:root[theme=light] :not([theme])>*>.markdown-body .token.function,:root[theme] [theme=light] .markdown-body .token.class-name,:root[theme] [theme=light] .markdown-body .token.function{color:#dd4a68}:root[theme=light] :not([theme])>*>.markdown-body .token.important,:root[theme=light] :not([theme])>*>.markdown-body .token.regex,:root[theme=light] :not([theme])>*>.markdown-body .token.variable,:root[theme] [theme=light] .markdown-body .token.important,:root[theme] [theme=light] .markdown-body .token.regex,:root[theme] [theme=light] .markdown-body .token.variable{color:#e90}:root[theme=light] :not([theme])>*>.markdown-body .token.bold,:root[theme=light] :not([theme])>*>.markdown-body .token.important,:root[theme] [theme=light] .markdown-body .token.bold,:root[theme] [theme=light] .markdown-body .token.important{font-weight:700}:root[theme=light] :not([theme])>*>.markdown-body .token.italic,:root[theme] [theme=light] .markdown-body .token.italic{font-style:italic}:root[theme=light] :not([theme])>*>.markdown-body .token.entity,:root[theme] [theme=light] .markdown-body .token.entity{cursor:help}@media print{:root[theme=light] :not([theme])>*>.markdown-body code[class*=language-],:root[theme=light] :not([theme])>*>.markdown-body pre[class*=language-],:root[theme] [theme=light] .markdown-body code[class*=language-],:root[theme] [theme=light] .markdown-body pre[class*=language-]{text-shadow:none}}.mermaid .label{border-radius:unset;color:#333;display:unset;font-size:unset;font-weight:unset;line-height:unset;padding:unset;text-align:unset;vertical-align:unset;white-space:unset}.mermaid .node circle,.mermaid .node ellipse,.mermaid .node polygon,.mermaid .node rect{fill:#ececff;stroke:#ccf;stroke-width:1px}.mermaid .edgePath .path{stroke:#333}.mermaid .edgeLabel{background-color:#e8e8e8}.mermaid .cluster rect{fill:#ffffde!important;rx:4!important;stroke:#aa3!important;stroke-width:1px!important}.mermaid .cluster text{fill:#333}.mermaid .actor{stroke:#ccf;fill:#ececff}.mermaid text.actor{fill:#000;stroke:none}.mermaid .actor-line{stroke:grey}.mermaid .messageLine0{marker-end:"url(#arrowhead)"}.mermaid .messageLine0,.mermaid .messageLine1{stroke-width:1.5;stroke-dasharray:"2 2";stroke:#333}.mermaid #arrowhead{fill:#333}.mermaid #crosshead path{fill:#333!important;stroke:#333!important}.mermaid .messageText{fill:#333;stroke:none}.mermaid .labelBox{stroke:#ccf;fill:#ececff}.mermaid .labelText,.mermaid .loopText{fill:#000;stroke:none}.mermaid .loopLine{stroke-width:2;stroke-dasharray:"2 2";marker-end:"url(#arrowhead)";stroke:#ccf}.mermaid .note{stroke:#aa3;fill:#fff5ad}.mermaid .noteText{fill:#000;stroke:none;font-family:trebuchet ms,verdana,arial;font-size:14px}.mermaid .section{stroke:none;opacity:.2}.mermaid .section0{fill:#6666ff7d}.mermaid .section2{fill:#fff400}.mermaid .section1,.mermaid .section3{fill:#fff;opacity:.2}.mermaid .sectionTitle0,.mermaid .sectionTitle1,.mermaid .sectionTitle2,.mermaid .sectionTitle3{fill:#333}.mermaid .sectionTitle{text-anchor:start;text-height:14px;font-size:11px}.mermaid .grid .tick{stroke:#d3d3d3;shape-rendering:crispEdges;opacity:.3}.mermaid .grid path{stroke-width:0}.mermaid .today{fill:none;stroke:red;stroke-width:2px}.mermaid .task{stroke-width:2}.mermaid .taskText{text-anchor:middle;font-size:11px}.mermaid .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px}.mermaid .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}.mermaid .taskText0,.mermaid .taskText1,.mermaid .taskText2,.mermaid .taskText3{fill:#fff}.mermaid .task0,.mermaid .task1,.mermaid .task2,.mermaid .task3{fill:#8a90dd;stroke:#534fbc}.mermaid .taskTextOutside0,.mermaid .taskTextOutside1,.mermaid .taskTextOutside2,.mermaid .taskTextOutside3{fill:#000}.mermaid .active0,.mermaid .active1,.mermaid .active2,.mermaid .active3{fill:#bfc7ff;stroke:#534fbc}.mermaid .activeText0,.mermaid .activeText1,.mermaid .activeText2,.mermaid .activeText3{fill:#000!important}.mermaid .done0,.mermaid .done1,.mermaid .done2,.mermaid .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}.mermaid .doneText0,.mermaid .doneText1,.mermaid .doneText2,.mermaid .doneText3{fill:#000!important}.mermaid .crit0,.mermaid .crit1,.mermaid .crit2,.mermaid .crit3{stroke:#f88;fill:red;stroke-width:2}.mermaid .activeCrit0,.mermaid .activeCrit1,.mermaid .activeCrit2,.mermaid .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}.mermaid .doneCrit0,.mermaid .doneCrit1,.mermaid .doneCrit2,.mermaid .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;shape-rendering:crispEdges;cursor:pointer}.mermaid .activeCritText0,.mermaid .activeCritText1,.mermaid .activeCritText2,.mermaid .activeCritText3,.mermaid .doneCritText0,.mermaid .doneCritText1,.mermaid .doneCritText2,.mermaid .doneCritText3{fill:#000!important}.mermaid .titleText{text-anchor:middle;fill:#000;font-size:18px}.mermaid .node text{font-family:trebuchet ms,verdana,arial;font-size:14px}div.mermaidTooltip{background:#ffffde;border:1px solid #aa3;border-radius:2px;font-family:trebuchet ms,verdana,arial;font-size:12px;max-width:200px;padding:2px;pointer-events:none;position:fixed!important;text-align:center;z-index:100}.markdown-body{word-wrap:break-word;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:16px;line-height:1.5}.markdown-body:after,.markdown-body:before{content:"";display:table}.markdown-body:after{clear:both}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:#c00}.markdown-body .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.markdown-body .anchor:focus{outline:none}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-bottom:16px;margin-top:0}.markdown-body hr{background-color:#e7e7e7;border:0;height:.25em;margin:24px 0;padding:0}.markdown-body blockquote{border-left:.25em solid #ddd;color:#777;font-size:16px;padding:0 1em}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd,.popover kbd{background-color:#fcfcfc;border:1px solid;border-color:#ccc #ccc #bbb;border-radius:3px;box-shadow:inset 0 -1px 0 #bbb;color:#555;display:inline-block;font-size:11px;line-height:10px;padding:3px 5px;vertical-align:middle}.markdown-body .loweralpha{list-style-type:lower-alpha}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-weight:600;line-height:1.25;margin-bottom:16px;margin-top:24px}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 code,.markdown-body h1 tt,.markdown-body h2 code,.markdown-body h2 tt,.markdown-body h3 code,.markdown-body h3 tt,.markdown-body h4 code,.markdown-body h4 tt,.markdown-body h5 code,.markdown-body h5 tt,.markdown-body h6 code,.markdown-body h6 tt{font-size:inherit}.markdown-body h1{font-size:2em}.markdown-body h1,.markdown-body h2{border-bottom:1px solid #eee;padding-bottom:.3em}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{color:#777;font-size:.85em}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol.no-list,.markdown-body ul.no-list{list-style-type:none;padding:0}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-bottom:0;margin-top:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{padding-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{font-size:1em;font-style:italic;font-weight:700;margin-top:16px;padding:0}.markdown-body dl dd{margin-bottom:16px;padding:0 16px}.markdown-body table{display:block;overflow:auto;width:100%;word-break:normal;word-break:keep-all}.markdown-body table th{font-weight:700}.markdown-body table td,.markdown-body table th{border:1px solid #ddd}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body img{background-color:#fff;box-sizing:initial;max-width:100%}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{background-color:initial;max-width:none;vertical-align:text-top}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{border:1px solid #ddd;display:block;float:left;margin:13px 0 0;overflow:hidden;padding:7px;width:auto}.markdown-body span.frame span img{display:block;float:left}.markdown-body span.frame span span{clear:both;color:#333;display:block;padding:5px 0 0}.markdown-body span.align-center{clear:both;display:block;overflow:hidden}.markdown-body span.align-center>span{display:block;margin:13px auto 0;overflow:hidden;text-align:center}.markdown-body span.align-center span img{margin:0 auto;text-align:center}.markdown-body span.align-right{clear:both;display:block;overflow:hidden}.markdown-body span.align-right>span{display:block;margin:13px 0 0;overflow:hidden;text-align:right}.markdown-body span.align-right span img{margin:0;text-align:right}.markdown-body span.float-left{display:block;float:left;margin-right:13px;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{display:block;float:right;margin-left:13px;overflow:hidden}.markdown-body span.float-right>span{display:block;margin:13px auto 0;overflow:hidden;text-align:right}.markdown-body code,.markdown-body tt{background-color:#0000000a;border-radius:3px;font-size:85%;margin:0;padding:.2em 0}.markdown-body code:after,.markdown-body code:before,.markdown-body tt:after,.markdown-body tt:before{content:"\00a0";letter-spacing:-.2em}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{text-decoration:inherit}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{background:#0000;border:0;font-size:100%;margin:0;padding:0;white-space:pre;word-break:normal}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{border-radius:3px;font-size:85%;line-height:1.45;overflow:auto}.markdown-body:not(.next-editor) pre{padding:16px}.markdown-body pre code,.markdown-body pre tt{word-wrap:normal;background-color:initial;border:0;display:inline;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0}.markdown-body pre code:after,.markdown-body pre code:before,.markdown-body pre tt:after,.markdown-body pre tt:before{content:normal}.markdown-body .csv-data td,.markdown-body .csv-data th{font-size:12px;line-height:1;overflow:hidden;padding:5px;text-align:left;white-space:nowrap}.markdown-body .csv-data .blob-line-num{background:#fff;border:0;padding:10px 8px 9px;text-align:right}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{background:#f8f8f8;border-top:0;font-weight:700}.news .alert .markdown-body blockquote{border:0;padding:0 0 0 40px}.activity-tab .news .alert .commits,.activity-tab .news .markdown-body blockquote{padding-left:0}.task-list-item{list-style-type:none}.task-list-item label{font-weight:400}.task-list-item.enabled label{cursor:pointer}.task-list-item+.task-list-item{margin-top:3px}.task-list-item-checkbox{cursor:default!important;float:left;margin:.45em 0 .2em -1.3em!important;vertical-align:middle}.markdown-alert{border-left-style:solid;border-left-width:4px;color:inherit;margin-bottom:16px;padding:8px 16px}.markdown-alert .markdown-alert-title{align-items:center;display:flex;font-weight:500;line-height:1;white-space:break-spaces}.markdown-body .markdown-alert>*{margin-bottom:0;margin-top:16px}.markdown-body .markdown-alert .selection-popover,.markdown-body .markdown-alert>:first-child{margin-top:0}.markdown-alert.markdown-alert-note{border-left-color:var(--hmd-tw-state-info-default)}.markdown-alert.markdown-alert-note .markdown-alert-title{fill:currentColor;color:var(--hmd-tw-state-info-text)}.markdown-alert.markdown-alert-tip{border-left-color:var(--hmd-tw-state-success-default)}.markdown-alert.markdown-alert-tip .markdown-alert-title{fill:currentColor;color:var(--hmd-tw-state-success-text)}.markdown-alert.markdown-alert-important{border-left-color:var(--hmd-tw-border-primary-default)}.markdown-alert.markdown-alert-important .markdown-alert-title{fill:currentColor;color:var(--hmd-tw-text-primary)}.markdown-alert.markdown-alert-warning{border-left-color:var(--hmd-tw-state-warning-default)}.markdown-alert.markdown-alert-warning .markdown-alert-title{fill:currentColor;color:var(--hmd-tw-state-warning-text)}.markdown-alert.markdown-alert-caution{border-left-color:var(--hmd-tw-state-danger-default)}.markdown-alert.markdown-alert-caution .markdown-alert-title{fill:currentColor;color:var(--hmd-tw-state-danger-text)}:root[theme=dark] :not([theme])>*>.markdown-body,:root[theme] [theme=dark] .markdown-body{color:#d4d4d8}:root[theme=dark] :not([theme])>*>.markdown-body h1,:root[theme=dark] :not([theme])>*>.markdown-body h2,:root[theme] [theme=dark] .markdown-body h1,:root[theme] [theme=dark] .markdown-body h2{border-bottom-color:#52525b}:root[theme=dark] :not([theme])>*>.markdown-body h6,:root[theme] [theme=dark] .markdown-body h6{color:#a1a1aa}:root[theme=dark] :not([theme])>*>.markdown-body details,:root[theme] [theme=dark] .markdown-body details{background-color:#303036;color:#d4d4d8}:root[theme=dark] :not([theme])>*>.markdown-body details summary::marker:first-child,:root[theme] [theme=dark] .markdown-body details summary::marker:first-child{color:#d4d4d8}:root[theme=dark] :not([theme])>*>.markdown-body details:hover,:root[theme] [theme=dark] .markdown-body details:hover{background:#303036}:root[theme=dark] :not([theme])>*>.markdown-body details code,:root[theme=dark] :not([theme])>*>.markdown-body details[open]:hover,:root[theme] [theme=dark] .markdown-body details code,:root[theme] [theme=dark] .markdown-body details[open]:hover{background-color:#303036}:root[theme=dark] :not([theme])>*>.markdown-body hr,:root[theme] [theme=dark] .markdown-body hr{background-color:#52525b}:root[theme=dark] :not([theme])>*>.markdown-body blockquote,:root[theme] [theme=dark] .markdown-body blockquote{border-left-color:#71717a;color:#a1a1aa}:root[theme=dark] :not([theme])>*>.markdown-body blockquote a span,:root[theme] [theme=dark] .markdown-body blockquote a span{color:#9894f9}:root[theme=dark] :not([theme])>*>.markdown-body a.mention-anchor.user-card-popover,:root[theme] [theme=dark] .markdown-body a.mention-anchor.user-card-popover{background-color:#453aff26;color:#9894f9}:root[theme=dark] :not([theme])>*>.markdown-body ::selection,:root[theme] [theme=dark] .markdown-body ::selection{background-color:#453aff99}:root[theme=dark] :not([theme])>*>.markdown-body .alert.alert-info,:root[theme] [theme=dark] .markdown-body .alert.alert-info{background-color:#38bdf81a;border-left-color:#0ea5e9;color:#38bdf8}:root[theme=dark] :not([theme])>*>.markdown-body .alert.alert-warning,:root[theme] [theme=dark] .markdown-body .alert.alert-warning{background-color:#fbbf241a;border-left-color:#f59e0b;color:#f59e0b}:root[theme=dark] :not([theme])>*>.markdown-body .alert.alert-success,:root[theme] [theme=dark] .markdown-body .alert.alert-success{background-color:#6db19d26;border-left-color:#55b685;color:#6db19d}:root[theme=dark] :not([theme])>*>.markdown-body .alert.alert-danger,:root[theme] [theme=dark] .markdown-body .alert.alert-danger{background-color:#ef444433;border-left-color:#ef4444;color:#f87171}:root[theme=dark] :not([theme])>*>.markdown-body .mark,:root[theme=dark] :not([theme])>*>.markdown-body mark,:root[theme] [theme=dark] .markdown-body .mark,:root[theme] [theme=dark] .markdown-body mark{background-color:#fbbf241a;color:#f59e0b}:root[theme=dark] :not([theme])>*>.markdown-body .mark span,:root[theme=dark] :not([theme])>*>.markdown-body mark span,:root[theme] [theme=dark] .markdown-body .mark span,:root[theme] [theme=dark] .markdown-body mark span{color:#fbbf24}:root[theme=dark] :not([theme])>*>.markdown-body .highlight pre,:root[theme=dark] :not([theme])>*>.markdown-body pre,:root[theme] [theme=dark] .markdown-body .highlight pre,:root[theme] [theme=dark] .markdown-body pre{background-color:#303036;color:#a1a1aa}:root[theme=dark] :not([theme])>*>.markdown-body .style .token.string,:root[theme=dark] :not([theme])>*>.markdown-body .token.entity,:root[theme=dark] :not([theme])>*>.markdown-body .token.operator,:root[theme=dark] :not([theme])>*>.markdown-body .token.url,:root[theme=dark] :not([theme])>*>.markdown-body.language-css,:root[theme=dark] :not([theme])>*>.markdown-body.token.string,:root[theme] [theme=dark] .markdown-body .style .token.string,:root[theme] [theme=dark] .markdown-body .token.entity,:root[theme] [theme=dark] .markdown-body .token.operator,:root[theme] [theme=dark] .markdown-body .token.url,:root[theme] [theme=dark] .markdown-body.language-css,:root[theme] [theme=dark] .markdown-body.token.string{background:none}:root[theme=dark] :not([theme])>*>.markdown-body :not(pre)>code,:root[theme] [theme=dark] .markdown-body :not(pre)>code{background-color:#3f3f46}:root[theme=dark] :not([theme])>*>.markdown-body code .hljs-tag,:root[theme] [theme=dark] .markdown-body code .hljs-tag{color:#d4d4d8}:root[theme=dark] :not([theme])>*>.markdown-body code .hljs-keyword,:root[theme=dark] :not([theme])>*>.markdown-body code .hljs-selector-tag,:root[theme=dark] :not([theme])>*>.markdown-body code .hljs-type,:root[theme=dark] :not([theme])>*>.markdown-body code .token.boolean,:root[theme=dark] :not([theme])>*>.markdown-body code .token.constant,:root[theme=dark] :not([theme])>*>.markdown-body code .token.deleted,:root[theme=dark] :not([theme])>*>.markdown-body code .token.number,:root[theme=dark] :not([theme])>*>.markdown-body code .token.property,:root[theme=dark] :not([theme])>*>.markdown-body code .token.symbol,:root[theme=dark] :not([theme])>*>.markdown-body code .token.tag,:root[theme] [theme=dark] .markdown-body code .hljs-keyword,:root[theme] [theme=dark] .markdown-body code .hljs-selector-tag,:root[theme] [theme=dark] .markdown-body code .hljs-type,:root[theme] [theme=dark] .markdown-body code .token.boolean,:root[theme] [theme=dark] .markdown-body code .token.constant,:root[theme] [theme=dark] .markdown-body code .token.deleted,:root[theme] [theme=dark] .markdown-body code .token.number,:root[theme] [theme=dark] .markdown-body code .token.property,:root[theme] [theme=dark] .markdown-body code .token.symbol,:root[theme] [theme=dark] .markdown-body code .token.tag{color:#ff70b4}:root[theme=dark] :not([theme])>*>.markdown-body code .hljs-attribute,:root[theme=dark] :not([theme])>*>.markdown-body code .hljs-bullet,:root[theme=dark] :not([theme])>*>.markdown-body code .hljs-literal,:root[theme=dark] :not([theme])>*>.markdown-body code .hljs-number,:root[theme=dark] :not([theme])>*>.markdown-body code .hljs-symbol,:root[theme=dark] :not([theme])>*>.markdown-body code .token.atrule,:root[theme=dark] :not([theme])>*>.markdown-body code .token.attr-value,:root[theme=dark] :not([theme])>*>.markdown-body code .token.keyword,:root[theme] [theme=dark] .markdown-body code .hljs-attribute,:root[theme] [theme=dark] .markdown-body code .hljs-bullet,:root[theme] [theme=dark] .markdown-body code .hljs-literal,:root[theme] [theme=dark] .markdown-body code .hljs-number,:root[theme] [theme=dark] .markdown-body code .hljs-symbol,:root[theme] [theme=dark] .markdown-body code .token.atrule,:root[theme] [theme=dark] .markdown-body code .token.attr-value,:root[theme] [theme=dark] .markdown-body code .token.keyword{color:#9894f9}:root[theme=dark] :not([theme])>*>.markdown-body pre.plugin-rendered,:root[theme] [theme=dark] .markdown-body pre.plugin-rendered{background-color:#fff;color:#000}:root[theme=dark] :not([theme])>*>.markdown-body table,:root[theme] [theme=dark] .markdown-body table{border-color:#52525b}:root[theme=dark] :not([theme])>*>.markdown-body table thead tr,:root[theme] [theme=dark] .markdown-body table thead tr{background-color:#303036;border-bottom-color:#52525b}:root[theme=dark] :not([theme])>*>.markdown-body table td,:root[theme=dark] :not([theme])>*>.markdown-body table th,:root[theme] [theme=dark] .markdown-body table td,:root[theme] [theme=dark] .markdown-body table th{border-left-color:#52525b;border-top-color:#52525b}:root[theme=dark] :not([theme])>*>.markdown-body table tbody tr,:root[theme=dark] :not([theme])>*>.markdown-body table tr:nth-child(2n),:root[theme] [theme=dark] .markdown-body table tbody tr,:root[theme] [theme=dark] .markdown-body table tr:nth-child(2n){background-color:#27272a}:root[theme=light] :not([theme])>*>.markdown-body,:root[theme] [theme=light] .markdown-body{color:#3f3f46}:root[theme=light] :not([theme])>*>.markdown-body h1,:root[theme=light] :not([theme])>*>.markdown-body h2,:root[theme] [theme=light] .markdown-body h1,:root[theme] [theme=light] .markdown-body h2{border-bottom-color:#e4e4e7}:root[theme=light] :not([theme])>*>.markdown-body h6,:root[theme] [theme=light] .markdown-body h6{color:#71717a}:root[theme=light] :not([theme])>*>.markdown-body iframe,:root[theme] [theme=light] .markdown-body iframe{border:1px solid #e4e4e7;box-sizing:border-box}:root[theme=light] :not([theme])>*>.markdown-body details,:root[theme] [theme=light] .markdown-body details{background-color:#f4f4f5}:root[theme=light] :not([theme])>*>.markdown-body details:hover,:root[theme] [theme=light] .markdown-body details:hover{background:#e4e4e7}:root[theme=light] :not([theme])>*>.markdown-body details[open]:hover,:root[theme] [theme=light] .markdown-body details[open]:hover{background-color:#f4f4f5}:root[theme=light] :not([theme])>*>.markdown-body details code,:root[theme] [theme=light] .markdown-body details code{background-color:#e4e4e7}:root[theme=light] :not([theme])>*>.markdown-body hr,:root[theme] [theme=light] .markdown-body hr{background-color:#d4d4d8}:root[theme=light] :not([theme])>*>.markdown-body blockquote,:root[theme] [theme=light] .markdown-body blockquote{border-left-color:#e4e4e7;color:#71717a}:root[theme=light] :not([theme])>*>.markdown-body blockquote a span,:root[theme] [theme=light] .markdown-body blockquote a span{color:#564dff}:root[theme=light] :not([theme])>*>.markdown-body a.mention-anchor.user-card-popover,:root[theme] [theme=light] .markdown-body a.mention-anchor.user-card-popover{background-color:#ecebfe;color:#564dff}:root[theme=light] :not([theme])>*>.markdown-body ::selection,:root[theme] [theme=light] .markdown-body ::selection{background-color:#cccafc}:root[theme=light] :not([theme])>*>.markdown-body .alert.alert-info,:root[theme] [theme=light] .markdown-body .alert.alert-info{background-color:#e0f2fe;border-left-color:#0284c7;color:#0284c7}:root[theme=light] :not([theme])>*>.markdown-body .alert.alert-warning,:root[theme] [theme=light] .markdown-body .alert.alert-warning{background-color:#fef3c799;border-left-color:#f59e0b;color:#f59e0b}:root[theme=light] :not([theme])>*>.markdown-body .alert.alert-success,:root[theme] [theme=light] .markdown-body .alert.alert-success{background-color:#d9f9e5;border-left-color:#43946c;color:#43946c}:root[theme=light] :not([theme])>*>.markdown-body .alert.alert-danger,:root[theme] [theme=light] .markdown-body .alert.alert-danger{background-color:#fee2e299;border-left-color:#ef4444;color:#ef4444}:root[theme=light] :not([theme])>*>.markdown-body .mark,:root[theme=light] :not([theme])>*>.markdown-body mark,:root[theme] [theme=light] .markdown-body .mark,:root[theme] [theme=light] .markdown-body mark{background-color:#fef3c799;color:#f59e0b}:root[theme=light] :not([theme])>*>.markdown-body .mark span,:root[theme=light] :not([theme])>*>.markdown-body mark span,:root[theme] [theme=light] .markdown-body .mark span,:root[theme] [theme=light] .markdown-body mark span{color:#f59e0b}:root[theme=light] :not([theme])>*>.markdown-body .highlight pre,:root[theme=light] :not([theme])>*>.markdown-body pre,:root[theme] [theme=light] .markdown-body .highlight pre,:root[theme] [theme=light] .markdown-body pre{background-color:#f4f4f5}:root[theme=light] :not([theme])>*>.markdown-body pre.plugin-rendered,:root[theme] [theme=light] .markdown-body pre.plugin-rendered{background-color:inherit;color:inherit}:root[theme=light] :not([theme])>*>.markdown-body :not(pre)>code,:root[theme] [theme=light] .markdown-body :not(pre)>code{background-color:#0000000a}:root[theme=light] :not([theme])>*>.markdown-body table,:root[theme] [theme=light] .markdown-body table{border-color:#e4e4e7}:root[theme=light] :not([theme])>*>.markdown-body table thead tr,:root[theme] [theme=light] .markdown-body table thead tr{background-color:#f4f4f5;border-bottom-color:#d4d4d8}:root[theme=light] :not([theme])>*>.markdown-body table td,:root[theme=light] :not([theme])>*>.markdown-body table th,:root[theme] [theme=light] .markdown-body table td,:root[theme] [theme=light] .markdown-body table th{border-left-color:#e4e4e7;border-top-color:#e4e4e7}:root[theme=light] :not([theme])>*>.markdown-body table tbody tr,:root[theme=light] :not([theme])>*>.markdown-body table tr:nth-child(2n),:root[theme] [theme=light] .markdown-body table tbody tr,:root[theme] [theme=light] .markdown-body table tr:nth-child(2n){background-color:#fdfdfd}.markdown-body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;max-width:758px;overflow:visible!important;padding-bottom:40px;padding-top:40px;position:relative}.markdown-body #doc-body>*,.markdown-body>*{max-width:100%}.markdown-body .alert a,.markdown-body a{color:var(--hmd-tw-link-text-default)}.markdown-body .alert a:focus,.markdown-body .alert a:hover,.markdown-body a:focus,.markdown-body a:hover{color:var(--hmd-tw-link-text-hover)}.markdown-body .alert a:hover,.markdown-body a:hover{text-decoration-thickness:2px;text-underline-offset:4px}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5{font-family:Readex Pro,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-weight:700}.markdown-body h1,.markdown-body h2{border-bottom:1px solid}.markdown-body iframe,.markdown-body img{background-color:initial;border-radius:6px;margin:.5rem 0}.markdown-body iframe{max-width:100%;width:728px}.markdown-body details{border-radius:4px;margin-bottom:.5rem;padding:.5rem 1rem}.markdown-body details:hover{transition:all .1s}.markdown-body details summary+p{margin-top:.5rem}.markdown-body details p:last-child{margin-bottom:0}.markdown-body hr{height:2px}.markdown-body img.emoji{border:none;height:20px;vertical-align:middle;width:20px}.markdown-body li small{color:#a1a1aa}.markdown-body blockquote{border-left:3px solid}.markdown-body blockquote .small,.markdown-body blockquote small,.markdown-body li small{display:initial;font-size:85%}.markdown-body a.mention-anchor:before{content:"";margin-right:0}.markdown-body a.mention-anchor.user-card-popover{border-radius:4px;padding:1px 4px}.markdown-body .alert{border:none;border-radius:4px;margin-top:10px}.markdown-body .alert h2,.markdown-body .alert h3,.markdown-body .alert h4,.markdown-body .alert h5,.markdown-body .alert h6{margin-top:0}.markdown-body .alert h2{border:none}.markdown-body .alert.alert-danger,.markdown-body .alert.alert-info,.markdown-body .alert.alert-success,.markdown-body .alert.alert-warning{border-left:3px solid}.markdown-body .highlight pre,.markdown-body .mark,.markdown-body mark,.markdown-body pre{border-radius:4px}.markdown-body pre.abc,.markdown-body pre.flow-chart,.markdown-body pre.fretboard,.markdown-body pre.graphviz,.markdown-body pre.mermaid,.markdown-body pre.sequence-diagram,.markdown-body pre.vega-embed{border-radius:4px;max-width:100%;overflow:auto}.markdown-body .code-block-wrapper{border-radius:4px;margin-bottom:16px;outline-color:#0000;outline-style:solid;outline-width:1px}.markdown-body .code-block-wrapper:hover{transition-duration:.15s;transition-property:outline-color;transition-timing-function:cubic-bezier(.4,0,.2,1)}.markdown-body .code-block-wrapper.ui-copy-link-block-highlight,.markdown-body .code-block-wrapper:hover{outline-color:var(--hmd-tw-border-primary-default)}.markdown-body .code-block-wrapper,.markdown-body .image-toolbar-wrapper{position:relative}.markdown-body .code-block-wrapper .code-toolbar,.markdown-body .image-toolbar-wrapper .code-toolbar{--tw-translate-y:-100%;--tw-shadow:0 3px 15px 0 #00000026;--tw-shadow-colored:0 3px 15px 0 var(--tw-shadow-color);background-color:var(--hmd-tw-element-bg-default);border-color:var(--hmd-tw-border-default);border-radius:4px;border-style:solid;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);opacity:0;position:absolute;right:0;top:-1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);visibility:hidden;z-index:10}.markdown-body .code-block-wrapper .code-toolbar+pre,.markdown-body .image-toolbar-wrapper .code-toolbar+pre{margin-bottom:0}.markdown-body .code-block-wrapper:not([data-image-error=true]):hover .code-toolbar,.markdown-body .image-toolbar-wrapper:not([data-image-error=true]):hover .code-toolbar{opacity:1;visibility:visible}.markdown-body .image-toolbar-wrapper .code-toolbar{top:5px}.markdown-body table{border:1px solid;border-radius:4px;width:fit-content}.markdown-body table thead tr{border-bottom:1px solid;border-top:none}.markdown-body table tbody tr,.markdown-body table thead tr th{border-top:none}.markdown-body table tbody tr td:first-child,.markdown-body table thead,.markdown-body table thead th:first-child{border-left:none}.markdown-body table td,.markdown-body table th{border:1px solid;border-bottom:none;border-right:none;padding:6px 13px}.markdown-body>section.footnotes li>p{margin:0}.markdown-body.next-editor{overflow-x:hidden!important}.markdown-body pre{border:inherit}.markdown-body code{color:inherit}html[lang^=ja] .markdown-body code code,html[lang^=ja] .markdown-body code kbd,html[lang^=ja] .markdown-body code pre{font-family:Source Code Pro,Consolas,monaco,Meiryo,ＭＳ ゴシック,MS Gothic,monospace}html[lang=zh-tw] .markdown-body code code,html[lang=zh-tw] .markdown-body code kbd,html[lang=zh-tw] .markdown-body code pre{font-family:Source Code Pro,Consolas,monaco,Microsoft JhengHei,微軟正黑,monospace}html[lang=zh-cn] .markdown-body code code,html[lang=zh-cn] .markdown-body code kbd,html[lang=zh-cn] .markdown-body code pre{font-family:Source Code Pro,Consolas,monaco,Microsoft YaHei,微软雅黑,monospace}html .markdown-body code[lang^=ja] code,html .markdown-body code[lang^=ja] kbd,html .markdown-body code[lang^=ja] pre{font-family:Source Code Pro,Consolas,monaco,Meiryo,ＭＳ ゴシック,MS Gothic,monospace}html .markdown-body code[lang=zh-tw] code,html .markdown-body code[lang=zh-tw] kbd,html .markdown-body code[lang=zh-tw] pre{font-family:Source Code Pro,Consolas,monaco,Microsoft JhengHei,微軟正黑,monospace}html .markdown-body code[lang=zh-cn] code,html .markdown-body code[lang=zh-cn] kbd,html .markdown-body code[lang=zh-cn] pre{font-family:Source Code Pro,Consolas,monaco,Microsoft YaHei,微软雅黑,monospace}.markdown-body pre code .wrapper{display:-moz-inline-flex;display:-ms-inline-flex;display:-o-inline-flex;display:inline-flex}.markdown-body pre code .gutter{float:left;overflow:hidden;-webkit-user-select:none;user-select:none}.markdown-body pre code .gutter.linenumber{border-right:2px solid #766df8;box-sizing:initial;color:#a1a1aa;cursor:default;display:inline-block;min-width:20px;padding:0 8px 0 0;position:relative;text-align:right;z-index:4}.markdown-body pre code .gutter.linenumber>span:before{content:attr(data-linenumber)}.markdown-body pre code .code{float:left;margin:0 0 0 16px}.markdown-body .gist .line-numbers{border-bottom:none;border-left:none;border-top:none}.markdown-body .gist .line-data{border:none}.markdown-body .gist table{border-collapse:inherit!important;border-spacing:0}.markdown-body code[data-gist-id]{background:none;padding:0}.markdown-body code[data-gist-id]:after,.markdown-body code[data-gist-id]:before{content:""}.markdown-body code[data-gist-id] .blob-num{border:unset}.markdown-body code[data-gist-id] table{margin-bottom:unset;overflow:unset}.markdown-body code[data-gist-id] table tr{background:unset}.markdown-body[dir=rtl] pre{direction:ltr}.markdown-body[dir=rtl] code{direction:ltr;unicode-bidi:embed}.markdown-body .alert{display:flex;flex-direction:column;gap:16px}.markdown-body .alert>*{margin:0}.markdown-body pre.abc,.markdown-body pre.flow-chart,.markdown-body pre.graphviz,.markdown-body pre.mermaid,.markdown-body pre.sequence-diagram,.markdown-body pre.vega{background-color:inherit;border-radius:0;overflow:visible;text-align:center;white-space:inherit}.markdown-body pre.abc>code,.markdown-body pre.flow-chart>code,.markdown-body pre.graphviz>code,.markdown-body pre.mermaid>code,.markdown-body pre.sequence-diagram>code,.markdown-body pre.vega>code{text-align:left}.markdown-body pre.abc>svg,.markdown-body pre.flow-chart>svg,.markdown-body pre.graphviz>svg,.markdown-body pre.mermaid>svg,.markdown-body pre.sequence-diagram>svg,.markdown-body pre.vega>svg{height:100%;max-width:100%}.markdown-body pre>code.wrap{word-wrap:break-word;white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap}.markdown-body pre.pseudocode{white-space-collapse:collapse}.markdown-body summary{display:list-item}.markdown-body summary:focus{outline:none}.markdown-body details summary{cursor:pointer}.markdown-body details:not([open])>:not(summary){display:none}.markdown-body figure{margin:1em 40px}.markdown-body .mark,.markdown-body mark{background-color:#fff1a7}:root[theme] .markdown-body{line-height:1.75}:root[theme] .markdown-body ::marker,:root[theme] .markdown-body code{color:var(--hmd-tw-text-default)}:root[theme] .markdown-body h1,:root[theme] .markdown-body h2,:root[theme] .markdown-body h3,:root[theme] .markdown-body h4,:root[theme] .markdown-body h5,:root[theme] .markdown-body h6{overflow:visible}:root[theme] .markdown-body h1 .octicon-link,:root[theme] .markdown-body h2 .octicon-link,:root[theme] .markdown-body h3 .octicon-link,:root[theme] .markdown-body h4 .octicon-link,:root[theme] .markdown-body h5 .octicon-link,:root[theme] .markdown-body h6 .octicon-link{color:var(--hmd-tw-text-subtle)}:root[theme] .markdown-body .anchor{left:0;margin-left:0;position:absolute}:root[theme] .markdown-body .gist{--borderRadius-medium:6px}:root[theme] .markdown-body .gist table{border-color:inherit}:root[theme] .markdown-body .gist table thead tr{background-color:inherit;border-bottom-color:inherit}:root[theme] .markdown-body .gist table td,:root[theme] .markdown-body .gist table th{border-left-color:#0000;border-top-color:#0000}:root[theme] .markdown-body .gist table tbody tr,:root[theme] .markdown-body .gist table tr:nth-child(2n){background-color:inherit}:root[theme] .markdown-body ol ol,:root[theme] .markdown-body ol ul,:root[theme] .markdown-body ul ol,:root[theme] .markdown-body ul ul{margin-bottom:12px;margin-top:6px}@media (max-width:767px){.markdown-body h1{font-size:1.6em}.markdown-body h2{font-size:1.4em}.markdown-body h3{font-size:1.125em}}.vimeo,.youtube{background-color:#000;background-position:50%;background-repeat:no-repeat;background-size:contain;cursor:pointer;display:table;overflow:hidden;padding-bottom:56.25%;position:relative;text-align:center;width:100%}.vimeo img,.youtube img{height:100%;left:0;object-fit:cover;position:absolute;top:0;width:100%;z-index:0}.vimeo iframe,.youtube iframe{height:100%;left:0;position:absolute;top:0;vertical-align:middle;width:100%;z-index:1}.vimeo .icon,.youtube .icon{color:#fff;height:auto;left:50%;opacity:.3;position:absolute;top:50%;transform:translate(-50%,-50%);transition:opacity .2s;width:auto;z-index:0}.vimeo:hover .icon,.youtube:hover .icon{opacity:.6;transition:opacity .2s}.slideshare .inner,.speakerdeck .inner{position:relative;width:100%}.slideshare .inner iframe,.speakerdeck .inner iframe{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.figma{display:table;padding-bottom:56.25%;position:relative;width:100%}.figma iframe{border:1px solid #eee;bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.markmap-container{height:300px}.markmap-container>svg{height:100%;width:100%}.MJX_Assistive_MathML{display:none}#MathJax_Message{z-index:1000!important}.ui-infobar{color:var(--hmd-tw-text-default);font-size:14px;margin:25px auto -25px;max-width:760px;position:relative;z-index:2}.ui-infobar .ui-user-icon.small{height:18px;margin:2px;vertical-align:top;width:18px}.toc .invisable-node{list-style-type:none}.ui-toc{bottom:20px;position:fixed;z-index:998}.ui-toc.both-mode{margin-left:2px}.ui-toc.both-mode .ui-toc-label{border-bottom-left-radius:0;border-top-left-radius:0;height:40px;padding:10px 4px}:root[theme=light] :not([theme])>*>.ui-toc .ui-toc-label,:root[theme] [theme=light] .ui-toc-label{background-color:#fdfdfd;border-color:#d4d4d8;color:#a1a1aa}:root[theme=light] :not([theme])>*>.ui-toc .ui-toc-label:active,:root[theme=light] :not([theme])>*>.ui-toc .ui-toc-label:hover,:root[theme] [theme=light] .ui-toc-label:active,:root[theme] [theme=light] .ui-toc-label:hover{background-color:#f4f4f5;border-color:#d4d4d8;color:#a1a1aa}:root[theme=dark] :not([theme])>*>.ui-toc .ui-toc-label,:root[theme=dark] :not([theme])>*>.ui-toc .ui-toc-label:active,:root[theme=dark] :not([theme])>*>.ui-toc .ui-toc-label:hover,:root[theme] [theme=dark] .ui-toc-label,:root[theme] [theme=dark] .ui-toc-label:active,:root[theme] [theme=dark] .ui-toc-label:hover{background-color:#303036;border-color:#52525b;color:#a1a1aa}:root[theme=dark] :not([theme])>*>.ui-toc.both-mode .ui-toc-label,:root[theme] [theme=dark] .ui-toc.both-mode .ui-toc-label{background-color:#303036;border-color:#3f3f46;color:#d4d4d8}:root[theme=dark] :not([theme])>*>.ui-toc.both-mode .ui-toc-label:hover,:root[theme] [theme=dark] .ui-toc.both-mode .ui-toc-label:hover{background-color:#52525b}.ui-toc-label{border:1px solid;transition:opacity .2s}.ui-toc .open .ui-toc-label,.ui-toc-label:hover{opacity:1;transition:opacity .2s}.ui-toc-dropdown{letter-spacing:normal;margin-bottom:20px;margin-top:20px;max-height:70vh;max-width:45vw;overflow:auto;padding-left:10px;padding-right:10px;text-align:inherit;width:25vw}.ui-toc-dropdown.dropdown-menu{box-shadow:0 3px 15px 0 #00000026}.ui-toc-dropdown>.toc{max-height:calc(70vh - 100px);overflow:auto}.ui-toc-dropdown[dir=rtl] .nav{letter-spacing:.0029em;padding-right:0}.ui-toc-dropdown a{overflow:hidden;text-overflow:ellipsis;white-space:pre}.ui-toc-dropdown .nav>li>a{color:var(--hmd-tw-text-subtle);display:block;font-size:12px;font-weight:500;line-height:16px;padding:4px 20px}.ui-toc-dropdown .nav>li:first-child:last-child>ul,.ui-toc-dropdown .toc.expand ul{display:block}.ui-toc-dropdown .nav>li>a:focus,.ui-toc-dropdown .nav>li>a:hover{background-color:initial;border-color:var(--hmd-tw-border-bold);border-style:solid;border-width:0 0 0 1px;color:#000;color:var(--hmd-tw-text-emphasize);padding-left:19px;text-decoration:none}.ui-toc-dropdown[dir=rtl] .nav>li>a:focus,.ui-toc-dropdown[dir=rtl] .nav>li>a:hover{border-left:none;border-right:1px solid #000;padding-right:19px}.ui-toc-dropdown .nav>.active:focus>a,.ui-toc-dropdown .nav>.active:hover>a,.ui-toc-dropdown .nav>.active>a{background-color:initial;border-color:var(--hmd-tw-border-bold);border-style:solid;border-width:0 0 0 2px;color:var(--hmd-tw-text-emphasize);font-weight:600;padding-left:18px}.ui-toc-dropdown[dir=rtl] .nav>.active:focus>a,.ui-toc-dropdown[dir=rtl] .nav>.active:hover>a,.ui-toc-dropdown[dir=rtl] .nav>.active>a{border-width:0 2px 0 medium;border-left:0;border-color:var(--hmd-tw-border-bold);border-style:solid;padding-right:18px}.ui-toc-dropdown .nav .nav{display:none;padding-bottom:10px}.ui-toc-dropdown .nav>.active>ul{display:block}.ui-toc-dropdown .nav .nav>li>a{font-size:12px;font-weight:400;padding-bottom:1px;padding-left:30px;padding-top:1px}.ui-toc-dropdown[dir=rtl] .nav .nav>li>a{padding-right:30px}.ui-toc-dropdown .nav .nav>li>ul>li>a{font-size:12px;font-weight:400;padding-bottom:1px;padding-left:40px;padding-top:1px}.ui-toc-dropdown[dir=rtl] .nav .nav>li>ul>li>a{padding-right:40px}.ui-toc-dropdown .nav .nav>li>a:focus,.ui-toc-dropdown .nav .nav>li>a:hover{padding-left:29px}.ui-toc-dropdown[dir=rtl] .nav .nav>li>a:focus,.ui-toc-dropdown[dir=rtl] .nav .nav>li>a:hover{padding-right:29px}.ui-toc-dropdown .nav .nav>li>ul>li>a:focus,.ui-toc-dropdown .nav .nav>li>ul>li>a:hover{padding-left:39px}.ui-toc-dropdown[dir=rtl] .nav .nav>li>ul>li>a:focus,.ui-toc-dropdown[dir=rtl] .nav .nav>li>ul>li>a:hover{padding-right:39px}.ui-toc-dropdown .nav .nav>.active:focus>a,.ui-toc-dropdown .nav .nav>.active:hover>a,.ui-toc-dropdown .nav .nav>.active>a{font-weight:500;padding-left:28px}.ui-toc-dropdown[dir=rtl] .nav .nav>.active:focus>a,.ui-toc-dropdown[dir=rtl] .nav .nav>.active:hover>a,.ui-toc-dropdown[dir=rtl] .nav .nav>.active>a{padding-right:28px}.ui-toc-dropdown .nav .nav>.active>.nav>.active:focus>a,.ui-toc-dropdown .nav .nav>.active>.nav>.active:hover>a,.ui-toc-dropdown .nav .nav>.active>.nav>.active>a{font-weight:500;padding-left:38px}.ui-toc-dropdown[dir=rtl] .nav .nav>.active>.nav>.active:focus>a,.ui-toc-dropdown[dir=rtl] .nav .nav>.active>.nav>.active:hover>a,.ui-toc-dropdown[dir=rtl] .nav .nav>.active>.nav>.active>a{padding-right:38px}.ui-affix-toc{max-height:70vh;max-width:15vw;overflow:auto;position:fixed;top:0}.back-to-top,.expand-toggle,.go-to-bottom{color:var(--hmd-tw-text-subtle);display:block;font-size:12px;font-weight:500;line-height:16px;margin-left:10px;margin-top:10px;padding:2px 10px}.back-to-top:focus,.back-to-top:hover,.expand-toggle:focus,.expand-toggle:hover,.go-to-bottom:focus,.go-to-bottom:hover{color:var(--hmd-tw-text-primary);text-decoration:none}.back-to-top,.go-to-bottom{margin-top:0}.ui-user-icon{background-position:50%;background-repeat:no-repeat;background-size:cover;border-radius:50%;display:block;height:20px;margin-bottom:2px;margin-right:5px;margin-top:2px;width:20px}.ui-user-icon.small{display:inline-block;height:18px;margin:0 0 .2em;vertical-align:middle;width:18px}.ui-infobar>small>span{line-height:22px}.ui-infobar>small .dropdown{display:inline-block}.ui-infobar>small .dropdown a:focus,.ui-infobar>small .dropdown a:hover{text-decoration:none}.ui-more-info{cursor:pointer;vertical-align:middle}.ui-connectedGithub{line-height:23px;white-space:nowrap}.ui-connectedGithub a.file-path{text-decoration:none}.ui-connectedGithub a.file-path:active,.ui-connectedGithub a.file-path:hover{text-decoration:underline}.unselectable{-webkit-user-select:none;-o-user-select:none;user-select:none}.selectable{-webkit-user-select:text;-o-user-select:text;user-select:text}.inline-spoiler-section{cursor:pointer}.inline-spoiler-section .spoiler-text{background-color:#333;border-radius:2px}.inline-spoiler-section .spoiler-text>*{opacity:0}.inline-spoiler-section .spoiler-img{filter:blur(10px)}.inline-spoiler-section.raw{background-color:#333;border-radius:2px}.inline-spoiler-section.raw>*{opacity:0}.inline-spoiler-section.unveil{cursor:auto}.inline-spoiler-section.unveil .spoiler-text{background-color:#3333331a}.inline-spoiler-section.unveil .spoiler-text>*{opacity:1}.inline-spoiler-section.unveil .spoiler-img{filter:none}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{border-radius:0 6px 6px 6px;display:none!important;left:100%;margin-left:-1px;margin-top:-6px;opacity:0;transition:all allow-discrete .1s ease-in-out;width:100%}.dropdown-submenu>.dropdown-menu.show{display:block!important;opacity:1!important}.dropdown-submenu>.dropdown-menu.pull-left{left:calc(-100% - 4px);top:-8px}.dropdown-menu li.dropdown-submenu>a[role=menuitem]{justify-content:space-between}@media print{blockquote,div,img,pre,table{page-break-inside:avoid!important}a[href]:after{font-size:12px!important}}.markdown-body.slides{color:#222;position:relative;z-index:1}.markdown-body.slides:before{background-color:currentColor;bottom:0;box-shadow:0 0 0 50vw;content:"";display:block;left:0;position:absolute;right:0;top:0;z-index:-1}.markdown-body.slides section[data-markdown]{background-color:#fff;margin-bottom:1.5em;position:relative;text-align:center}.markdown-body.slides section[data-markdown] code{text-align:left}.markdown-body.slides section[data-markdown]:before{content:"";display:block;padding-bottom:56.23%}.markdown-body.slides section[data-markdown]>div:first-child{left:1em;max-height:100%;overflow:hidden;position:absolute;right:1em;top:50%;transform:translateY(-50%)}.markdown-body.slides section[data-markdown]>ul{display:inline-block}.markdown-body.slides>section>section+section:after{border:3px solid #777;content:"";height:1.5em;position:absolute;right:1em;top:-1.5em}.site-ui-font{font-family:Source Sans Pro,Helvetica,Arial,sans-serif}html[lang^=ja] .site-ui-font{font-family:Source Sans Pro,Helvetica,Arial,Hiragino Kaku Gothic Pro,ヒラギノ角ゴ Pro W3,Osaka,Meiryo,メイリオ,MS Gothic,ＭＳ ゴシック,sans-serif}html[lang=zh-tw] .site-ui-font{font-family:Source Sans Pro,Helvetica,Arial,PingFang TC,Microsoft JhengHei,微軟正黑,sans-serif}html[lang=zh-cn] .site-ui-font{font-family:Source Sans Pro,Helvetica,Arial,PingFang SC,Microsoft YaHei,微软雅黑,sans-serif}body{font-smoothing:subpixel-antialiased!important;-webkit-font-smoothing:subpixel-antialiased!important;-moz-osx-font-smoothing:auto!important;-webkit-overflow-scrolling:touch;font-family:Source Sans Pro,Helvetica,Arial,sans-serif;letter-spacing:.025em}html[lang^=ja] body{font-family:Source Sans Pro,Helvetica,Arial,Hiragino Kaku Gothic Pro,ヒラギノ角ゴ Pro W3,Osaka,Meiryo,メイリオ,MS Gothic,ＭＳ ゴシック,sans-serif}html[lang=zh-tw] body{font-family:Source Sans Pro,Helvetica,Arial,PingFang TC,Microsoft JhengHei,微軟正黑,sans-serif}html[lang=zh-cn] body{font-family:Source Sans Pro,Helvetica,Arial,PingFang SC,Microsoft YaHei,微软雅黑,sans-serif}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}abbr[data-original-title],abbr[title]{cursor:help}body.modal-open{overflow-y:auto;padding-right:0!important}svg{text-shadow:none}.hmd-pa-0{padding:0}.hmd-pv-0{padding-bottom:0;padding-top:0}.hmd-ph-0{padding-left:0;padding-right:0}.hmd-pt-0{padding-top:0}.hmd-pr-0{padding-right:0}.hmd-pb-0{padding-bottom:0}.hmd-pl-0{padding-left:0}.hmd-pa-1\/10{padding:1px}.hmd-pv-1\/10{padding-bottom:1px;padding-top:1px}.hmd-ph-1\/10{padding-left:1px;padding-right:1px}.hmd-pt-1\/10{padding-top:1px}.hmd-pr-1\/10{padding-right:1px}.hmd-pb-1\/10{padding-bottom:1px}.hmd-pl-1\/10{padding-left:1px}.hmd-pa-1\/5{padding:2px}.hmd-pv-1\/5{padding-bottom:2px;padding-top:2px}.hmd-ph-1\/5{padding-left:2px;padding-right:2px}.hmd-pt-1\/5{padding-top:2px}.hmd-pr-1\/5{padding-right:2px}.hmd-pb-1\/5{padding-bottom:2px}.hmd-pl-1\/5{padding-left:2px}.hmd-pa-1\/4{padding:.25rem}.hmd-pv-1\/4{padding-bottom:.25rem;padding-top:.25rem}.hmd-ph-1\/4{padding-left:.25rem;padding-right:.25rem}.hmd-pt-1\/4{padding-top:.25rem}.hmd-pr-1\/4{padding-right:.25rem}.hmd-pb-1\/4{padding-bottom:.25rem}.hmd-pl-1\/4{padding-left:.25rem}.hmd-pa-3\/4{padding:.75rem}.hmd-pv-3\/4{padding-bottom:.75rem;padding-top:.75rem}.hmd-ph-3\/4{padding-left:.75rem;padding-right:.75rem}.hmd-pt-3\/4{padding-top:.75rem}.hmd-pr-3\/4{padding-right:.75rem}.hmd-pb-3\/4{padding-bottom:.75rem}.hmd-pl-3\/4{padding-left:.75rem}.hmd-pa-1\/8{padding:.125rem}.hmd-pv-1\/8{padding-bottom:.125rem;padding-top:.125rem}.hmd-ph-1\/8{padding-left:.125rem;padding-right:.125rem}.hmd-pt-1\/8{padding-top:.125rem}.hmd-pr-1\/8{padding-right:.125rem}.hmd-pb-1\/8{padding-bottom:.125rem}.hmd-pl-1\/8{padding-left:.125rem}.hmd-pa-1\/2{padding:5px}.hmd-pv-1\/2{padding-bottom:5px;padding-top:5px}.hmd-ph-1\/2{padding-left:5px;padding-right:5px}.hmd-pt-1\/2{padding-top:5px}.hmd-pr-1\/2{padding-right:5px}.hmd-pb-1\/2{padding-bottom:5px}.hmd-pl-1\/2{padding-left:5px}.hmd-pa-1{padding:10px}.hmd-pv-1{padding-bottom:10px;padding-top:10px}.hmd-ph-1{padding-left:10px;padding-right:10px}.hmd-pt-1{padding-top:10px}.hmd-pr-1{padding-right:10px}.hmd-pb-1{padding-bottom:10px}.hmd-pl-1{padding-left:10px}.hmd-pa-3\/2{padding:15px}.hmd-pv-3\/2{padding-bottom:15px;padding-top:15px}.hmd-ph-3\/2{padding-left:15px;padding-right:15px}.hmd-pt-3\/2{padding-top:15px}.hmd-pr-3\/2{padding-right:15px}.hmd-pb-3\/2{padding-bottom:15px}.hmd-pl-3\/2{padding-left:15px}.hmd-pa-2{padding:20px}.hmd-pv-2{padding-bottom:20px;padding-top:20px}.hmd-ph-2{padding-left:20px;padding-right:20px}.hmd-pt-2{padding-top:20px}.hmd-pr-2{padding-right:20px}.hmd-pb-2{padding-bottom:20px}.hmd-pl-2{padding-left:20px}.hmd-pa-25{padding:25px}.hmd-pv-25{padding-bottom:25px;padding-top:25px}.hmd-ph-25{padding-left:25px;padding-right:25px}.hmd-pt-25{padding-top:25px}.hmd-pr-25{padding-right:25px}.hmd-pb-25{padding-bottom:25px}.hmd-pl-25{padding-left:25px}.hmd-pa-3{padding:30px}.hmd-pv-3{padding-bottom:30px;padding-top:30px}.hmd-ph-3{padding-left:30px;padding-right:30px}.hmd-pt-3{padding-top:30px}.hmd-pr-3{padding-right:30px}.hmd-pb-3{padding-bottom:30px}.hmd-pl-3{padding-left:30px}.hmd-pa-35{padding:35px}.hmd-pv-35{padding-bottom:35px;padding-top:35px}.hmd-ph-35{padding-left:35px;padding-right:35px}.hmd-pt-35{padding-top:35px}.hmd-pr-35{padding-right:35px}.hmd-pb-35{padding-bottom:35px}.hmd-pl-35{padding-left:35px}.hmd-pa-4{padding:40px}.hmd-pv-4{padding-bottom:40px;padding-top:40px}.hmd-ph-4{padding-left:40px;padding-right:40px}.hmd-pt-4{padding-top:40px}.hmd-pr-4{padding-right:40px}.hmd-pb-4{padding-bottom:40px}.hmd-pl-4{padding-left:40px}.hmd-pa-5{padding:50px}.hmd-pv-5{padding-bottom:50px;padding-top:50px}.hmd-ph-5{padding-left:50px;padding-right:50px}.hmd-pt-5{padding-top:50px}.hmd-pr-5{padding-right:50px}.hmd-pb-5{padding-bottom:50px}.hmd-pl-5{padding-left:50px}.hmd-pa-55{padding:55px}.hmd-pv-55{padding-bottom:55px;padding-top:55px}.hmd-ph-55{padding-left:55px;padding-right:55px}.hmd-pt-55{padding-top:55px}.hmd-pr-55{padding-right:55px}.hmd-pb-55{padding-bottom:55px}.hmd-pl-55{padding-left:55px}.hmd-pa-6{padding:60px}.hmd-pv-6{padding-bottom:60px;padding-top:60px}.hmd-ph-6{padding-left:60px;padding-right:60px}.hmd-pt-6{padding-top:60px}.hmd-pr-6{padding-right:60px}.hmd-pb-6{padding-bottom:60px}.hmd-pl-6{padding-left:60px}.hmd-pa-7{padding:70px}.hmd-pv-7{padding-bottom:70px;padding-top:70px}.hmd-ph-7{padding-left:70px;padding-right:70px}.hmd-pt-7{padding-top:70px}.hmd-pr-7{padding-right:70px}.hmd-pb-7{padding-bottom:70px}.hmd-pl-7{padding-left:70px}.hmd-pa-8{padding:80px}.hmd-pv-8{padding-bottom:80px;padding-top:80px}.hmd-ph-8{padding-left:80px;padding-right:80px}.hmd-pt-8{padding-top:80px}.hmd-pr-8{padding-right:80px}.hmd-pb-8{padding-bottom:80px}.hmd-pl-8{padding-left:80px}.hmd-pa-10{padding:100px}.hmd-pv-10{padding-bottom:100px;padding-top:100px}.hmd-ph-10{padding-left:100px;padding-right:100px}.hmd-pt-10{padding-top:100px}.hmd-pr-10{padding-right:100px}.hmd-pb-10{padding-bottom:100px}.hmd-pl-10{padding-left:100px}.hmd-pa-12{padding:120px}.hmd-pv-12{padding-bottom:120px;padding-top:120px}.hmd-ph-12{padding-left:120px;padding-right:120px}.hmd-pt-12{padding-top:120px}.hmd-pr-12{padding-right:120px}.hmd-pb-12{padding-bottom:120px}.hmd-pl-12{padding-left:120px}.hmd-pa-14{padding:140px}.hmd-pv-14{padding-bottom:140px;padding-top:140px}.hmd-ph-14{padding-left:140px;padding-right:140px}.hmd-pt-14{padding-top:140px}.hmd-pr-14{padding-right:140px}.hmd-pb-14{padding-bottom:140px}.hmd-pl-14{padding-left:140px}.hmd-pa-16{padding:160px}.hmd-pv-16{padding-bottom:160px;padding-top:160px}.hmd-ph-16{padding-left:160px;padding-right:160px}.hmd-pt-16{padding-top:160px}.hmd-pr-16{padding-right:160px}.hmd-pb-16{padding-bottom:160px}.hmd-pl-16{padding-left:160px}.hmd-pa-auto{padding:auto}.hmd-pv-auto{padding-bottom:auto;padding-top:auto}.hmd-ph-auto{padding-left:auto;padding-right:auto}.hmd-pt-auto{padding-top:auto}.hmd-pr-auto{padding-right:auto}.hmd-pb-auto{padding-bottom:auto}.hmd-pl-auto{padding-left:auto}.hmd-ma-0{margin:0}.hmd-mv-0{margin-bottom:0;margin-top:0}.hmd-mh-0{margin-left:0;margin-right:0}.hmd-mt-0{margin-top:0}.hmd-mr-0{margin-right:0}.hmd-mb-0{margin-bottom:0}.hmd-ml-0{margin-left:0}.hmd-nt-0{margin-top:0}.hmd-nr-0{margin-right:0}.hmd-nb-0{margin-bottom:0}.hmd-nl-0{margin-left:0}.hmd-ma-1\/10{margin:1px}.hmd-mv-1\/10{margin-bottom:1px;margin-top:1px}.hmd-mh-1\/10{margin-left:1px;margin-right:1px}.hmd-mt-1\/10{margin-top:1px}.hmd-mr-1\/10{margin-right:1px}.hmd-mb-1\/10{margin-bottom:1px}.hmd-ml-1\/10{margin-left:1px}.hmd-nt-1\/10{margin-top:-1px}.hmd-nr-1\/10{margin-right:-1px}.hmd-nb-1\/10{margin-bottom:-1px}.hmd-nl-1\/10{margin-left:-1px}.hmd-ma-1\/5{margin:2px}.hmd-mv-1\/5{margin-bottom:2px;margin-top:2px}.hmd-mh-1\/5{margin-left:2px;margin-right:2px}.hmd-mt-1\/5{margin-top:2px}.hmd-mr-1\/5{margin-right:2px}.hmd-mb-1\/5{margin-bottom:2px}.hmd-ml-1\/5{margin-left:2px}.hmd-nt-1\/5{margin-top:-2px}.hmd-nr-1\/5{margin-right:-2px}.hmd-nb-1\/5{margin-bottom:-2px}.hmd-nl-1\/5{margin-left:-2px}.hmd-ma-1\/4{margin:.25rem}.hmd-mv-1\/4{margin-bottom:.25rem;margin-top:.25rem}.hmd-mh-1\/4{margin-left:.25rem;margin-right:.25rem}.hmd-mt-1\/4{margin-top:.25rem}.hmd-mr-1\/4{margin-right:.25rem}.hmd-mb-1\/4{margin-bottom:.25rem}.hmd-ml-1\/4{margin-left:.25rem}.hmd-nt-1\/4{margin-top:-.25rem}.hmd-nr-1\/4{margin-right:-.25rem}.hmd-nb-1\/4{margin-bottom:-.25rem}.hmd-nl-1\/4{margin-left:-.25rem}.hmd-ma-3\/4{margin:.75rem}.hmd-mv-3\/4{margin-bottom:.75rem;margin-top:.75rem}.hmd-mh-3\/4{margin-left:.75rem;margin-right:.75rem}.hmd-mt-3\/4{margin-top:.75rem}.hmd-mr-3\/4{margin-right:.75rem}.hmd-mb-3\/4{margin-bottom:.75rem}.hmd-ml-3\/4{margin-left:.75rem}.hmd-nt-3\/4{margin-top:-.75rem}.hmd-nr-3\/4{margin-right:-.75rem}.hmd-nb-3\/4{margin-bottom:-.75rem}.hmd-nl-3\/4{margin-left:-.75rem}.hmd-ma-1\/8{margin:.125rem}.hmd-mv-1\/8{margin-bottom:.125rem;margin-top:.125rem}.hmd-mh-1\/8{margin-left:.125rem;margin-right:.125rem}.hmd-mt-1\/8{margin-top:.125rem}.hmd-mr-1\/8{margin-right:.125rem}.hmd-mb-1\/8{margin-bottom:.125rem}.hmd-ml-1\/8{margin-left:.125rem}.hmd-nt-1\/8{margin-top:-.125rem}.hmd-nr-1\/8{margin-right:-.125rem}.hmd-nb-1\/8{margin-bottom:-.125rem}.hmd-nl-1\/8{margin-left:-.125rem}.hmd-ma-1\/2{margin:5px}.hmd-mv-1\/2{margin-bottom:5px;margin-top:5px}.hmd-mh-1\/2{margin-left:5px;margin-right:5px}.hmd-mt-1\/2{margin-top:5px}.hmd-mr-1\/2{margin-right:5px}.hmd-mb-1\/2{margin-bottom:5px}.hmd-ml-1\/2{margin-left:5px}.hmd-nt-1\/2{margin-top:-5px}.hmd-nr-1\/2{margin-right:-5px}.hmd-nb-1\/2{margin-bottom:-5px}.hmd-nl-1\/2{margin-left:-5px}.hmd-ma-1{margin:10px}.hmd-mv-1{margin-bottom:10px;margin-top:10px}.hmd-mh-1{margin-left:10px;margin-right:10px}.hmd-mt-1{margin-top:10px}.hmd-mr-1{margin-right:10px}.hmd-mb-1{margin-bottom:10px}.hmd-ml-1{margin-left:10px}.hmd-nt-1{margin-top:-10px}.hmd-nr-1{margin-right:-10px}.hmd-nb-1{margin-bottom:-10px}.hmd-nl-1{margin-left:-10px}.hmd-ma-3\/2{margin:15px}.hmd-mv-3\/2{margin-bottom:15px;margin-top:15px}.hmd-mh-3\/2{margin-left:15px;margin-right:15px}.hmd-mt-3\/2{margin-top:15px}.hmd-mr-3\/2{margin-right:15px}.hmd-mb-3\/2{margin-bottom:15px}.hmd-ml-3\/2{margin-left:15px}.hmd-nt-3\/2{margin-top:-15px}.hmd-nr-3\/2{margin-right:-15px}.hmd-nb-3\/2{margin-bottom:-15px}.hmd-nl-3\/2{margin-left:-15px}.hmd-ma-2{margin:20px}.hmd-mv-2{margin-bottom:20px;margin-top:20px}.hmd-mh-2{margin-left:20px;margin-right:20px}.hmd-mt-2{margin-top:20px}.hmd-mr-2{margin-right:20px}.hmd-mb-2{margin-bottom:20px}.hmd-ml-2{margin-left:20px}.hmd-nt-2{margin-top:-20px}.hmd-nr-2{margin-right:-20px}.hmd-nb-2{margin-bottom:-20px}.hmd-nl-2{margin-left:-20px}.hmd-ma-25{margin:25px}.hmd-mv-25{margin-bottom:25px;margin-top:25px}.hmd-mh-25{margin-left:25px;margin-right:25px}.hmd-mt-25{margin-top:25px}.hmd-mr-25{margin-right:25px}.hmd-mb-25{margin-bottom:25px}.hmd-ml-25{margin-left:25px}.hmd-nt-25{margin-top:-25px}.hmd-nr-25{margin-right:-25px}.hmd-nb-25{margin-bottom:-25px}.hmd-nl-25{margin-left:-25px}.hmd-ma-3{margin:30px}.hmd-mv-3{margin-bottom:30px;margin-top:30px}.hmd-mh-3{margin-left:30px;margin-right:30px}.hmd-mt-3{margin-top:30px}.hmd-mr-3{margin-right:30px}.hmd-mb-3{margin-bottom:30px}.hmd-ml-3{margin-left:30px}.hmd-nt-3{margin-top:-30px}.hmd-nr-3{margin-right:-30px}.hmd-nb-3{margin-bottom:-30px}.hmd-nl-3{margin-left:-30px}.hmd-ma-35{margin:35px}.hmd-mv-35{margin-bottom:35px;margin-top:35px}.hmd-mh-35{margin-left:35px;margin-right:35px}.hmd-mt-35{margin-top:35px}.hmd-mr-35{margin-right:35px}.hmd-mb-35{margin-bottom:35px}.hmd-ml-35{margin-left:35px}.hmd-nt-35{margin-top:-35px}.hmd-nr-35{margin-right:-35px}.hmd-nb-35{margin-bottom:-35px}.hmd-nl-35{margin-left:-35px}.hmd-ma-4{margin:40px}.hmd-mv-4{margin-bottom:40px;margin-top:40px}.hmd-mh-4{margin-left:40px;margin-right:40px}.hmd-mt-4{margin-top:40px}.hmd-mr-4{margin-right:40px}.hmd-mb-4{margin-bottom:40px}.hmd-ml-4{margin-left:40px}.hmd-nt-4{margin-top:-40px}.hmd-nr-4{margin-right:-40px}.hmd-nb-4{margin-bottom:-40px}.hmd-nl-4{margin-left:-40px}.hmd-ma-5{margin:50px}.hmd-mv-5{margin-bottom:50px;margin-top:50px}.hmd-mh-5{margin-left:50px;margin-right:50px}.hmd-mt-5{margin-top:50px}.hmd-mr-5{margin-right:50px}.hmd-mb-5{margin-bottom:50px}.hmd-ml-5{margin-left:50px}.hmd-nt-5{margin-top:-50px}.hmd-nr-5{margin-right:-50px}.hmd-nb-5{margin-bottom:-50px}.hmd-nl-5{margin-left:-50px}.hmd-ma-55{margin:55px}.hmd-mv-55{margin-bottom:55px;margin-top:55px}.hmd-mh-55{margin-left:55px;margin-right:55px}.hmd-mt-55{margin-top:55px}.hmd-mr-55{margin-right:55px}.hmd-mb-55{margin-bottom:55px}.hmd-ml-55{margin-left:55px}.hmd-nt-55{margin-top:-55px}.hmd-nr-55{margin-right:-55px}.hmd-nb-55{margin-bottom:-55px}.hmd-nl-55{margin-left:-55px}.hmd-ma-6{margin:60px}.hmd-mv-6{margin-bottom:60px;margin-top:60px}.hmd-mh-6{margin-left:60px;margin-right:60px}.hmd-mt-6{margin-top:60px}.hmd-mr-6{margin-right:60px}.hmd-mb-6{margin-bottom:60px}.hmd-ml-6{margin-left:60px}.hmd-nt-6{margin-top:-60px}.hmd-nr-6{margin-right:-60px}.hmd-nb-6{margin-bottom:-60px}.hmd-nl-6{margin-left:-60px}.hmd-ma-7{margin:70px}.hmd-mv-7{margin-bottom:70px;margin-top:70px}.hmd-mh-7{margin-left:70px;margin-right:70px}.hmd-mt-7{margin-top:70px}.hmd-mr-7{margin-right:70px}.hmd-mb-7{margin-bottom:70px}.hmd-ml-7{margin-left:70px}.hmd-nt-7{margin-top:-70px}.hmd-nr-7{margin-right:-70px}.hmd-nb-7{margin-bottom:-70px}.hmd-nl-7{margin-left:-70px}.hmd-ma-8{margin:80px}.hmd-mv-8{margin-bottom:80px;margin-top:80px}.hmd-mh-8{margin-left:80px;margin-right:80px}.hmd-mt-8{margin-top:80px}.hmd-mr-8{margin-right:80px}.hmd-mb-8{margin-bottom:80px}.hmd-ml-8{margin-left:80px}.hmd-nt-8{margin-top:-80px}.hmd-nr-8{margin-right:-80px}.hmd-nb-8{margin-bottom:-80px}.hmd-nl-8{margin-left:-80px}.hmd-ma-10{margin:100px}.hmd-mv-10{margin-bottom:100px;margin-top:100px}.hmd-mh-10{margin-left:100px;margin-right:100px}.hmd-mt-10{margin-top:100px}.hmd-mr-10{margin-right:100px}.hmd-mb-10{margin-bottom:100px}.hmd-ml-10{margin-left:100px}.hmd-nt-10{margin-top:-100px}.hmd-nr-10{margin-right:-100px}.hmd-nb-10{margin-bottom:-100px}.hmd-nl-10{margin-left:-100px}.hmd-ma-12{margin:120px}.hmd-mv-12{margin-bottom:120px;margin-top:120px}.hmd-mh-12{margin-left:120px;margin-right:120px}.hmd-mt-12{margin-top:120px}.hmd-mr-12{margin-right:120px}.hmd-mb-12{margin-bottom:120px}.hmd-ml-12{margin-left:120px}.hmd-nt-12{margin-top:-120px}.hmd-nr-12{margin-right:-120px}.hmd-nb-12{margin-bottom:-120px}.hmd-nl-12{margin-left:-120px}.hmd-ma-14{margin:140px}.hmd-mv-14{margin-bottom:140px;margin-top:140px}.hmd-mh-14{margin-left:140px;margin-right:140px}.hmd-mt-14{margin-top:140px}.hmd-mr-14{margin-right:140px}.hmd-mb-14{margin-bottom:140px}.hmd-ml-14{margin-left:140px}.hmd-nt-14{margin-top:-140px}.hmd-nr-14{margin-right:-140px}.hmd-nb-14{margin-bottom:-140px}.hmd-nl-14{margin-left:-140px}.hmd-ma-16{margin:160px}.hmd-mv-16{margin-bottom:160px;margin-top:160px}.hmd-mh-16{margin-left:160px;margin-right:160px}.hmd-mt-16{margin-top:160px}.hmd-mr-16{margin-right:160px}.hmd-mb-16{margin-bottom:160px}.hmd-ml-16{margin-left:160px}.hmd-nt-16{margin-top:-160px}.hmd-nr-16{margin-right:-160px}.hmd-nb-16{margin-bottom:-160px}.hmd-nl-16{margin-left:-160px}.hmd-ma-auto{margin:auto}.hmd-mv-auto{margin-bottom:auto;margin-top:auto}.hmd-mh-auto{margin-left:auto;margin-right:auto}.hmd-mt-auto{margin-top:auto}.hmd-mr-auto{margin-right:auto}.hmd-mb-auto{margin-bottom:auto}.hmd-ml-auto{margin-left:auto}.hmd-nt-auto{margin-top:-auto}.hmd-nr-auto{margin-right:-auto}.hmd-nb-auto{margin-bottom:-auto}.hmd-nl-auto{margin-left:-auto}.hmd-mh-auto-{margin:0 auto}.hmd-dn{display:none}.hmd-di{display:inline}.hmd-db{display:block}.hmd-dib{display:inline-block}.hmd-dit{display:inline-table}.hmd-dt{display:table}.hmd-dtc{display:table-cell}.hmd-dt-row{display:table-row}.hmd-dt-row-group{display:table-row-group}.hmd-dt-column{display:table-column}.hmd-dt-column-group{display:table-column-group}.hmd-dns{display:unset}.hmd-dni{display:none!important}.hmd-vv{visibility:visible}.hmd-vh{visibility:hidden}.hmd-flex{display:flex}.hmd-flex-auto{flex:1 1 auto;min-height:0;min-width:0}.hmd-flex-one{flex:1}.hmd-flex-two{flex:2}.hmd-flex-none{flex:none}.hmd-flex-column{flex-direction:column}.hmd-flex-row{flex-direction:row}.hmd-flex-wrap{flex-wrap:wrap}.hmd-flex-nowrap{flex-wrap:nowrap}.hmd-flex-wrap-reverse{flex-wrap:wrap-reverse}.hmd-flex-column-reverse{flex-direction:column-reverse}.hmd-flex-row-reverse{flex-direction:row-reverse}.hmd-items-start{align-items:flex-start}.hmd-items-end{align-items:flex-end}.hmd-items-center{align-items:center}.hmd-items-baseline{align-items:baseline}.hmd-items-stretch{align-items:stretch}.hmd-self-start{align-self:flex-start}.hmd-self-end{align-self:flex-end}.hmd-self-center{align-self:center}.hmd-self-baseline{align-self:baseline}.hmd-self-stretch{align-self:stretch}.hmd-justify-start{justify-content:flex-start}.hmd-justify-end{justify-content:flex-end}.hmd-justify-center{justify-content:center}.hmd-justify-between{justify-content:space-between}.hmd-justify-around{justify-content:space-around}.hmd-content-start{align-content:flex-start}.hmd-content-end{align-content:flex-end}.hmd-content-center{align-content:center}.hmd-content-between{align-content:space-between}.hmd-content-around{align-content:space-around}.hmd-content-stretch{align-content:stretch}.hmd-order-0{order:0}.hmd-order-1{order:1}.hmd-order-2{order:2}.hmd-order-3{order:3}.hmd-order-4{order:4}.hmd-order-5{order:5}.hmd-order-6{order:6}.hmd-order-7{order:7}.hmd-order-8{order:8}.hmd-order-last{order:99999}.hmd-flex-grow-0{flex-grow:0}.hmd-flex-grow-1{flex-grow:1}.hmd-flex-shrink-0{flex-shrink:0}.hmd-flex-shrink-1{flex-shrink:1}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#ff6363}.has-error .form-control{border-color:#ff6363}.btn-large{font-size:18px;margin:0 10px;padding:10px;width:180px}.modal.signin-modal{color:#333;font-size:18px}.modal.signin-modal .social-buttons-container{align-items:center;display:flex;flex-direction:column;margin-bottom:30px}.modal.signin-modal .btn-social{display:inline-block;margin-top:10px;width:250px}.modal.signin-modal .btn-social.btn-social.btn-lg{margin-top:8px;padding-bottom:7px;padding-left:45px;padding-top:7px}.modal.signin-modal .btn-social.btn-social.btn-lg :first-child{border:none;line-height:38px}.modal.signin-modal p{margin:15px 0}.modal.signin-modal p a{color:#333;text-decoration:underline}.modal.signin-modal p a:active,.modal.signin-modal p a:focus,.modal.signin-modal p a:hover{color:#7a7a7a;cursor:pointer}.modal.signin-modal p.separator{font-weight:600;margin:30px 0}.modal.signin-modal .modal-dialog{max-width:476px}.modal.signin-modal h3{font-size:28px;font-weight:600;margin-bottom:30px;margin-top:30px}.modal.signin-modal .modal-content{padding:0 30px 30px;text-align:center}.modal.signin-modal .form-group{text-align:left}.modal.signin-modal .form-group input{font-size:16px;height:40px;margin-top:7px}.modal.signin-modal .form-group .control-label{font-size:18px}.modal.signin-modal .form-group .control-label a{color:#333;text-decoration:underline}.modal.signin-modal .form-group .control-label a:active,.modal.signin-modal .form-group .control-label a:focus,.modal.signin-modal .form-group .control-label a:hover{color:#7a7a7a;cursor:pointer}.modal.signin-modal .form-group .help-block.control-label{font-size:12px}.modal.signin-modal .form-group .help-block.control-label ul{margin-bottom:0}.modal.signin-modal .has-error .help-block{text-align:right}.modal.signin-modal label.control-label{font-weight:400}.modal.signin-modal .has-error label.control-label{color:initial}.has-error.form-group .form-control:focus{border-color:#ff6363;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ff6363}.hmd-text-left{text-align:left}.hmd-text-right{text-align:right}.hmd-text-center{text-align:center}.hmd-text-bold{font-weight:700}.hmd-text-underline{text-decoration:underline}.ellipsis-text{text-overflow:ellipsis}.ellipsis-text,.text-ellipsis{max-width:100%;overflow:hidden;white-space:nowrap}a.unset-anchor-style{color:unset}a.unset-anchor-style:hover{color:unset;text-decoration:none}.github-path-container .github-path{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[theme=dark] #github-sync-pull-editor{--pull-modal-border-color:var(--hmd-tw-border-primary-focus);--pull-modal-bg:#766df8;--pull-modal-opacity:.15;--pull-modal-changes-bg:#766df8;--pull-modal-changes-opacity:.4;--pull-modal-scroll-marker:#766df899;--pull-modal-mix-blend-mode:screen}[theme=light] #github-sync-pull-editor{--pull-modal-border-color:var(--hmd-tw-border-primary-focus);--pull-modal-bg:#564dff;--pull-modal-opacity:.15;--pull-modal-changes-bg:#453aff;--pull-modal-changes-opacity:.15;--pull-modal-scroll-marker:#766df899;--pull-modal-mix-blend-mode:normal}#githubSyncPullModal .selectize-control{font-size:14px;height:38px;min-width:100px;width:100%}#githubSyncPullModal .selectize-control .selectize-input{height:100%;padding-bottom:6px;padding-top:6px}#githubSyncPullModal .github-pull-form{font-size:16px;padding:0 20px 45px;position:relative}#githubSyncPullModal .github-pull-form .pull-view-indicator{bottom:0;color:var(--hmd-tw-text-subtler);font-size:12px;font-weight:600;left:0;padding:10px 20px;position:absolute;width:100%}#githubSyncPullModal #github-sync-pull-editor{height:100%}#githubSyncPullModal #github-sync-pull-editor .CodeMirror-merge{border-bottom:0;border-left:0;border-right:0;border-color:var(--hmd-tw-border-default)}#githubSyncPullModal #github-sync-pull-editor .CodeMirror-merge-pane{border-color:var(--hmd-tw-border-default);border-style:solid;border-width:0 0 1px}#githubSyncPullModal #github-sync-pull-editor .CodeMirror-merge-pane .CodeMirror.CodeMirror-wrap{height:100%}#githubSyncPullModal #github-sync-pull-editor .CodeMirror-merge-gap{background-color:initial;border:0;outline-color:var(--hmd-tw-border-default);outline-style:solid;outline-width:1px}#githubSyncPullModal #github-sync-pull-editor .CodeMirror-merge-l-chunk{background:var(--pull-modal-bg);mix-blend-mode:var(--pull-modal-mix-blend-mode);opacity:var(--pull-modal-opacity)}#githubSyncPullModal #github-sync-pull-editor .CodeMirror-merge-l-connect{fill:var(--pull-modal-changes-bg);fill-opacity:.15;stroke:#88e}#githubSyncPullModal #github-sync-pull-branch-dropdown{max-width:528px;width:100%}#githubSyncPullModal #github-sync-pull-branch-dropdown .dropdown-menu,#githubSyncPullModal #github-sync-pull-branch-dropdown .dropdown-toggle{width:100%}#githubSyncPullModal .github-path-container{padding:20px 20px 30px}#githubSyncPullModal .pull-editor-container{height:100%;padding-bottom:10px;position:relative;width:100%}#githubSyncPullModal .pull-editor-container .ui-spinner{height:100%;position:absolute;width:100%}#githubSyncPullModal .github-sync-pull-error{background-color:var(--hmd-tw-background-default);border-bottom-left-radius:6px;border-bottom-right-radius:6px;height:calc(100% - 120px);left:0;position:absolute;top:120px;width:100%;z-index:10}.github-sync-modal .github-section-title{border-color:var(--hmd-tw-border-default);border-style:solid;border-width:0 0 2px;margin:5px 0 30px;padding-bottom:15px}.github-sync-modal .choose-branch-section,.github-sync-modal .github-path-container{display:none}.github-sync-modal[data-github-sync-push=true] .github-path-container{display:block}.github-sync-modal[data-github-sync-push=true] .choose-repo-file-section{display:none!important}.github-sync-modal[data-github-sync-push=true] .choose-branch-section{display:block}.github-sync-modal .create-version-form .form-group{color:#686868}.github-sync-modal .create-version-form .form-group .ui-revision-timestamp{font-weight:700}.github-sync-modal .version-list{color:#333;font-size:16px;font-weight:400;margin-bottom:20px;max-height:180px;overflow:auto}.github-sync-modal .version-list label{font-weight:400}.github-sync-modal .version-list input{margin-right:10px}.github-sync-modal .active .visibility-on-active{visibility:visible}.github-sync-modal * .visibility-on-active{visibility:hidden}.github-sync-modal .ui-github-sync-button.disabled{pointer-events:none}.github-sync-modal .github-sync-button-container{bottom:0;position:absolute;right:0;text-align:right}.tooltip{filter:drop-shadow(0 1px 3px rgba(0,0,0,.65)) drop-shadow(0 3px 20px rgba(0,0,0,.4));font-family:Inter,system-ui,sans-serif;font-size:12px;font-weight:500;line-height:16px}.tooltip.show{opacity:1}.tooltip .tooltip-inner{background-color:#3f3f46;padding:6px 8px;text-align:left}.tooltip.bs-tooltip-auto[x-placement^=top] .tooltip-arrow:before,.tooltip.bs-tooltip-top .tooltip-arrow:before,.tooltip.top .tooltip-arrow{border-top-color:#3f3f46!important}.tooltip.bs-tooltip-auto[x-placement^=right] .tooltip-arrow:before,.tooltip.bs-tooltip-right .tooltip-arrow:before,.tooltip.right .tooltip-arrow{border-right-color:#3f3f46!important}.tooltip.bottom .tooltip-arrow,.tooltip.bs-tooltip-auto[x-placement^=bottom] .tooltip-arrow:before,.tooltip.bs-tooltip-bottom .tooltip-arrow:before{border-bottom-color:#3f3f46!important}.tooltip.bs-tooltip-auto[x-placement^=left] .tooltip-arrow:before,.tooltip.bs-tooltip-left .tooltip-arrow:before,.tooltip.left .tooltip-arrow{border-left-color:#3f3f46!important}.toasts-container,.toasts-container-top{position:fixed;z-index:1000}.btn-social{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:14px;font-weight:500;line-height:24px}.btn-google{background-color:#fff;color:#757575}.btn-google.active,.btn-google:active,.btn-google:focus,.btn-google:hover,.open>.dropdown-toggle.btn-google{background-color:#eee;color:#757575}.btn-google.disabled,.btn-google.disabled.active,.btn-google.disabled:active,.btn-google.disabled:focus,.btn-google.disabled:hover,.btn-google[disabled],.btn-google[disabled]:active,.btn-google[disabled]:focus,.btn-google[disabled]:hover,btn-google[disabled].active,fieldset[disabled] .btn-google,fieldset[disabled] .btn-google.active,fieldset[disabled] .btn-google:active,fieldset[disabled] .btn-google:focus,fieldset[disabled] .btn-google:hover{background-color:#00000014}.btn-google .icon:before{background-position:50%;background-repeat:no-repeat;background-size:contain;content:" ";display:block;height:2em;margin:auto;width:34px}.btn-google .icon-google:before{background-image:url(/build/5ad53eff23ff8214c783.svg);height:44px;width:21px}.btn-google .disabled .icon-google:before,.btn-google [disabled] .icon-google:before{background-image:url(/build/a0eb1459e71a376d4798.svg)}@tailwind base;@tailwind components;@tailwind utilities;:root[theme] .ui-content,:root[theme] body{font-family:Inter,system-ui,sans-serif}:root[theme] .ui-content,:root[theme] .ui-edit-area,:root[theme] .ui-view-area,:root[theme] body{background-color:var(--hmd-tw-background-default);color:var(--hmd-tw-text-default)}:root[theme] body[data-view-theme=dark]{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}:root[theme] body[data-view-theme=light]{--tw-bg-opacity:1;background-color:rgb(253 253 253/var(--tw-bg-opacity,1))}:root[theme] .CodeMirror-foldmarker{color:var(--hmd-tw-text-default)}:root[theme=light] :not([theme]) .cm-matchhighlight,:root[theme] [theme=light] .cm-matchhighlight{background-color:#453aff33;border-bottom:none}:root[theme=light] :not([theme]) .cm-matchhighlight.cm-selection-focused,:root[theme] [theme=light] .cm-matchhighlight.cm-selection-focused{background-color:#564dff73;color:#fff}:root[theme=dark] :not([theme]) .cm-matchhighlight,:root[theme] [theme=dark] .cm-matchhighlight{background-color:#453aff33}:root[theme=dark] :not([theme]) .cm-matchhighlight.cm-selection-focused,:root[theme] [theme=dark] .cm-matchhighlight.cm-selection-focused{background-color:#453aff99;color:#fff}:root[theme=light] :not([theme]) .cm-searching,:root[theme] [theme=light] .cm-searching{background-color:#fbbf24!important}:root[theme=dark] :not([theme]) .cm-searching,:root[theme] [theme=dark] .cm-searching{background-color:#fcd34d!important;color:#18181b!important}:root[theme] .cm-indent-guide{border-color:var(--hmd-tw-border-subtlest)}:root[theme] .CodeMirror-dialog-top{background-color:var(--hmd-tw-background-subtler);border-color:var(--hmd-tw-border-subtlest);border-style:solid;border-width:0 0 1px;padding:6px 13px}:root[theme] .CodeMirror-dialog-top .CodeMirror-search-hint{color:var(--hmd-tw-icon-subtler);font-size:14px}:root[theme] .CodeMirror-dialog-bottom{background-color:var(--hmd-tw-background-subtler);border-color:var(--hmd-tw-border-subtlest);border-style:solid;border-width:1px 0 0;padding:6px 13px}:root[theme] .CodeMirror-dialog-bottom .CodeMirror-search-hint{color:var(--hmd-tw-icon-subtler);font-size:14px}:root[theme] .CodeMirror-overlayscroll-horizontal div,:root[theme] .CodeMirror-overlayscroll-vertical div{background-color:var(--hmd-tw-border-default)}:root[theme] .CodeMirror-overlayscroll-horizontal div:focus,:root[theme] .CodeMirror-overlayscroll-horizontal div:hover,:root[theme] .CodeMirror-overlayscroll-vertical div:focus,:root[theme] .CodeMirror-overlayscroll-vertical div:hover{background-color:var(--hmd-tw-border-subtler)}:root[theme] .CodeMirror-gutter-background{background-color:var(--hmd-tw-background-subtler)!important}:root[theme] .ui-edit-area .ui-resizable-handle.ui-resizable-e{background-color:var(--hmd-tw-background-default);border-left-color:var(--hmd-tw-border-subtlest);transition-duration:30ms}:root[theme] .ui-edit-area .ui-resizable-handle.ui-resizable-e:hover{background-color:var(--hmd-tw-background-default)}:root[theme=light] :not([theme]) .ui-edit-area .ui-resizable-handle.ui-resizable-e:hover,:root[theme] [theme=light] .ui-edit-area .ui-resizable-handle.ui-resizable-e:hover{border-color:var(--hmd-tw-border-subtler);border-style:solid;border-width:0 0 0 2px}:root[theme=dark] :not([theme]) .ui-edit-area .ui-resizable-handle.ui-resizable-e:hover,:root[theme] [theme=dark] .ui-edit-area .ui-resizable-handle.ui-resizable-e:hover{border-color:var(--hmd-tw-border-subtler);border-style:solid;border-width:0 0 0 3px}:root[theme] .ui-edit-area .ui-sync-toggle{background-color:var(--hmd-tw-raised-bg-default);border-color:var(--hmd-tw-raised-border-default);color:var(--hmd-tw-raised-icon-default);transition-duration:.1s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}:root[theme] .ui-edit-area .ui-sync-toggle:hover{background-color:var(--hmd-tw-raised-bg-hover);border-color:var(--hmd-tw-raised-border-hover);color:var(--hmd-tw-raised-icon-hover)}:root[theme] .dropdown-menu{background-color:var(--hmd-tw-background-subtler);border-color:var(--hmd-tw-border-default);border-style:solid;border-width:1px;color:var(--hmd-tw-text-default);padding-bottom:8px;padding-top:8px}:root[theme] .dropdown-menu>li>a{color:var(--hmd-tw-text-default);padding:6px 20px}:root[theme] .dropdown-menu>li>a:focus,:root[theme] .dropdown-menu>li>a:hover{background-color:var(--hmd-tw-element-bg-hover);color:var(--hmd-tw-text-emphasize)}:root[theme] .dropdown-menu .divider{border-color:var(--hmd-tw-border-default);border-style:solid;border-width:0 0 1px}:root[theme] .dropdown-header{color:var(--hmd-tw-text-subtle)}:root[theme] .ui-edit-area .ui-resizable-handle.ui-resizable-e{background-color:initial;border-color:var(--hmd-tw-border-subtlest);border-width:0 0 0 3px;transition-duration:.1s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}:root[theme] .ui-edit-area .ui-resizable-handle.ui-resizable-e:focus,:root[theme] .ui-edit-area .ui-resizable-handle.ui-resizable-e:hover{background-color:initial;border-color:var(--hmd-tw-border-subtler)}:root[theme=light] :not([theme]) .ui-edit-area .ui-sync-toggle,:root[theme] [theme=light] .ui-edit-area .ui-sync-toggle{background-color:#e4e4e7;border-color:#d4d4d8;color:#71717a}:root[theme=light] :not([theme]) .ui-edit-area .ui-sync-toggle:hover,:root[theme] [theme=light] .ui-edit-area .ui-sync-toggle:hover{background-color:#d4d4d8;border-color:#a1a1aa;color:#52525b}:root[theme=dark] :not([theme]) .ui-edit-area .ui-sync-toggle,:root[theme] [theme=dark] .ui-edit-area .ui-sync-toggle{background-color:#3f3f46;border-color:#52525b;color:#d4d4d8;transition:all .1s}:root[theme=dark] :not([theme]) .ui-edit-area .ui-sync-toggle:hover,:root[theme] [theme=dark] .ui-edit-area .ui-sync-toggle:hover{background-color:#52525b;border-color:#71717a;color:#fafafa}:root[theme] .status-indicators .popover{background-color:var(--hmd-tw-background-default)}:root[theme] .status-indicators .popover .popover-title{background-color:var(--hmd-tw-background-subtler);border-width:0;border-bottom:1px var(--hmd-tw-border-default);border-style:solid;color:var(--hmd-tw-text-default);font-size:18px;font-weight:700;line-height:22px;padding:11px 20px}:root[theme] .status-indicators .popover label{font-size:14px;font-weight:400;line-height:20px}:root[theme] .status-indicators .popover input{margin:0}:root[theme] .status-indicators .popover .alert.alert-info{background-color:var(--hmd-tw-state-info-background);border-color:var(--hmd-tw-state-info-border);color:var(--hmd-tw-state-info-text);margin:0}:root[theme] .status-indicators .popover a{color:var(--hmd-tw-link-text-default)}:root[theme] .status-indicators .popover a:focus,:root[theme] .status-indicators .popover a:hover{color:var(--hmd-tw-link-text-hover)}:root[theme] kbd{--tw-shadow:0 0 0 1px,0 2px 0 1px;--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color),0 2px 0 1px var(--tw-shadow-color);--tw-shadow-color:var(--hmd-tw-border-subtler);--tw-shadow:var(--tw-shadow-colored);background-color:var(--hmd-tw-background-subtle);border-radius:2px;border-width:0;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:var(--hmd-tw-text-default);display:inline-flex;flex-direction:row;font-family:Inter,system-ui,sans-serif;font-size:10px;font-weight:500;line-height:12px;margin:1px 1px 3px;padding:2px 6px}:root[theme] .themed-radio{align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;gap:6px;justify-content:flex-end;-webkit-user-select:none;user-select:none}:root[theme] .themed-radio:focus .radio-mark,:root[theme] .themed-radio:hover .radio-mark{border-color:var(--hmd-tw-border-subtle)}:root[theme] .themed-radio .radio-mark{background-color:var(--hmd-tw-background-default);border-color:var(--hmd-tw-border-default);border-radius:50%;border-style:solid;border-width:1px;display:flex;height:13px;position:relative;width:13px}:root[theme] .themed-radio .radio-mark:after{--tw-translate-x:-50%;--tw-translate-y:-50%;--tw-content:"";background-color:var(--hmd-tw-background-primary-default);border-radius:9999px;content:var(--tw-content);display:none;height:8px;left:50%;position:absolute;top:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:8px}:root[theme] .themed-radio input[type=radio]:checked~.radio-mark{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));border-color:var(--hmd-tw-border-primary-default)}:root[theme] .themed-radio input[type=radio]:checked~.radio-mark:after{content:var(--tw-content);display:block}:root[theme] .themed-radio input[type=radio]{cursor:pointer;height:0;opacity:0;position:absolute;width:0}:root[theme] .modal{color:var(--hmd-tw-text-default)}:root[theme] .CodeMirror-scroll{line-height:normal}:not(.react-popover)>.popover>.arrow:before{border:11px solid #0000;content:" ";display:block;height:0;margin-left:-11px;position:absolute;width:0}.popover{background-color:var(--hmd-tw-background-subtler);border:1px solid var(--hmd-tw-border-default);border-radius:4px;box-shadow:0 3px 15px 0 #00000026;color:var(--hmd-tw-text-default);font-family:Inter,system-ui,sans-serif}.popover .popover-content{-webkit-user-select:none;user-select:none}.popover.top>.arrow{border-top-color:#0000}.popover.top>.arrow:after{border-top-color:var(--hmd-tw-background-subtler)}.popover.bottom>.arrow{border-bottom-color:#0000}.popover.bottom>.arrow:after{border-bottom-color:var(--hmd-tw-background-subtler)}.popover.left>.arrow{border-left-color:#0000}.popover.left>.arrow:after{border-left-color:var(--hmd-tw-background-subtler)}.popover.right>.arrow{border-right-color:#0000}.popover.right>.arrow:after{border-right-color:var(--hmd-tw-background-subtler)}.popover.top>.arrow:before{border-bottom-width:0;border-top-color:var(--hmd-tw-border-default);bottom:-.5px}.popover.bottom>.arrow:before{border-bottom-color:var(--hmd-tw-border-default);border-top-width:0;top:-.5px}.popover.left>.arrow:before{border-left-color:var(--hmd-tw-border-default);border-right-width:0;bottom:-11px}.popover.right>.arrow:before{border-left-width:0;border-right-color:var(--hmd-tw-border-default);bottom:-11px}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }:root,:root[theme=light],:root[theme] [theme=light]{--hmd-tw-text-default:#3f3f46;--hmd-tw-text-subtle:#71717a;--hmd-tw-text-subtler:#a1a1aa;--hmd-tw-text-emphasize:#27272a;--hmd-tw-text-primary:#564dff;--hmd-tw-text-pink:#ff288f;--hmd-tw-background-default:#fdfdfd;--hmd-tw-background-subtle:#f4f4f5;--hmd-tw-background-subtler:#fafafa;--hmd-tw-background-sunken:#f4f4f5;--hmd-tw-background-selected:#f4f4f5;--hmd-tw-background-primary-default:#564dff;--hmd-tw-background-primary-subtler:#ecebfe;--hmd-tw-background-primary-subtle:#cccafc;--hmd-tw-background-primary-hover:#2e01a5;--hmd-tw-background-primary-disabled:#9894f9;--hmd-tw-background-primary-focus:#2e01a5;--hmd-tw-background-blur:#fdfdfd99;--hmd-tw-icon-default:#71717a;--hmd-tw-icon-subtle:#a1a1aa;--hmd-tw-icon-subtler:#d4d4d8;--hmd-tw-icon-subtlest:#e4e4e7;--hmd-tw-icon-disabled:#a1a1aa;--hmd-tw-icon-primary:var(--hmd-tw-text-primary);--hmd-tw-icon-emphasize:#27272a;--hmd-tw-border-default:#d4d4d8;--hmd-tw-border-bold:#52525b;--hmd-tw-border-subtle:#71717a;--hmd-tw-border-subtler:#a1a1aa;--hmd-tw-border-subtlest:#e4e4e7;--hmd-tw-border-primary-focus:#766df8;--hmd-tw-border-primary-default:#564dff;--hmd-tw-border-primary-subtler:#766df8;--hmd-tw-border-primary-subtlest:#564dff80;--hmd-tw-overlay:#0000004d;--hmd-tw-state-info-text:#0284c7;--hmd-tw-state-info-icon:#0ea5e9;--hmd-tw-state-info-background:#e0f2fe;--hmd-tw-state-info-border:#bae6fd;--hmd-tw-state-info-border-subtle:#bae6fd;--hmd-tw-state-info-default:#0ea5e9;--hmd-tw-state-success-text:#479c2b;--hmd-tw-state-success-icon:#76d158;--hmd-tw-state-success-background:#e5fbef;--hmd-tw-state-success-border:#b6e7a6;--hmd-tw-state-success-border-subtle:#b6e7a6;--hmd-tw-state-success-default:#76d158;--hmd-tw-state-warning-text:#d97706;--hmd-tw-state-warning-icon:#fbbf24;--hmd-tw-state-warning-background:#fef8dd;--hmd-tw-state-warning-border:#fcd34d;--hmd-tw-state-warning-border-subtle:#fde68a;--hmd-tw-state-warning-default:#fbbf24;--hmd-tw-state-danger-text:#ef4444;--hmd-tw-state-danger-icon:#ef4444;--hmd-tw-state-danger-bg-light:#feeeee;--hmd-tw-state-danger-bg-default:#ef4444;--hmd-tw-state-danger-bg-hover:#dc2626;--hmd-tw-state-danger-border:#fca5a5;--hmd-tw-state-danger-border-subtle:#fecaca;--hmd-tw-state-danger-default:#ef4444;--hmd-tw-state-default-background:#d4d4d8;--hmd-tw-element-text-selected:#564dff;--hmd-tw-element-text-disabled:#a1a1aa;--hmd-tw-element-bg-default:#fff;--hmd-tw-element-bg-hover:#f4f4f5;--hmd-tw-element-bg-disabled:#e4e4e7;--hmd-tw-element-border-hover:#71717a;--hmd-tw-element-border-focus:#71717a;--hmd-tw-element-border-error:#dc2626;--hmd-tw-element-border-disabled:var(--hmd-tw-border-subtler);--hmd-tw-raised-bg-default:#e4e4e7;--hmd-tw-raised-bg-hover:#d4d4d8;--hmd-tw-raised-border-default:#d4d4d8;--hmd-tw-raised-border-hover:#a1a1aa;--hmd-tw-raised-icon-hover:#52525b;--hmd-tw-raised-icon-default:#71717a;--hmd-tw-link-text-default:#564dff;--hmd-tw-link-text-hover:#2e01a5;--hmd-tw-link-text-pressed:#2e01a5;--hmd-tw-text-mark-comment-default:#453aff4d;--hmd-tw-text-mark-comment-selected:#453aff73;--hmd-tw-text-mark-diff-del:#fee2e2;--hmd-tw-text-mark-diff-ins:#d9f9e5;--hmd-tw-text-mark-suggest-default:#b8f1d2;--hmd-tw-text-mark-suggest-selected:#8de4ba;--hmd-tw-text-mark-suggest-border:#43946c;--hmd-tw-text-mark-paragraph-bookmark-default:#f9731633;--hmd-tw-text-mark-paragraph-bookmark-selected:#f9731666;--hmd-tw-text-mark-paragraph-bookmark-border:#fdba74;--hmd-tw-prime-border:#f59e0b;--hmd-tw-prime-default:#f59e0b}:root[theme=dark],:root[theme] [theme=dark]{--hmd-tw-text-default:#d4d4d8;--hmd-tw-text-subtle:#a1a1aa;--hmd-tw-text-subtler:#71717a;--hmd-tw-text-emphasize:#f4f4f5;--hmd-tw-text-primary:#9894f9;--hmd-tw-text-pink:#ff4ca2;--hmd-tw-background-default:#27272a;--hmd-tw-background-subtle:#52525b;--hmd-tw-background-subtler:#303036;--hmd-tw-background-sunken:#18181b;--hmd-tw-background-selected:#52525b;--hmd-tw-background-primary-default:#564dff;--hmd-tw-background-primary-subtler:#2c2a4a;--hmd-tw-background-primary-subtle:#302d6a;--hmd-tw-background-primary-hover:#766df8;--hmd-tw-background-primary-disabled:#3932aa;--hmd-tw-background-primary-focus:#766df8;--hmd-tw-background-blur:#27272a99;--hmd-tw-icon-default:#d4d4d8;--hmd-tw-icon-subtle:#a1a1aa;--hmd-tw-icon-subtler:#71717a;--hmd-tw-icon-subtlest:#52525b;--hmd-tw-icon-disabled:#71717a;--hmd-tw-icon-primary:var(--hmd-tw-text-primary);--hmd-tw-icon-emphasize:#f4f4f5;--hmd-tw-border-default:#52525b;--hmd-tw-border-bold:#d4d4d8;--hmd-tw-border-subtle:#a1a1aa;--hmd-tw-border-subtler:#71717a;--hmd-tw-border-subtlest:#3f3f46;--hmd-tw-border-primary-focus:#766df8;--hmd-tw-border-primary-default:#9894f9;--hmd-tw-border-primary-subtler:#766df8;--hmd-tw-border-primary-subtlest:#564dff80;--hmd-tw-overlay:#000000b3;--hmd-tw-state-info-text:#38bdf8;--hmd-tw-state-info-icon:#0ea5e9;--hmd-tw-state-info-background:#38bdf81a;--hmd-tw-state-info-border:#0284c7;--hmd-tw-state-info-border-subtle:#38bdf833;--hmd-tw-state-info-default:#0ea5e9;--hmd-tw-state-success-text:#59c335;--hmd-tw-state-success-icon:#59c335;--hmd-tw-state-success-background:#6db19d26;--hmd-tw-state-success-border:#43946c;--hmd-tw-state-success-border-subtle:#6bd19d33;--hmd-tw-state-success-default:#59c335;--hmd-tw-state-warning-text:#fbbf24;--hmd-tw-state-warning-icon:#fbbf24;--hmd-tw-state-warning-background:#fbbf241a;--hmd-tw-state-warning-border:#f59e0b;--hmd-tw-state-warning-border-subtle:#fbbf2433;--hmd-tw-state-warning-default:#f59e0b;--hmd-tw-state-danger-text:#f87171;--hmd-tw-state-danger-icon:#f87171;--hmd-tw-state-danger-bg-light:#ef444433;--hmd-tw-state-danger-bg-default:#ef4444;--hmd-tw-state-danger-bg-hover:#f87171;--hmd-tw-state-danger-border:#f87171;--hmd-tw-state-danger-border-subtle:#ef44444d;--hmd-tw-state-danger-default:#f87171;--hmd-tw-state-default-background:#52525b;--hmd-tw-element-text-selected:#fff;--hmd-tw-element-text-disabled:#71717a;--hmd-tw-element-bg-default:var(--hmd-tw-background-subtler);--hmd-tw-element-bg-hover:#3f3f46;--hmd-tw-element-bg-disabled:#303036;--hmd-tw-element-border-hover:#71717a;--hmd-tw-element-border-focus:#71717a;--hmd-tw-element-border-error:#f87171;--hmd-tw-element-border-disabled:var(--hmd-tw-border-subtler);--hmd-tw-raised-bg-default:#3f3f46;--hmd-tw-raised-bg-hover:#52525b;--hmd-tw-raised-border-default:#52525b;--hmd-tw-raised-border-hover:#71717a;--hmd-tw-raised-icon-hover:#fafafa;--hmd-tw-raised-icon-default:#d4d4d8;--hmd-tw-link-text-default:#9894f9;--hmd-tw-link-text-hover:#b2abfb;--hmd-tw-link-text-pressed:#b2abfb;--hmd-tw-text-mark-comment-default:#453aff4d;--hmd-tw-text-mark-comment-selected:#453aff99;--hmd-tw-text-mark-diff-del:#ef444433;--hmd-tw-text-mark-diff-ins:#6db19d4d;--hmd-tw-text-mark-suggest-default:#40ff6a33;--hmd-tw-text-mark-suggest-selected:#40ff6a66;--hmd-tw-text-mark-suggest-border:#6db19d;--hmd-tw-text-mark-paragraph-bookmark-default:#f9731633;--hmd-tw-text-mark-paragraph-bookmark-selected:#f9731666;--hmd-tw-text-mark-paragraph-bookmark-border:#fdba74;--hmd-tw-prime-border:#fbbf24;--hmd-tw-prime-default:#fbbf24}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-bottom-1\/2{bottom:-50%}.-top-\[1px\]{top:-1px}.bottom-0{bottom:0}.bottom-1{bottom:4px}.bottom-5{bottom:20px}.bottom-8{bottom:32px}.bottom-\[100px\]{bottom:100px}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:8px}.left-2\.5{left:10px}.left-5{left:20px}.left-\[13px\]{left:13px}.left-\[1px\]{left:1px}.left-\[23px\]{left:23px}.left-\[50\%\]{left:50%}.left-\[6px\]{left:6px}.left-\[calc\(60\%-1px\)\]{left:calc(60% - 1px)}.left-\[calc\(var\(--editor-linenumber-width\)\+\(var\(--editor-gutter-fullwidth\)-var\(--editor-linenumber-width\)\)\/2\)\]{left:calc(var(--editor-linenumber-width) + (var(--editor-gutter-fullwidth) - var(--editor-linenumber-width))/2)}.left-\[unset\]{left:unset}.left-\[var\(--editor-linenumber-width\)\]{left:var(--editor-linenumber-width)}.right-0{right:0}.right-1{right:4px}.right-1\.5{right:6px}.right-16{right:64px}.right-2{right:8px}.right-2\.5{right:10px}.right-3{right:12px}.right-4{right:16px}.right-5{right:20px}.right-7{right:28px}.right-\[-10px\]{right:-10px}.right-\[18px\]{right:18px}.top-0{top:0}.top-1{top:4px}.top-1\.5{top:6px}.top-1\/2{top:50%}.top-2{top:8px}.top-2\.5{top:10px}.top-3{top:12px}.top-5{top:20px}.top-7{top:28px}.top-\[-10px\]{top:-10px}.top-\[-4px\]{top:-4px}.top-\[-8px\]{top:-8px}.top-\[100px\]{top:100px}.top-\[14px\]{top:14px}.top-\[20px\]{top:20px}.top-\[26px\]{top:26px}.top-\[50\%\]{top:50%}.top-\[50px\]{top:50px}.top-\[5px\]{top:5px}.top-\[6px\]{top:6px}.top-\[70px\]{top:70px}.top-\[82px\]{top:82px}.top-\[86px\]{top:86px}.top-\[calc\(50\%-8px\)\]{top:calc(50% - 8px)}.top-full{top:100%}.\!z-20{z-index:20!important}.-z-10{z-index:-10}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.z-\[-1\]{z-index:-1}.z-\[10000\]{z-index:10000}.z-\[1000\]{z-index:1000}.z-\[1001\]{z-index:1001}.z-\[1002\]{z-index:1002}.z-\[1049\]{z-index:1049}.z-\[1050\]{z-index:1050}.z-\[1051\]{z-index:1051}.z-\[1100\]{z-index:1100}.z-\[11\]{z-index:11}.z-\[1998\]{z-index:1998}.z-\[1999\]{z-index:1999}.z-\[1\]{z-index:1}.z-\[2000\]{z-index:2000}.z-\[2\]{z-index:2}.z-\[998\]{z-index:998}.z-\[999999\]{z-index:999999}.z-\[9999\]{z-index:9999}.z-\[999\]{z-index:999}.z-\[var\(--i\)\]{z-index:var(--i)}.-order-1{order:-1}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2/span 2}.col-span-4{grid-column:span 4/span 4}.col-span-6{grid-column:span 6/span 6}.col-span-8{grid-column:span 8/span 8}.col-start-2{grid-column-start:2}.col-start-\[calc\(var\(--i\)\*3\+1\)\]{grid-column-start:calc(var(--i)*3 + 1)}.col-end-\[calc\(var\(--i\)\*3\+4\)\]{grid-column-end:calc(var(--i)*3 + 4)}.float-right{float:right}.float-left{float:left}.\!m-0{margin:0!important}.m-0{margin:0}.m-0\.5{margin:2px}.m-1{margin:4px}.m-1\.5{margin:6px}.m-2\.5{margin:10px}.m-5{margin:20px}.m-\[10px\]{margin:10px}.m-\[1px\]{margin:1px}.m-auto{margin:auto}.\!mx-0{margin-left:0!important;margin-right:0!important}.\!mx-auto{margin-left:auto!important;margin-right:auto!important}.\!my-0{margin-bottom:0!important;margin-top:0!important}.-mx-4\.5{margin-left:-18px;margin-right:-18px}.-mx-5{margin-left:-20px;margin-right:-20px}.mx-0{margin-left:0;margin-right:0}.mx-1{margin-left:4px;margin-right:4px}.mx-2\.5{margin-left:10px;margin-right:10px}.mx-3{margin-left:12px;margin-right:12px}.mx-5{margin-left:20px;margin-right:20px}.mx-\[15px\]{margin-left:15px;margin-right:15px}.mx-\[1px\]{margin-left:1px;margin-right:1px}.mx-\[6px\]{margin-left:6px;margin-right:6px}.mx-auto{margin-left:auto;margin-right:auto}.my-0{margin-bottom:0;margin-top:0}.my-0\.5{margin-bottom:2px;margin-top:2px}.my-1{margin-bottom:4px;margin-top:4px}.my-1\.5{margin-bottom:6px;margin-top:6px}.my-12{margin-bottom:48px;margin-top:48px}.my-2{margin-bottom:8px;margin-top:8px}.my-2\.5{margin-bottom:10px;margin-top:10px}.my-20{margin-bottom:80px;margin-top:80px}.my-3{margin-bottom:12px;margin-top:12px}.my-4{margin-bottom:16px;margin-top:16px}.my-5{margin-bottom:20px;margin-top:20px}.my-6{margin-bottom:24px;margin-top:24px}.my-8{margin-bottom:32px;margin-top:32px}.my-\[10px\]{margin-bottom:10px;margin-top:10px}.my-\[22px\]{margin-bottom:22px;margin-top:22px}.my-\[30px\]{margin-bottom:30px;margin-top:30px}.my-\[5px\]{margin-bottom:5px;margin-top:5px}.my-\[7px\]{margin-bottom:7px;margin-top:7px}.my-auto{margin-bottom:auto;margin-top:auto}.\!mb-0{margin-bottom:0!important}.\!ml-1{margin-left:4px!important}.\!mr-1\.5{margin-right:6px!important}.\!mt-0{margin-top:0!important}.\!mt-1\.5{margin-top:6px!important}.\!mt-\[65px\]{margin-top:65px!important}.-mb-1{margin-bottom:-4px}.-mb-1\.5{margin-bottom:-6px}.-mb-2{margin-bottom:-8px}.-mb-4{margin-bottom:-16px}.-mb-5{margin-bottom:-20px}.-mb-6{margin-bottom:-24px}.-mb-\[1px\]{margin-bottom:-1px}.-ml-7{margin-left:-28px}.-mr-1{margin-right:-4px}.-mr-3{margin-right:-12px}.-mt-3{margin-top:-12px}.-mt-5{margin-top:-20px}.mb-0{margin-bottom:0}.mb-0\.5{margin-bottom:2px}.mb-1{margin-bottom:4px}.mb-1\.25{margin-bottom:5px}.mb-1\.5{margin-bottom:6px}.mb-10{margin-bottom:40px}.mb-11{margin-bottom:44px}.mb-14{margin-bottom:56px}.mb-2{margin-bottom:8px}.mb-2\.5{margin-bottom:10px}.mb-20{margin-bottom:80px}.mb-3{margin-bottom:12px}.mb-3\.5{margin-bottom:14px}.mb-4{margin-bottom:16px}.mb-4\.5{margin-bottom:18px}.mb-5{margin-bottom:20px}.mb-6{margin-bottom:24px}.mb-7{margin-bottom:28px}.mb-7\.5{margin-bottom:30px}.mb-8{margin-bottom:32px}.mb-\[10px\]{margin-bottom:10px}.mb-\[14px\]{margin-bottom:14px}.mb-\[1px\]{margin-bottom:1px}.mb-\[2px\]{margin-bottom:2px}.mb-\[30px\]{margin-bottom:30px}.mb-\[35px\]{margin-bottom:35px}.mb-\[38px\]{margin-bottom:38px}.mb-\[3px\]{margin-bottom:3px}.mb-\[5px\]{margin-bottom:5px}.mb-\[6px\]{margin-bottom:6px}.mb-auto{margin-bottom:auto}.ml-0{margin-left:0}.ml-0\.5{margin-left:2px}.ml-1{margin-left:4px}.ml-1\.5{margin-left:6px}.ml-12{margin-left:48px}.ml-2{margin-left:8px}.ml-2\.5{margin-left:10px}.ml-3{margin-left:12px}.ml-4{margin-left:16px}.ml-6{margin-left:24px}.ml-7\.5{margin-left:30px}.ml-\[22px\]{margin-left:22px}.ml-\[5px\]{margin-left:5px}.ml-\[6px\]{margin-left:6px}.ml-\[7px\]{margin-left:7px}.ml-\[9px\]{margin-left:9px}.ml-\[calc\(-1\*var\(--editor-linenumber-width\)\)\]{margin-left:calc(var(--editor-linenumber-width)*-1)}.ml-auto{margin-left:auto}.mr-0{margin-right:0}.mr-0\.5{margin-right:2px}.mr-1{margin-right:4px}.mr-1\.5{margin-right:6px}.mr-10{margin-right:40px}.mr-2{margin-right:8px}.mr-2\.5{margin-right:10px}.mr-3{margin-right:12px}.mr-3\.5{margin-right:14px}.mr-4{margin-right:16px}.mr-5{margin-right:20px}.mr-6{margin-right:24px}.mr-\[3px\]{margin-right:3px}.mr-\[6px\]{margin-right:6px}.mr-auto{margin-right:auto}.mt-0{margin-top:0}.mt-0\.5{margin-top:2px}.mt-1{margin-top:4px}.mt-1\.5{margin-top:6px}.mt-10{margin-top:40px}.mt-12{margin-top:48px}.mt-14{margin-top:56px}.mt-15{margin-top:60px}.mt-2{margin-top:8px}.mt-2\.5{margin-top:10px}.mt-20{margin-top:80px}.mt-3{margin-top:12px}.mt-3\.5{margin-top:14px}.mt-3\.75{margin-top:15px}.mt-4{margin-top:16px}.mt-4\.5{margin-top:18px}.mt-5{margin-top:20px}.mt-6{margin-top:24px}.mt-7{margin-top:28px}.mt-7\.5{margin-top:30px}.mt-8{margin-top:32px}.mt-\[-10px\]{margin-top:-10px}.mt-\[-1px\]{margin-top:-1px}.mt-\[-25px\]{margin-top:-25px}.mt-\[18px\]{margin-top:18px}.mt-\[1px\]{margin-top:1px}.mt-\[22px\]{margin-top:22px}.mt-\[30px\]{margin-top:30px}.mt-\[32px\]{margin-top:32px}.mt-\[35px\]{margin-top:35px}.mt-\[3px\]{margin-top:3px}.mt-\[50px\]{margin-top:50px}.mt-\[52px\]{margin-top:52px}.mt-\[5px\]{margin-top:5px}.mt-\[6px\]{margin-top:6px}.mt-\[7px\]{margin-top:7px}.mt-\[88px\]{margin-top:88px}.box-border{box-sizing:border-box}.box-content{box-sizing:initial}.line-clamp-1{-webkit-line-clamp:1}.line-clamp-1,.line-clamp-2{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2}.line-clamp-3{-webkit-box-orient:vertical;-webkit-line-clamp:3;display:-webkit-box;overflow:hidden}.\!block{display:block!important}.block{display:block}.\!inline-block{display:inline-block!important}.inline-block{display:inline-block}.inline{display:inline}.\!flex{display:flex!important}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.aspect-\[40\/21\]{aspect-ratio:40/21}.\!h-10{height:40px!important}.\!h-4{height:16px!important}.\!h-auto{height:auto!important}.h-0{height:0}.h-1{height:4px}.h-1\.5{height:6px}.h-10{height:40px}.h-100{height:400px}.h-11{height:44px}.h-12{height:48px}.h-16{height:64px}.h-2{height:8px}.h-2\.5{height:10px}.h-3{height:12px}.h-3\.5{height:14px}.h-32{height:128px}.h-36{height:144px}.h-4{height:16px}.h-4\.5{height:18px}.h-5{height:20px}.h-6{height:24px}.h-6\.5{height:26px}.h-7{height:28px}.h-7\.5{height:30px}.h-8{height:32px}.h-9{height:36px}.h-\[100dvh\]{height:100dvh}.h-\[100px\]{height:100px}.h-\[10px\]{height:10px}.h-\[13px\]{height:13px}.h-\[14px\]{height:14px}.h-\[175px\]{height:175px}.h-\[18px\]{height:18px}.h-\[1px\]{height:1px}.h-\[22px\]{height:22px}.h-\[243px\]{height:243px}.h-\[250px\]{height:250px}.h-\[26px\]{height:26px}.h-\[28px\]{height:28px}.h-\[29px\]{height:29px}.h-\[2px\]{height:2px}.h-\[300px\]{height:300px}.h-\[30px\]{height:30px}.h-\[36px\]{height:36px}.h-\[37px\]{height:37px}.h-\[38px\]{height:38px}.h-\[484px\]{height:484px}.h-\[60dvh\]{height:60dvh}.h-\[80px\]{height:80px}.h-\[calc\(100\%-44px\)\]{height:calc(100% - 44px)}.h-\[calc\(100dvh-100px\)\]{height:calc(100dvh - 100px)}.h-\[calc\(100dvh-50px\)\]{height:calc(100dvh - 50px)}.h-\[calc\(100dvh-52px\)\]{height:calc(100dvh - 52px)}.h-\[calc\(100svh-60px\)\]{height:calc(100svh - 60px)}.h-\[calc\(100vh-52px\)\]{height:calc(100vh - 52px)}.h-\[calc\(100vh-60px\)\]{height:calc(100vh - 60px)}.h-\[min\(var\(--emoji-popover-max-height\2c 524px\)\2c _524px\)\]{height:min(var(--emoji-popover-max-height,524px),524px)}.h-\[var\(--editor-default-line-height\)\]{height:var(--editor-default-line-height)}.h-auto{height:auto}.h-fit{height:fit-content}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.\!max-h-\[unset\]{max-height:unset!important}.max-h-0{max-height:0}.max-h-100{max-height:400px}.max-h-80{max-height:320px}.max-h-\[100dvh\]{max-height:100dvh}.max-h-\[100px\]{max-height:100px}.max-h-\[116px\]{max-height:116px}.max-h-\[160px\]{max-height:160px}.max-h-\[214px\]{max-height:214px}.max-h-\[240px\]{max-height:240px}.max-h-\[243px\]{max-height:243px}.max-h-\[500\%\]{max-height:500%}.max-h-\[504px\]{max-height:504px}.max-h-\[524px\]{max-height:524px}.max-h-\[600px\]{max-height:600px}.max-h-\[80px\]{max-height:80px}.max-h-\[calc\(100dvh-50px\)\]{max-height:calc(100dvh - 50px)}.max-h-\[calc\(100dvh-76px\)\]{max-height:calc(100dvh - 76px)}.max-h-\[calc\(100dvh-90px\)\]{max-height:calc(100dvh - 90px)}.max-h-\[min\(564px\2c calc\(100dvh-51px\)\)\]{max-height:min(564px,calc(100dvh - 51px))}.max-h-fit{max-height:fit-content}.max-h-full{max-height:100%}.max-h-screen{max-height:100vh}.min-h-0{min-height:0}.min-h-10{min-height:40px}.min-h-\[160px\]{min-height:160px}.min-h-\[176px\]{min-height:176px}.min-h-\[209px\]{min-height:209px}.min-h-\[214px\]{min-height:214px}.min-h-\[280px\]{min-height:280px}.min-h-\[28px\]{min-height:28px}.min-h-\[300px\]{min-height:300px}.min-h-\[38px\]{min-height:38px}.min-h-\[48px\]{min-height:48px}.min-h-\[50px\]{min-height:50px}.min-h-\[64px\]{min-height:64px}.min-h-\[min\(100dvh\2c 280px\)\]{min-height:min(100dvh,280px)}.min-h-fit{min-height:fit-content}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.\!w-10{width:40px!important}.\!w-16{width:64px!important}.\!w-4{width:16px!important}.w-0{width:0}.w-10{width:40px}.w-100{width:400px}.w-11{width:44px}.w-12{width:48px}.w-16{width:64px}.w-2{width:8px}.w-2\.5{width:10px}.w-20{width:80px}.w-24{width:96px}.w-28{width:112px}.w-3{width:12px}.w-3\.5{width:14px}.w-32{width:128px}.w-4{width:16px}.w-4\.5{width:18px}.w-5{width:20px}.w-50{width:200px}.w-52{width:208px}.w-56{width:224px}.w-6{width:24px}.w-6\.5{width:26px}.w-7{width:28px}.w-7\.5{width:30px}.w-8{width:32px}.w-9{width:36px}.w-\[100dvw\]{width:100dvw}.w-\[103px\]{width:103px}.w-\[10px\]{width:10px}.w-\[110px\]{width:110px}.w-\[112px\]{width:112px}.w-\[120px\]{width:120px}.w-\[128px\]{width:128px}.w-\[13px\]{width:13px}.w-\[14px\]{width:14px}.w-\[155px\]{width:155px}.w-\[156px\]{width:156px}.w-\[158px\]{width:158px}.w-\[160px\]{width:160px}.w-\[172px\]{width:172px}.w-\[175px\]{width:175px}.w-\[180px\]{width:180px}.w-\[183px\]{width:183px}.w-\[18px\]{width:18px}.w-\[193px\]{width:193px}.w-\[1px\]{width:1px}.w-\[200px\]{width:200px}.w-\[204px\]{width:204px}.w-\[208px\]{width:208px}.w-\[210px\]{width:210px}.w-\[224px\]{width:224px}.w-\[225px\]{width:225px}.w-\[22px\]{width:22px}.w-\[230px\]{width:230px}.w-\[230x\]{width:230x}.w-\[240px\]{width:240px}.w-\[252px\]{width:252px}.w-\[255px\]{width:255px}.w-\[260px\]{width:260px}.w-\[263px\]{width:263px}.w-\[268px\]{width:268px}.w-\[28px\]{width:28px}.w-\[30\%\]{width:30%}.w-\[300px\]{width:300px}.w-\[30px\]{width:30px}.w-\[316px\]{width:316px}.w-\[355px\]{width:355px}.w-\[367px\]{width:367px}.w-\[40\%\]{width:40%}.w-\[403px\]{width:403px}.w-\[440px\]{width:440px}.w-\[50\%\]{width:50%}.w-\[60\%\]{width:60%}.w-\[66\.7\%\]{width:66.7%}.w-\[70px\]{width:70px}.w-\[77\%\]{width:77%}.w-\[80\%\]{width:80%}.w-\[96px\]{width:96px}.w-\[calc\(100\%-31px\)\]{width:calc(100% - 31px)}.w-\[calc\(100\%-32px\)\]{width:calc(100% - 32px)}.w-\[calc\(100vw-30px\)\]{width:calc(100vw - 30px)}.w-\[calc\(100vw-60px\)\]{width:calc(100vw - 60px)}.w-\[calc\(var\(--editor-linenumber-width\)-8px\)\]{width:calc(var(--editor-linenumber-width) - 8px)}.w-\[var\(--editor-gutter-fullwidth\)\]{width:var(--editor-gutter-fullwidth)}.w-\[var\(--editor-linenumber-width\)\]{width:var(--editor-linenumber-width)}.w-\[var\(--radix-select-trigger-width\)\]{width:var(--radix-select-trigger-width)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-10{min-width:40px}.min-w-28{min-width:112px}.min-w-\[100px\]{min-width:100px}.min-w-\[110px\]{min-width:110px}.min-w-\[120px\]{min-width:120px}.min-w-\[128px\]{min-width:128px}.min-w-\[16px\]{min-width:16px}.min-w-\[176px\]{min-width:176px}.min-w-\[1px\]{min-width:1px}.min-w-\[208px\]{min-width:208px}.min-w-\[20px\]{min-width:20px}.min-w-\[224px\]{min-width:224px}.min-w-\[276px\]{min-width:276px}.min-w-\[28px\]{min-width:28px}.min-w-\[300px\]{min-width:300px}.min-w-\[36px\]{min-width:36px}.min-w-\[40px\]{min-width:40px}.min-w-\[50px\]{min-width:50px}.min-w-\[70px\]{min-width:70px}.min-w-\[82px\]{min-width:82px}.min-w-full{min-width:100%}.min-w-min{min-width:min-content}.max-w-100{max-width:400px}.max-w-224{max-width:900px}.max-w-50{max-width:200px}.max-w-52{max-width:208px}.max-w-\[100px\]{max-width:100px}.max-w-\[110px\]{max-width:110px}.max-w-\[1200px\]{max-width:1200px}.max-w-\[120px\]{max-width:120px}.max-w-\[144px\]{max-width:144px}.max-w-\[156px\]{max-width:156px}.max-w-\[160px\]{max-width:160px}.max-w-\[172px\]{max-width:172px}.max-w-\[176px\]{max-width:176px}.max-w-\[193px\]{max-width:193px}.max-w-\[200px\]{max-width:200px}.max-w-\[208px\]{max-width:208px}.max-w-\[224px\]{max-width:224px}.max-w-\[230px\]{max-width:230px}.max-w-\[240px\]{max-width:240px}.max-w-\[252px\]{max-width:252px}.max-w-\[255px\]{max-width:255px}.max-w-\[256px\]{max-width:256px}.max-w-\[260px\]{max-width:260px}.max-w-\[263px\]{max-width:263px}.max-w-\[276px\]{max-width:276px}.max-w-\[285px\]{max-width:285px}.max-w-\[288px\]{max-width:288px}.max-w-\[303px\]{max-width:303px}.max-w-\[306px\]{max-width:306px}.max-w-\[367px\]{max-width:367px}.max-w-\[398px\]{max-width:398px}.max-w-\[400px\]{max-width:400px}.max-w-\[50\%\]{max-width:50%}.max-w-\[500px\]{max-width:500px}.max-w-\[564px\]{max-width:564px}.max-w-\[600px\]{max-width:600px}.max-w-\[66\.7\%\]{max-width:66.7%}.max-w-\[70\%\]{max-width:70%}.max-w-\[72px\]{max-width:72px}.max-w-\[75\%\]{max-width:75%}.max-w-\[82px\]{max-width:82px}.max-w-\[900px\]{max-width:900px}.max-w-\[932px\]{max-width:932px}.max-w-\[996px\]{max-width:996px}.max-w-\[calc\(100\%-32px\)\]{max-width:calc(100% - 32px)}.max-w-\[calc\(100\%-40px\)\]{max-width:calc(100% - 40px)}.max-w-\[calc\(100\%\/2\)\]{max-width:50%}.max-w-\[unset\]{max-width:unset}.max-w-\[var\(--preferred-sidebar-width\)\]{max-width:var(--preferred-sidebar-width)}.max-w-fit{max-width:fit-content}.max-w-full{max-width:100%}.max-w-none{max-width:none}.flex-1{flex:1 1 0%}.flex-\[2\]{flex:2}.flex-\[2_2_0\%\]{flex:2 2 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.table-auto{table-layout:auto}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.-translate-x-\[1px\]{--tw-translate-x:-1px}.-translate-x-\[1px\],.-translate-x-\[50\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-\[50\%\]{--tw-translate-x:-50%}.-translate-x-\[75\%\]{--tw-translate-x:-75%}.-translate-x-\[75\%\],.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.-translate-y-\[1px\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\[1px\]{--tw-translate-y:-1px}.-translate-y-\[50\%\]{--tw-translate-y:-50%}.-translate-y-\[50\%\],.-translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y:-100%}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1\/2{--tw-translate-x:50%}.translate-x-\[-100\%\]{--tw-translate-x:-100%}.translate-x-\[-100\%\],.translate-x-\[-50\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x:-50%}.translate-x-\[100\%\]{--tw-translate-x:100%}.translate-x-\[100\%\],.translate-y-\[-1\.6px\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-1\.6px\]{--tw-translate-y:-1.6px}.translate-y-\[-1px\]{--tw-translate-y:-1px}.translate-y-\[-1px\],.translate-y-\[-50\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y:-50%}.translate-y-\[-8\%\]{--tw-translate-y:-8%}.translate-y-\[-8\%\],.translate-y-\[100\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[100\%\]{--tw-translate-y:100%}.translate-y-\[4rem\]{--tw-translate-y:4rem}.translate-y-\[4rem\],.translate-y-\[calc\(-100\%-1px\)\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[calc\(-100\%-1px\)\]{--tw-translate-y:calc(-100% - 1px)}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-\[fadeIn_300ms_ease-out\2c fadeOut_300ms_ease-in_30300ms\]{animation:fadeIn .3s ease-out,fadeOut .3s ease-in 30.3s}.animate-\[fadeIn_300ms_ease-out\2c fadeOut_300ms_ease-in_5300ms\]{animation:fadeIn .3s ease-out,fadeOut .3s ease-in 5.3s}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.animate-tooltip-in{animation:fadeIn .15s linear}.cursor-auto{cursor:auto}.cursor-default{cursor:default}.cursor-ew-resize{cursor:ew-resize}.cursor-help{cursor:help}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.cursor-zoom-in{cursor:zoom-in}.cursor-zoom-out{cursor:zoom-out}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.select-all{-webkit-user-select:all;user-select:all}.resize-none{resize:none}.resize-y{resize:vertical}.resize{resize:both}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[100\%\]{grid-template-columns:100%}.grid-cols-\[1fr\2c 156px\]{grid-template-columns:1fr 156px}.grid-cols-\[1fr\2c auto\]{grid-template-columns:1fr auto}.grid-cols-\[1fr\2c minmax\(0\2c 194px\)\]{grid-template-columns:1fr minmax(0,194px)}.grid-cols-\[1fr_194px\]{grid-template-columns:1fr 194px}.grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.grid-cols-\[1fr_min-content\]{grid-template-columns:1fr min-content}.grid-cols-\[7fr_3fr\]{grid-template-columns:7fr 3fr}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-cols-\[auto_1fr_auto\]{grid-template-columns:auto 1fr auto}.grid-cols-\[auto_auto_1fr\]{grid-template-columns:auto auto 1fr}.grid-cols-\[auto_minmax\(0\2c 1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.grid-cols-\[auto_minmax\(0\2c max-content\)_minmax\(0\2c 1fr\)\]{grid-template-columns:auto minmax(0,max-content) minmax(0,1fr)}.grid-cols-\[max-content_auto\]{grid-template-columns:max-content auto}.grid-cols-\[max-content_auto_auto\]{grid-template-columns:max-content auto auto}.grid-cols-\[max-content_minmax\(0\2c auto\)\]{grid-template-columns:max-content minmax(0,auto)}.grid-cols-\[minmax\(0\2c 1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[minmax\(0\2c max-content\)_auto_auto\]{grid-template-columns:minmax(0,max-content) auto auto}.grid-cols-\[minmax\(40px\2c 1fr\)_max-content_auto_auto\]{grid-template-columns:minmax(40px,1fr) max-content auto auto}.grid-cols-\[minmax\(40px\2c 1fr\)_minmax\(0\2c max-content\)_auto_auto\]{grid-template-columns:minmax(40px,1fr) minmax(0,max-content) auto auto}.grid-cols-\[minmax\(40px\2c max-content\)_minmax\(0\2c 1fr\)_auto_auto\]{grid-template-columns:minmax(40px,max-content) minmax(0,1fr) auto auto}.grid-cols-\[repeat\(auto-fill\2c minmax\(264px\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(264px,1fr))}.grid-cols-\[repeat\(auto-fit\2c _minmax\(0\2c _min-content\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,min-content))}.grid-cols-\[repeat\(auto-fit\2c _minmax\(20px\2c _min-content\)\)\]{grid-template-columns:repeat(auto-fit,minmax(20px,min-content))}.grid-cols-\[repeat\(var\(--repeat-count\)\2c minmax\(0\2c 5px\)\)\]{grid-template-columns:repeat(var(--repeat-count),minmax(0,5px))}.grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.grid-rows-\[1fr_auto\]{grid-template-rows:1fr auto}.grid-rows-\[auto_1fr\]{grid-template-rows:auto 1fr}.grid-rows-\[auto_1fr_auto\]{grid-template-rows:auto 1fr auto}.grid-rows-\[auto_auto_1fr_auto\]{grid-template-rows:auto auto 1fr auto}.grid-rows-\[auto_min-content\]{grid-template-rows:auto min-content}.grid-rows-\[repeat\(2\2c minmax\(0\2c auto\)\)\]{grid-template-rows:repeat(2,minmax(0,auto))}.grid-rows-\[repeat\(auto-fit\2c minmax\(0\2c min-content\)\)\]{grid-template-rows:repeat(auto-fit,minmax(0,min-content))}.\!flex-row{flex-direction:row!important}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.flex-nowrap{flex-wrap:nowrap}.content-center{align-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.\!justify-center{justify-content:center!important}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.\!gap-2{gap:8px!important}.gap-0{gap:0}.gap-0\.5{gap:2px}.gap-1{gap:4px}.gap-1\.5{gap:6px}.gap-15{gap:60px}.gap-2{gap:8px}.gap-2\.5{gap:10px}.gap-3{gap:12px}.gap-3\.5{gap:14px}.gap-4{gap:16px}.gap-4\.5{gap:18px}.gap-5{gap:20px}.gap-6{gap:24px}.gap-7{gap:28px}.gap-8{gap:32px}.gap-9{gap:36px}.gap-\[10px\]{gap:10px}.gap-\[11px\]{gap:11px}.gap-\[13px\]{gap:13px}.gap-\[14px\]{gap:14px}.gap-\[15px\]{gap:15px}.gap-\[1px\]{gap:1px}.gap-\[23px\]{gap:23px}.gap-\[25px\]{gap:25px}.gap-\[2px\]{gap:2px}.gap-\[3\.5px\]{gap:3.5px}.gap-\[3px\]{gap:3px}.gap-\[5px\]{gap:5px}.gap-\[6px\]{gap:6px}.gap-\[7px\]{gap:7px}.gap-\[9px\]{gap:9px}.gap-x-1{column-gap:4px}.gap-x-1\.5{column-gap:6px}.gap-x-3{column-gap:12px}.gap-x-7{column-gap:28px}.gap-y-1\.5{row-gap:6px}.gap-y-3{row-gap:12px}.gap-y-5{row-gap:20px}.gap-y-7{row-gap:28px}.space-x-0\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2px*(1 - var(--tw-space-x-reverse)));margin-right:calc(2px*var(--tw-space-x-reverse))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(4px*(1 - var(--tw-space-x-reverse)));margin-right:calc(4px*var(--tw-space-x-reverse))}.space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(6px*(1 - var(--tw-space-x-reverse)));margin-right:calc(6px*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(4px*var(--tw-space-y-reverse));margin-top:calc(4px*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(8px*var(--tw-space-y-reverse));margin-top:calc(8px*(1 - var(--tw-space-y-reverse)))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(10px*var(--tw-space-y-reverse));margin-top:calc(10px*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(12px*var(--tw-space-y-reverse));margin-top:calc(12px*(1 - var(--tw-space-y-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.\!overflow-clip{overflow:clip!important}.\!overflow-visible{overflow:visible!important}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;white-space:nowrap}.overflow-ellipsis,.text-ellipsis,.truncate{text-overflow:ellipsis}.\!text-clip{text-overflow:clip!important}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-wrap{text-wrap:wrap}.text-balance{text-wrap:balance}.break-normal{overflow-wrap:normal;word-break:normal}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.\!rounded{border-radius:4px!important}.\!rounded-full{border-radius:9999px!important}.rounded{border-radius:4px}.rounded-\[18px\]{border-radius:18px}.rounded-\[20px\]{border-radius:20px}.rounded-\[3px\]{border-radius:3px}.rounded-\[4px\]{border-radius:4px}.rounded-\[50\%\]{border-radius:50%}.rounded-\[5px\]{border-radius:5px}.rounded-\[6px\]{border-radius:6px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:8px}.rounded-md{border-radius:6px}.rounded-none{border-radius:0}.rounded-sm{border-radius:2px}.rounded-b,.rounded-b-\[4px\]{border-bottom-left-radius:4px;border-bottom-right-radius:4px}.rounded-b-md{border-bottom-left-radius:6px;border-bottom-right-radius:6px}.rounded-b-none{border-bottom-left-radius:0;border-bottom-right-radius:0}.rounded-l{border-bottom-left-radius:4px;border-top-left-radius:4px}.rounded-l-none{border-bottom-left-radius:0;border-top-left-radius:0}.rounded-r{border-bottom-right-radius:4px;border-top-right-radius:4px}.rounded-r-md{border-bottom-right-radius:6px;border-top-right-radius:6px}.rounded-r-none{border-bottom-right-radius:0;border-top-right-radius:0}.rounded-t,.rounded-t-\[4px\]{border-top-left-radius:4px;border-top-right-radius:4px}.rounded-t-\[5px\]{border-top-left-radius:5px;border-top-right-radius:5px}.rounded-t-md{border-top-left-radius:6px;border-top-right-radius:6px}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.\!border{border-width:1px!important}.border{border-width:1px}.border-0{border-width:0}.border-1{border-width:1px}.border-2{border-width:2px}.border-\[1px\]{border-width:1px}.\!border-b{border-bottom-width:1px!important}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-b-1{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-b-\[3px\]{border-bottom-width:3px}.border-l,.border-l-1{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-\[3px\]{border-left-width:3px}.border-r{border-right-width:1px}.border-r-0{border-right-width:0}.border-r-1{border-right-width:1px}.border-r-2{border-right-width:2px}.border-t{border-top-width:1px}.border-t-0{border-top-width:0}.border-t-1{border-top-width:1px}.border-t-2{border-top-width:2px}.\!border-solid{border-style:solid!important}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.\!border-none{border-style:none!important}.border-none{border-style:none}.\!border-border-default{border-color:var(--hmd-tw-border-default)!important}.\!border-red-500{--tw-border-opacity:1!important;border-color:rgb(239 68 68/var(--tw-border-opacity,1))!important}.\!border-state-danger-border{border-color:var(--hmd-tw-state-danger-border)!important}.\!border-state-danger-border-subtle{border-color:var(--hmd-tw-state-danger-border-subtle)!important}.border-\[\#849197\]{--tw-border-opacity:1;border-color:rgb(132 145 151/var(--tw-border-opacity,1))}.border-\[\#CECECE4D\]{border-color:#cecece4d}.border-background-primary-default{border-color:var(--hmd-tw-background-primary-default)}.border-background-primary-disabled{border-color:var(--hmd-tw-background-primary-disabled)}.border-background-primary-hover{border-color:var(--hmd-tw-background-primary-hover)}.border-background-primary-subtler{border-color:var(--hmd-tw-background-primary-subtler)}.border-background-subtle{border-color:var(--hmd-tw-background-subtle)}.border-black-brand{--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1))}.border-border-bold{border-color:var(--hmd-tw-border-bold)}.border-border-default{border-color:var(--hmd-tw-border-default)}.border-border-primary-default{border-color:var(--hmd-tw-border-primary-default)}.border-border-primary-subtler{border-color:var(--hmd-tw-border-primary-subtler)}.border-border-subtle{border-color:var(--hmd-tw-border-subtle)}.border-border-subtler{border-color:var(--hmd-tw-border-subtler)}.border-border-subtlest{border-color:var(--hmd-tw-border-subtlest)}.border-element-bg-hover{border-color:var(--hmd-tw-element-bg-hover)}.border-element-border-disabled{border-color:var(--hmd-tw-element-border-disabled)}.border-element-border-hover{border-color:var(--hmd-tw-element-border-hover)}.border-gray-200{--tw-border-opacity:1;border-color:rgb(231 231 231/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(205 205 205/var(--tw-border-opacity,1))}.border-gray-600{--tw-border-opacity:1;border-color:rgb(136 136 136/var(--tw-border-opacity,1))}.border-gray-700{--tw-border-opacity:1;border-color:rgb(104 104 104/var(--tw-border-opacity,1))}.border-gray-800{--tw-border-opacity:1;border-color:rgb(79 79 79/var(--tw-border-opacity,1))}.border-gray-850{--tw-border-opacity:1;border-color:rgb(72 72 72/var(--tw-border-opacity,1))}.border-green-dark{--tw-border-opacity:1;border-color:rgb(74 117 67/var(--tw-border-opacity,1))}.border-green-default{--tw-border-opacity:1;border-color:rgb(92 184 92/var(--tw-border-opacity,1))}.border-icon-primary{border-color:var(--hmd-tw-icon-primary)}.border-primary-600-60{border-color:#453aff99}.border-raised-border-default{border-color:var(--hmd-tw-raised-border-default)}.border-raised-border-hover{border-color:var(--hmd-tw-raised-border-hover)}.border-red-default{--tw-border-opacity:1;border-color:rgb(234 67 53/var(--tw-border-opacity,1))}.border-red-light{--tw-border-opacity:1;border-color:rgb(255 99 99/var(--tw-border-opacity,1))}.border-state-danger-bg-default{border-color:var(--hmd-tw-state-danger-bg-default)}.border-state-danger-bg-hover{border-color:var(--hmd-tw-state-danger-bg-hover)}.border-state-danger-border{border-color:var(--hmd-tw-state-danger-border)}.border-state-danger-border-subtle{border-color:var(--hmd-tw-state-danger-border-subtle)}.border-state-danger-default{border-color:var(--hmd-tw-state-danger-default)}.border-state-info-border{border-color:var(--hmd-tw-state-info-border)}.border-state-info-border-subtle{border-color:var(--hmd-tw-state-info-border-subtle)}.border-state-success-border-subtle{border-color:var(--hmd-tw-state-success-border-subtle)}.border-state-warning-border-subtle{border-color:var(--hmd-tw-state-warning-border-subtle)}.border-transparent{border-color:#0000}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.border-white\/40{border-color:#fff6}.border-white\/80{border-color:#fffc}.border-yellow-prime{--tw-border-opacity:1;border-color:rgb(235 176 71/var(--tw-border-opacity,1))}.border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity,1))}.border-b-border-bold{border-bottom-color:var(--hmd-tw-border-bold)}.border-b-border-default{border-bottom-color:var(--hmd-tw-border-default)}.border-b-border-primary-subtler{border-bottom-color:var(--hmd-tw-border-primary-subtler)}.border-l-border-subtlest{border-left-color:var(--hmd-tw-border-subtlest)}.border-l-transparent{border-left-color:#0000}.border-r-border-default{border-right-color:var(--hmd-tw-border-default)}.border-t-border-default{border-top-color:var(--hmd-tw-border-default)}.border-t-border-primary-subtler{border-top-color:var(--hmd-tw-border-primary-subtler)}.border-opacity-20{--tw-border-opacity:0.2}.border-opacity-30{--tw-border-opacity:0.3}.\!bg-background-default{background-color:var(--hmd-tw-background-default)!important}.\!bg-background-subtler{background-color:var(--hmd-tw-background-subtler)!important}.\!bg-state-danger-bg-light{background-color:var(--hmd-tw-state-danger-bg-light)!important}.\!bg-transparent{background-color:initial!important}.\!bg-white{--tw-bg-opacity:1!important;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))!important}.bg-\[\#000000B2\]{background-color:#000000b2}.bg-\[\#000\]{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-\[\#000\]\/70{background-color:#000000b3}.bg-\[\#000\]\/80{background-color:#000c}.bg-\[\#0061FF\]{--tw-bg-opacity:1;background-color:rgb(0 97 255/var(--tw-bg-opacity,1))}.bg-\[\#1C1C1E4D\]{background-color:#1c1c1e4d}.bg-\[\#1C1C1E\]{--tw-bg-opacity:1;background-color:rgb(28 28 30/var(--tw-bg-opacity,1))}.bg-\[\#1E1E1E\]{--tw-bg-opacity:1;background-color:rgb(30 30 30/var(--tw-bg-opacity,1))}.bg-\[\#1F6FEB\]{--tw-bg-opacity:1;background-color:rgb(31 111 235/var(--tw-bg-opacity,1))}.bg-\[\#337AB7\]{--tw-bg-opacity:1;background-color:rgb(51 122 183/var(--tw-bg-opacity,1))}.bg-\[\#3C5A9A\]{--tw-bg-opacity:1;background-color:rgb(60 90 154/var(--tw-bg-opacity,1))}.bg-\[\#4A47FF\]{--tw-bg-opacity:1;background-color:rgb(74 71 255/var(--tw-bg-opacity,1))}.bg-\[\#CECECE4D\]{background-color:#cecece4d}.bg-\[\#FC6D26\]{--tw-bg-opacity:1;background-color:rgb(252 109 38/var(--tw-bg-opacity,1))}.bg-\[\#fff\]\/80{background-color:#fffc}.bg-\[\#white\]{background-color:#white}.bg-\[rgba\(0\2c 0\2c 0\2c \.3\)\]{background-color:#0000004d}.bg-background-blur{background-color:var(--hmd-tw-background-blur)}.bg-background-default{background-color:var(--hmd-tw-background-default)}.bg-background-primary-default{background-color:var(--hmd-tw-background-primary-default)}.bg-background-primary-disabled{background-color:var(--hmd-tw-background-primary-disabled)}.bg-background-primary-hover{background-color:var(--hmd-tw-background-primary-hover)}.bg-background-primary-subtle{background-color:var(--hmd-tw-background-primary-subtle)}.bg-background-primary-subtler{background-color:var(--hmd-tw-background-primary-subtler)}.bg-background-selected{background-color:var(--hmd-tw-background-selected)}.bg-background-subtle{background-color:var(--hmd-tw-background-subtle)}.bg-background-subtler{background-color:var(--hmd-tw-background-subtler)}.bg-background-sunken{background-color:var(--hmd-tw-background-sunken)}.bg-black-brand{--tw-bg-opacity:1;background-color:rgb(51 51 51/var(--tw-bg-opacity,1))}.bg-blue-default{--tw-bg-opacity:1;background-color:rgb(51 122 183/var(--tw-bg-opacity,1))}.bg-border-bold{background-color:var(--hmd-tw-border-bold)}.bg-border-default{background-color:var(--hmd-tw-border-default)}.bg-border-primary-subtler{background-color:var(--hmd-tw-border-primary-subtler)}.bg-element-bg-default{background-color:var(--hmd-tw-element-bg-default)}.bg-element-bg-disabled{background-color:var(--hmd-tw-element-bg-disabled)}.bg-element-bg-hover{background-color:var(--hmd-tw-element-bg-hover)}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(248 248 248/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(231 231 231/var(--tw-bg-opacity,1))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(205 205 205/var(--tw-bg-opacity,1))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(190 190 190/var(--tw-bg-opacity,1))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(143 143 143/var(--tw-bg-opacity,1))}.bg-gray-700{--tw-bg-opacity:1;background-color:rgb(104 104 104/var(--tw-bg-opacity,1))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(79 79 79/var(--tw-bg-opacity,1))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.bg-green-default{--tw-bg-opacity:1;background-color:rgb(92 184 92/var(--tw-bg-opacity,1))}.bg-green-light{--tw-bg-opacity:1;background-color:rgb(223 240 216/var(--tw-bg-opacity,1))}.bg-inherit{background-color:inherit}.bg-primary-400{--tw-bg-opacity:1;background-color:rgb(118 109 248/var(--tw-bg-opacity,1))}.bg-prime-default{background-color:var(--hmd-tw-prime-default)}.bg-raised-bg-default{background-color:var(--hmd-tw-raised-bg-default)}.bg-raised-bg-hover{background-color:var(--hmd-tw-raised-bg-hover)}.bg-red-default{--tw-bg-opacity:1;background-color:rgb(234 67 53/var(--tw-bg-opacity,1))}.bg-state-danger-bg-default{background-color:var(--hmd-tw-state-danger-bg-default)}.bg-state-danger-bg-hover{background-color:var(--hmd-tw-state-danger-bg-hover)}.bg-state-danger-bg-light{background-color:var(--hmd-tw-state-danger-bg-light)}.bg-state-default-background{background-color:var(--hmd-tw-state-default-background)}.bg-state-info-background{background-color:var(--hmd-tw-state-info-background)}.bg-state-success-background{background-color:var(--hmd-tw-state-success-background)}.bg-state-success-default{background-color:var(--hmd-tw-state-success-default)}.bg-state-warning-background{background-color:var(--hmd-tw-state-warning-background)}.bg-state-warning-default{background-color:var(--hmd-tw-state-warning-default)}.bg-text-mark-diff-del{background-color:var(--hmd-tw-text-mark-diff-del)}.bg-text-mark-suggest-default{background-color:var(--hmd-tw-text-mark-suggest-default)}.bg-transparent{background-color:initial}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/80{background-color:#fffc}.bg-zinc-700{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity,1))}.bg-opacity-20{--tw-bg-opacity:0.2}.bg-opacity-30{--tw-bg-opacity:0.3}.bg-opacity-\[0\.61\]{--tw-bg-opacity:0.61}.bg-opacity-\[0\.74\]{--tw-bg-opacity:0.74}.bg-\[linear-gradient\(111\.76deg\2c \#5041FF_25\.08\%\2c \#FF44BF_49\.95\%\2c \#FFE142_74\.81\%\)\]{background-image:linear-gradient(111.76deg,#5041ff 25.08%,#ff44bf 49.95%,#ffe142 74.81%)}.bg-\[linear-gradient\(270deg\2c \#27272A_37\.22\%\2c rgba\(39\2c 39\2c 42\2c 0\)_100\%\)\]{background-image:linear-gradient(270deg,#27272a 37.22%,#27272a00)}.bg-\[linear-gradient\(90deg\2c \#27272A_37\.22\%\2c rgba\(39\2c 39\2c 42\2c 0\)_100\%\)\]{background-image:linear-gradient(90deg,#27272a 37.22%,#27272a00)}.bg-state-danger-background-solid{background-image:linear-gradient(var(--hmd-tw-state-danger-bg-light),var(--hmd-tw-state-danger-bg-light)),linear-gradient(var(--hmd-tw-background-default),var(--hmd-tw-background-default))}.bg-state-info-background-solid{background-image:linear-gradient(var(--hmd-tw-state-info-background),var(--hmd-tw-state-info-background)),linear-gradient(var(--hmd-tw-background-default),var(--hmd-tw-background-default))}.bg-state-success-background-solid{background-image:linear-gradient(var(--hmd-tw-state-success-background),var(--hmd-tw-state-success-background)),linear-gradient(var(--hmd-tw-background-default),var(--hmd-tw-background-default))}.bg-state-warning-background-solid{background-image:linear-gradient(var(--hmd-tw-state-warning-background),var(--hmd-tw-state-warning-background)),linear-gradient(var(--hmd-tw-background-default),var(--hmd-tw-background-default))}.bg-cover{background-size:cover}.bg-clip-padding{background-clip:padding-box}.bg-center{background-position:50%}.fill-background-default{fill:var(--hmd-tw-background-default)}.fill-background-primary-default{fill:var(--hmd-tw-background-primary-default)}.fill-background-primary-disabled{fill:var(--hmd-tw-background-primary-disabled)}.fill-background-subtler{fill:var(--hmd-tw-background-subtler)}.fill-border-default{fill:var(--hmd-tw-border-default)}.fill-icon-default{fill:var(--hmd-tw-icon-default)}.fill-icon-disabled{fill:var(--hmd-tw-icon-disabled)}.fill-icon-subtle{fill:var(--hmd-tw-icon-subtle)}.fill-zinc-50{fill:#fafafa}.fill-zinc-700{fill:#3f3f46}.object-cover{object-fit:cover}.object-left-top{object-position:left top}.\!p-0{padding:0!important}.\!p-1{padding:4px!important}.\!p-1\.5{padding:6px!important}.\!p-3{padding:12px!important}.\!p-\[9px\]{padding:9px!important}.p-0{padding:0}.p-0\.5{padding:2px}.p-1{padding:4px}.p-1\.5{padding:6px}.p-2{padding:8px}.p-2\.5{padding:10px}.p-3{padding:12px}.p-3\.5{padding:14px}.p-4{padding:16px}.p-4\.5{padding:18px}.p-5{padding:20px}.p-6{padding:24px}.p-\[0_0_0_9px\]{padding:0 0 0 9px}.p-\[1\.5px\]{padding:1.5px}.p-\[13px\]{padding:13px}.p-\[1px\]{padding:1px}.p-\[2px\]{padding:2px}.p-\[5px\]{padding:5px}.p-\[6px\]{padding:6px}.p-\[7px\]{padding:7px}.p-\[9px\]{padding:9px}.\!px-0{padding-left:0!important;padding-right:0!important}.\!px-2{padding-left:8px!important;padding-right:8px!important}.\!px-4{padding-left:16px!important;padding-right:16px!important}.\!px-4\.5{padding-left:18px!important;padding-right:18px!important}.\!px-5{padding-left:20px!important;padding-right:20px!important}.\!px-\[13px\]{padding-left:13px!important;padding-right:13px!important}.\!px-\[17px\]{padding-left:17px!important;padding-right:17px!important}.\!py-0{padding-bottom:0!important;padding-top:0!important}.\!py-1\.5{padding-bottom:6px!important;padding-top:6px!important}.\!py-3{padding-bottom:12px!important;padding-top:12px!important}.\!py-3\.5{padding-bottom:14px!important;padding-top:14px!important}.\!py-\[11px\]{padding-bottom:11px!important;padding-top:11px!important}.\!py-\[3px\]{padding-bottom:3px!important;padding-top:3px!important}.\!py-\[7px\]{padding-bottom:7px!important;padding-top:7px!important}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:2px;padding-right:2px}.px-1{padding-left:4px;padding-right:4px}.px-1\.5{padding-left:6px;padding-right:6px}.px-10{padding-left:40px;padding-right:40px}.px-2{padding-left:8px;padding-right:8px}.px-2\.5{padding-left:10px;padding-right:10px}.px-3{padding-left:12px;padding-right:12px}.px-3\.5{padding-left:14px;padding-right:14px}.px-4{padding-left:16px;padding-right:16px}.px-4\.5{padding-left:18px;padding-right:18px}.px-5{padding-left:20px;padding-right:20px}.px-6{padding-left:24px;padding-right:24px}.px-7{padding-left:28px;padding-right:28px}.px-8{padding-left:32px;padding-right:32px}.px-\[10px\]{padding-left:10px;padding-right:10px}.px-\[11px\]{padding-left:11px;padding-right:11px}.px-\[13px\]{padding-left:13px;padding-right:13px}.px-\[15px\]{padding-left:15px;padding-right:15px}.px-\[18px\]{padding-left:18px;padding-right:18px}.px-\[22px\]{padding-left:22px;padding-right:22px}.px-\[30px\]{padding-left:30px;padding-right:30px}.px-\[3px\]{padding-left:3px;padding-right:3px}.px-\[41px\]{padding-left:41px;padding-right:41px}.px-\[42px\]{padding-left:42px;padding-right:42px}.px-\[58\.5px\]{padding-left:58.5px;padding-right:58.5px}.px-\[5px\]{padding-left:5px;padding-right:5px}.px-\[7px\]{padding-left:7px;padding-right:7px}.py-0\.5{padding-bottom:2px;padding-top:2px}.py-1{padding-bottom:4px;padding-top:4px}.py-1\.5{padding-bottom:6px;padding-top:6px}.py-16{padding-bottom:64px;padding-top:64px}.py-2{padding-bottom:8px;padding-top:8px}.py-2\.5{padding-bottom:10px;padding-top:10px}.py-20{padding-bottom:80px;padding-top:80px}.py-3{padding-bottom:12px;padding-top:12px}.py-3\.5{padding-bottom:14px;padding-top:14px}.py-4{padding-bottom:16px;padding-top:16px}.py-5{padding-bottom:20px;padding-top:20px}.py-6{padding-bottom:24px;padding-top:24px}.py-\[10px\]{padding-bottom:10px;padding-top:10px}.py-\[11px\]{padding-bottom:11px;padding-top:11px}.py-\[15\.65px\]{padding-bottom:15.65px;padding-top:15.65px}.py-\[1px\]{padding-bottom:1px;padding-top:1px}.py-\[2\.5px\]{padding-bottom:2.5px;padding-top:2.5px}.py-\[21px\]{padding-bottom:21px;padding-top:21px}.py-\[2px\]{padding-bottom:2px;padding-top:2px}.py-\[3px\]{padding-bottom:3px;padding-top:3px}.py-\[5px\]{padding-bottom:5px;padding-top:5px}.py-\[6px\]{padding-bottom:6px;padding-top:6px}.py-\[8\.5px\]{padding-bottom:8.5px;padding-top:8.5px}.py-\[9px\]{padding-bottom:9px;padding-top:9px}.\!pb-2{padding-bottom:8px!important}.\!pl-0{padding-left:0!important}.\!pt-0{padding-top:0!important}.pb-0\.5{padding-bottom:2px}.pb-1{padding-bottom:4px}.pb-1\.5{padding-bottom:6px}.pb-10{padding-bottom:40px}.pb-15{padding-bottom:60px}.pb-2{padding-bottom:8px}.pb-2\.5{padding-bottom:10px}.pb-3{padding-bottom:12px}.pb-3\.5{padding-bottom:14px}.pb-4{padding-bottom:16px}.pb-5{padding-bottom:20px}.pb-6{padding-bottom:24px}.pb-7\.5{padding-bottom:30px}.pb-9{padding-bottom:36px}.pb-\[10px\]{padding-bottom:10px}.pb-\[11px\]{padding-bottom:11px}.pb-\[1px\]{padding-bottom:1px}.pb-\[26px\]{padding-bottom:26px}.pl-0{padding-left:0}.pl-1{padding-left:4px}.pl-1\.5{padding-left:6px}.pl-10{padding-left:40px}.pl-11{padding-left:44px}.pl-2{padding-left:8px}.pl-2\.5{padding-left:10px}.pl-3{padding-left:12px}.pl-3\.5{padding-left:14px}.pl-4{padding-left:16px}.pl-4\.5{padding-left:18px}.pl-5{padding-left:20px}.pl-6{padding-left:24px}.pl-7{padding-left:28px}.pl-9{padding-left:36px}.pl-\[19px\]{padding-left:19px}.pl-\[5px\]{padding-left:5px}.pr-0\.5{padding-right:2px}.pr-1{padding-right:4px}.pr-1\.5{padding-right:6px}.pr-2{padding-right:8px}.pr-2\.5{padding-right:10px}.pr-3{padding-right:12px}.pr-3\.5{padding-right:14px}.pr-4{padding-right:16px}.pr-4\.5{padding-right:18px}.pr-5{padding-right:20px}.pr-6{padding-right:24px}.pr-8{padding-right:32px}.pr-9{padding-right:36px}.pr-\[10px\]{padding-right:10px}.pr-\[11px\]{padding-right:11px}.pr-\[42px\]{padding-right:42px}.pr-\[5px\]{padding-right:5px}.pr-\[7px\]{padding-right:7px}.pt-0{padding-top:0}.pt-0\.5{padding-top:2px}.pt-1{padding-top:4px}.pt-1\.5{padding-top:6px}.pt-10{padding-top:40px}.pt-16{padding-top:64px}.pt-2{padding-top:8px}.pt-2\.5{padding-top:10px}.pt-3{padding-top:12px}.pt-3\.5{padding-top:14px}.pt-4{padding-top:16px}.pt-5{padding-top:20px}.pt-\[10px\]{padding-top:10px}.pt-\[11px\]{padding-top:11px}.pt-\[14px\]{padding-top:14px}.pt-\[1px\]{padding-top:1px}.pt-\[38px\]{padding-top:38px}.pt-\[3px\]{padding-top:3px}.pt-\[5px\]{padding-top:5px}.pt-\[68px\]{padding-top:68px}.pt-\[7px\]{padding-top:7px}.\!text-left{text-align:left!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.align-text-top{vertical-align:text-top}.align-text-bottom{vertical-align:text-bottom}.font-\[\"Noto_Color_Emoji\"\2c _\"Apple_Color_Emoji\"\2c _\"Segoe_UI_Emoji\"\]{font-family:Noto Color Emoji,Apple Color Emoji,Segoe UI Emoji}.font-\[\'Phosphor\'\]{font-family:Phosphor}.font-brand{font-family:Inter,system-ui,sans-serif}.font-brand-headline{font-family:Readex Pro,system-ui,sans-serif}.font-system{font-family:Inter,system-ui,sans-serif}.font-system-code{font-family:Source Code Pro,ui-monospace,monospace}.\!text-5{font-size:16px!important}.\!text-\[18px\],.\!text-h3{font-size:18px!important}.\!text-normal{font-size:14px!important}.text-10{font-size:26px}.text-12{font-size:30px}.text-13{font-size:32px}.text-2{font-size:10px}.text-3{font-size:12px}.text-4{font-size:14px}.text-5{font-size:16px}.text-6{font-size:18px}.text-7{font-size:20px}.text-8{font-size:22px}.text-9{font-size:24px}.text-\[0px\]{font-size:0}.text-\[125\%\]{font-size:125%}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[16\.5px\]{font-size:16.5px}.text-\[16px\]{font-size:16px}.text-\[18px\]{font-size:18px}.text-\[20px\]{font-size:20px}.text-\[28px\]{font-size:28px}.text-\[31px\]{font-size:31px}.text-\[32px\]{font-size:32px}.text-body{font-size:14px}.text-h1{font-size:26px}.text-h2{font-size:22px}.text-h3{font-size:18px}.text-lg{font-size:16px}.text-normal{font-size:14px}.text-sm{font-size:12px}.text-xs{font-size:10px}.\!font-normal{font-weight:400!important}.\!font-semibold{font-weight:600!important}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.not-italic{font-style:normal}.\!leading-\[18px\]{line-height:18px!important}.\!leading-\[20px\]{line-height:20px!important}.\!leading-h3{line-height:22px!important}.\!leading-normal{line-height:20px!important}.leading-\[1\.75\]{line-height:1.75}.leading-\[12px\]{line-height:12px}.leading-\[135\%\]{line-height:135%}.leading-\[13px\]{line-height:13px}.leading-\[14px\]{line-height:14px}.leading-\[16px\]{line-height:16px}.leading-\[18px\]{line-height:18px}.leading-\[20px\]{line-height:20px}.leading-\[22px\]{line-height:22px}.leading-\[24px\]{line-height:24px}.leading-\[26px\]{line-height:26px}.leading-\[28px\]{line-height:28px}.leading-\[32px\]{line-height:32px}.leading-\[9px\]{line-height:9px}.leading-\[normal\]{line-height:normal}.leading-h1{line-height:30px}.leading-h2{line-height:26px}.leading-h3{line-height:22px}.leading-lg,.leading-normal{line-height:20px}.leading-sm{line-height:16px}.leading-xs{line-height:12px}.tracking-\[-2px\]{letter-spacing:-2px}.tracking-normal{letter-spacing:0}.\!text-blue-default{--tw-text-opacity:1!important;color:rgb(51 122 183/var(--tw-text-opacity,1))!important}.\!text-blue-light-default{--tw-text-opacity:1!important;color:rgb(102 181 240/var(--tw-text-opacity,1))!important}.\!text-gray-500{--tw-text-opacity:1!important;color:rgb(143 143 143/var(--tw-text-opacity,1))!important}.\!text-gray-600{--tw-text-opacity:1!important;color:rgb(136 136 136/var(--tw-text-opacity,1))!important}.\!text-icon-default{color:var(--hmd-tw-icon-default)!important}.\!text-icon-emphasize{color:var(--hmd-tw-icon-emphasize)!important}.\!text-icon-subtle{color:var(--hmd-tw-icon-subtle)!important}.\!text-inherit{color:inherit!important}.\!text-link-text-default{color:var(--hmd-tw-link-text-default)!important}.\!text-primary-300{--tw-text-opacity:1!important;color:rgb(152 148 249/var(--tw-text-opacity,1))!important}.\!text-red-light{--tw-text-opacity:1!important;color:rgb(255 99 99/var(--tw-text-opacity,1))!important}.\!text-state-danger-text{color:var(--hmd-tw-state-danger-text)!important}.\!text-text-default{color:var(--hmd-tw-text-default)!important}.\!text-text-emphasize{color:var(--hmd-tw-text-emphasize)!important}.\!text-text-primary{color:var(--hmd-tw-text-primary)!important}.\!text-text-subtle{color:var(--hmd-tw-text-subtle)!important}.\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity,1))!important}.text-\[\#000\]{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-\[\#333\]{--tw-text-opacity:1;color:rgb(51 51 51/var(--tw-text-opacity,1))}.text-\[\#547AFF\]{--tw-text-opacity:1;color:rgb(84 122 255/var(--tw-text-opacity,1))}.text-\[\#888888\],.text-\[\#888\]{--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.text-\[\#C85C54\]{--tw-text-opacity:1;color:rgb(200 92 84/var(--tw-text-opacity,1))}.text-\[\#CDCDCD\]{--tw-text-opacity:1;color:rgb(205 205 205/var(--tw-text-opacity,1))}.text-\[\#FF6363\]{--tw-text-opacity:1;color:rgb(255 99 99/var(--tw-text-opacity,1))}.text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.text-black-brand{--tw-text-opacity:1;color:rgb(51 51 51/var(--tw-text-opacity,1))}.text-blue-dark{--tw-text-opacity:1;color:rgb(102 181 240/var(--tw-text-opacity,1))}.text-blue-default{--tw-text-opacity:1;color:rgb(51 122 183/var(--tw-text-opacity,1))}.text-blue-light-default{--tw-text-opacity:1;color:rgb(102 181 240/var(--tw-text-opacity,1))}.text-border-default{color:var(--hmd-tw-border-default)}.text-border-primary-subtler{color:var(--hmd-tw-border-primary-subtler)}.text-element-text-disabled{color:var(--hmd-tw-element-text-disabled)}.text-gray-300{--tw-text-opacity:1;color:rgb(205 205 205/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(190 190 190/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(143 143 143/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(104 104 104/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity,1))}.text-green-400{--tw-text-opacity:1;color:rgb(118 209 88/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(71 156 43/var(--tw-text-opacity,1))}.text-green-dark{--tw-text-opacity:1;color:rgb(74 117 67/var(--tw-text-opacity,1))}.text-green-default{--tw-text-opacity:1;color:rgb(92 184 92/var(--tw-text-opacity,1))}.text-icon-default{color:var(--hmd-tw-icon-default)}.text-icon-emphasize{color:var(--hmd-tw-icon-emphasize)}.text-icon-primary{color:var(--hmd-tw-icon-primary)}.text-icon-subtle{color:var(--hmd-tw-icon-subtle)}.text-icon-subtler{color:var(--hmd-tw-icon-subtler)}.text-inherit{color:inherit}.text-link-text-default{color:var(--hmd-tw-link-text-default)}.text-primary-200{--tw-text-opacity:1;color:rgb(178 171 251/var(--tw-text-opacity,1))}.text-primary-300{--tw-text-opacity:1;color:rgb(152 148 249/var(--tw-text-opacity,1))}.text-primary-600{--tw-text-opacity:1;color:rgb(69 58 255/var(--tw-text-opacity,1))}.text-raised-icon-default{color:var(--hmd-tw-raised-icon-default)}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-red-default{--tw-text-opacity:1;color:rgb(234 67 53/var(--tw-text-opacity,1))}.text-red-light{--tw-text-opacity:1;color:rgb(255 99 99/var(--tw-text-opacity,1))}.text-state-danger-icon{color:var(--hmd-tw-state-danger-icon)}.text-state-danger-text{color:var(--hmd-tw-state-danger-text)}.text-state-info-icon{color:var(--hmd-tw-state-info-icon)}.text-state-info-text{color:var(--hmd-tw-state-info-text)}.text-state-success-icon{color:var(--hmd-tw-state-success-icon)}.text-state-success-text{color:var(--hmd-tw-state-success-text)}.text-state-warning-icon{color:var(--hmd-tw-state-warning-icon)}.text-state-warning-text{color:var(--hmd-tw-state-warning-text)}.text-text-default{color:var(--hmd-tw-text-default)}.text-text-emphasize{color:var(--hmd-tw-text-emphasize)}.text-text-primary{color:var(--hmd-tw-text-primary)}.text-text-subtle{color:var(--hmd-tw-text-subtle)}.text-text-subtler{color:var(--hmd-tw-text-subtler)}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-default{--tw-text-opacity:1;color:rgb(247 160 4/var(--tw-text-opacity,1))}.text-yellow-prime{--tw-text-opacity:1;color:rgb(235 176 71/var(--tw-text-opacity,1))}.text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity,1))}.text-zinc-700{--tw-text-opacity:1;color:rgb(63 63 70/var(--tw-text-opacity,1))}.text-zinc-800{--tw-text-opacity:1;color:rgb(39 39 42/var(--tw-text-opacity,1))}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.overline{-webkit-text-decoration-line:overline;text-decoration-line:overline}.line-through{-webkit-text-decoration-line:line-through;text-decoration-line:line-through}.\!no-underline{-webkit-text-decoration-line:none!important;text-decoration-line:none!important}.no-underline{-webkit-text-decoration-line:none;text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.placeholder-gray-400::placeholder{--tw-placeholder-opacity:1;color:rgb(190 190 190/var(--tw-placeholder-opacity,1))}.\!opacity-100{opacity:1!important}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-65{opacity:.65}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-\[0\.65\]{opacity:.65}.opacity-\[65\%\]{opacity:65%}.mix-blend-difference{mix-blend-mode:difference}.\!shadow-\[0_3px_15px_0_\#00000026\]{--tw-shadow:0 3px 15px 0 #00000026!important;--tw-shadow-colored:0 3px 15px 0 var(--tw-shadow-color)!important}.\!shadow-\[0_3px_15px_0_\#00000026\],.\!shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.\!shadow-none{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-\[-1px_0_0_0\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[-1px_0_0_0\]{--tw-shadow:-1px 0 0 0;--tw-shadow-colored:-1px 0 0 0 var(--tw-shadow-color)}.shadow-\[0_-1px_0_0_var\(--hmd-tw-border-default\)_inset\]{--tw-shadow:0 -1px 0 0 var(--hmd-tw-border-default) inset;--tw-shadow-colored:inset 0 -1px 0 0 var(--tw-shadow-color)}.shadow-\[0_-1px_0_0_var\(--hmd-tw-border-default\)_inset\],.shadow-\[0_0_0_1px\2c 0_2px_0_1px\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_0_1px\2c 0_2px_0_1px\]{--tw-shadow:0 0 0 1px,0 2px 0 1px;--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color),0 2px 0 1px var(--tw-shadow-color)}.shadow-\[0_0_0_1px\]{--tw-shadow:0 0 0 1px;--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color)}.shadow-\[0_0_0_1px\],.shadow-\[0_0_0_1px_\#766DF8\2c 0_0_10px_2px_\#453AFF69\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_0_1px_\#766DF8\2c 0_0_10px_2px_\#453AFF69\]{--tw-shadow:0 0 0 1px #766df8,0 0 10px 2px #453aff69;--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color),0 0 10px 2px var(--tw-shadow-color)}.shadow-\[0_0_0_1px_inset_\#71717A\]{--tw-shadow:0 0 0 1px inset #71717a;--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_0_2px_\#453AFF33\]{--tw-shadow:0 0 0 2px #453aff33;--tw-shadow-colored:0 0 0 2px var(--tw-shadow-color)}.shadow-\[0_0_0_2px_\#453AFF33\],.shadow-\[0_0_0_2px_\#77777733\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_0_2px_\#77777733\]{--tw-shadow:0 0 0 2px #7773;--tw-shadow-colored:0 0 0 2px var(--tw-shadow-color)}.shadow-\[0_0_0_2px_\#DC262633\]{--tw-shadow:0 0 0 2px #dc262633;--tw-shadow-colored:0 0 0 2px var(--tw-shadow-color)}.shadow-\[0_0_0_2px_\#DC262633\],.shadow-\[0_0_0_2px_inset\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_0_2px_inset\]{--tw-shadow:0 0 0 2px inset;--tw-shadow-colored:inset 0 0 0 2px var(--tw-shadow-color)}.shadow-\[0_0_10px_2px_\#453AFF69\]{--tw-shadow:0 0 10px 2px #453aff69;--tw-shadow-colored:0 0 10px 2px var(--tw-shadow-color)}.shadow-\[0_0_10px_2px_\#453AFF69\],.shadow-\[0_0_2px_0_rgba\(0\2c 0\2c 0\2c 0\.25\)\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_2px_0_rgba\(0\2c 0\2c 0\2c 0\.25\)\]{--tw-shadow:0 0 2px 0 #00000040;--tw-shadow-colored:0 0 2px 0 var(--tw-shadow-color)}.shadow-\[0_0_7px_0_rgba\(0\2c 0\2c 0\2c 0\.25\)\]{--tw-shadow:0 0 7px 0 #00000040;--tw-shadow-colored:0 0 7px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_3px_15px_0_\#00000026\],.shadow-\[0_3px_15px_0_rgba\(0\2c 0\2c 0\2c 0\.15\)\],.shadow-\[0_3px_15px_0_rgba\(0\2c _0\2c _0\2c _0\.15\)\]{--tw-shadow:0 3px 15px 0 #00000026;--tw-shadow-colored:0 3px 15px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_3px_20px_0_\#00000066\2c 0_1px_3px_0_\#000000A6\],.shadow-\[0_3px_20px_0_\#00000066\2c _0_1px_3px_0_\#000000A6\]{--tw-shadow:0 3px 20px 0 #0006,0 1px 3px 0 #000000a6;--tw-shadow-colored:0 3px 20px 0 var(--tw-shadow-color),0 1px 3px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_9px_6\.8px_rgba\(39\2c 38\2c 81\2c 0\.25\)\]{--tw-shadow:0 9px 6.8px #27265140;--tw-shadow-colored:0 9px 6.8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0px_3px_20px_0px_\#00000066\2c 0px_1px_3px_0px_\#000000A6\]{--tw-shadow:0px 3px 20px 0px #0006,0px 1px 3px 0px #000000a6;--tw-shadow-colored:0px 3px 20px 0px var(--tw-shadow-color),0px 1px 3px 0px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[inset_0_-1px_0px\]{--tw-shadow:inset 0 -1px 0px;--tw-shadow-colored:inset 0 -1px 0px var(--tw-shadow-color)}.shadow-\[inset_0_-1px_0px\],.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-border-default{--tw-shadow-color:var(--hmd-tw-border-default);--tw-shadow:var(--tw-shadow-colored)}.shadow-state-warning-border{--tw-shadow-color:var(--hmd-tw-state-warning-border);--tw-shadow:var(--tw-shadow-colored)}.outline-none{outline:2px solid #0000;outline-offset:2px}.outline{outline-style:solid}.outline-1{outline-width:1px}.outline-offset-\[-1px\]{outline-offset:-1px}.outline-border-primary-default{outline-color:var(--hmd-tw-border-primary-default)}.outline-border-primary-focus{outline-color:var(--hmd-tw-border-primary-focus)}.ring-transparent{--tw-ring-color:#0000}.blur{--tw-blur:blur(8px)}.blur,.drop-shadow{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f)}.drop-shadow-\[0_4px_17px_rgba\(0\2c 0\2c 0\2c 0\.25\)\]{--tw-drop-shadow:drop-shadow(0 4px 17px #00000040)}.drop-shadow-\[0_4px_17px_rgba\(0\2c 0\2c 0\2c 0\.25\)\],.drop-shadow-md{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-md{--tw-drop-shadow:drop-shadow(0 4px 3px #00000012) drop-shadow(0 2px 2px #0000000f)}.drop-shadow-tooltip{--tw-drop-shadow:drop-shadow(0px 1px 3px #000000a6) drop-shadow(0px 3px 20px #0006)}.drop-shadow-tooltip,.grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%)}.invert{--tw-invert:invert(100%)}.invert,.sepia{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.sepia{--tw-sepia:sepia(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-\[12px\]{--tw-backdrop-blur:blur(12px)}.backdrop-blur-\[12px\],.backdrop-blur-\[5\.9px\]{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-\[5\.9px\]{--tw-backdrop-blur:blur(5.9px)}.\!transition-none{transition-property:none!important}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[max-width\2c transform\]{transition-duration:.15s;transition-property:max-width,transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[outline-color\]{transition-duration:.15s;transition-property:outline-color;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[width\2c height\2c margin-top\2c margin-left\]{transition-duration:.15s;transition-property:width,height,margin-top,margin-left;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,fill,stroke,-webkit-text-decoration-color;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,-webkit-text-decoration-color;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-0{transition-delay:0s}.delay-300{transition-delay:.3s}.\!duration-0{transition-duration:0s!important}.duration-0{transition-duration:0s}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300,.duration-\[300ms\]{transition-duration:.3s}.duration-\[30ms\]{transition-duration:30ms}.duration-\[400ms\]{transition-duration:.4s}.duration-\[50ms\]{transition-duration:50ms}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.content-\[\'\\E136\'\]{--tw-content:"\E136";content:var(--tw-content)}.content-\[\'\\E13C\'\]{--tw-content:"\E13C";content:var(--tw-content)}.content-\[\'\\e182\'\]{--tw-content:"\e182";content:var(--tw-content)}.tw-hide{display:none}.\[-webkit-background-clip\:text\]{-webkit-background-clip:text}.\[-webkit-text-fill-color\:transparent\]{-webkit-text-fill-color:#0000}.\[-webkit-text-stroke\:1px_black\]{-webkit-text-stroke:1px #000}.\[grid-auto-rows\:min-content\]{grid-auto-rows:min-content}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.\!\[text-shadow\:none\]{text-shadow:none!important}.\[text-wrap\:balance\]{text-wrap:balance}.\[text-wrap\:nowrap\]{text-wrap:nowrap}body,html{font-family:Inter,system-ui,sans-serif;min-height:100%;scroll-behavior:smooth}#doc.markdown-body{max-width:760px;min-height:calc(100% - 160px);padding-bottom:80px}.container-thiner{margin:0 auto;max-width:760px;padding:0 15px}.ui-toc{bottom:55px}.ui-infobar{margin:0 auto;padding-top:25px}.ui-comment-app{top:25px}.ui-infobar .btn{font-size:15px;line-height:16px;padding:7px 12px}.ui-infobar .btn.btn-default{border:1px solid #ccc;color:#333}.ui-infobar .btn.btn-success{background:#5cb85c;border:1px solid #5cb85c;font-weight:700}.ui-infobar .btn.btn-success:active,.ui-infobar .btn.btn-success:hover{background:#449d44}.ui-infobar .btn.ui-edit{color:#868686;padding:7px 10px}.ui-infobar .btn.ui-signin.btn.btn-default{color:#868686}.ui-infobar__user-info{align-items:center;display:flex;flex:1;min-width:0;width:100%}.ui-infobar__user-info li{font-size:12px;font-weight:400;margin-right:20px;padding:0}.ui-infobar__user-info li .ui-user-icon{border-radius:100%}.ui-infobar__actions{display:flex;justify-content:flex-end}.ui-infobar__actions>ul{display:flex}.ui-infobar__actions>ul>li{padding:0}.ui-infobar__actions>ul>li:not(:last-child){padding-right:15px}.ui-infobar__actions .open>.dropdown-menu{left:auto;margin-top:5px;padding:7px 0;right:0;top:24px}.ui-infobar__actions .open>.dropdown-menu>li>a{font-size:14px;line-height:18px;padding:3px 20px;-webkit-user-select:none;user-select:none}.ui-notification{color:var(--hmd-tw-text-default);display:inline}.ui-notification .dropdown-menu{width:200px}.ui-notification .dropdown-menu.left{margin-top:-170px}.ui-notification.dropdown.dropup.open .ph-caret-up,.ui-notification.dropdown.dropup:not(.open) .ph-caret-down,.ui-notification.dropdown:not(.dropup).open .ph-caret-down,.ui-notification.dropdown:not(.dropup):not(.open) .ph-caret-up,.ui-notification.is-watch>.ui-notification-subscribe{display:none}.ui-notification .notification-menu-item{cursor:pointer;display:flex;padding:6px 20px 6px 44px}.ui-notification .notification-menu-item:focus,.ui-notification .notification-menu-item:hover{background:var(--hmd-tw-element-bg-hover)}.ui-notification .notification-menu-item .ph,.ui-notification .notification-menu-item .ph-fill{color:var(--hmd-tw-icon-default);font-size:20px;line-height:20px}.ui-notification .notification-menu-item .ph-check{font-size:16px;font-weight:900;left:20px;line-height:16px;position:absolute}.ui-notification .notification-menu-item .info{flex:1;padding-left:6px}.ui-notification .notification-menu-item .info .title{font-size:14px;line-height:20px}.ui-notification .notification-menu-item .info .description{font-size:10px;font-weight:500;line-height:12px;padding-bottom:4px}a.community-button:focus,a.community-button:hover{text-decoration:none}.community-button{border-radius:4px;color:var(--hmd-tw-text-default);cursor:pointer;display:flex;font-size:14px;height:fit-content;line-height:16px;margin-right:2px;padding:10px}.community-button:focus,.community-button:hover{background-color:var(--hmd-tw-element-bg-hover)}.community-button .count:not(:empty){margin-left:5px}.community-button .text{display:flex;gap:4px;margin-left:5px}.community-button.small{padding:8px 10.37px 7px}.community-button.small .text{display:none}.community-button.ui-bookmark.bookmarked .ph:before,.community-button.ui-like.liked .ph:before{font-family:Phosphor-Fill}.community-button.ui-bookmark.bookmarked .bookmark-label,.community-button.ui-bookmark:not(.bookmarked) .bookmarked-label{display:none}.community-button .ph,.community-button .ph-fill{color:var(--hmd-tw-icon-default);font-size:16px;line-height:16px}.tooltip{z-index:1001}footer{background:#f8f8f8;border-top:1px solid #dedede;bottom:0;padding:10px 0;position:fixed;width:100%;z-index:999}footer.footer-hide{transform:translateY(50px);transition:transform .2s ease}footer.footer-show{transform:translate(0);transition:transform .3s ease}.footer a{color:var(--hmd-tw-text-emphasize)}.footer a:focus,.footer a:hover{color:var(--hmd-tw-text-default);-webkit-text-decoration-line:none;text-decoration-line:none}.footer .brand{font-family:Readex Pro,system-ui,sans-serif;font-size:14px}.document-footer{max-width:760px}.document-footer.hide{display:none}.ui-community{bottom:100px;display:flex;gap:2px;position:fixed;z-index:998}.ui-community,.ui-community .community-button{flex-direction:column}.ui-community .ui-like{position:relative}.ui-community .ui-like.has-count{padding-bottom:26px}.ui-community .ui-like .count:not(:empty){--tw-translate-x:-50%;left:50%;margin:5px 0 0;max-width:100%;overflow:hidden;padding-left:2px;padding-right:2px;position:absolute;text-overflow:ellipsis;top:26px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#viewer-header{color:#888;margin:0 auto;padding:30px 15px 0;width:760px}#viewer-header img{filter:invert(50%) sepia(48%) saturate(6%) hue-rotate(357deg) brightness(98%) contrast(83%);height:14px;margin-right:6px;width:14px}:root[theme] hr{border-color:var(--hmd-tw-border-default)}@media (max-width:767px){.hmd-pa-0-xs{padding:0}.hmd-pv-0-xs{padding-bottom:0;padding-top:0}.hmd-ph-0-xs{padding-left:0;padding-right:0}.hmd-pt-0-xs{padding-top:0}.hmd-pr-0-xs{padding-right:0}.hmd-pb-0-xs{padding-bottom:0}.hmd-pl-0-xs{padding-left:0}.hmd-pa-1\/10-xs{padding:1px}.hmd-pv-1\/10-xs{padding-bottom:1px;padding-top:1px}.hmd-ph-1\/10-xs{padding-left:1px;padding-right:1px}.hmd-pt-1\/10-xs{padding-top:1px}.hmd-pr-1\/10-xs{padding-right:1px}.hmd-pb-1\/10-xs{padding-bottom:1px}.hmd-pl-1\/10-xs{padding-left:1px}.hmd-pa-1\/5-xs{padding:2px}.hmd-pv-1\/5-xs{padding-bottom:2px;padding-top:2px}.hmd-ph-1\/5-xs{padding-left:2px;padding-right:2px}.hmd-pt-1\/5-xs{padding-top:2px}.hmd-pr-1\/5-xs{padding-right:2px}.hmd-pb-1\/5-xs{padding-bottom:2px}.hmd-pl-1\/5-xs{padding-left:2px}.hmd-pa-1\/4-xs{padding:.25rem}.hmd-pv-1\/4-xs{padding-bottom:.25rem;padding-top:.25rem}.hmd-ph-1\/4-xs{padding-left:.25rem;padding-right:.25rem}.hmd-pt-1\/4-xs{padding-top:.25rem}.hmd-pr-1\/4-xs{padding-right:.25rem}.hmd-pb-1\/4-xs{padding-bottom:.25rem}.hmd-pl-1\/4-xs{padding-left:.25rem}.hmd-pa-3\/4-xs{padding:.75rem}.hmd-pv-3\/4-xs{padding-bottom:.75rem;padding-top:.75rem}.hmd-ph-3\/4-xs{padding-left:.75rem;padding-right:.75rem}.hmd-pt-3\/4-xs{padding-top:.75rem}.hmd-pr-3\/4-xs{padding-right:.75rem}.hmd-pb-3\/4-xs{padding-bottom:.75rem}.hmd-pl-3\/4-xs{padding-left:.75rem}.hmd-pa-1\/8-xs{padding:.125rem}.hmd-pv-1\/8-xs{padding-bottom:.125rem;padding-top:.125rem}.hmd-ph-1\/8-xs{padding-left:.125rem;padding-right:.125rem}.hmd-pt-1\/8-xs{padding-top:.125rem}.hmd-pr-1\/8-xs{padding-right:.125rem}.hmd-pb-1\/8-xs{padding-bottom:.125rem}.hmd-pl-1\/8-xs{padding-left:.125rem}.hmd-pa-1\/2-xs{padding:5px}.hmd-pv-1\/2-xs{padding-bottom:5px;padding-top:5px}.hmd-ph-1\/2-xs{padding-left:5px;padding-right:5px}.hmd-pt-1\/2-xs{padding-top:5px}.hmd-pr-1\/2-xs{padding-right:5px}.hmd-pb-1\/2-xs{padding-bottom:5px}.hmd-pl-1\/2-xs{padding-left:5px}.hmd-pa-1-xs{padding:10px}.hmd-pv-1-xs{padding-bottom:10px;padding-top:10px}.hmd-ph-1-xs{padding-left:10px;padding-right:10px}.hmd-pt-1-xs{padding-top:10px}.hmd-pr-1-xs{padding-right:10px}.hmd-pb-1-xs{padding-bottom:10px}.hmd-pl-1-xs{padding-left:10px}.hmd-pa-3\/2-xs{padding:15px}.hmd-pv-3\/2-xs{padding-bottom:15px;padding-top:15px}.hmd-ph-3\/2-xs{padding-left:15px;padding-right:15px}.hmd-pt-3\/2-xs{padding-top:15px}.hmd-pr-3\/2-xs{padding-right:15px}.hmd-pb-3\/2-xs{padding-bottom:15px}.hmd-pl-3\/2-xs{padding-left:15px}.hmd-pa-2-xs{padding:20px}.hmd-pv-2-xs{padding-bottom:20px;padding-top:20px}.hmd-ph-2-xs{padding-left:20px;padding-right:20px}.hmd-pt-2-xs{padding-top:20px}.hmd-pr-2-xs{padding-right:20px}.hmd-pb-2-xs{padding-bottom:20px}.hmd-pl-2-xs{padding-left:20px}.hmd-pa-25-xs{padding:25px}.hmd-pv-25-xs{padding-bottom:25px;padding-top:25px}.hmd-ph-25-xs{padding-left:25px;padding-right:25px}.hmd-pt-25-xs{padding-top:25px}.hmd-pr-25-xs{padding-right:25px}.hmd-pb-25-xs{padding-bottom:25px}.hmd-pl-25-xs{padding-left:25px}.hmd-pa-3-xs{padding:30px}.hmd-pv-3-xs{padding-bottom:30px;padding-top:30px}.hmd-ph-3-xs{padding-left:30px;padding-right:30px}.hmd-pt-3-xs{padding-top:30px}.hmd-pr-3-xs{padding-right:30px}.hmd-pb-3-xs{padding-bottom:30px}.hmd-pl-3-xs{padding-left:30px}.hmd-pa-35-xs{padding:35px}.hmd-pv-35-xs{padding-bottom:35px;padding-top:35px}.hmd-ph-35-xs{padding-left:35px;padding-right:35px}.hmd-pt-35-xs{padding-top:35px}.hmd-pr-35-xs{padding-right:35px}.hmd-pb-35-xs{padding-bottom:35px}.hmd-pl-35-xs{padding-left:35px}.hmd-pa-4-xs{padding:40px}.hmd-pv-4-xs{padding-bottom:40px;padding-top:40px}.hmd-ph-4-xs{padding-left:40px;padding-right:40px}.hmd-pt-4-xs{padding-top:40px}.hmd-pr-4-xs{padding-right:40px}.hmd-pb-4-xs{padding-bottom:40px}.hmd-pl-4-xs{padding-left:40px}.hmd-pa-5-xs{padding:50px}.hmd-pv-5-xs{padding-bottom:50px;padding-top:50px}.hmd-ph-5-xs{padding-left:50px;padding-right:50px}.hmd-pt-5-xs{padding-top:50px}.hmd-pr-5-xs{padding-right:50px}.hmd-pb-5-xs{padding-bottom:50px}.hmd-pl-5-xs{padding-left:50px}.hmd-pa-55-xs{padding:55px}.hmd-pv-55-xs{padding-bottom:55px;padding-top:55px}.hmd-ph-55-xs{padding-left:55px;padding-right:55px}.hmd-pt-55-xs{padding-top:55px}.hmd-pr-55-xs{padding-right:55px}.hmd-pb-55-xs{padding-bottom:55px}.hmd-pl-55-xs{padding-left:55px}.hmd-pa-6-xs{padding:60px}.hmd-pv-6-xs{padding-bottom:60px;padding-top:60px}.hmd-ph-6-xs{padding-left:60px;padding-right:60px}.hmd-pt-6-xs{padding-top:60px}.hmd-pr-6-xs{padding-right:60px}.hmd-pb-6-xs{padding-bottom:60px}.hmd-pl-6-xs{padding-left:60px}.hmd-pa-7-xs{padding:70px}.hmd-pv-7-xs{padding-bottom:70px;padding-top:70px}.hmd-ph-7-xs{padding-left:70px;padding-right:70px}.hmd-pt-7-xs{padding-top:70px}.hmd-pr-7-xs{padding-right:70px}.hmd-pb-7-xs{padding-bottom:70px}.hmd-pl-7-xs{padding-left:70px}.hmd-pa-8-xs{padding:80px}.hmd-pv-8-xs{padding-bottom:80px;padding-top:80px}.hmd-ph-8-xs{padding-left:80px;padding-right:80px}.hmd-pt-8-xs{padding-top:80px}.hmd-pr-8-xs{padding-right:80px}.hmd-pb-8-xs{padding-bottom:80px}.hmd-pl-8-xs{padding-left:80px}.hmd-pa-10-xs{padding:100px}.hmd-pv-10-xs{padding-bottom:100px;padding-top:100px}.hmd-ph-10-xs{padding-left:100px;padding-right:100px}.hmd-pt-10-xs{padding-top:100px}.hmd-pr-10-xs{padding-right:100px}.hmd-pb-10-xs{padding-bottom:100px}.hmd-pl-10-xs{padding-left:100px}.hmd-pa-12-xs{padding:120px}.hmd-pv-12-xs{padding-bottom:120px;padding-top:120px}.hmd-ph-12-xs{padding-left:120px;padding-right:120px}.hmd-pt-12-xs{padding-top:120px}.hmd-pr-12-xs{padding-right:120px}.hmd-pb-12-xs{padding-bottom:120px}.hmd-pl-12-xs{padding-left:120px}.hmd-pa-14-xs{padding:140px}.hmd-pv-14-xs{padding-bottom:140px;padding-top:140px}.hmd-ph-14-xs{padding-left:140px;padding-right:140px}.hmd-pt-14-xs{padding-top:140px}.hmd-pr-14-xs{padding-right:140px}.hmd-pb-14-xs{padding-bottom:140px}.hmd-pl-14-xs{padding-left:140px}.hmd-pa-16-xs{padding:160px}.hmd-pv-16-xs{padding-bottom:160px;padding-top:160px}.hmd-ph-16-xs{padding-left:160px;padding-right:160px}.hmd-pt-16-xs{padding-top:160px}.hmd-pr-16-xs{padding-right:160px}.hmd-pb-16-xs{padding-bottom:160px}.hmd-pl-16-xs{padding-left:160px}.hmd-pa-auto-xs{padding:auto}.hmd-pv-auto-xs{padding-bottom:auto;padding-top:auto}.hmd-ph-auto-xs{padding-left:auto;padding-right:auto}.hmd-pt-auto-xs{padding-top:auto}.hmd-pr-auto-xs{padding-right:auto}.hmd-pb-auto-xs{padding-bottom:auto}.hmd-pl-auto-xs{padding-left:auto}.hmd-ma-0-xs{margin:0}.hmd-mv-0-xs{margin-bottom:0;margin-top:0}.hmd-mh-0-xs{margin-left:0;margin-right:0}.hmd-mt-0-xs{margin-top:0}.hmd-mr-0-xs{margin-right:0}.hmd-mb-0-xs{margin-bottom:0}.hmd-ml-0-xs{margin-left:0}.hmd-nt-0-xs{margin-top:0}.hmd-nr-0-xs{margin-right:0}.hmd-nb-0-xs{margin-bottom:0}.hmd-nl-0-xs{margin-left:0}.hmd-ma-1\/10-xs{margin:1px}.hmd-mv-1\/10-xs{margin-bottom:1px;margin-top:1px}.hmd-mh-1\/10-xs{margin-left:1px;margin-right:1px}.hmd-mt-1\/10-xs{margin-top:1px}.hmd-mr-1\/10-xs{margin-right:1px}.hmd-mb-1\/10-xs{margin-bottom:1px}.hmd-ml-1\/10-xs{margin-left:1px}.hmd-nt-1\/10-xs{margin-top:-1px}.hmd-nr-1\/10-xs{margin-right:-1px}.hmd-nb-1\/10-xs{margin-bottom:-1px}.hmd-nl-1\/10-xs{margin-left:-1px}.hmd-ma-1\/5-xs{margin:2px}.hmd-mv-1\/5-xs{margin-bottom:2px;margin-top:2px}.hmd-mh-1\/5-xs{margin-left:2px;margin-right:2px}.hmd-mt-1\/5-xs{margin-top:2px}.hmd-mr-1\/5-xs{margin-right:2px}.hmd-mb-1\/5-xs{margin-bottom:2px}.hmd-ml-1\/5-xs{margin-left:2px}.hmd-nt-1\/5-xs{margin-top:-2px}.hmd-nr-1\/5-xs{margin-right:-2px}.hmd-nb-1\/5-xs{margin-bottom:-2px}.hmd-nl-1\/5-xs{margin-left:-2px}.hmd-ma-1\/4-xs{margin:.25rem}.hmd-mv-1\/4-xs{margin-bottom:.25rem;margin-top:.25rem}.hmd-mh-1\/4-xs{margin-left:.25rem;margin-right:.25rem}.hmd-mt-1\/4-xs{margin-top:.25rem}.hmd-mr-1\/4-xs{margin-right:.25rem}.hmd-mb-1\/4-xs{margin-bottom:.25rem}.hmd-ml-1\/4-xs{margin-left:.25rem}.hmd-nt-1\/4-xs{margin-top:-.25rem}.hmd-nr-1\/4-xs{margin-right:-.25rem}.hmd-nb-1\/4-xs{margin-bottom:-.25rem}.hmd-nl-1\/4-xs{margin-left:-.25rem}.hmd-ma-3\/4-xs{margin:.75rem}.hmd-mv-3\/4-xs{margin-bottom:.75rem;margin-top:.75rem}.hmd-mh-3\/4-xs{margin-left:.75rem;margin-right:.75rem}.hmd-mt-3\/4-xs{margin-top:.75rem}.hmd-mr-3\/4-xs{margin-right:.75rem}.hmd-mb-3\/4-xs{margin-bottom:.75rem}.hmd-ml-3\/4-xs{margin-left:.75rem}.hmd-nt-3\/4-xs{margin-top:-.75rem}.hmd-nr-3\/4-xs{margin-right:-.75rem}.hmd-nb-3\/4-xs{margin-bottom:-.75rem}.hmd-nl-3\/4-xs{margin-left:-.75rem}.hmd-ma-1\/8-xs{margin:.125rem}.hmd-mv-1\/8-xs{margin-bottom:.125rem;margin-top:.125rem}.hmd-mh-1\/8-xs{margin-left:.125rem;margin-right:.125rem}.hmd-mt-1\/8-xs{margin-top:.125rem}.hmd-mr-1\/8-xs{margin-right:.125rem}.hmd-mb-1\/8-xs{margin-bottom:.125rem}.hmd-ml-1\/8-xs{margin-left:.125rem}.hmd-nt-1\/8-xs{margin-top:-.125rem}.hmd-nr-1\/8-xs{margin-right:-.125rem}.hmd-nb-1\/8-xs{margin-bottom:-.125rem}.hmd-nl-1\/8-xs{margin-left:-.125rem}.hmd-ma-1\/2-xs{margin:5px}.hmd-mv-1\/2-xs{margin-bottom:5px;margin-top:5px}.hmd-mh-1\/2-xs{margin-left:5px;margin-right:5px}.hmd-mt-1\/2-xs{margin-top:5px}.hmd-mr-1\/2-xs{margin-right:5px}.hmd-mb-1\/2-xs{margin-bottom:5px}.hmd-ml-1\/2-xs{margin-left:5px}.hmd-nt-1\/2-xs{margin-top:-5px}.hmd-nr-1\/2-xs{margin-right:-5px}.hmd-nb-1\/2-xs{margin-bottom:-5px}.hmd-nl-1\/2-xs{margin-left:-5px}.hmd-ma-1-xs{margin:10px}.hmd-mv-1-xs{margin-bottom:10px;margin-top:10px}.hmd-mh-1-xs{margin-left:10px;margin-right:10px}.hmd-mt-1-xs{margin-top:10px}.hmd-mr-1-xs{margin-right:10px}.hmd-mb-1-xs{margin-bottom:10px}.hmd-ml-1-xs{margin-left:10px}.hmd-nt-1-xs{margin-top:-10px}.hmd-nr-1-xs{margin-right:-10px}.hmd-nb-1-xs{margin-bottom:-10px}.hmd-nl-1-xs{margin-left:-10px}.hmd-ma-3\/2-xs{margin:15px}.hmd-mv-3\/2-xs{margin-bottom:15px;margin-top:15px}.hmd-mh-3\/2-xs{margin-left:15px;margin-right:15px}.hmd-mt-3\/2-xs{margin-top:15px}.hmd-mr-3\/2-xs{margin-right:15px}.hmd-mb-3\/2-xs{margin-bottom:15px}.hmd-ml-3\/2-xs{margin-left:15px}.hmd-nt-3\/2-xs{margin-top:-15px}.hmd-nr-3\/2-xs{margin-right:-15px}.hmd-nb-3\/2-xs{margin-bottom:-15px}.hmd-nl-3\/2-xs{margin-left:-15px}.hmd-ma-2-xs{margin:20px}.hmd-mv-2-xs{margin-bottom:20px;margin-top:20px}.hmd-mh-2-xs{margin-left:20px;margin-right:20px}.hmd-mt-2-xs{margin-top:20px}.hmd-mr-2-xs{margin-right:20px}.hmd-mb-2-xs{margin-bottom:20px}.hmd-ml-2-xs{margin-left:20px}.hmd-nt-2-xs{margin-top:-20px}.hmd-nr-2-xs{margin-right:-20px}.hmd-nb-2-xs{margin-bottom:-20px}.hmd-nl-2-xs{margin-left:-20px}.hmd-ma-25-xs{margin:25px}.hmd-mv-25-xs{margin-bottom:25px;margin-top:25px}.hmd-mh-25-xs{margin-left:25px;margin-right:25px}.hmd-mt-25-xs{margin-top:25px}.hmd-mr-25-xs{margin-right:25px}.hmd-mb-25-xs{margin-bottom:25px}.hmd-ml-25-xs{margin-left:25px}.hmd-nt-25-xs{margin-top:-25px}.hmd-nr-25-xs{margin-right:-25px}.hmd-nb-25-xs{margin-bottom:-25px}.hmd-nl-25-xs{margin-left:-25px}.hmd-ma-3-xs{margin:30px}.hmd-mv-3-xs{margin-bottom:30px;margin-top:30px}.hmd-mh-3-xs{margin-left:30px;margin-right:30px}.hmd-mt-3-xs{margin-top:30px}.hmd-mr-3-xs{margin-right:30px}.hmd-mb-3-xs{margin-bottom:30px}.hmd-ml-3-xs{margin-left:30px}.hmd-nt-3-xs{margin-top:-30px}.hmd-nr-3-xs{margin-right:-30px}.hmd-nb-3-xs{margin-bottom:-30px}.hmd-nl-3-xs{margin-left:-30px}.hmd-ma-35-xs{margin:35px}.hmd-mv-35-xs{margin-bottom:35px;margin-top:35px}.hmd-mh-35-xs{margin-left:35px;margin-right:35px}.hmd-mt-35-xs{margin-top:35px}.hmd-mr-35-xs{margin-right:35px}.hmd-mb-35-xs{margin-bottom:35px}.hmd-ml-35-xs{margin-left:35px}.hmd-nt-35-xs{margin-top:-35px}.hmd-nr-35-xs{margin-right:-35px}.hmd-nb-35-xs{margin-bottom:-35px}.hmd-nl-35-xs{margin-left:-35px}.hmd-ma-4-xs{margin:40px}.hmd-mv-4-xs{margin-bottom:40px;margin-top:40px}.hmd-mh-4-xs{margin-left:40px;margin-right:40px}.hmd-mt-4-xs{margin-top:40px}.hmd-mr-4-xs{margin-right:40px}.hmd-mb-4-xs{margin-bottom:40px}.hmd-ml-4-xs{margin-left:40px}.hmd-nt-4-xs{margin-top:-40px}.hmd-nr-4-xs{margin-right:-40px}.hmd-nb-4-xs{margin-bottom:-40px}.hmd-nl-4-xs{margin-left:-40px}.hmd-ma-5-xs{margin:50px}.hmd-mv-5-xs{margin-bottom:50px;margin-top:50px}.hmd-mh-5-xs{margin-left:50px;margin-right:50px}.hmd-mt-5-xs{margin-top:50px}.hmd-mr-5-xs{margin-right:50px}.hmd-mb-5-xs{margin-bottom:50px}.hmd-ml-5-xs{margin-left:50px}.hmd-nt-5-xs{margin-top:-50px}.hmd-nr-5-xs{margin-right:-50px}.hmd-nb-5-xs{margin-bottom:-50px}.hmd-nl-5-xs{margin-left:-50px}.hmd-ma-55-xs{margin:55px}.hmd-mv-55-xs{margin-bottom:55px;margin-top:55px}.hmd-mh-55-xs{margin-left:55px;margin-right:55px}.hmd-mt-55-xs{margin-top:55px}.hmd-mr-55-xs{margin-right:55px}.hmd-mb-55-xs{margin-bottom:55px}.hmd-ml-55-xs{margin-left:55px}.hmd-nt-55-xs{margin-top:-55px}.hmd-nr-55-xs{margin-right:-55px}.hmd-nb-55-xs{margin-bottom:-55px}.hmd-nl-55-xs{margin-left:-55px}.hmd-ma-6-xs{margin:60px}.hmd-mv-6-xs{margin-bottom:60px;margin-top:60px}.hmd-mh-6-xs{margin-left:60px;margin-right:60px}.hmd-mt-6-xs{margin-top:60px}.hmd-mr-6-xs{margin-right:60px}.hmd-mb-6-xs{margin-bottom:60px}.hmd-ml-6-xs{margin-left:60px}.hmd-nt-6-xs{margin-top:-60px}.hmd-nr-6-xs{margin-right:-60px}.hmd-nb-6-xs{margin-bottom:-60px}.hmd-nl-6-xs{margin-left:-60px}.hmd-ma-7-xs{margin:70px}.hmd-mv-7-xs{margin-bottom:70px;margin-top:70px}.hmd-mh-7-xs{margin-left:70px;margin-right:70px}.hmd-mt-7-xs{margin-top:70px}.hmd-mr-7-xs{margin-right:70px}.hmd-mb-7-xs{margin-bottom:70px}.hmd-ml-7-xs{margin-left:70px}.hmd-nt-7-xs{margin-top:-70px}.hmd-nr-7-xs{margin-right:-70px}.hmd-nb-7-xs{margin-bottom:-70px}.hmd-nl-7-xs{margin-left:-70px}.hmd-ma-8-xs{margin:80px}.hmd-mv-8-xs{margin-bottom:80px;margin-top:80px}.hmd-mh-8-xs{margin-left:80px;margin-right:80px}.hmd-mt-8-xs{margin-top:80px}.hmd-mr-8-xs{margin-right:80px}.hmd-mb-8-xs{margin-bottom:80px}.hmd-ml-8-xs{margin-left:80px}.hmd-nt-8-xs{margin-top:-80px}.hmd-nr-8-xs{margin-right:-80px}.hmd-nb-8-xs{margin-bottom:-80px}.hmd-nl-8-xs{margin-left:-80px}.hmd-ma-10-xs{margin:100px}.hmd-mv-10-xs{margin-bottom:100px;margin-top:100px}.hmd-mh-10-xs{margin-left:100px;margin-right:100px}.hmd-mt-10-xs{margin-top:100px}.hmd-mr-10-xs{margin-right:100px}.hmd-mb-10-xs{margin-bottom:100px}.hmd-ml-10-xs{margin-left:100px}.hmd-nt-10-xs{margin-top:-100px}.hmd-nr-10-xs{margin-right:-100px}.hmd-nb-10-xs{margin-bottom:-100px}.hmd-nl-10-xs{margin-left:-100px}.hmd-ma-12-xs{margin:120px}.hmd-mv-12-xs{margin-bottom:120px;margin-top:120px}.hmd-mh-12-xs{margin-left:120px;margin-right:120px}.hmd-mt-12-xs{margin-top:120px}.hmd-mr-12-xs{margin-right:120px}.hmd-mb-12-xs{margin-bottom:120px}.hmd-ml-12-xs{margin-left:120px}.hmd-nt-12-xs{margin-top:-120px}.hmd-nr-12-xs{margin-right:-120px}.hmd-nb-12-xs{margin-bottom:-120px}.hmd-nl-12-xs{margin-left:-120px}.hmd-ma-14-xs{margin:140px}.hmd-mv-14-xs{margin-bottom:140px;margin-top:140px}.hmd-mh-14-xs{margin-left:140px;margin-right:140px}.hmd-mt-14-xs{margin-top:140px}.hmd-mr-14-xs{margin-right:140px}.hmd-mb-14-xs{margin-bottom:140px}.hmd-ml-14-xs{margin-left:140px}.hmd-nt-14-xs{margin-top:-140px}.hmd-nr-14-xs{margin-right:-140px}.hmd-nb-14-xs{margin-bottom:-140px}.hmd-nl-14-xs{margin-left:-140px}.hmd-ma-16-xs{margin:160px}.hmd-mv-16-xs{margin-bottom:160px;margin-top:160px}.hmd-mh-16-xs{margin-left:160px;margin-right:160px}.hmd-mt-16-xs{margin-top:160px}.hmd-mr-16-xs{margin-right:160px}.hmd-mb-16-xs{margin-bottom:160px}.hmd-ml-16-xs{margin-left:160px}.hmd-nt-16-xs{margin-top:-160px}.hmd-nr-16-xs{margin-right:-160px}.hmd-nb-16-xs{margin-bottom:-160px}.hmd-nl-16-xs{margin-left:-160px}.hmd-ma-auto-xs{margin:auto}.hmd-mv-auto-xs{margin-bottom:auto;margin-top:auto}.hmd-mh-auto-xs{margin-left:auto;margin-right:auto}.hmd-mt-auto-xs{margin-top:auto}.hmd-mr-auto-xs{margin-right:auto}.hmd-mb-auto-xs{margin-bottom:auto}.hmd-ml-auto-xs{margin-left:auto}.hmd-nt-auto-xs{margin-top:-auto}.hmd-nr-auto-xs{margin-right:-auto}.hmd-nb-auto-xs{margin-bottom:-auto}.hmd-nl-auto-xs{margin-left:-auto}.hmd-mh-auto--xs{margin:0 auto}.hmd-dn-xs{display:none}.hmd-di-xs{display:inline}.hmd-db-xs{display:block}.hmd-dib-xs{display:inline-block}.hmd-dit-xs{display:inline-table}.hmd-dt-xs{display:table}.hmd-dtc-xs{display:table-cell}.hmd-dt-row-xs{display:table-row}.hmd-dt-row-group-xs{display:table-row-group}.hmd-dt-column-xs{display:table-column}.hmd-dt-column-group-xs{display:table-column-group}.hmd-dns-xs{display:unset}.hmd-dni-xs{display:none!important}.hmd-vv-xs{visibility:visible}.hmd-vh-xs{visibility:hidden}.hmd-flex-xs{display:flex}.inline-flex-xs{display:inline-flex}.hmd-flex-auto-xs{flex:1 1 auto;min-height:0;min-width:0}.hmd-flex-one-xs{flex:1}.hmd-flex-two-xs{flex:2}.hmd-flex-none-xs{flex:none}.hmd-flex-column-xs{flex-direction:column}.hmd-flex-row-xs{flex-direction:row}.hmd-flex-wrap-xs{flex-wrap:wrap}.hmd-flex-nowrap-xs{flex-wrap:nowrap}.hmd-flex-wrap-reverse-xs{flex-wrap:wrap-reverse}.hmd-flex-column-reverse-xs{flex-direction:column-reverse}.hmd-flex-row-reverse-xs{flex-direction:row-reverse}.hmd-items-start-xs{align-items:flex-start}.hmd-items-end-xs{align-items:flex-end}.hmd-items-center-xs{align-items:center}.hmd-items-baseline-xs{align-items:baseline}.hmd-items-stretch-xs{align-items:stretch}.hmd-self-start-xs{align-self:flex-start}.hmd-self-end-xs{align-self:flex-end}.hmd-self-center-xs{align-self:center}.hmd-self-baseline-xs{align-self:baseline}.hmd-self-stretch-xs{align-self:stretch}.hmd-justify-start-xs{justify-content:flex-start}.hmd-justify-end-xs{justify-content:flex-end}.hmd-justify-center-xs{justify-content:center}.hmd-justify-between-xs{justify-content:space-between}.hmd-justify-around-xs{justify-content:space-around}.hmd-content-start-xs{align-content:flex-start}.hmd-content-end-xs{align-content:flex-end}.hmd-content-center-xs{align-content:center}.hmd-content-between-xs{align-content:space-between}.hmd-content-around-xs{align-content:space-around}.hmd-content-stretch-xs{align-content:stretch}.hmd-order-0-xs{order:0}.hmd-order-1-xs{order:1}.hmd-order-2-xs{order:2}.hmd-order-3-xs{order:3}.hmd-order-4-xs{order:4}.hmd-order-5-xs{order:5}.hmd-order-6-xs{order:6}.hmd-order-7-xs{order:7}.hmd-order-8-xs{order:8}.hmd-order-last-xs{order:99999}.hmd-flex-grow-0-xs{flex-grow:0}.hmd-flex-grow-1-xs{flex-grow:1}.hmd-flex-shrink-0-xs{flex-shrink:0}.hmd-flex-shrink-1-xs{flex-shrink:1}.toasts-container,.toasts-container-top{bottom:20px;pointer-events:none;right:0;width:100%}.toasts-container-top{bottom:auto;top:20px}.ui-comment-app{height:1px}.ui-infobar .btn.ui-edit{padding:7px 0;width:32px}.footer .footer__published-by span.brand,.footer .footer__published-by span:first-of-type{display:none}}@media (min-width:768px){.hmd-pa-0-sm{padding:0}.hmd-pv-0-sm{padding-bottom:0;padding-top:0}.hmd-ph-0-sm{padding-left:0;padding-right:0}.hmd-pt-0-sm{padding-top:0}.hmd-pr-0-sm{padding-right:0}.hmd-pb-0-sm{padding-bottom:0}.hmd-pl-0-sm{padding-left:0}.hmd-pa-1\/10-sm{padding:1px}.hmd-pv-1\/10-sm{padding-bottom:1px;padding-top:1px}.hmd-ph-1\/10-sm{padding-left:1px;padding-right:1px}.hmd-pt-1\/10-sm{padding-top:1px}.hmd-pr-1\/10-sm{padding-right:1px}.hmd-pb-1\/10-sm{padding-bottom:1px}.hmd-pl-1\/10-sm{padding-left:1px}.hmd-pa-1\/5-sm{padding:2px}.hmd-pv-1\/5-sm{padding-bottom:2px;padding-top:2px}.hmd-ph-1\/5-sm{padding-left:2px;padding-right:2px}.hmd-pt-1\/5-sm{padding-top:2px}.hmd-pr-1\/5-sm{padding-right:2px}.hmd-pb-1\/5-sm{padding-bottom:2px}.hmd-pl-1\/5-sm{padding-left:2px}.hmd-pa-1\/4-sm{padding:.25rem}.hmd-pv-1\/4-sm{padding-bottom:.25rem;padding-top:.25rem}.hmd-ph-1\/4-sm{padding-left:.25rem;padding-right:.25rem}.hmd-pt-1\/4-sm{padding-top:.25rem}.hmd-pr-1\/4-sm{padding-right:.25rem}.hmd-pb-1\/4-sm{padding-bottom:.25rem}.hmd-pl-1\/4-sm{padding-left:.25rem}.hmd-pa-3\/4-sm{padding:.75rem}.hmd-pv-3\/4-sm{padding-bottom:.75rem;padding-top:.75rem}.hmd-ph-3\/4-sm{padding-left:.75rem;padding-right:.75rem}.hmd-pt-3\/4-sm{padding-top:.75rem}.hmd-pr-3\/4-sm{padding-right:.75rem}.hmd-pb-3\/4-sm{padding-bottom:.75rem}.hmd-pl-3\/4-sm{padding-left:.75rem}.hmd-pa-1\/8-sm{padding:.125rem}.hmd-pv-1\/8-sm{padding-bottom:.125rem;padding-top:.125rem}.hmd-ph-1\/8-sm{padding-left:.125rem;padding-right:.125rem}.hmd-pt-1\/8-sm{padding-top:.125rem}.hmd-pr-1\/8-sm{padding-right:.125rem}.hmd-pb-1\/8-sm{padding-bottom:.125rem}.hmd-pl-1\/8-sm{padding-left:.125rem}.hmd-pa-1\/2-sm{padding:5px}.hmd-pv-1\/2-sm{padding-bottom:5px;padding-top:5px}.hmd-ph-1\/2-sm{padding-left:5px;padding-right:5px}.hmd-pt-1\/2-sm{padding-top:5px}.hmd-pr-1\/2-sm{padding-right:5px}.hmd-pb-1\/2-sm{padding-bottom:5px}.hmd-pl-1\/2-sm{padding-left:5px}.hmd-pa-1-sm{padding:10px}.hmd-pv-1-sm{padding-bottom:10px;padding-top:10px}.hmd-ph-1-sm{padding-left:10px;padding-right:10px}.hmd-pt-1-sm{padding-top:10px}.hmd-pr-1-sm{padding-right:10px}.hmd-pb-1-sm{padding-bottom:10px}.hmd-pl-1-sm{padding-left:10px}.hmd-pa-3\/2-sm{padding:15px}.hmd-pv-3\/2-sm{padding-bottom:15px;padding-top:15px}.hmd-ph-3\/2-sm{padding-left:15px;padding-right:15px}.hmd-pt-3\/2-sm{padding-top:15px}.hmd-pr-3\/2-sm{padding-right:15px}.hmd-pb-3\/2-sm{padding-bottom:15px}.hmd-pl-3\/2-sm{padding-left:15px}.hmd-pa-2-sm{padding:20px}.hmd-pv-2-sm{padding-bottom:20px;padding-top:20px}.hmd-ph-2-sm{padding-left:20px;padding-right:20px}.hmd-pt-2-sm{padding-top:20px}.hmd-pr-2-sm{padding-right:20px}.hmd-pb-2-sm{padding-bottom:20px}.hmd-pl-2-sm{padding-left:20px}.hmd-pa-25-sm{padding:25px}.hmd-pv-25-sm{padding-bottom:25px;padding-top:25px}.hmd-ph-25-sm{padding-left:25px;padding-right:25px}.hmd-pt-25-sm{padding-top:25px}.hmd-pr-25-sm{padding-right:25px}.hmd-pb-25-sm{padding-bottom:25px}.hmd-pl-25-sm{padding-left:25px}.hmd-pa-3-sm{padding:30px}.hmd-pv-3-sm{padding-bottom:30px;padding-top:30px}.hmd-ph-3-sm{padding-left:30px;padding-right:30px}.hmd-pt-3-sm{padding-top:30px}.hmd-pr-3-sm{padding-right:30px}.hmd-pb-3-sm{padding-bottom:30px}.hmd-pl-3-sm{padding-left:30px}.hmd-pa-35-sm{padding:35px}.hmd-pv-35-sm{padding-bottom:35px;padding-top:35px}.hmd-ph-35-sm{padding-left:35px;padding-right:35px}.hmd-pt-35-sm{padding-top:35px}.hmd-pr-35-sm{padding-right:35px}.hmd-pb-35-sm{padding-bottom:35px}.hmd-pl-35-sm{padding-left:35px}.hmd-pa-4-sm{padding:40px}.hmd-pv-4-sm{padding-bottom:40px;padding-top:40px}.hmd-ph-4-sm{padding-left:40px;padding-right:40px}.hmd-pt-4-sm{padding-top:40px}.hmd-pr-4-sm{padding-right:40px}.hmd-pb-4-sm{padding-bottom:40px}.hmd-pl-4-sm{padding-left:40px}.hmd-pa-5-sm{padding:50px}.hmd-pv-5-sm{padding-bottom:50px;padding-top:50px}.hmd-ph-5-sm{padding-left:50px;padding-right:50px}.hmd-pt-5-sm{padding-top:50px}.hmd-pr-5-sm{padding-right:50px}.hmd-pb-5-sm{padding-bottom:50px}.hmd-pl-5-sm{padding-left:50px}.hmd-pa-55-sm{padding:55px}.hmd-pv-55-sm{padding-bottom:55px;padding-top:55px}.hmd-ph-55-sm{padding-left:55px;padding-right:55px}.hmd-pt-55-sm{padding-top:55px}.hmd-pr-55-sm{padding-right:55px}.hmd-pb-55-sm{padding-bottom:55px}.hmd-pl-55-sm{padding-left:55px}.hmd-pa-6-sm{padding:60px}.hmd-pv-6-sm{padding-bottom:60px;padding-top:60px}.hmd-ph-6-sm{padding-left:60px;padding-right:60px}.hmd-pt-6-sm{padding-top:60px}.hmd-pr-6-sm{padding-right:60px}.hmd-pb-6-sm{padding-bottom:60px}.hmd-pl-6-sm{padding-left:60px}.hmd-pa-7-sm{padding:70px}.hmd-pv-7-sm{padding-bottom:70px;padding-top:70px}.hmd-ph-7-sm{padding-left:70px;padding-right:70px}.hmd-pt-7-sm{padding-top:70px}.hmd-pr-7-sm{padding-right:70px}.hmd-pb-7-sm{padding-bottom:70px}.hmd-pl-7-sm{padding-left:70px}.hmd-pa-8-sm{padding:80px}.hmd-pv-8-sm{padding-bottom:80px;padding-top:80px}.hmd-ph-8-sm{padding-left:80px;padding-right:80px}.hmd-pt-8-sm{padding-top:80px}.hmd-pr-8-sm{padding-right:80px}.hmd-pb-8-sm{padding-bottom:80px}.hmd-pl-8-sm{padding-left:80px}.hmd-pa-10-sm{padding:100px}.hmd-pv-10-sm{padding-bottom:100px;padding-top:100px}.hmd-ph-10-sm{padding-left:100px;padding-right:100px}.hmd-pt-10-sm{padding-top:100px}.hmd-pr-10-sm{padding-right:100px}.hmd-pb-10-sm{padding-bottom:100px}.hmd-pl-10-sm{padding-left:100px}.hmd-pa-12-sm{padding:120px}.hmd-pv-12-sm{padding-bottom:120px;padding-top:120px}.hmd-ph-12-sm{padding-left:120px;padding-right:120px}.hmd-pt-12-sm{padding-top:120px}.hmd-pr-12-sm{padding-right:120px}.hmd-pb-12-sm{padding-bottom:120px}.hmd-pl-12-sm{padding-left:120px}.hmd-pa-14-sm{padding:140px}.hmd-pv-14-sm{padding-bottom:140px;padding-top:140px}.hmd-ph-14-sm{padding-left:140px;padding-right:140px}.hmd-pt-14-sm{padding-top:140px}.hmd-pr-14-sm{padding-right:140px}.hmd-pb-14-sm{padding-bottom:140px}.hmd-pl-14-sm{padding-left:140px}.hmd-pa-16-sm{padding:160px}.hmd-pv-16-sm{padding-bottom:160px;padding-top:160px}.hmd-ph-16-sm{padding-left:160px;padding-right:160px}.hmd-pt-16-sm{padding-top:160px}.hmd-pr-16-sm{padding-right:160px}.hmd-pb-16-sm{padding-bottom:160px}.hmd-pl-16-sm{padding-left:160px}.hmd-pa-auto-sm{padding:auto}.hmd-pv-auto-sm{padding-bottom:auto;padding-top:auto}.hmd-ph-auto-sm{padding-left:auto;padding-right:auto}.hmd-pt-auto-sm{padding-top:auto}.hmd-pr-auto-sm{padding-right:auto}.hmd-pb-auto-sm{padding-bottom:auto}.hmd-pl-auto-sm{padding-left:auto}.hmd-ma-0-sm{margin:0}.hmd-mv-0-sm{margin-bottom:0;margin-top:0}.hmd-mh-0-sm{margin-left:0;margin-right:0}.hmd-mt-0-sm{margin-top:0}.hmd-mr-0-sm{margin-right:0}.hmd-mb-0-sm{margin-bottom:0}.hmd-ml-0-sm{margin-left:0}.hmd-nt-0-sm{margin-top:0}.hmd-nr-0-sm{margin-right:0}.hmd-nb-0-sm{margin-bottom:0}.hmd-nl-0-sm{margin-left:0}.hmd-ma-1\/10-sm{margin:1px}.hmd-mv-1\/10-sm{margin-bottom:1px;margin-top:1px}.hmd-mh-1\/10-sm{margin-left:1px;margin-right:1px}.hmd-mt-1\/10-sm{margin-top:1px}.hmd-mr-1\/10-sm{margin-right:1px}.hmd-mb-1\/10-sm{margin-bottom:1px}.hmd-ml-1\/10-sm{margin-left:1px}.hmd-nt-1\/10-sm{margin-top:-1px}.hmd-nr-1\/10-sm{margin-right:-1px}.hmd-nb-1\/10-sm{margin-bottom:-1px}.hmd-nl-1\/10-sm{margin-left:-1px}.hmd-ma-1\/5-sm{margin:2px}.hmd-mv-1\/5-sm{margin-bottom:2px;margin-top:2px}.hmd-mh-1\/5-sm{margin-left:2px;margin-right:2px}.hmd-mt-1\/5-sm{margin-top:2px}.hmd-mr-1\/5-sm{margin-right:2px}.hmd-mb-1\/5-sm{margin-bottom:2px}.hmd-ml-1\/5-sm{margin-left:2px}.hmd-nt-1\/5-sm{margin-top:-2px}.hmd-nr-1\/5-sm{margin-right:-2px}.hmd-nb-1\/5-sm{margin-bottom:-2px}.hmd-nl-1\/5-sm{margin-left:-2px}.hmd-ma-1\/4-sm{margin:.25rem}.hmd-mv-1\/4-sm{margin-bottom:.25rem;margin-top:.25rem}.hmd-mh-1\/4-sm{margin-left:.25rem;margin-right:.25rem}.hmd-mt-1\/4-sm{margin-top:.25rem}.hmd-mr-1\/4-sm{margin-right:.25rem}.hmd-mb-1\/4-sm{margin-bottom:.25rem}.hmd-ml-1\/4-sm{margin-left:.25rem}.hmd-nt-1\/4-sm{margin-top:-.25rem}.hmd-nr-1\/4-sm{margin-right:-.25rem}.hmd-nb-1\/4-sm{margin-bottom:-.25rem}.hmd-nl-1\/4-sm{margin-left:-.25rem}.hmd-ma-3\/4-sm{margin:.75rem}.hmd-mv-3\/4-sm{margin-bottom:.75rem;margin-top:.75rem}.hmd-mh-3\/4-sm{margin-left:.75rem;margin-right:.75rem}.hmd-mt-3\/4-sm{margin-top:.75rem}.hmd-mr-3\/4-sm{margin-right:.75rem}.hmd-mb-3\/4-sm{margin-bottom:.75rem}.hmd-ml-3\/4-sm{margin-left:.75rem}.hmd-nt-3\/4-sm{margin-top:-.75rem}.hmd-nr-3\/4-sm{margin-right:-.75rem}.hmd-nb-3\/4-sm{margin-bottom:-.75rem}.hmd-nl-3\/4-sm{margin-left:-.75rem}.hmd-ma-1\/8-sm{margin:.125rem}.hmd-mv-1\/8-sm{margin-bottom:.125rem;margin-top:.125rem}.hmd-mh-1\/8-sm{margin-left:.125rem;margin-right:.125rem}.hmd-mt-1\/8-sm{margin-top:.125rem}.hmd-mr-1\/8-sm{margin-right:.125rem}.hmd-mb-1\/8-sm{margin-bottom:.125rem}.hmd-ml-1\/8-sm{margin-left:.125rem}.hmd-nt-1\/8-sm{margin-top:-.125rem}.hmd-nr-1\/8-sm{margin-right:-.125rem}.hmd-nb-1\/8-sm{margin-bottom:-.125rem}.hmd-nl-1\/8-sm{margin-left:-.125rem}.hmd-ma-1\/2-sm{margin:5px}.hmd-mv-1\/2-sm{margin-bottom:5px;margin-top:5px}.hmd-mh-1\/2-sm{margin-left:5px;margin-right:5px}.hmd-mt-1\/2-sm{margin-top:5px}.hmd-mr-1\/2-sm{margin-right:5px}.hmd-mb-1\/2-sm{margin-bottom:5px}.hmd-ml-1\/2-sm{margin-left:5px}.hmd-nt-1\/2-sm{margin-top:-5px}.hmd-nr-1\/2-sm{margin-right:-5px}.hmd-nb-1\/2-sm{margin-bottom:-5px}.hmd-nl-1\/2-sm{margin-left:-5px}.hmd-ma-1-sm{margin:10px}.hmd-mv-1-sm{margin-bottom:10px;margin-top:10px}.hmd-mh-1-sm{margin-left:10px;margin-right:10px}.hmd-mt-1-sm{margin-top:10px}.hmd-mr-1-sm{margin-right:10px}.hmd-mb-1-sm{margin-bottom:10px}.hmd-ml-1-sm{margin-left:10px}.hmd-nt-1-sm{margin-top:-10px}.hmd-nr-1-sm{margin-right:-10px}.hmd-nb-1-sm{margin-bottom:-10px}.hmd-nl-1-sm{margin-left:-10px}.hmd-ma-3\/2-sm{margin:15px}.hmd-mv-3\/2-sm{margin-bottom:15px;margin-top:15px}.hmd-mh-3\/2-sm{margin-left:15px;margin-right:15px}.hmd-mt-3\/2-sm{margin-top:15px}.hmd-mr-3\/2-sm{margin-right:15px}.hmd-mb-3\/2-sm{margin-bottom:15px}.hmd-ml-3\/2-sm{margin-left:15px}.hmd-nt-3\/2-sm{margin-top:-15px}.hmd-nr-3\/2-sm{margin-right:-15px}.hmd-nb-3\/2-sm{margin-bottom:-15px}.hmd-nl-3\/2-sm{margin-left:-15px}.hmd-ma-2-sm{margin:20px}.hmd-mv-2-sm{margin-bottom:20px;margin-top:20px}.hmd-mh-2-sm{margin-left:20px;margin-right:20px}.hmd-mt-2-sm{margin-top:20px}.hmd-mr-2-sm{margin-right:20px}.hmd-mb-2-sm{margin-bottom:20px}.hmd-ml-2-sm{margin-left:20px}.hmd-nt-2-sm{margin-top:-20px}.hmd-nr-2-sm{margin-right:-20px}.hmd-nb-2-sm{margin-bottom:-20px}.hmd-nl-2-sm{margin-left:-20px}.hmd-ma-25-sm{margin:25px}.hmd-mv-25-sm{margin-bottom:25px;margin-top:25px}.hmd-mh-25-sm{margin-left:25px;margin-right:25px}.hmd-mt-25-sm{margin-top:25px}.hmd-mr-25-sm{margin-right:25px}.hmd-mb-25-sm{margin-bottom:25px}.hmd-ml-25-sm{margin-left:25px}.hmd-nt-25-sm{margin-top:-25px}.hmd-nr-25-sm{margin-right:-25px}.hmd-nb-25-sm{margin-bottom:-25px}.hmd-nl-25-sm{margin-left:-25px}.hmd-ma-3-sm{margin:30px}.hmd-mv-3-sm{margin-bottom:30px;margin-top:30px}.hmd-mh-3-sm{margin-left:30px;margin-right:30px}.hmd-mt-3-sm{margin-top:30px}.hmd-mr-3-sm{margin-right:30px}.hmd-mb-3-sm{margin-bottom:30px}.hmd-ml-3-sm{margin-left:30px}.hmd-nt-3-sm{margin-top:-30px}.hmd-nr-3-sm{margin-right:-30px}.hmd-nb-3-sm{margin-bottom:-30px}.hmd-nl-3-sm{margin-left:-30px}.hmd-ma-35-sm{margin:35px}.hmd-mv-35-sm{margin-bottom:35px;margin-top:35px}.hmd-mh-35-sm{margin-left:35px;margin-right:35px}.hmd-mt-35-sm{margin-top:35px}.hmd-mr-35-sm{margin-right:35px}.hmd-mb-35-sm{margin-bottom:35px}.hmd-ml-35-sm{margin-left:35px}.hmd-nt-35-sm{margin-top:-35px}.hmd-nr-35-sm{margin-right:-35px}.hmd-nb-35-sm{margin-bottom:-35px}.hmd-nl-35-sm{margin-left:-35px}.hmd-ma-4-sm{margin:40px}.hmd-mv-4-sm{margin-bottom:40px;margin-top:40px}.hmd-mh-4-sm{margin-left:40px;margin-right:40px}.hmd-mt-4-sm{margin-top:40px}.hmd-mr-4-sm{margin-right:40px}.hmd-mb-4-sm{margin-bottom:40px}.hmd-ml-4-sm{margin-left:40px}.hmd-nt-4-sm{margin-top:-40px}.hmd-nr-4-sm{margin-right:-40px}.hmd-nb-4-sm{margin-bottom:-40px}.hmd-nl-4-sm{margin-left:-40px}.hmd-ma-5-sm{margin:50px}.hmd-mv-5-sm{margin-bottom:50px;margin-top:50px}.hmd-mh-5-sm{margin-left:50px;margin-right:50px}.hmd-mt-5-sm{margin-top:50px}.hmd-mr-5-sm{margin-right:50px}.hmd-mb-5-sm{margin-bottom:50px}.hmd-ml-5-sm{margin-left:50px}.hmd-nt-5-sm{margin-top:-50px}.hmd-nr-5-sm{margin-right:-50px}.hmd-nb-5-sm{margin-bottom:-50px}.hmd-nl-5-sm{margin-left:-50px}.hmd-ma-55-sm{margin:55px}.hmd-mv-55-sm{margin-bottom:55px;margin-top:55px}.hmd-mh-55-sm{margin-left:55px;margin-right:55px}.hmd-mt-55-sm{margin-top:55px}.hmd-mr-55-sm{margin-right:55px}.hmd-mb-55-sm{margin-bottom:55px}.hmd-ml-55-sm{margin-left:55px}.hmd-nt-55-sm{margin-top:-55px}.hmd-nr-55-sm{margin-right:-55px}.hmd-nb-55-sm{margin-bottom:-55px}.hmd-nl-55-sm{margin-left:-55px}.hmd-ma-6-sm{margin:60px}.hmd-mv-6-sm{margin-bottom:60px;margin-top:60px}.hmd-mh-6-sm{margin-left:60px;margin-right:60px}.hmd-mt-6-sm{margin-top:60px}.hmd-mr-6-sm{margin-right:60px}.hmd-mb-6-sm{margin-bottom:60px}.hmd-ml-6-sm{margin-left:60px}.hmd-nt-6-sm{margin-top:-60px}.hmd-nr-6-sm{margin-right:-60px}.hmd-nb-6-sm{margin-bottom:-60px}.hmd-nl-6-sm{margin-left:-60px}.hmd-ma-7-sm{margin:70px}.hmd-mv-7-sm{margin-bottom:70px;margin-top:70px}.hmd-mh-7-sm{margin-left:70px;margin-right:70px}.hmd-mt-7-sm{margin-top:70px}.hmd-mr-7-sm{margin-right:70px}.hmd-mb-7-sm{margin-bottom:70px}.hmd-ml-7-sm{margin-left:70px}.hmd-nt-7-sm{margin-top:-70px}.hmd-nr-7-sm{margin-right:-70px}.hmd-nb-7-sm{margin-bottom:-70px}.hmd-nl-7-sm{margin-left:-70px}.hmd-ma-8-sm{margin:80px}.hmd-mv-8-sm{margin-bottom:80px;margin-top:80px}.hmd-mh-8-sm{margin-left:80px;margin-right:80px}.hmd-mt-8-sm{margin-top:80px}.hmd-mr-8-sm{margin-right:80px}.hmd-mb-8-sm{margin-bottom:80px}.hmd-ml-8-sm{margin-left:80px}.hmd-nt-8-sm{margin-top:-80px}.hmd-nr-8-sm{margin-right:-80px}.hmd-nb-8-sm{margin-bottom:-80px}.hmd-nl-8-sm{margin-left:-80px}.hmd-ma-10-sm{margin:100px}.hmd-mv-10-sm{margin-bottom:100px;margin-top:100px}.hmd-mh-10-sm{margin-left:100px;margin-right:100px}.hmd-mt-10-sm{margin-top:100px}.hmd-mr-10-sm{margin-right:100px}.hmd-mb-10-sm{margin-bottom:100px}.hmd-ml-10-sm{margin-left:100px}.hmd-nt-10-sm{margin-top:-100px}.hmd-nr-10-sm{margin-right:-100px}.hmd-nb-10-sm{margin-bottom:-100px}.hmd-nl-10-sm{margin-left:-100px}.hmd-ma-12-sm{margin:120px}.hmd-mv-12-sm{margin-bottom:120px;margin-top:120px}.hmd-mh-12-sm{margin-left:120px;margin-right:120px}.hmd-mt-12-sm{margin-top:120px}.hmd-mr-12-sm{margin-right:120px}.hmd-mb-12-sm{margin-bottom:120px}.hmd-ml-12-sm{margin-left:120px}.hmd-nt-12-sm{margin-top:-120px}.hmd-nr-12-sm{margin-right:-120px}.hmd-nb-12-sm{margin-bottom:-120px}.hmd-nl-12-sm{margin-left:-120px}.hmd-ma-14-sm{margin:140px}.hmd-mv-14-sm{margin-bottom:140px;margin-top:140px}.hmd-mh-14-sm{margin-left:140px;margin-right:140px}.hmd-mt-14-sm{margin-top:140px}.hmd-mr-14-sm{margin-right:140px}.hmd-mb-14-sm{margin-bottom:140px}.hmd-ml-14-sm{margin-left:140px}.hmd-nt-14-sm{margin-top:-140px}.hmd-nr-14-sm{margin-right:-140px}.hmd-nb-14-sm{margin-bottom:-140px}.hmd-nl-14-sm{margin-left:-140px}.hmd-ma-16-sm{margin:160px}.hmd-mv-16-sm{margin-bottom:160px;margin-top:160px}.hmd-mh-16-sm{margin-left:160px;margin-right:160px}.hmd-mt-16-sm{margin-top:160px}.hmd-mr-16-sm{margin-right:160px}.hmd-mb-16-sm{margin-bottom:160px}.hmd-ml-16-sm{margin-left:160px}.hmd-nt-16-sm{margin-top:-160px}.hmd-nr-16-sm{margin-right:-160px}.hmd-nb-16-sm{margin-bottom:-160px}.hmd-nl-16-sm{margin-left:-160px}.hmd-ma-auto-sm{margin:auto}.hmd-mv-auto-sm{margin-bottom:auto;margin-top:auto}.hmd-mh-auto-sm{margin-left:auto;margin-right:auto}.hmd-mt-auto-sm{margin-top:auto}.hmd-mr-auto-sm{margin-right:auto}.hmd-mb-auto-sm{margin-bottom:auto}.hmd-ml-auto-sm{margin-left:auto}.hmd-nt-auto-sm{margin-top:-auto}.hmd-nr-auto-sm{margin-right:-auto}.hmd-nb-auto-sm{margin-bottom:-auto}.hmd-nl-auto-sm{margin-left:-auto}.hmd-mh-auto--sm{margin:0 auto}.hmd-dn-sm{display:none}.hmd-di-sm{display:inline}.hmd-db-sm{display:block}.hmd-dib-sm{display:inline-block}.hmd-dit-sm{display:inline-table}.hmd-dt-sm{display:table}.hmd-dtc-sm{display:table-cell}.hmd-dt-row-sm{display:table-row}.hmd-dt-row-group-sm{display:table-row-group}.hmd-dt-column-sm{display:table-column}.hmd-dt-column-group-sm{display:table-column-group}.hmd-dns-sm{display:unset}.hmd-dni-sm{display:none!important}.hmd-vv-sm{visibility:visible}.hmd-vh-sm{visibility:hidden}.hmd-flex-sm{display:flex}.inline-flex-sm{display:inline-flex}.hmd-flex-auto-sm{flex:1 1 auto;min-height:0;min-width:0}.hmd-flex-one-sm{flex:1}.hmd-flex-two-sm{flex:2}.hmd-flex-none-sm{flex:none}.hmd-flex-column-sm{flex-direction:column}.hmd-flex-row-sm{flex-direction:row}.hmd-flex-wrap-sm{flex-wrap:wrap}.hmd-flex-nowrap-sm{flex-wrap:nowrap}.hmd-flex-wrap-reverse-sm{flex-wrap:wrap-reverse}.hmd-flex-column-reverse-sm{flex-direction:column-reverse}.hmd-flex-row-reverse-sm{flex-direction:row-reverse}.hmd-items-start-sm{align-items:flex-start}.hmd-items-end-sm{align-items:flex-end}.hmd-items-center-sm{align-items:center}.hmd-items-baseline-sm{align-items:baseline}.hmd-items-stretch-sm{align-items:stretch}.hmd-self-start-sm{align-self:flex-start}.hmd-self-end-sm{align-self:flex-end}.hmd-self-center-sm{align-self:center}.hmd-self-baseline-sm{align-self:baseline}.hmd-self-stretch-sm{align-self:stretch}.hmd-justify-start-sm{justify-content:flex-start}.hmd-justify-end-sm{justify-content:flex-end}.hmd-justify-center-sm{justify-content:center}.hmd-justify-between-sm{justify-content:space-between}.hmd-justify-around-sm{justify-content:space-around}.hmd-content-start-sm{align-content:flex-start}.hmd-content-end-sm{align-content:flex-end}.hmd-content-center-sm{align-content:center}.hmd-content-between-sm{align-content:space-between}.hmd-content-around-sm{align-content:space-around}.hmd-content-stretch-sm{align-content:stretch}.hmd-order-0-sm{order:0}.hmd-order-1-sm{order:1}.hmd-order-2-sm{order:2}.hmd-order-3-sm{order:3}.hmd-order-4-sm{order:4}.hmd-order-5-sm{order:5}.hmd-order-6-sm{order:6}.hmd-order-7-sm{order:7}.hmd-order-8-sm{order:8}.hmd-order-last-sm{order:99999}.hmd-flex-grow-0-sm{flex-grow:0}.hmd-flex-grow-1-sm{flex-grow:1}.hmd-flex-shrink-0-sm{flex-shrink:0}.hmd-flex-shrink-1-sm{flex-shrink:1}.hmd-text-left-sm{text-align:left}.hmd-text-right-sm{text-align:right}.hmd-text-center-sm{text-align:center}.hmd-text-bold-sm{font-weight:700}.hmd-text-underline-sm{text-decoration:underline}.toasts-container,.toasts-container-top{bottom:20px;right:20px;width:auto}.toasts-container-top{bottom:auto;top:20px}.footer .footer__published-by span.brand,.footer .footer__published-by span:first-of-type{display:unset}}@media (min-width:992px){.hmd-pa-0-md{padding:0}.hmd-pv-0-md{padding-bottom:0;padding-top:0}.hmd-ph-0-md{padding-left:0;padding-right:0}.hmd-pt-0-md{padding-top:0}.hmd-pr-0-md{padding-right:0}.hmd-pb-0-md{padding-bottom:0}.hmd-pl-0-md{padding-left:0}.hmd-pa-1\/10-md{padding:1px}.hmd-pv-1\/10-md{padding-bottom:1px;padding-top:1px}.hmd-ph-1\/10-md{padding-left:1px;padding-right:1px}.hmd-pt-1\/10-md{padding-top:1px}.hmd-pr-1\/10-md{padding-right:1px}.hmd-pb-1\/10-md{padding-bottom:1px}.hmd-pl-1\/10-md{padding-left:1px}.hmd-pa-1\/5-md{padding:2px}.hmd-pv-1\/5-md{padding-bottom:2px;padding-top:2px}.hmd-ph-1\/5-md{padding-left:2px;padding-right:2px}.hmd-pt-1\/5-md{padding-top:2px}.hmd-pr-1\/5-md{padding-right:2px}.hmd-pb-1\/5-md{padding-bottom:2px}.hmd-pl-1\/5-md{padding-left:2px}.hmd-pa-1\/4-md{padding:.25rem}.hmd-pv-1\/4-md{padding-bottom:.25rem;padding-top:.25rem}.hmd-ph-1\/4-md{padding-left:.25rem;padding-right:.25rem}.hmd-pt-1\/4-md{padding-top:.25rem}.hmd-pr-1\/4-md{padding-right:.25rem}.hmd-pb-1\/4-md{padding-bottom:.25rem}.hmd-pl-1\/4-md{padding-left:.25rem}.hmd-pa-3\/4-md{padding:.75rem}.hmd-pv-3\/4-md{padding-bottom:.75rem;padding-top:.75rem}.hmd-ph-3\/4-md{padding-left:.75rem;padding-right:.75rem}.hmd-pt-3\/4-md{padding-top:.75rem}.hmd-pr-3\/4-md{padding-right:.75rem}.hmd-pb-3\/4-md{padding-bottom:.75rem}.hmd-pl-3\/4-md{padding-left:.75rem}.hmd-pa-1\/8-md{padding:.125rem}.hmd-pv-1\/8-md{padding-bottom:.125rem;padding-top:.125rem}.hmd-ph-1\/8-md{padding-left:.125rem;padding-right:.125rem}.hmd-pt-1\/8-md{padding-top:.125rem}.hmd-pr-1\/8-md{padding-right:.125rem}.hmd-pb-1\/8-md{padding-bottom:.125rem}.hmd-pl-1\/8-md{padding-left:.125rem}.hmd-pa-1\/2-md{padding:5px}.hmd-pv-1\/2-md{padding-bottom:5px;padding-top:5px}.hmd-ph-1\/2-md{padding-left:5px;padding-right:5px}.hmd-pt-1\/2-md{padding-top:5px}.hmd-pr-1\/2-md{padding-right:5px}.hmd-pb-1\/2-md{padding-bottom:5px}.hmd-pl-1\/2-md{padding-left:5px}.hmd-pa-1-md{padding:10px}.hmd-pv-1-md{padding-bottom:10px;padding-top:10px}.hmd-ph-1-md{padding-left:10px;padding-right:10px}.hmd-pt-1-md{padding-top:10px}.hmd-pr-1-md{padding-right:10px}.hmd-pb-1-md{padding-bottom:10px}.hmd-pl-1-md{padding-left:10px}.hmd-pa-3\/2-md{padding:15px}.hmd-pv-3\/2-md{padding-bottom:15px;padding-top:15px}.hmd-ph-3\/2-md{padding-left:15px;padding-right:15px}.hmd-pt-3\/2-md{padding-top:15px}.hmd-pr-3\/2-md{padding-right:15px}.hmd-pb-3\/2-md{padding-bottom:15px}.hmd-pl-3\/2-md{padding-left:15px}.hmd-pa-2-md{padding:20px}.hmd-pv-2-md{padding-bottom:20px;padding-top:20px}.hmd-ph-2-md{padding-left:20px;padding-right:20px}.hmd-pt-2-md{padding-top:20px}.hmd-pr-2-md{padding-right:20px}.hmd-pb-2-md{padding-bottom:20px}.hmd-pl-2-md{padding-left:20px}.hmd-pa-25-md{padding:25px}.hmd-pv-25-md{padding-bottom:25px;padding-top:25px}.hmd-ph-25-md{padding-left:25px;padding-right:25px}.hmd-pt-25-md{padding-top:25px}.hmd-pr-25-md{padding-right:25px}.hmd-pb-25-md{padding-bottom:25px}.hmd-pl-25-md{padding-left:25px}.hmd-pa-3-md{padding:30px}.hmd-pv-3-md{padding-bottom:30px;padding-top:30px}.hmd-ph-3-md{padding-left:30px;padding-right:30px}.hmd-pt-3-md{padding-top:30px}.hmd-pr-3-md{padding-right:30px}.hmd-pb-3-md{padding-bottom:30px}.hmd-pl-3-md{padding-left:30px}.hmd-pa-35-md{padding:35px}.hmd-pv-35-md{padding-bottom:35px;padding-top:35px}.hmd-ph-35-md{padding-left:35px;padding-right:35px}.hmd-pt-35-md{padding-top:35px}.hmd-pr-35-md{padding-right:35px}.hmd-pb-35-md{padding-bottom:35px}.hmd-pl-35-md{padding-left:35px}.hmd-pa-4-md{padding:40px}.hmd-pv-4-md{padding-bottom:40px;padding-top:40px}.hmd-ph-4-md{padding-left:40px;padding-right:40px}.hmd-pt-4-md{padding-top:40px}.hmd-pr-4-md{padding-right:40px}.hmd-pb-4-md{padding-bottom:40px}.hmd-pl-4-md{padding-left:40px}.hmd-pa-5-md{padding:50px}.hmd-pv-5-md{padding-bottom:50px;padding-top:50px}.hmd-ph-5-md{padding-left:50px;padding-right:50px}.hmd-pt-5-md{padding-top:50px}.hmd-pr-5-md{padding-right:50px}.hmd-pb-5-md{padding-bottom:50px}.hmd-pl-5-md{padding-left:50px}.hmd-pa-55-md{padding:55px}.hmd-pv-55-md{padding-bottom:55px;padding-top:55px}.hmd-ph-55-md{padding-left:55px;padding-right:55px}.hmd-pt-55-md{padding-top:55px}.hmd-pr-55-md{padding-right:55px}.hmd-pb-55-md{padding-bottom:55px}.hmd-pl-55-md{padding-left:55px}.hmd-pa-6-md{padding:60px}.hmd-pv-6-md{padding-bottom:60px;padding-top:60px}.hmd-ph-6-md{padding-left:60px;padding-right:60px}.hmd-pt-6-md{padding-top:60px}.hmd-pr-6-md{padding-right:60px}.hmd-pb-6-md{padding-bottom:60px}.hmd-pl-6-md{padding-left:60px}.hmd-pa-7-md{padding:70px}.hmd-pv-7-md{padding-bottom:70px;padding-top:70px}.hmd-ph-7-md{padding-left:70px;padding-right:70px}.hmd-pt-7-md{padding-top:70px}.hmd-pr-7-md{padding-right:70px}.hmd-pb-7-md{padding-bottom:70px}.hmd-pl-7-md{padding-left:70px}.hmd-pa-8-md{padding:80px}.hmd-pv-8-md{padding-bottom:80px;padding-top:80px}.hmd-ph-8-md{padding-left:80px;padding-right:80px}.hmd-pt-8-md{padding-top:80px}.hmd-pr-8-md{padding-right:80px}.hmd-pb-8-md{padding-bottom:80px}.hmd-pl-8-md{padding-left:80px}.hmd-pa-10-md{padding:100px}.hmd-pv-10-md{padding-bottom:100px;padding-top:100px}.hmd-ph-10-md{padding-left:100px;padding-right:100px}.hmd-pt-10-md{padding-top:100px}.hmd-pr-10-md{padding-right:100px}.hmd-pb-10-md{padding-bottom:100px}.hmd-pl-10-md{padding-left:100px}.hmd-pa-12-md{padding:120px}.hmd-pv-12-md{padding-bottom:120px;padding-top:120px}.hmd-ph-12-md{padding-left:120px;padding-right:120px}.hmd-pt-12-md{padding-top:120px}.hmd-pr-12-md{padding-right:120px}.hmd-pb-12-md{padding-bottom:120px}.hmd-pl-12-md{padding-left:120px}.hmd-pa-14-md{padding:140px}.hmd-pv-14-md{padding-bottom:140px;padding-top:140px}.hmd-ph-14-md{padding-left:140px;padding-right:140px}.hmd-pt-14-md{padding-top:140px}.hmd-pr-14-md{padding-right:140px}.hmd-pb-14-md{padding-bottom:140px}.hmd-pl-14-md{padding-left:140px}.hmd-pa-16-md{padding:160px}.hmd-pv-16-md{padding-bottom:160px;padding-top:160px}.hmd-ph-16-md{padding-left:160px;padding-right:160px}.hmd-pt-16-md{padding-top:160px}.hmd-pr-16-md{padding-right:160px}.hmd-pb-16-md{padding-bottom:160px}.hmd-pl-16-md{padding-left:160px}.hmd-pa-auto-md{padding:auto}.hmd-pv-auto-md{padding-bottom:auto;padding-top:auto}.hmd-ph-auto-md{padding-left:auto;padding-right:auto}.hmd-pt-auto-md{padding-top:auto}.hmd-pr-auto-md{padding-right:auto}.hmd-pb-auto-md{padding-bottom:auto}.hmd-pl-auto-md{padding-left:auto}.hmd-ma-0-md{margin:0}.hmd-mv-0-md{margin-bottom:0;margin-top:0}.hmd-mh-0-md{margin-left:0;margin-right:0}.hmd-mt-0-md{margin-top:0}.hmd-mr-0-md{margin-right:0}.hmd-mb-0-md{margin-bottom:0}.hmd-ml-0-md{margin-left:0}.hmd-nt-0-md{margin-top:0}.hmd-nr-0-md{margin-right:0}.hmd-nb-0-md{margin-bottom:0}.hmd-nl-0-md{margin-left:0}.hmd-ma-1\/10-md{margin:1px}.hmd-mv-1\/10-md{margin-bottom:1px;margin-top:1px}.hmd-mh-1\/10-md{margin-left:1px;margin-right:1px}.hmd-mt-1\/10-md{margin-top:1px}.hmd-mr-1\/10-md{margin-right:1px}.hmd-mb-1\/10-md{margin-bottom:1px}.hmd-ml-1\/10-md{margin-left:1px}.hmd-nt-1\/10-md{margin-top:-1px}.hmd-nr-1\/10-md{margin-right:-1px}.hmd-nb-1\/10-md{margin-bottom:-1px}.hmd-nl-1\/10-md{margin-left:-1px}.hmd-ma-1\/5-md{margin:2px}.hmd-mv-1\/5-md{margin-bottom:2px;margin-top:2px}.hmd-mh-1\/5-md{margin-left:2px;margin-right:2px}.hmd-mt-1\/5-md{margin-top:2px}.hmd-mr-1\/5-md{margin-right:2px}.hmd-mb-1\/5-md{margin-bottom:2px}.hmd-ml-1\/5-md{margin-left:2px}.hmd-nt-1\/5-md{margin-top:-2px}.hmd-nr-1\/5-md{margin-right:-2px}.hmd-nb-1\/5-md{margin-bottom:-2px}.hmd-nl-1\/5-md{margin-left:-2px}.hmd-ma-1\/4-md{margin:.25rem}.hmd-mv-1\/4-md{margin-bottom:.25rem;margin-top:.25rem}.hmd-mh-1\/4-md{margin-left:.25rem;margin-right:.25rem}.hmd-mt-1\/4-md{margin-top:.25rem}.hmd-mr-1\/4-md{margin-right:.25rem}.hmd-mb-1\/4-md{margin-bottom:.25rem}.hmd-ml-1\/4-md{margin-left:.25rem}.hmd-nt-1\/4-md{margin-top:-.25rem}.hmd-nr-1\/4-md{margin-right:-.25rem}.hmd-nb-1\/4-md{margin-bottom:-.25rem}.hmd-nl-1\/4-md{margin-left:-.25rem}.hmd-ma-3\/4-md{margin:.75rem}.hmd-mv-3\/4-md{margin-bottom:.75rem;margin-top:.75rem}.hmd-mh-3\/4-md{margin-left:.75rem;margin-right:.75rem}.hmd-mt-3\/4-md{margin-top:.75rem}.hmd-mr-3\/4-md{margin-right:.75rem}.hmd-mb-3\/4-md{margin-bottom:.75rem}.hmd-ml-3\/4-md{margin-left:.75rem}.hmd-nt-3\/4-md{margin-top:-.75rem}.hmd-nr-3\/4-md{margin-right:-.75rem}.hmd-nb-3\/4-md{margin-bottom:-.75rem}.hmd-nl-3\/4-md{margin-left:-.75rem}.hmd-ma-1\/8-md{margin:.125rem}.hmd-mv-1\/8-md{margin-bottom:.125rem;margin-top:.125rem}.hmd-mh-1\/8-md{margin-left:.125rem;margin-right:.125rem}.hmd-mt-1\/8-md{margin-top:.125rem}.hmd-mr-1\/8-md{margin-right:.125rem}.hmd-mb-1\/8-md{margin-bottom:.125rem}.hmd-ml-1\/8-md{margin-left:.125rem}.hmd-nt-1\/8-md{margin-top:-.125rem}.hmd-nr-1\/8-md{margin-right:-.125rem}.hmd-nb-1\/8-md{margin-bottom:-.125rem}.hmd-nl-1\/8-md{margin-left:-.125rem}.hmd-ma-1\/2-md{margin:5px}.hmd-mv-1\/2-md{margin-bottom:5px;margin-top:5px}.hmd-mh-1\/2-md{margin-left:5px;margin-right:5px}.hmd-mt-1\/2-md{margin-top:5px}.hmd-mr-1\/2-md{margin-right:5px}.hmd-mb-1\/2-md{margin-bottom:5px}.hmd-ml-1\/2-md{margin-left:5px}.hmd-nt-1\/2-md{margin-top:-5px}.hmd-nr-1\/2-md{margin-right:-5px}.hmd-nb-1\/2-md{margin-bottom:-5px}.hmd-nl-1\/2-md{margin-left:-5px}.hmd-ma-1-md{margin:10px}.hmd-mv-1-md{margin-bottom:10px;margin-top:10px}.hmd-mh-1-md{margin-left:10px;margin-right:10px}.hmd-mt-1-md{margin-top:10px}.hmd-mr-1-md{margin-right:10px}.hmd-mb-1-md{margin-bottom:10px}.hmd-ml-1-md{margin-left:10px}.hmd-nt-1-md{margin-top:-10px}.hmd-nr-1-md{margin-right:-10px}.hmd-nb-1-md{margin-bottom:-10px}.hmd-nl-1-md{margin-left:-10px}.hmd-ma-3\/2-md{margin:15px}.hmd-mv-3\/2-md{margin-bottom:15px;margin-top:15px}.hmd-mh-3\/2-md{margin-left:15px;margin-right:15px}.hmd-mt-3\/2-md{margin-top:15px}.hmd-mr-3\/2-md{margin-right:15px}.hmd-mb-3\/2-md{margin-bottom:15px}.hmd-ml-3\/2-md{margin-left:15px}.hmd-nt-3\/2-md{margin-top:-15px}.hmd-nr-3\/2-md{margin-right:-15px}.hmd-nb-3\/2-md{margin-bottom:-15px}.hmd-nl-3\/2-md{margin-left:-15px}.hmd-ma-2-md{margin:20px}.hmd-mv-2-md{margin-bottom:20px;margin-top:20px}.hmd-mh-2-md{margin-left:20px;margin-right:20px}.hmd-mt-2-md{margin-top:20px}.hmd-mr-2-md{margin-right:20px}.hmd-mb-2-md{margin-bottom:20px}.hmd-ml-2-md{margin-left:20px}.hmd-nt-2-md{margin-top:-20px}.hmd-nr-2-md{margin-right:-20px}.hmd-nb-2-md{margin-bottom:-20px}.hmd-nl-2-md{margin-left:-20px}.hmd-ma-25-md{margin:25px}.hmd-mv-25-md{margin-bottom:25px;margin-top:25px}.hmd-mh-25-md{margin-left:25px;margin-right:25px}.hmd-mt-25-md{margin-top:25px}.hmd-mr-25-md{margin-right:25px}.hmd-mb-25-md{margin-bottom:25px}.hmd-ml-25-md{margin-left:25px}.hmd-nt-25-md{margin-top:-25px}.hmd-nr-25-md{margin-right:-25px}.hmd-nb-25-md{margin-bottom:-25px}.hmd-nl-25-md{margin-left:-25px}.hmd-ma-3-md{margin:30px}.hmd-mv-3-md{margin-bottom:30px;margin-top:30px}.hmd-mh-3-md{margin-left:30px;margin-right:30px}.hmd-mt-3-md{margin-top:30px}.hmd-mr-3-md{margin-right:30px}.hmd-mb-3-md{margin-bottom:30px}.hmd-ml-3-md{margin-left:30px}.hmd-nt-3-md{margin-top:-30px}.hmd-nr-3-md{margin-right:-30px}.hmd-nb-3-md{margin-bottom:-30px}.hmd-nl-3-md{margin-left:-30px}.hmd-ma-35-md{margin:35px}.hmd-mv-35-md{margin-bottom:35px;margin-top:35px}.hmd-mh-35-md{margin-left:35px;margin-right:35px}.hmd-mt-35-md{margin-top:35px}.hmd-mr-35-md{margin-right:35px}.hmd-mb-35-md{margin-bottom:35px}.hmd-ml-35-md{margin-left:35px}.hmd-nt-35-md{margin-top:-35px}.hmd-nr-35-md{margin-right:-35px}.hmd-nb-35-md{margin-bottom:-35px}.hmd-nl-35-md{margin-left:-35px}.hmd-ma-4-md{margin:40px}.hmd-mv-4-md{margin-bottom:40px;margin-top:40px}.hmd-mh-4-md{margin-left:40px;margin-right:40px}.hmd-mt-4-md{margin-top:40px}.hmd-mr-4-md{margin-right:40px}.hmd-mb-4-md{margin-bottom:40px}.hmd-ml-4-md{margin-left:40px}.hmd-nt-4-md{margin-top:-40px}.hmd-nr-4-md{margin-right:-40px}.hmd-nb-4-md{margin-bottom:-40px}.hmd-nl-4-md{margin-left:-40px}.hmd-ma-5-md{margin:50px}.hmd-mv-5-md{margin-bottom:50px;margin-top:50px}.hmd-mh-5-md{margin-left:50px;margin-right:50px}.hmd-mt-5-md{margin-top:50px}.hmd-mr-5-md{margin-right:50px}.hmd-mb-5-md{margin-bottom:50px}.hmd-ml-5-md{margin-left:50px}.hmd-nt-5-md{margin-top:-50px}.hmd-nr-5-md{margin-right:-50px}.hmd-nb-5-md{margin-bottom:-50px}.hmd-nl-5-md{margin-left:-50px}.hmd-ma-55-md{margin:55px}.hmd-mv-55-md{margin-bottom:55px;margin-top:55px}.hmd-mh-55-md{margin-left:55px;margin-right:55px}.hmd-mt-55-md{margin-top:55px}.hmd-mr-55-md{margin-right:55px}.hmd-mb-55-md{margin-bottom:55px}.hmd-ml-55-md{margin-left:55px}.hmd-nt-55-md{margin-top:-55px}.hmd-nr-55-md{margin-right:-55px}.hmd-nb-55-md{margin-bottom:-55px}.hmd-nl-55-md{margin-left:-55px}.hmd-ma-6-md{margin:60px}.hmd-mv-6-md{margin-bottom:60px;margin-top:60px}.hmd-mh-6-md{margin-left:60px;margin-right:60px}.hmd-mt-6-md{margin-top:60px}.hmd-mr-6-md{margin-right:60px}.hmd-mb-6-md{margin-bottom:60px}.hmd-ml-6-md{margin-left:60px}.hmd-nt-6-md{margin-top:-60px}.hmd-nr-6-md{margin-right:-60px}.hmd-nb-6-md{margin-bottom:-60px}.hmd-nl-6-md{margin-left:-60px}.hmd-ma-7-md{margin:70px}.hmd-mv-7-md{margin-bottom:70px;margin-top:70px}.hmd-mh-7-md{margin-left:70px;margin-right:70px}.hmd-mt-7-md{margin-top:70px}.hmd-mr-7-md{margin-right:70px}.hmd-mb-7-md{margin-bottom:70px}.hmd-ml-7-md{margin-left:70px}.hmd-nt-7-md{margin-top:-70px}.hmd-nr-7-md{margin-right:-70px}.hmd-nb-7-md{margin-bottom:-70px}.hmd-nl-7-md{margin-left:-70px}.hmd-ma-8-md{margin:80px}.hmd-mv-8-md{margin-bottom:80px;margin-top:80px}.hmd-mh-8-md{margin-left:80px;margin-right:80px}.hmd-mt-8-md{margin-top:80px}.hmd-mr-8-md{margin-right:80px}.hmd-mb-8-md{margin-bottom:80px}.hmd-ml-8-md{margin-left:80px}.hmd-nt-8-md{margin-top:-80px}.hmd-nr-8-md{margin-right:-80px}.hmd-nb-8-md{margin-bottom:-80px}.hmd-nl-8-md{margin-left:-80px}.hmd-ma-10-md{margin:100px}.hmd-mv-10-md{margin-bottom:100px;margin-top:100px}.hmd-mh-10-md{margin-left:100px;margin-right:100px}.hmd-mt-10-md{margin-top:100px}.hmd-mr-10-md{margin-right:100px}.hmd-mb-10-md{margin-bottom:100px}.hmd-ml-10-md{margin-left:100px}.hmd-nt-10-md{margin-top:-100px}.hmd-nr-10-md{margin-right:-100px}.hmd-nb-10-md{margin-bottom:-100px}.hmd-nl-10-md{margin-left:-100px}.hmd-ma-12-md{margin:120px}.hmd-mv-12-md{margin-bottom:120px;margin-top:120px}.hmd-mh-12-md{margin-left:120px;margin-right:120px}.hmd-mt-12-md{margin-top:120px}.hmd-mr-12-md{margin-right:120px}.hmd-mb-12-md{margin-bottom:120px}.hmd-ml-12-md{margin-left:120px}.hmd-nt-12-md{margin-top:-120px}.hmd-nr-12-md{margin-right:-120px}.hmd-nb-12-md{margin-bottom:-120px}.hmd-nl-12-md{margin-left:-120px}.hmd-ma-14-md{margin:140px}.hmd-mv-14-md{margin-bottom:140px;margin-top:140px}.hmd-mh-14-md{margin-left:140px;margin-right:140px}.hmd-mt-14-md{margin-top:140px}.hmd-mr-14-md{margin-right:140px}.hmd-mb-14-md{margin-bottom:140px}.hmd-ml-14-md{margin-left:140px}.hmd-nt-14-md{margin-top:-140px}.hmd-nr-14-md{margin-right:-140px}.hmd-nb-14-md{margin-bottom:-140px}.hmd-nl-14-md{margin-left:-140px}.hmd-ma-16-md{margin:160px}.hmd-mv-16-md{margin-bottom:160px;margin-top:160px}.hmd-mh-16-md{margin-left:160px;margin-right:160px}.hmd-mt-16-md{margin-top:160px}.hmd-mr-16-md{margin-right:160px}.hmd-mb-16-md{margin-bottom:160px}.hmd-ml-16-md{margin-left:160px}.hmd-nt-16-md{margin-top:-160px}.hmd-nr-16-md{margin-right:-160px}.hmd-nb-16-md{margin-bottom:-160px}.hmd-nl-16-md{margin-left:-160px}.hmd-ma-auto-md{margin:auto}.hmd-mv-auto-md{margin-bottom:auto;margin-top:auto}.hmd-mh-auto-md{margin-left:auto;margin-right:auto}.hmd-mt-auto-md{margin-top:auto}.hmd-mr-auto-md{margin-right:auto}.hmd-mb-auto-md{margin-bottom:auto}.hmd-ml-auto-md{margin-left:auto}.hmd-nt-auto-md{margin-top:-auto}.hmd-nr-auto-md{margin-right:-auto}.hmd-nb-auto-md{margin-bottom:-auto}.hmd-nl-auto-md{margin-left:-auto}.hmd-mh-auto--md{margin:0 auto}.hmd-dn-md{display:none}.hmd-di-md{display:inline}.hmd-db-md{display:block}.hmd-dib-md{display:inline-block}.hmd-dit-md{display:inline-table}.hmd-dt-md{display:table}.hmd-dtc-md{display:table-cell}.hmd-dt-row-md{display:table-row}.hmd-dt-row-group-md{display:table-row-group}.hmd-dt-column-md{display:table-column}.hmd-dt-column-group-md{display:table-column-group}.hmd-dns-md{display:unset}.hmd-dni-md{display:none!important}.hmd-vv-md{visibility:visible}.hmd-vh-md{visibility:hidden}.hmd-flex-md{display:flex}.inline-flex-md{display:inline-flex}.hmd-flex-auto-md{flex:1 1 auto;min-height:0;min-width:0}.hmd-flex-one-md{flex:1}.hmd-flex-two-md{flex:2}.hmd-flex-none-md{flex:none}.hmd-flex-column-md{flex-direction:column}.hmd-flex-row-md{flex-direction:row}.hmd-flex-wrap-md{flex-wrap:wrap}.hmd-flex-nowrap-md{flex-wrap:nowrap}.hmd-flex-wrap-reverse-md{flex-wrap:wrap-reverse}.hmd-flex-column-reverse-md{flex-direction:column-reverse}.hmd-flex-row-reverse-md{flex-direction:row-reverse}.hmd-items-start-md{align-items:flex-start}.hmd-items-end-md{align-items:flex-end}.hmd-items-center-md{align-items:center}.hmd-items-baseline-md{align-items:baseline}.hmd-items-stretch-md{align-items:stretch}.hmd-self-start-md{align-self:flex-start}.hmd-self-end-md{align-self:flex-end}.hmd-self-center-md{align-self:center}.hmd-self-baseline-md{align-self:baseline}.hmd-self-stretch-md{align-self:stretch}.hmd-justify-start-md{justify-content:flex-start}.hmd-justify-end-md{justify-content:flex-end}.hmd-justify-center-md{justify-content:center}.hmd-justify-between-md{justify-content:space-between}.hmd-justify-around-md{justify-content:space-around}.hmd-content-start-md{align-content:flex-start}.hmd-content-end-md{align-content:flex-end}.hmd-content-center-md{align-content:center}.hmd-content-between-md{align-content:space-between}.hmd-content-around-md{align-content:space-around}.hmd-content-stretch-md{align-content:stretch}.hmd-order-0-md{order:0}.hmd-order-1-md{order:1}.hmd-order-2-md{order:2}.hmd-order-3-md{order:3}.hmd-order-4-md{order:4}.hmd-order-5-md{order:5}.hmd-order-6-md{order:6}.hmd-order-7-md{order:7}.hmd-order-8-md{order:8}.hmd-order-last-md{order:99999}.hmd-flex-grow-0-md{flex-grow:0}.hmd-flex-grow-1-md{flex-grow:1}.hmd-flex-shrink-0-md{flex-shrink:0}.hmd-flex-shrink-1-md{flex-shrink:1}.hmd-text-left-md{text-align:left}.hmd-text-right-md{text-align:right}.hmd-text-center-md{text-align:center}.hmd-text-bold-md{font-weight:700}.hmd-text-underline-md{text-decoration:underline}}@media (min-width:1200px){.hmd-pa-0-lg{padding:0}.hmd-pv-0-lg{padding-bottom:0;padding-top:0}.hmd-ph-0-lg{padding-left:0;padding-right:0}.hmd-pt-0-lg{padding-top:0}.hmd-pr-0-lg{padding-right:0}.hmd-pb-0-lg{padding-bottom:0}.hmd-pl-0-lg{padding-left:0}.hmd-pa-1\/10-lg{padding:1px}.hmd-pv-1\/10-lg{padding-bottom:1px;padding-top:1px}.hmd-ph-1\/10-lg{padding-left:1px;padding-right:1px}.hmd-pt-1\/10-lg{padding-top:1px}.hmd-pr-1\/10-lg{padding-right:1px}.hmd-pb-1\/10-lg{padding-bottom:1px}.hmd-pl-1\/10-lg{padding-left:1px}.hmd-pa-1\/5-lg{padding:2px}.hmd-pv-1\/5-lg{padding-bottom:2px;padding-top:2px}.hmd-ph-1\/5-lg{padding-left:2px;padding-right:2px}.hmd-pt-1\/5-lg{padding-top:2px}.hmd-pr-1\/5-lg{padding-right:2px}.hmd-pb-1\/5-lg{padding-bottom:2px}.hmd-pl-1\/5-lg{padding-left:2px}.hmd-pa-1\/4-lg{padding:.25rem}.hmd-pv-1\/4-lg{padding-bottom:.25rem;padding-top:.25rem}.hmd-ph-1\/4-lg{padding-left:.25rem;padding-right:.25rem}.hmd-pt-1\/4-lg{padding-top:.25rem}.hmd-pr-1\/4-lg{padding-right:.25rem}.hmd-pb-1\/4-lg{padding-bottom:.25rem}.hmd-pl-1\/4-lg{padding-left:.25rem}.hmd-pa-3\/4-lg{padding:.75rem}.hmd-pv-3\/4-lg{padding-bottom:.75rem;padding-top:.75rem}.hmd-ph-3\/4-lg{padding-left:.75rem;padding-right:.75rem}.hmd-pt-3\/4-lg{padding-top:.75rem}.hmd-pr-3\/4-lg{padding-right:.75rem}.hmd-pb-3\/4-lg{padding-bottom:.75rem}.hmd-pl-3\/4-lg{padding-left:.75rem}.hmd-pa-1\/8-lg{padding:.125rem}.hmd-pv-1\/8-lg{padding-bottom:.125rem;padding-top:.125rem}.hmd-ph-1\/8-lg{padding-left:.125rem;padding-right:.125rem}.hmd-pt-1\/8-lg{padding-top:.125rem}.hmd-pr-1\/8-lg{padding-right:.125rem}.hmd-pb-1\/8-lg{padding-bottom:.125rem}.hmd-pl-1\/8-lg{padding-left:.125rem}.hmd-pa-1\/2-lg{padding:5px}.hmd-pv-1\/2-lg{padding-bottom:5px;padding-top:5px}.hmd-ph-1\/2-lg{padding-left:5px;padding-right:5px}.hmd-pt-1\/2-lg{padding-top:5px}.hmd-pr-1\/2-lg{padding-right:5px}.hmd-pb-1\/2-lg{padding-bottom:5px}.hmd-pl-1\/2-lg{padding-left:5px}.hmd-pa-1-lg{padding:10px}.hmd-pv-1-lg{padding-bottom:10px;padding-top:10px}.hmd-ph-1-lg{padding-left:10px;padding-right:10px}.hmd-pt-1-lg{padding-top:10px}.hmd-pr-1-lg{padding-right:10px}.hmd-pb-1-lg{padding-bottom:10px}.hmd-pl-1-lg{padding-left:10px}.hmd-pa-3\/2-lg{padding:15px}.hmd-pv-3\/2-lg{padding-bottom:15px;padding-top:15px}.hmd-ph-3\/2-lg{padding-left:15px;padding-right:15px}.hmd-pt-3\/2-lg{padding-top:15px}.hmd-pr-3\/2-lg{padding-right:15px}.hmd-pb-3\/2-lg{padding-bottom:15px}.hmd-pl-3\/2-lg{padding-left:15px}.hmd-pa-2-lg{padding:20px}.hmd-pv-2-lg{padding-bottom:20px;padding-top:20px}.hmd-ph-2-lg{padding-left:20px;padding-right:20px}.hmd-pt-2-lg{padding-top:20px}.hmd-pr-2-lg{padding-right:20px}.hmd-pb-2-lg{padding-bottom:20px}.hmd-pl-2-lg{padding-left:20px}.hmd-pa-25-lg{padding:25px}.hmd-pv-25-lg{padding-bottom:25px;padding-top:25px}.hmd-ph-25-lg{padding-left:25px;padding-right:25px}.hmd-pt-25-lg{padding-top:25px}.hmd-pr-25-lg{padding-right:25px}.hmd-pb-25-lg{padding-bottom:25px}.hmd-pl-25-lg{padding-left:25px}.hmd-pa-3-lg{padding:30px}.hmd-pv-3-lg{padding-bottom:30px;padding-top:30px}.hmd-ph-3-lg{padding-left:30px;padding-right:30px}.hmd-pt-3-lg{padding-top:30px}.hmd-pr-3-lg{padding-right:30px}.hmd-pb-3-lg{padding-bottom:30px}.hmd-pl-3-lg{padding-left:30px}.hmd-pa-35-lg{padding:35px}.hmd-pv-35-lg{padding-bottom:35px;padding-top:35px}.hmd-ph-35-lg{padding-left:35px;padding-right:35px}.hmd-pt-35-lg{padding-top:35px}.hmd-pr-35-lg{padding-right:35px}.hmd-pb-35-lg{padding-bottom:35px}.hmd-pl-35-lg{padding-left:35px}.hmd-pa-4-lg{padding:40px}.hmd-pv-4-lg{padding-bottom:40px;padding-top:40px}.hmd-ph-4-lg{padding-left:40px;padding-right:40px}.hmd-pt-4-lg{padding-top:40px}.hmd-pr-4-lg{padding-right:40px}.hmd-pb-4-lg{padding-bottom:40px}.hmd-pl-4-lg{padding-left:40px}.hmd-pa-5-lg{padding:50px}.hmd-pv-5-lg{padding-bottom:50px;padding-top:50px}.hmd-ph-5-lg{padding-left:50px;padding-right:50px}.hmd-pt-5-lg{padding-top:50px}.hmd-pr-5-lg{padding-right:50px}.hmd-pb-5-lg{padding-bottom:50px}.hmd-pl-5-lg{padding-left:50px}.hmd-pa-55-lg{padding:55px}.hmd-pv-55-lg{padding-bottom:55px;padding-top:55px}.hmd-ph-55-lg{padding-left:55px;padding-right:55px}.hmd-pt-55-lg{padding-top:55px}.hmd-pr-55-lg{padding-right:55px}.hmd-pb-55-lg{padding-bottom:55px}.hmd-pl-55-lg{padding-left:55px}.hmd-pa-6-lg{padding:60px}.hmd-pv-6-lg{padding-bottom:60px;padding-top:60px}.hmd-ph-6-lg{padding-left:60px;padding-right:60px}.hmd-pt-6-lg{padding-top:60px}.hmd-pr-6-lg{padding-right:60px}.hmd-pb-6-lg{padding-bottom:60px}.hmd-pl-6-lg{padding-left:60px}.hmd-pa-7-lg{padding:70px}.hmd-pv-7-lg{padding-bottom:70px;padding-top:70px}.hmd-ph-7-lg{padding-left:70px;padding-right:70px}.hmd-pt-7-lg{padding-top:70px}.hmd-pr-7-lg{padding-right:70px}.hmd-pb-7-lg{padding-bottom:70px}.hmd-pl-7-lg{padding-left:70px}.hmd-pa-8-lg{padding:80px}.hmd-pv-8-lg{padding-bottom:80px;padding-top:80px}.hmd-ph-8-lg{padding-left:80px;padding-right:80px}.hmd-pt-8-lg{padding-top:80px}.hmd-pr-8-lg{padding-right:80px}.hmd-pb-8-lg{padding-bottom:80px}.hmd-pl-8-lg{padding-left:80px}.hmd-pa-10-lg{padding:100px}.hmd-pv-10-lg{padding-bottom:100px;padding-top:100px}.hmd-ph-10-lg{padding-left:100px;padding-right:100px}.hmd-pt-10-lg{padding-top:100px}.hmd-pr-10-lg{padding-right:100px}.hmd-pb-10-lg{padding-bottom:100px}.hmd-pl-10-lg{padding-left:100px}.hmd-pa-12-lg{padding:120px}.hmd-pv-12-lg{padding-bottom:120px;padding-top:120px}.hmd-ph-12-lg{padding-left:120px;padding-right:120px}.hmd-pt-12-lg{padding-top:120px}.hmd-pr-12-lg{padding-right:120px}.hmd-pb-12-lg{padding-bottom:120px}.hmd-pl-12-lg{padding-left:120px}.hmd-pa-14-lg{padding:140px}.hmd-pv-14-lg{padding-bottom:140px;padding-top:140px}.hmd-ph-14-lg{padding-left:140px;padding-right:140px}.hmd-pt-14-lg{padding-top:140px}.hmd-pr-14-lg{padding-right:140px}.hmd-pb-14-lg{padding-bottom:140px}.hmd-pl-14-lg{padding-left:140px}.hmd-pa-16-lg{padding:160px}.hmd-pv-16-lg{padding-bottom:160px;padding-top:160px}.hmd-ph-16-lg{padding-left:160px;padding-right:160px}.hmd-pt-16-lg{padding-top:160px}.hmd-pr-16-lg{padding-right:160px}.hmd-pb-16-lg{padding-bottom:160px}.hmd-pl-16-lg{padding-left:160px}.hmd-pa-auto-lg{padding:auto}.hmd-pv-auto-lg{padding-bottom:auto;padding-top:auto}.hmd-ph-auto-lg{padding-left:auto;padding-right:auto}.hmd-pt-auto-lg{padding-top:auto}.hmd-pr-auto-lg{padding-right:auto}.hmd-pb-auto-lg{padding-bottom:auto}.hmd-pl-auto-lg{padding-left:auto}.hmd-ma-0-lg{margin:0}.hmd-mv-0-lg{margin-bottom:0;margin-top:0}.hmd-mh-0-lg{margin-left:0;margin-right:0}.hmd-mt-0-lg{margin-top:0}.hmd-mr-0-lg{margin-right:0}.hmd-mb-0-lg{margin-bottom:0}.hmd-ml-0-lg{margin-left:0}.hmd-nt-0-lg{margin-top:0}.hmd-nr-0-lg{margin-right:0}.hmd-nb-0-lg{margin-bottom:0}.hmd-nl-0-lg{margin-left:0}.hmd-ma-1\/10-lg{margin:1px}.hmd-mv-1\/10-lg{margin-bottom:1px;margin-top:1px}.hmd-mh-1\/10-lg{margin-left:1px;margin-right:1px}.hmd-mt-1\/10-lg{margin-top:1px}.hmd-mr-1\/10-lg{margin-right:1px}.hmd-mb-1\/10-lg{margin-bottom:1px}.hmd-ml-1\/10-lg{margin-left:1px}.hmd-nt-1\/10-lg{margin-top:-1px}.hmd-nr-1\/10-lg{margin-right:-1px}.hmd-nb-1\/10-lg{margin-bottom:-1px}.hmd-nl-1\/10-lg{margin-left:-1px}.hmd-ma-1\/5-lg{margin:2px}.hmd-mv-1\/5-lg{margin-bottom:2px;margin-top:2px}.hmd-mh-1\/5-lg{margin-left:2px;margin-right:2px}.hmd-mt-1\/5-lg{margin-top:2px}.hmd-mr-1\/5-lg{margin-right:2px}.hmd-mb-1\/5-lg{margin-bottom:2px}.hmd-ml-1\/5-lg{margin-left:2px}.hmd-nt-1\/5-lg{margin-top:-2px}.hmd-nr-1\/5-lg{margin-right:-2px}.hmd-nb-1\/5-lg{margin-bottom:-2px}.hmd-nl-1\/5-lg{margin-left:-2px}.hmd-ma-1\/4-lg{margin:.25rem}.hmd-mv-1\/4-lg{margin-bottom:.25rem;margin-top:.25rem}.hmd-mh-1\/4-lg{margin-left:.25rem;margin-right:.25rem}.hmd-mt-1\/4-lg{margin-top:.25rem}.hmd-mr-1\/4-lg{margin-right:.25rem}.hmd-mb-1\/4-lg{margin-bottom:.25rem}.hmd-ml-1\/4-lg{margin-left:.25rem}.hmd-nt-1\/4-lg{margin-top:-.25rem}.hmd-nr-1\/4-lg{margin-right:-.25rem}.hmd-nb-1\/4-lg{margin-bottom:-.25rem}.hmd-nl-1\/4-lg{margin-left:-.25rem}.hmd-ma-3\/4-lg{margin:.75rem}.hmd-mv-3\/4-lg{margin-bottom:.75rem;margin-top:.75rem}.hmd-mh-3\/4-lg{margin-left:.75rem;margin-right:.75rem}.hmd-mt-3\/4-lg{margin-top:.75rem}.hmd-mr-3\/4-lg{margin-right:.75rem}.hmd-mb-3\/4-lg{margin-bottom:.75rem}.hmd-ml-3\/4-lg{margin-left:.75rem}.hmd-nt-3\/4-lg{margin-top:-.75rem}.hmd-nr-3\/4-lg{margin-right:-.75rem}.hmd-nb-3\/4-lg{margin-bottom:-.75rem}.hmd-nl-3\/4-lg{margin-left:-.75rem}.hmd-ma-1\/8-lg{margin:.125rem}.hmd-mv-1\/8-lg{margin-bottom:.125rem;margin-top:.125rem}.hmd-mh-1\/8-lg{margin-left:.125rem;margin-right:.125rem}.hmd-mt-1\/8-lg{margin-top:.125rem}.hmd-mr-1\/8-lg{margin-right:.125rem}.hmd-mb-1\/8-lg{margin-bottom:.125rem}.hmd-ml-1\/8-lg{margin-left:.125rem}.hmd-nt-1\/8-lg{margin-top:-.125rem}.hmd-nr-1\/8-lg{margin-right:-.125rem}.hmd-nb-1\/8-lg{margin-bottom:-.125rem}.hmd-nl-1\/8-lg{margin-left:-.125rem}.hmd-ma-1\/2-lg{margin:5px}.hmd-mv-1\/2-lg{margin-bottom:5px;margin-top:5px}.hmd-mh-1\/2-lg{margin-left:5px;margin-right:5px}.hmd-mt-1\/2-lg{margin-top:5px}.hmd-mr-1\/2-lg{margin-right:5px}.hmd-mb-1\/2-lg{margin-bottom:5px}.hmd-ml-1\/2-lg{margin-left:5px}.hmd-nt-1\/2-lg{margin-top:-5px}.hmd-nr-1\/2-lg{margin-right:-5px}.hmd-nb-1\/2-lg{margin-bottom:-5px}.hmd-nl-1\/2-lg{margin-left:-5px}.hmd-ma-1-lg{margin:10px}.hmd-mv-1-lg{margin-bottom:10px;margin-top:10px}.hmd-mh-1-lg{margin-left:10px;margin-right:10px}.hmd-mt-1-lg{margin-top:10px}.hmd-mr-1-lg{margin-right:10px}.hmd-mb-1-lg{margin-bottom:10px}.hmd-ml-1-lg{margin-left:10px}.hmd-nt-1-lg{margin-top:-10px}.hmd-nr-1-lg{margin-right:-10px}.hmd-nb-1-lg{margin-bottom:-10px}.hmd-nl-1-lg{margin-left:-10px}.hmd-ma-3\/2-lg{margin:15px}.hmd-mv-3\/2-lg{margin-bottom:15px;margin-top:15px}.hmd-mh-3\/2-lg{margin-left:15px;margin-right:15px}.hmd-mt-3\/2-lg{margin-top:15px}.hmd-mr-3\/2-lg{margin-right:15px}.hmd-mb-3\/2-lg{margin-bottom:15px}.hmd-ml-3\/2-lg{margin-left:15px}.hmd-nt-3\/2-lg{margin-top:-15px}.hmd-nr-3\/2-lg{margin-right:-15px}.hmd-nb-3\/2-lg{margin-bottom:-15px}.hmd-nl-3\/2-lg{margin-left:-15px}.hmd-ma-2-lg{margin:20px}.hmd-mv-2-lg{margin-bottom:20px;margin-top:20px}.hmd-mh-2-lg{margin-left:20px;margin-right:20px}.hmd-mt-2-lg{margin-top:20px}.hmd-mr-2-lg{margin-right:20px}.hmd-mb-2-lg{margin-bottom:20px}.hmd-ml-2-lg{margin-left:20px}.hmd-nt-2-lg{margin-top:-20px}.hmd-nr-2-lg{margin-right:-20px}.hmd-nb-2-lg{margin-bottom:-20px}.hmd-nl-2-lg{margin-left:-20px}.hmd-ma-25-lg{margin:25px}.hmd-mv-25-lg{margin-bottom:25px;margin-top:25px}.hmd-mh-25-lg{margin-left:25px;margin-right:25px}.hmd-mt-25-lg{margin-top:25px}.hmd-mr-25-lg{margin-right:25px}.hmd-mb-25-lg{margin-bottom:25px}.hmd-ml-25-lg{margin-left:25px}.hmd-nt-25-lg{margin-top:-25px}.hmd-nr-25-lg{margin-right:-25px}.hmd-nb-25-lg{margin-bottom:-25px}.hmd-nl-25-lg{margin-left:-25px}.hmd-ma-3-lg{margin:30px}.hmd-mv-3-lg{margin-bottom:30px;margin-top:30px}.hmd-mh-3-lg{margin-left:30px;margin-right:30px}.hmd-mt-3-lg{margin-top:30px}.hmd-mr-3-lg{margin-right:30px}.hmd-mb-3-lg{margin-bottom:30px}.hmd-ml-3-lg{margin-left:30px}.hmd-nt-3-lg{margin-top:-30px}.hmd-nr-3-lg{margin-right:-30px}.hmd-nb-3-lg{margin-bottom:-30px}.hmd-nl-3-lg{margin-left:-30px}.hmd-ma-35-lg{margin:35px}.hmd-mv-35-lg{margin-bottom:35px;margin-top:35px}.hmd-mh-35-lg{margin-left:35px;margin-right:35px}.hmd-mt-35-lg{margin-top:35px}.hmd-mr-35-lg{margin-right:35px}.hmd-mb-35-lg{margin-bottom:35px}.hmd-ml-35-lg{margin-left:35px}.hmd-nt-35-lg{margin-top:-35px}.hmd-nr-35-lg{margin-right:-35px}.hmd-nb-35-lg{margin-bottom:-35px}.hmd-nl-35-lg{margin-left:-35px}.hmd-ma-4-lg{margin:40px}.hmd-mv-4-lg{margin-bottom:40px;margin-top:40px}.hmd-mh-4-lg{margin-left:40px;margin-right:40px}.hmd-mt-4-lg{margin-top:40px}.hmd-mr-4-lg{margin-right:40px}.hmd-mb-4-lg{margin-bottom:40px}.hmd-ml-4-lg{margin-left:40px}.hmd-nt-4-lg{margin-top:-40px}.hmd-nr-4-lg{margin-right:-40px}.hmd-nb-4-lg{margin-bottom:-40px}.hmd-nl-4-lg{margin-left:-40px}.hmd-ma-5-lg{margin:50px}.hmd-mv-5-lg{margin-bottom:50px;margin-top:50px}.hmd-mh-5-lg{margin-left:50px;margin-right:50px}.hmd-mt-5-lg{margin-top:50px}.hmd-mr-5-lg{margin-right:50px}.hmd-mb-5-lg{margin-bottom:50px}.hmd-ml-5-lg{margin-left:50px}.hmd-nt-5-lg{margin-top:-50px}.hmd-nr-5-lg{margin-right:-50px}.hmd-nb-5-lg{margin-bottom:-50px}.hmd-nl-5-lg{margin-left:-50px}.hmd-ma-55-lg{margin:55px}.hmd-mv-55-lg{margin-bottom:55px;margin-top:55px}.hmd-mh-55-lg{margin-left:55px;margin-right:55px}.hmd-mt-55-lg{margin-top:55px}.hmd-mr-55-lg{margin-right:55px}.hmd-mb-55-lg{margin-bottom:55px}.hmd-ml-55-lg{margin-left:55px}.hmd-nt-55-lg{margin-top:-55px}.hmd-nr-55-lg{margin-right:-55px}.hmd-nb-55-lg{margin-bottom:-55px}.hmd-nl-55-lg{margin-left:-55px}.hmd-ma-6-lg{margin:60px}.hmd-mv-6-lg{margin-bottom:60px;margin-top:60px}.hmd-mh-6-lg{margin-left:60px;margin-right:60px}.hmd-mt-6-lg{margin-top:60px}.hmd-mr-6-lg{margin-right:60px}.hmd-mb-6-lg{margin-bottom:60px}.hmd-ml-6-lg{margin-left:60px}.hmd-nt-6-lg{margin-top:-60px}.hmd-nr-6-lg{margin-right:-60px}.hmd-nb-6-lg{margin-bottom:-60px}.hmd-nl-6-lg{margin-left:-60px}.hmd-ma-7-lg{margin:70px}.hmd-mv-7-lg{margin-bottom:70px;margin-top:70px}.hmd-mh-7-lg{margin-left:70px;margin-right:70px}.hmd-mt-7-lg{margin-top:70px}.hmd-mr-7-lg{margin-right:70px}.hmd-mb-7-lg{margin-bottom:70px}.hmd-ml-7-lg{margin-left:70px}.hmd-nt-7-lg{margin-top:-70px}.hmd-nr-7-lg{margin-right:-70px}.hmd-nb-7-lg{margin-bottom:-70px}.hmd-nl-7-lg{margin-left:-70px}.hmd-ma-8-lg{margin:80px}.hmd-mv-8-lg{margin-bottom:80px;margin-top:80px}.hmd-mh-8-lg{margin-left:80px;margin-right:80px}.hmd-mt-8-lg{margin-top:80px}.hmd-mr-8-lg{margin-right:80px}.hmd-mb-8-lg{margin-bottom:80px}.hmd-ml-8-lg{margin-left:80px}.hmd-nt-8-lg{margin-top:-80px}.hmd-nr-8-lg{margin-right:-80px}.hmd-nb-8-lg{margin-bottom:-80px}.hmd-nl-8-lg{margin-left:-80px}.hmd-ma-10-lg{margin:100px}.hmd-mv-10-lg{margin-bottom:100px;margin-top:100px}.hmd-mh-10-lg{margin-left:100px;margin-right:100px}.hmd-mt-10-lg{margin-top:100px}.hmd-mr-10-lg{margin-right:100px}.hmd-mb-10-lg{margin-bottom:100px}.hmd-ml-10-lg{margin-left:100px}.hmd-nt-10-lg{margin-top:-100px}.hmd-nr-10-lg{margin-right:-100px}.hmd-nb-10-lg{margin-bottom:-100px}.hmd-nl-10-lg{margin-left:-100px}.hmd-ma-12-lg{margin:120px}.hmd-mv-12-lg{margin-bottom:120px;margin-top:120px}.hmd-mh-12-lg{margin-left:120px;margin-right:120px}.hmd-mt-12-lg{margin-top:120px}.hmd-mr-12-lg{margin-right:120px}.hmd-mb-12-lg{margin-bottom:120px}.hmd-ml-12-lg{margin-left:120px}.hmd-nt-12-lg{margin-top:-120px}.hmd-nr-12-lg{margin-right:-120px}.hmd-nb-12-lg{margin-bottom:-120px}.hmd-nl-12-lg{margin-left:-120px}.hmd-ma-14-lg{margin:140px}.hmd-mv-14-lg{margin-bottom:140px;margin-top:140px}.hmd-mh-14-lg{margin-left:140px;margin-right:140px}.hmd-mt-14-lg{margin-top:140px}.hmd-mr-14-lg{margin-right:140px}.hmd-mb-14-lg{margin-bottom:140px}.hmd-ml-14-lg{margin-left:140px}.hmd-nt-14-lg{margin-top:-140px}.hmd-nr-14-lg{margin-right:-140px}.hmd-nb-14-lg{margin-bottom:-140px}.hmd-nl-14-lg{margin-left:-140px}.hmd-ma-16-lg{margin:160px}.hmd-mv-16-lg{margin-bottom:160px;margin-top:160px}.hmd-mh-16-lg{margin-left:160px;margin-right:160px}.hmd-mt-16-lg{margin-top:160px}.hmd-mr-16-lg{margin-right:160px}.hmd-mb-16-lg{margin-bottom:160px}.hmd-ml-16-lg{margin-left:160px}.hmd-nt-16-lg{margin-top:-160px}.hmd-nr-16-lg{margin-right:-160px}.hmd-nb-16-lg{margin-bottom:-160px}.hmd-nl-16-lg{margin-left:-160px}.hmd-ma-auto-lg{margin:auto}.hmd-mv-auto-lg{margin-bottom:auto;margin-top:auto}.hmd-mh-auto-lg{margin-left:auto;margin-right:auto}.hmd-mt-auto-lg{margin-top:auto}.hmd-mr-auto-lg{margin-right:auto}.hmd-mb-auto-lg{margin-bottom:auto}.hmd-ml-auto-lg{margin-left:auto}.hmd-nt-auto-lg{margin-top:-auto}.hmd-nr-auto-lg{margin-right:-auto}.hmd-nb-auto-lg{margin-bottom:-auto}.hmd-nl-auto-lg{margin-left:-auto}.hmd-mh-auto--lg{margin:0 auto}.hmd-dn-lg{display:none}.hmd-di-lg{display:inline}.hmd-db-lg{display:block}.hmd-dib-lg{display:inline-block}.hmd-dit-lg{display:inline-table}.hmd-dt-lg{display:table}.hmd-dtc-lg{display:table-cell}.hmd-dt-row-lg{display:table-row}.hmd-dt-row-group-lg{display:table-row-group}.hmd-dt-column-lg{display:table-column}.hmd-dt-column-group-lg{display:table-column-group}.hmd-dns-lg{display:unset}.hmd-dni-lg{display:none!important}.hmd-vv-lg{visibility:visible}.hmd-vh-lg{visibility:hidden}.hmd-flex-lg{display:flex}.inline-flex-lg{display:inline-flex}.hmd-flex-auto-lg{flex:1 1 auto;min-height:0;min-width:0}.hmd-flex-one-lg{flex:1}.hmd-flex-two-lg{flex:2}.hmd-flex-none-lg{flex:none}.hmd-flex-column-lg{flex-direction:column}.hmd-flex-row-lg{flex-direction:row}.hmd-flex-wrap-lg{flex-wrap:wrap}.hmd-flex-nowrap-lg{flex-wrap:nowrap}.hmd-flex-wrap-reverse-lg{flex-wrap:wrap-reverse}.hmd-flex-column-reverse-lg{flex-direction:column-reverse}.hmd-flex-row-reverse-lg{flex-direction:row-reverse}.hmd-items-start-lg{align-items:flex-start}.hmd-items-end-lg{align-items:flex-end}.hmd-items-center-lg{align-items:center}.hmd-items-baseline-lg{align-items:baseline}.hmd-items-stretch-lg{align-items:stretch}.hmd-self-start-lg{align-self:flex-start}.hmd-self-end-lg{align-self:flex-end}.hmd-self-center-lg{align-self:center}.hmd-self-baseline-lg{align-self:baseline}.hmd-self-stretch-lg{align-self:stretch}.hmd-justify-start-lg{justify-content:flex-start}.hmd-justify-end-lg{justify-content:flex-end}.hmd-justify-center-lg{justify-content:center}.hmd-justify-between-lg{justify-content:space-between}.hmd-justify-around-lg{justify-content:space-around}.hmd-content-start-lg{align-content:flex-start}.hmd-content-end-lg{align-content:flex-end}.hmd-content-center-lg{align-content:center}.hmd-content-between-lg{align-content:space-between}.hmd-content-around-lg{align-content:space-around}.hmd-content-stretch-lg{align-content:stretch}.hmd-order-0-lg{order:0}.hmd-order-1-lg{order:1}.hmd-order-2-lg{order:2}.hmd-order-3-lg{order:3}.hmd-order-4-lg{order:4}.hmd-order-5-lg{order:5}.hmd-order-6-lg{order:6}.hmd-order-7-lg{order:7}.hmd-order-8-lg{order:8}.hmd-order-last-lg{order:99999}.hmd-flex-grow-0-lg{flex-grow:0}.hmd-flex-grow-1-lg{flex-grow:1}.hmd-flex-shrink-0-lg{flex-shrink:0}.hmd-flex-shrink-1-lg{flex-shrink:1}.hmd-text-left-lg{text-align:left}.hmd-text-right-lg{text-align:right}.hmd-text-center-lg{text-align:center}.hmd-text-bold-lg{font-weight:700}.hmd-text-underline-lg{text-decoration:underline}}@media (max-width:470px){.modal.signin-modal .btn-social{display:block;margin:10px auto 0}}@media (max-width:768px){.modal.signin-modal .modal-dialog{margin:0 auto}}@media only screen{.ui-infobar__actions .dropdown>button:last-child{padding:7px 5px}.ui-infobar__actions .dropdown>button:last-child:after{color:#868686;content:"";font-family:FontAwesome}}.first-letter\:capitalize:first-letter{text-transform:capitalize}.placeholder\:text-\[\#777\]::placeholder{--tw-text-opacity:1;color:rgb(119 119 119/var(--tw-text-opacity,1))}.placeholder\:text-gray-500::placeholder{--tw-text-opacity:1;color:rgb(143 143 143/var(--tw-text-opacity,1))}.placeholder\:text-text-subtler::placeholder{color:var(--hmd-tw-text-subtler)}.placeholder\:text-white::placeholder{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.placeholder\:opacity-100::placeholder{opacity:1}.placeholder\:opacity-50::placeholder{opacity:.5}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:\!left-\[1px\]:after{content:var(--tw-content);left:1px!important}.after\:\!top-0:after{content:var(--tw-content);top:0!important}.after\:left-0:after{content:var(--tw-content);left:0}.after\:left-\[-2px\]:after{content:var(--tw-content);left:-2px}.after\:left-\[50\%\]:after{content:var(--tw-content);left:50%}.after\:top-0:after{content:var(--tw-content);top:0}.after\:top-\[-2px\]:after{content:var(--tw-content);top:-2px}.after\:top-\[50\%\]:after{content:var(--tw-content);top:50%}.after\:z-\[-1\]:after{content:var(--tw-content);z-index:-1}.after\:block:after{content:var(--tw-content);display:block}.after\:flex:after{content:var(--tw-content);display:flex}.after\:hidden:after{content:var(--tw-content);display:none}.after\:h-2:after{content:var(--tw-content);height:8px}.after\:h-\[calc\(100\%\+4px\)\]:after{content:var(--tw-content);height:calc(100% + 4px)}.after\:h-full:after{content:var(--tw-content);height:100%}.after\:w-0\.5:after{content:var(--tw-content);width:2px}.after\:w-2:after{content:var(--tw-content);width:8px}.after\:w-\[1px\]:after{content:var(--tw-content);width:1px}.after\:w-\[calc\(100\%\+4px\)\]:after{content:var(--tw-content);width:calc(100% + 4px)}.after\:w-full:after{content:var(--tw-content);width:100%}.after\:\!translate-x-\[-50\%\]:after{--tw-translate-x:-50%!important}.after\:\!translate-x-\[-50\%\]:after,.after\:\!translate-y-\[-50\%\]:after{content:var(--tw-content);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.after\:\!translate-y-\[-50\%\]:after{--tw-translate-y:-50%!important}.after\:translate-x-\[-50\%\]:after{--tw-translate-x:-50%}.after\:translate-x-\[-50\%\]:after,.after\:translate-y-\[-50\%\]:after{content:var(--tw-content);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.after\:translate-y-\[-50\%\]:after{--tw-translate-y:-50%}.after\:rounded:after{border-radius:4px;content:var(--tw-content)}.after\:rounded-full:after{border-radius:9999px;content:var(--tw-content)}.after\:rounded-sm:after{border-radius:2px;content:var(--tw-content)}.after\:border:after{border-width:1px;content:var(--tw-content)}.after\:border-solid:after{border-style:solid;content:var(--tw-content)}.after\:border-prime-border:after{border-color:var(--hmd-tw-prime-border);content:var(--tw-content)}.after\:\!border-r-background-subtler:after{border-right-color:var(--hmd-tw-background-subtler)!important;content:var(--tw-content)}.after\:bg-background-primary-default:after{background-color:var(--hmd-tw-background-primary-default);content:var(--tw-content)}.after\:bg-border-bold:after{background-color:var(--hmd-tw-border-bold);content:var(--tw-content)}.after\:bg-border-subtlest:after{background-color:var(--hmd-tw-border-subtlest);content:var(--tw-content)}.after\:shadow-\[0_3px_20px_0_\#00000066\2c _0_1px_3px_0_\#000000A6\]:after{--tw-shadow:0 3px 20px 0 #0006,0 1px 3px 0 #000000a6;--tw-shadow-colored:0 3px 20px 0 var(--tw-shadow-color),0 1px 3px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);content:var(--tw-content)}.after\:transition-colors:after{content:var(--tw-content);transition-duration:.15s;transition-property:color,background-color,border-color,fill,stroke,-webkit-text-decoration-color;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,-webkit-text-decoration-color;transition-timing-function:cubic-bezier(.4,0,.2,1)}.after\:duration-200:after{content:var(--tw-content);transition-duration:.2s}.after\:ease-out:after{content:var(--tw-content);transition-timing-function:cubic-bezier(0,0,.2,1)}.after\:content-\[\"\"\]:after,.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.first\:ml-0:first-child{margin-left:0}.first\:\!border-t:first-child{border-top-width:1px!important}.last\:mr-0:last-child{margin-right:0}.last\:border-none:last-child{border-style:none}.visited\:text-text-default:visited{color:var(--hmd-tw-text-default)}.visited\:text-white:visited{color:#fff}.visited\:no-underline:visited{-webkit-text-decoration-line:none;text-decoration-line:none}.read-only\:border-element-border-disabled:read-only{border-color:var(--hmd-tw-element-border-disabled)}.read-only\:bg-element-bg-disabled:read-only{background-color:var(--hmd-tw-element-bg-disabled)}.read-only\:text-element-text-disabled:read-only{color:var(--hmd-tw-element-text-disabled)}.focus-within\:flex:focus-within{display:flex}.focus-within\:border-blue-light-default:focus-within{--tw-border-opacity:1;border-color:rgb(102 181 240/var(--tw-border-opacity,1))}.focus-within\:border-border-primary-subtler:focus-within{border-color:var(--hmd-tw-border-primary-subtler)}.focus-within\:border-border-subtle:focus-within{border-color:var(--hmd-tw-border-subtle)}.focus-within\:border-state-danger-border:focus-within{border-color:var(--hmd-tw-state-danger-border)}.focus-within\:border-state-danger-default:focus-within{border-color:var(--hmd-tw-state-danger-default)}.focus-within\:bg-background-default:focus-within{background-color:var(--hmd-tw-background-default)}.focus-within\:shadow-\[0_0_0_2px_\#453AFF33\]:focus-within{--tw-shadow:0 0 0 2px #453aff33;--tw-shadow-colored:0 0 0 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus-within\:shadow-\[0px_0px_10px_\#B4DFFF\]:focus-within{--tw-shadow:0px 0px 10px #b4dfff;--tw-shadow-colored:0px 0px 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:border-none:hover{border-style:none}.hover\:border-\[\#5AAED1\]:hover{--tw-border-opacity:1;border-color:rgb(90 174 209/var(--tw-border-opacity,1))}.hover\:border-\[\#AEBCC1\]:hover{--tw-border-opacity:1;border-color:rgb(174 188 193/var(--tw-border-opacity,1))}.hover\:border-\[\#CECECE4D\]:hover{border-color:#cecece4d}.hover\:border-background-primary-hover:hover{border-color:var(--hmd-tw-background-primary-hover)}.hover\:border-black-brand:hover{--tw-border-opacity:1;border-color:rgb(51 51 51/var(--tw-border-opacity,1))}.hover\:border-border-bold:hover{border-color:var(--hmd-tw-border-bold)}.hover\:border-element-bg-hover:hover{border-color:var(--hmd-tw-element-bg-hover)}.hover\:border-element-border-hover:hover{border-color:var(--hmd-tw-element-border-hover)}.hover\:\!bg-background-primary-hover:hover{background-color:var(--hmd-tw-background-primary-hover)!important}.hover\:\!bg-element-bg-hover:hover{background-color:var(--hmd-tw-element-bg-hover)!important}.hover\:\!bg-gray-200:hover{--tw-bg-opacity:1!important;background-color:rgb(231 231 231/var(--tw-bg-opacity,1))!important}.hover\:bg-\[\#5D5AFF\]:hover{--tw-bg-opacity:1;background-color:rgb(93 90 255/var(--tw-bg-opacity,1))}.hover\:bg-\[\#7D7F88\]:hover{--tw-bg-opacity:1;background-color:rgb(125 127 136/var(--tw-bg-opacity,1))}.hover\:bg-background-default:hover{background-color:var(--hmd-tw-background-default)}.hover\:bg-background-primary-hover:hover{background-color:var(--hmd-tw-background-primary-hover)}.hover\:bg-background-primary-subtler:hover{background-color:var(--hmd-tw-background-primary-subtler)}.hover\:bg-background-subtler:hover{background-color:var(--hmd-tw-background-subtler)}.hover\:bg-element-bg-hover:hover{background-color:var(--hmd-tw-element-bg-hover)}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(248 248 248/var(--tw-bg-opacity,1))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(231 231 231/var(--tw-bg-opacity,1))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(205 205 205/var(--tw-bg-opacity,1))}.hover\:bg-transparent:hover{background-color:initial}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.hover\:bg-opacity-30:hover{--tw-bg-opacity:0.3}.hover\:\!text-black-brand:hover{--tw-text-opacity:1!important;color:rgb(51 51 51/var(--tw-text-opacity,1))!important}.hover\:\!text-text-emphasize:hover{color:var(--hmd-tw-text-emphasize)!important}.hover\:\!text-white:hover{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity,1))!important}.hover\:text-black-brand:hover{--tw-text-opacity:1;color:rgb(51 51 51/var(--tw-text-opacity,1))}.hover\:text-blue-dark:hover{--tw-text-opacity:1;color:rgb(102 181 240/var(--tw-text-opacity,1))}.hover\:text-blue-default:hover{--tw-text-opacity:1;color:rgb(51 122 183/var(--tw-text-opacity,1))}.hover\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(205 205 205/var(--tw-text-opacity,1))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgb(143 143 143/var(--tw-text-opacity,1))}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(136 136 136/var(--tw-text-opacity,1))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity,1))}.hover\:text-link-text-hover:hover{color:var(--hmd-tw-link-text-hover)}.hover\:text-red-light:hover{--tw-text-opacity:1;color:rgb(255 99 99/var(--tw-text-opacity,1))}.hover\:text-text-default:hover{color:var(--hmd-tw-text-default)}.hover\:text-text-emphasize:hover{color:var(--hmd-tw-text-emphasize)}.hover\:text-text-primary:hover{color:var(--hmd-tw-text-primary)}.hover\:text-text-subtle:hover{color:var(--hmd-tw-text-subtle)}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hover\:text-yellow-default:hover{--tw-text-opacity:1;color:rgb(247 160 4/var(--tw-text-opacity,1))}.hover\:underline:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}.hover\:no-underline:hover{-webkit-text-decoration-line:none;text-decoration-line:none}.hover\:shadow-\[0_0_0_1px_inset_\#71717A\]:hover{--tw-shadow:0 0 0 1px inset #71717a;--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color)}.hover\:shadow-\[0_0_0_1px_inset_\#71717A\]:hover,.hover\:shadow-\[0px_0px_6px_\#5AAED1\]:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-\[0px_0px_6px_\#5AAED1\]:hover{--tw-shadow:0px 0px 6px #5aaed1;--tw-shadow-colored:0px 0px 6px var(--tw-shadow-color)}.hover\:shadow-none:hover{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:m-\[3px\]:focus{margin:3px}.focus\:border:focus{border-width:1px}.focus\:border-solid:focus{border-style:solid}.focus\:border-none:focus{border-style:none}.focus\:border-\[\#5AAED1\]:focus{--tw-border-opacity:1;border-color:rgb(90 174 209/var(--tw-border-opacity,1))}.focus\:border-\[\#AEBCC1\]:focus{--tw-border-opacity:1;border-color:rgb(174 188 193/var(--tw-border-opacity,1))}.focus\:border-background-primary-focus:focus{border-color:var(--hmd-tw-background-primary-focus)}.focus\:border-border-primary-subtler:focus{border-color:var(--hmd-tw-border-primary-subtler)}.focus\:border-element-border-hover:focus{border-color:var(--hmd-tw-element-border-hover)}.focus\:border-state-danger-border:focus{border-color:var(--hmd-tw-state-danger-border)}.focus\:border-white:focus{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.focus\:border-white\/40:focus{border-color:#fff6}.focus\:\!bg-background-primary-focus:focus{background-color:var(--hmd-tw-background-primary-focus)!important}.focus\:bg-\[\#5D5AFF\]:focus{--tw-bg-opacity:1;background-color:rgb(93 90 255/var(--tw-bg-opacity,1))}.focus\:bg-\[\#7D7F88\]:focus{--tw-bg-opacity:1;background-color:rgb(125 127 136/var(--tw-bg-opacity,1))}.focus\:bg-background-primary-focus:focus{background-color:var(--hmd-tw-background-primary-focus)}.focus\:bg-opacity-30:focus{--tw-bg-opacity:0.3}.focus\:p-\[5px\]:focus{padding:5px}.focus\:p-\[7px\]:focus{padding:7px}.focus\:p-\[9px\]:focus{padding:9px}.focus\:\!text-white:focus{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity,1))!important}.focus\:text-blue-default:focus{--tw-text-opacity:1;color:rgb(51 122 183/var(--tw-text-opacity,1))}.focus\:text-gray-500:focus{--tw-text-opacity:1;color:rgb(143 143 143/var(--tw-text-opacity,1))}.focus\:text-gray-900:focus{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity,1))}.focus\:text-red-light:focus{--tw-text-opacity:1;color:rgb(255 99 99/var(--tw-text-opacity,1))}.focus\:text-white:focus{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.focus\:text-yellow-default:focus{--tw-text-opacity:1;color:rgb(247 160 4/var(--tw-text-opacity,1))}.focus\:no-underline:focus{-webkit-text-decoration-line:none;text-decoration-line:none}.focus\:shadow-\[0_0_0_1px_inset_\#71717A\2c 0_0_0_2px_\#77777733\]:focus{--tw-shadow:0 0 0 1px inset #71717a,0 0 0 2px #7773;--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color),0 0 0 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:shadow-\[0_0_0_2px_\#453AFF33\]:focus{--tw-shadow:0 0 0 2px #453aff33;--tw-shadow-colored:0 0 0 2px var(--tw-shadow-color)}.focus\:shadow-\[0_0_0_2px_\#453AFF33\]:focus,.focus\:shadow-\[0_0_0_2px_\#77777733\]:focus{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:shadow-\[0_0_0_2px_\#77777733\]:focus{--tw-shadow:0 0 0 2px #7773;--tw-shadow-colored:0 0 0 2px var(--tw-shadow-color)}.focus\:shadow-\[0_0_0_2px_\#DC262633\]:focus{--tw-shadow:0 0 0 2px #dc262633;--tw-shadow-colored:0 0 0 2px var(--tw-shadow-color)}.focus\:shadow-\[0_0_0_2px_\#DC262633\]:focus,.focus\:shadow-\[0px_0px_6px_\#5AAED1\]:focus{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:shadow-\[0px_0px_6px_\#5AAED1\]:focus{--tw-shadow:0px 0px 6px #5aaed1;--tw-shadow-colored:0px 0px 6px var(--tw-shadow-color)}.focus\:shadow-none:focus{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.active\:text-link-text-pressed:active{color:var(--hmd-tw-link-text-pressed)}.active\:no-underline:active{-webkit-text-decoration-line:none;text-decoration-line:none}.disabled\:m-\[3px\]:disabled{margin:3px}.disabled\:\!cursor-not-allowed:disabled{cursor:not-allowed!important}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border:disabled{border-width:1px}.disabled\:border-solid:disabled{border-style:solid}.disabled\:\!border-element-border-disabled:disabled{border-color:var(--hmd-tw-element-border-disabled)!important}.disabled\:border-background-primary-disabled:disabled{border-color:var(--hmd-tw-background-primary-disabled)}.disabled\:border-element-bg-disabled:disabled{border-color:var(--hmd-tw-element-bg-disabled)}.disabled\:border-element-border-disabled:disabled{border-color:var(--hmd-tw-element-border-disabled)}.disabled\:border-state-danger-bg-default:disabled{border-color:var(--hmd-tw-state-danger-bg-default)}.disabled\:border-transparent:disabled{border-color:#0000}.disabled\:border-white:disabled{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.disabled\:border-zinc-400:disabled{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity,1))}.disabled\:\!bg-background-primary-disabled:disabled{background-color:var(--hmd-tw-background-primary-disabled)!important}.disabled\:\!bg-element-bg-disabled:disabled{background-color:var(--hmd-tw-element-bg-disabled)!important}.disabled\:bg-\[\#CECECE4D\]:disabled{background-color:#cecece4d}.disabled\:bg-background-primary-disabled:disabled{background-color:var(--hmd-tw-background-primary-disabled)}.disabled\:bg-background-subtler:disabled{background-color:var(--hmd-tw-background-subtler)}.disabled\:bg-element-bg-disabled:disabled{background-color:var(--hmd-tw-element-bg-disabled)}.disabled\:bg-state-danger-bg-default:disabled{background-color:var(--hmd-tw-state-danger-bg-default)}.disabled\:bg-transparent:disabled{background-color:initial}.disabled\:bg-white:disabled{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.disabled\:bg-zinc-200:disabled{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity,1))}.disabled\:p-\[5px\]:disabled{padding:5px}.disabled\:p-\[7px\]:disabled{padding:7px}.disabled\:\!text-element-text-disabled:disabled{color:var(--hmd-tw-element-text-disabled)!important}.disabled\:\!text-icon-disabled:disabled{color:var(--hmd-tw-icon-disabled)!important}.disabled\:text-element-text-disabled:disabled{color:var(--hmd-tw-element-text-disabled)}.disabled\:text-text-subtle:disabled{color:var(--hmd-tw-text-subtle)}.disabled\:text-white:disabled{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-70:disabled{opacity:.7}.disabled\:opacity-\[0\.65\]:disabled{opacity:.65}.group:focus-within .group-focus-within\:flex{display:flex}.group\/guided-comment-qr-input:focus-within .group-focus-within\/guided-comment-qr-input\:border-border-primary-subtler{border-color:var(--hmd-tw-border-primary-subtler)}.group\/main-sidebar:hover .group-hover\/main-sidebar\:pointer-events-none{pointer-events:none}.group:hover .group-hover\:visible{visibility:visible}.group\/breadcrumb:hover .group-hover\/breadcrumb\:invisible{visibility:hidden}.group\/breadcrumb:hover .group-hover\/breadcrumb\:flex{display:flex}.group:hover .group-hover\:\!flex{display:flex!important}.group:hover .group-hover\:flex{display:flex}.group:hover .group-hover\:\!inline-flex{display:inline-flex!important}.group:hover .group-hover\:hidden{display:none}.group\/main-sidebar:hover .group-hover\/main-sidebar\:max-w-\[var\(--preferred-sidebar-width\)\]{max-width:var(--preferred-sidebar-width)}.group:hover .group-hover\:max-w-\[unset\]{max-width:unset}.group\/main-sidebar:hover .group-hover\/main-sidebar\:overflow-visible{overflow:visible}.group:hover .group-hover\:bg-background-subtler{background-color:var(--hmd-tw-background-subtler)}.group:hover .group-hover\:\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity,1))!important}.group:hover .group-hover\:text-text-emphasize{color:var(--hmd-tw-text-emphasize)}.group:hover .group-hover\:text-text-primary{color:var(--hmd-tw-text-primary)}.group\/main-sidebar:hover .group-hover\/main-sidebar\:opacity-0{opacity:0}.group\/main-sidebar:hover .group-hover\/main-sidebar\:delay-100{transition-delay:.1s}.group\/main-sidebar:hover .group-hover\/main-sidebar\:duration-\[400ms\]{transition-duration:.4s}.group:hover .group-hover\:duration-100{transition-duration:.1s}.group:hover .group-hover\:tw-hide{display:none}.group:focus .group-focus\:visible{visibility:visible}.group:focus .group-focus\:\!flex{display:flex!important}.group:focus .group-focus\:flex{display:flex}.group:focus .group-focus\:\!inline-flex{display:inline-flex!important}.group:focus .group-focus\:hidden{display:none}.group:focus .group-focus\:bg-background-subtler{background-color:var(--hmd-tw-background-subtler)}.group:focus .group-focus\:\!text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity,1))!important}.group:focus .group-focus\:text-text-emphasize{color:var(--hmd-tw-text-emphasize)}.group:focus .group-focus\:text-text-primary{color:var(--hmd-tw-text-primary)}.group:focus .group-focus\:tw-hide{display:none}.data-\[side\=top\]\:translate-y-\[-23px\][data-side=top]{--tw-translate-y:-23px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[upgraded\=true\]\:border[data-upgraded=true]{border-width:1px}.data-\[upgraded\=true\]\:border-solid[data-upgraded=true]{border-style:solid}.data-\[upgraded\=true\]\:border-prime-border[data-upgraded=true]{border-color:var(--hmd-tw-prime-border)}.data-\[upgraded\=true\]\:p-\[1px\][data-upgraded=true]{padding:1px}.group\/editor-linenumber-menu[data-side=bottom] .group-data-\[side\=bottom\]\/editor-linenumber-menu\:translate-x-\[-1px\]{--tw-translate-x:-1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/editor-linenumber-menu[data-side=top] .group-data-\[side\=top\]\/editor-linenumber-menu\:translate-x-\[1px\]{--tw-translate-x:1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.radix-highlighted\:bg-gray-600[data-highlighted]{--tw-bg-opacity:1;background-color:rgb(136 136 136/var(--tw-bg-opacity,1))}.radix-highlighted\:outline-none[data-highlighted]{outline:2px solid #0000;outline-offset:2px}@keyframes dialogOut{0%{opacity:1;transform:translateX(-50%) scale(1)}to{opacity:0;transform:translateX(-50%) scale(.95)}}.radix-state-closed\:animate-dialog-out[data-state=closed]{animation:dialogOut .2s ease-in}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.radix-state-closed\:animate-dialog-overlay-out[data-state=closed]{animation:fadeOut .2s ease-in}@keyframes dialogIn{0%{opacity:0;transform:translateX(-50%) scale(.95)}to{opacity:1;transform:translateX(-50%) scale(1)}}.radix-state-open\:animate-dialog-in[data-state=open]{animation:dialogIn .3s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.radix-state-open\:animate-dialog-overlay-in[data-state=open]{animation:fadeIn .3s ease-out}.hocus\:m-0:hover{margin:0}.hocus\:rounded:hover{border-radius:4px}.hocus\:border:hover{border-width:1px}.hocus\:border-2:hover{border-width:2px}.hocus\:border-l-0:hover{border-left-width:0}.hocus\:border-r-\[3px\]:hover{border-right-width:3px}.hocus\:border-solid:hover{border-style:solid}.hocus\:border-dashed:hover{border-style:dashed}.hocus\:\!border-border-primary-subtler:hover{border-color:var(--hmd-tw-border-primary-subtler)!important}.hocus\:\!border-state-danger-border:hover{border-color:var(--hmd-tw-state-danger-border)!important}.hocus\:border-background-primary-default:hover{border-color:var(--hmd-tw-background-primary-default)}.hocus\:border-background-primary-hover:hover{border-color:var(--hmd-tw-background-primary-hover)}.hocus\:border-background-primary-subtler:hover{border-color:var(--hmd-tw-background-primary-subtler)}.hocus\:border-border-primary-default:hover{border-color:var(--hmd-tw-border-primary-default)}.hocus\:border-border-primary-subtler:hover{border-color:var(--hmd-tw-border-primary-subtler)}.hocus\:border-border-subtle:hover{border-color:var(--hmd-tw-border-subtle)}.hocus\:border-border-subtler:hover{border-color:var(--hmd-tw-border-subtler)}.hocus\:border-border-subtlest:hover{border-color:var(--hmd-tw-border-subtlest)}.hocus\:border-element-bg-hover:hover{border-color:var(--hmd-tw-element-bg-hover)}.hocus\:border-element-border-disabled:hover{border-color:var(--hmd-tw-element-border-disabled)}.hocus\:border-element-border-hover:hover{border-color:var(--hmd-tw-element-border-hover)}.hocus\:border-state-danger-bg-hover:hover{border-color:var(--hmd-tw-state-danger-bg-hover)}.hocus\:border-transparent:hover{border-color:#0000}.hocus\:border-white\/80:hover{border-color:#fffc}.hocus\:border-r-border-subtler:hover{border-right-color:var(--hmd-tw-border-subtler)}.hocus\:\!bg-background-primary-default:hover{background-color:var(--hmd-tw-background-primary-default)!important}.hocus\:\!bg-state-danger-bg-hover:hover{background-color:var(--hmd-tw-state-danger-bg-hover)!important}.hocus\:bg-\[\#2b2b2b\]:hover{--tw-bg-opacity:1;background-color:rgb(43 43 43/var(--tw-bg-opacity,1))}.hocus\:bg-\[\#CECECE4D\]:hover{background-color:#cecece4d}.hocus\:bg-background-primary-default:hover{background-color:var(--hmd-tw-background-primary-default)}.hocus\:bg-background-primary-disabled:hover{background-color:var(--hmd-tw-background-primary-disabled)}.hocus\:bg-background-primary-hover:hover{background-color:var(--hmd-tw-background-primary-hover)}.hocus\:bg-background-primary-subtler:hover{background-color:var(--hmd-tw-background-primary-subtler)}.hocus\:bg-background-subtle:hover{background-color:var(--hmd-tw-background-subtle)}.hocus\:bg-background-subtler:hover{background-color:var(--hmd-tw-background-subtler)}.hocus\:bg-element-bg-disabled:hover{background-color:var(--hmd-tw-element-bg-disabled)}.hocus\:bg-element-bg-hover:hover{background-color:var(--hmd-tw-element-bg-hover)}.hocus\:bg-state-danger-bg-hover:hover{background-color:var(--hmd-tw-state-danger-bg-hover)}.hocus\:bg-state-danger-bg-light:hover{background-color:var(--hmd-tw-state-danger-bg-light)}.hocus\:bg-transparent:hover{background-color:initial}.hocus\:bg-white\/80:hover{background-color:#fffc}.hocus\:p-2\.5:hover{padding:10px}.hocus\:\!text-icon-default:hover{color:var(--hmd-tw-icon-default)!important}.hocus\:\!text-icon-emphasize:hover{color:var(--hmd-tw-icon-emphasize)!important}.hocus\:\!text-link-text-hover:hover{color:var(--hmd-tw-link-text-hover)!important}.hocus\:\!text-primary-200:hover{--tw-text-opacity:1!important;color:rgb(178 171 251/var(--tw-text-opacity,1))!important}.hocus\:\!text-text-default:hover{color:var(--hmd-tw-text-default)!important}.hocus\:\!text-text-emphasize:hover{color:var(--hmd-tw-text-emphasize)!important}.hocus\:\!text-text-primary:hover{color:var(--hmd-tw-text-primary)!important}.hocus\:\!text-white:hover{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity,1))!important}.hocus\:text-current:hover{color:currentColor}.hocus\:text-element-text-disabled:hover{color:var(--hmd-tw-element-text-disabled)}.hocus\:text-icon-default:hover{color:var(--hmd-tw-icon-default)}.hocus\:text-icon-emphasize:hover{color:var(--hmd-tw-icon-emphasize)}.hocus\:text-icon-subtle:hover{color:var(--hmd-tw-icon-subtle)}.hocus\:text-inherit:hover{color:inherit}.hocus\:text-link-text-hover:hover{color:var(--hmd-tw-link-text-hover)}.hocus\:text-primary-200:hover{--tw-text-opacity:1;color:rgb(178 171 251/var(--tw-text-opacity,1))}.hocus\:text-text-default:hover{color:var(--hmd-tw-text-default)}.hocus\:text-text-emphasize:hover{color:var(--hmd-tw-text-emphasize)}.hocus\:text-text-primary:hover{color:var(--hmd-tw-text-primary)}.hocus\:text-text-subtle:hover{color:var(--hmd-tw-text-subtle)}.hocus\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hocus\:text-zinc-200:hover{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity,1))}.hocus\:underline:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}.hocus\:\!no-underline:hover{-webkit-text-decoration-line:none!important;text-decoration-line:none!important}.hocus\:no-underline:hover{-webkit-text-decoration-line:none;text-decoration-line:none}.hocus\:shadow-\[0_0_0_2px_\#77777733\]:hover{--tw-shadow:0 0 0 2px #7773;--tw-shadow-colored:0 0 0 2px var(--tw-shadow-color)}.hocus\:shadow-\[0_0_0_2px_\#77777733\]:hover,.hocus\:shadow-\[0_3px_15px_0_\#00000026\]:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hocus\:shadow-\[0_3px_15px_0_\#00000026\]:hover{--tw-shadow:0 3px 15px 0 #00000026;--tw-shadow-colored:0 3px 15px 0 var(--tw-shadow-color)}.hocus\:shadow-none:hover{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hocus\:outline-none:hover{outline:2px solid #0000;outline-offset:2px}.hocus\:brightness-95:hover{--tw-brightness:brightness(.95);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.hocus\:after\:w-0\.5:hover:after{content:var(--tw-content);width:2px}.hocus\:after\:bg-border-bold:hover:after{background-color:var(--hmd-tw-border-bold);content:var(--tw-content)}.disabled\:hocus\:border:hover:disabled{border-width:1px}.disabled\:hocus\:border-solid:hover:disabled{border-style:solid}.disabled\:hocus\:border-\[\#CECECE4D\]:hover:disabled{border-color:#cecece4d}.disabled\:hocus\:border-element-border-disabled:hover:disabled{border-color:var(--hmd-tw-element-border-disabled)}.disabled\:hocus\:border-state-danger-bg-default:hover:disabled{border-color:var(--hmd-tw-state-danger-bg-default)}.disabled\:hocus\:border-transparent:hover:disabled{border-color:#0000}.disabled\:hocus\:\!bg-element-bg-disabled:hover:disabled{background-color:var(--hmd-tw-element-bg-disabled)!important}.disabled\:hocus\:bg-\[\#CECECE4D\]:hover:disabled{background-color:#cecece4d}.disabled\:hocus\:bg-background-subtle:hover:disabled{background-color:var(--hmd-tw-background-subtle)}.disabled\:hocus\:bg-element-bg-disabled:hover:disabled{background-color:var(--hmd-tw-element-bg-disabled)}.disabled\:hocus\:bg-inherit:hover:disabled{background-color:inherit}.disabled\:hocus\:bg-state-danger-bg-default:hover:disabled{background-color:var(--hmd-tw-state-danger-bg-default)}.disabled\:hocus\:bg-transparent:hover:disabled{background-color:initial}.disabled\:hocus\:text-element-text-disabled:hover:disabled{color:var(--hmd-tw-element-text-disabled)}.disabled\:hocus\:text-text-subtle:hover:disabled{color:var(--hmd-tw-text-subtle)}.disabled\:hocus\:text-white:hover:disabled{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.disabled\:hocus\:shadow-none:hover:disabled{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hocus\:m-0:focus{margin:0}.hocus\:rounded:focus{border-radius:4px}.hocus\:border:focus{border-width:1px}.hocus\:border-2:focus{border-width:2px}.hocus\:border-l-0:focus{border-left-width:0}.hocus\:border-r-\[3px\]:focus{border-right-width:3px}.hocus\:border-solid:focus{border-style:solid}.hocus\:border-dashed:focus{border-style:dashed}.hocus\:\!border-border-primary-subtler:focus{border-color:var(--hmd-tw-border-primary-subtler)!important}.hocus\:\!border-state-danger-border:focus{border-color:var(--hmd-tw-state-danger-border)!important}.hocus\:border-background-primary-default:focus{border-color:var(--hmd-tw-background-primary-default)}.hocus\:border-background-primary-hover:focus{border-color:var(--hmd-tw-background-primary-hover)}.hocus\:border-background-primary-subtler:focus{border-color:var(--hmd-tw-background-primary-subtler)}.hocus\:border-border-primary-default:focus{border-color:var(--hmd-tw-border-primary-default)}.hocus\:border-border-primary-subtler:focus{border-color:var(--hmd-tw-border-primary-subtler)}.hocus\:border-border-subtle:focus{border-color:var(--hmd-tw-border-subtle)}.hocus\:border-border-subtler:focus{border-color:var(--hmd-tw-border-subtler)}.hocus\:border-border-subtlest:focus{border-color:var(--hmd-tw-border-subtlest)}.hocus\:border-element-bg-hover:focus{border-color:var(--hmd-tw-element-bg-hover)}.hocus\:border-element-border-disabled:focus{border-color:var(--hmd-tw-element-border-disabled)}.hocus\:border-element-border-hover:focus{border-color:var(--hmd-tw-element-border-hover)}.hocus\:border-state-danger-bg-hover:focus{border-color:var(--hmd-tw-state-danger-bg-hover)}.hocus\:border-transparent:focus{border-color:#0000}.hocus\:border-white\/80:focus{border-color:#fffc}.hocus\:border-r-border-subtler:focus{border-right-color:var(--hmd-tw-border-subtler)}.hocus\:\!bg-background-primary-default:focus{background-color:var(--hmd-tw-background-primary-default)!important}.hocus\:\!bg-state-danger-bg-hover:focus{background-color:var(--hmd-tw-state-danger-bg-hover)!important}.hocus\:bg-\[\#2b2b2b\]:focus{--tw-bg-opacity:1;background-color:rgb(43 43 43/var(--tw-bg-opacity,1))}.hocus\:bg-\[\#CECECE4D\]:focus{background-color:#cecece4d}.hocus\:bg-background-primary-default:focus{background-color:var(--hmd-tw-background-primary-default)}.hocus\:bg-background-primary-disabled:focus{background-color:var(--hmd-tw-background-primary-disabled)}.hocus\:bg-background-primary-hover:focus{background-color:var(--hmd-tw-background-primary-hover)}.hocus\:bg-background-primary-subtler:focus{background-color:var(--hmd-tw-background-primary-subtler)}.hocus\:bg-background-subtle:focus{background-color:var(--hmd-tw-background-subtle)}.hocus\:bg-background-subtler:focus{background-color:var(--hmd-tw-background-subtler)}.hocus\:bg-element-bg-disabled:focus{background-color:var(--hmd-tw-element-bg-disabled)}.hocus\:bg-element-bg-hover:focus{background-color:var(--hmd-tw-element-bg-hover)}.hocus\:bg-state-danger-bg-hover:focus{background-color:var(--hmd-tw-state-danger-bg-hover)}.hocus\:bg-state-danger-bg-light:focus{background-color:var(--hmd-tw-state-danger-bg-light)}.hocus\:bg-transparent:focus{background-color:initial}.hocus\:bg-white\/80:focus{background-color:#fffc}.hocus\:p-2\.5:focus{padding:10px}.hocus\:\!text-icon-default:focus{color:var(--hmd-tw-icon-default)!important}.hocus\:\!text-icon-emphasize:focus{color:var(--hmd-tw-icon-emphasize)!important}.hocus\:\!text-link-text-hover:focus{color:var(--hmd-tw-link-text-hover)!important}.hocus\:\!text-primary-200:focus{--tw-text-opacity:1!important;color:rgb(178 171 251/var(--tw-text-opacity,1))!important}.hocus\:\!text-text-default:focus{color:var(--hmd-tw-text-default)!important}.hocus\:\!text-text-emphasize:focus{color:var(--hmd-tw-text-emphasize)!important}.hocus\:\!text-text-primary:focus{color:var(--hmd-tw-text-primary)!important}.hocus\:\!text-white:focus{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity,1))!important}.hocus\:text-current:focus{color:currentColor}.hocus\:text-element-text-disabled:focus{color:var(--hmd-tw-element-text-disabled)}.hocus\:text-icon-default:focus{color:var(--hmd-tw-icon-default)}.hocus\:text-icon-emphasize:focus{color:var(--hmd-tw-icon-emphasize)}.hocus\:text-icon-subtle:focus{color:var(--hmd-tw-icon-subtle)}.hocus\:text-inherit:focus{color:inherit}.hocus\:text-link-text-hover:focus{color:var(--hmd-tw-link-text-hover)}.hocus\:text-primary-200:focus{--tw-text-opacity:1;color:rgb(178 171 251/var(--tw-text-opacity,1))}.hocus\:text-text-default:focus{color:var(--hmd-tw-text-default)}.hocus\:text-text-emphasize:focus{color:var(--hmd-tw-text-emphasize)}.hocus\:text-text-primary:focus{color:var(--hmd-tw-text-primary)}.hocus\:text-text-subtle:focus{color:var(--hmd-tw-text-subtle)}.hocus\:text-white:focus{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hocus\:text-zinc-200:focus{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity,1))}.hocus\:underline:focus{-webkit-text-decoration-line:underline;text-decoration-line:underline}.hocus\:\!no-underline:focus{-webkit-text-decoration-line:none!important;text-decoration-line:none!important}.hocus\:no-underline:focus{-webkit-text-decoration-line:none;text-decoration-line:none}.hocus\:shadow-\[0_0_0_2px_\#77777733\]:focus{--tw-shadow:0 0 0 2px #7773;--tw-shadow-colored:0 0 0 2px var(--tw-shadow-color)}.hocus\:shadow-\[0_0_0_2px_\#77777733\]:focus,.hocus\:shadow-\[0_3px_15px_0_\#00000026\]:focus{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hocus\:shadow-\[0_3px_15px_0_\#00000026\]:focus{--tw-shadow:0 3px 15px 0 #00000026;--tw-shadow-colored:0 3px 15px 0 var(--tw-shadow-color)}.hocus\:shadow-none:focus{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hocus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.hocus\:brightness-95:focus{--tw-brightness:brightness(.95);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.hocus\:after\:w-0\.5:focus:after{content:var(--tw-content);width:2px}.hocus\:after\:bg-border-bold:focus:after{background-color:var(--hmd-tw-border-bold);content:var(--tw-content)}.disabled\:hocus\:border:focus:disabled{border-width:1px}.disabled\:hocus\:border-solid:focus:disabled{border-style:solid}.disabled\:hocus\:border-\[\#CECECE4D\]:focus:disabled{border-color:#cecece4d}.disabled\:hocus\:border-element-border-disabled:focus:disabled{border-color:var(--hmd-tw-element-border-disabled)}.disabled\:hocus\:border-state-danger-bg-default:focus:disabled{border-color:var(--hmd-tw-state-danger-bg-default)}.disabled\:hocus\:border-transparent:focus:disabled{border-color:#0000}.disabled\:hocus\:\!bg-element-bg-disabled:focus:disabled{background-color:var(--hmd-tw-element-bg-disabled)!important}.disabled\:hocus\:bg-\[\#CECECE4D\]:focus:disabled{background-color:#cecece4d}.disabled\:hocus\:bg-background-subtle:focus:disabled{background-color:var(--hmd-tw-background-subtle)}.disabled\:hocus\:bg-element-bg-disabled:focus:disabled{background-color:var(--hmd-tw-element-bg-disabled)}.disabled\:hocus\:bg-inherit:focus:disabled{background-color:inherit}.disabled\:hocus\:bg-state-danger-bg-default:focus:disabled{background-color:var(--hmd-tw-state-danger-bg-default)}.disabled\:hocus\:bg-transparent:focus:disabled{background-color:initial}.disabled\:hocus\:text-element-text-disabled:focus:disabled{color:var(--hmd-tw-element-text-disabled)}.disabled\:hocus\:text-text-subtle:focus:disabled{color:var(--hmd-tw-text-subtle)}.disabled\:hocus\:text-white:focus:disabled{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.disabled\:hocus\:shadow-none:focus:disabled{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.group:focus .group-hocus\:flex,.group:hover .group-hocus\:flex{display:flex}@media (max-width:767px){.max-\[767px\]\:hidden{display:none}}@media (min-width:600px){.xs\:m-\[30px\]{margin:30px}.xs\:my-\[1px\]{margin-bottom:1px;margin-top:1px}.xs\:block{display:block}.xs\:\!flex{display:flex!important}.xs\:grid{display:grid}.xs\:hidden{display:none}.xs\:h-\[calc\(100dvh-60px\)\]{height:calc(100dvh - 60px)}.xs\:flex-grow{flex-grow:1}.xs\:grid-cols-\[auto_auto_minmax\(0\2c 1fr\)\]{grid-template-columns:auto auto minmax(0,1fr)}.xs\:grid-cols-\[auto_minmax\(0\2c 1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.xs\:p-6{padding:24px}.xs\:py-0\.5{padding-bottom:2px;padding-top:2px}.xs\:py-1\.5{padding-bottom:6px;padding-top:6px}.xs\:pb-4{padding-bottom:16px}.xs\:pb-4\.5{padding-bottom:18px}.xs\:pl-2{padding-left:8px}.xs\:pt-2\.5{padding-top:10px}}@media (min-width:640px){.sm\:mt-7\.5{margin-top:30px}.sm\:grid{display:grid}.sm\:w-100{width:400px}.sm\:w-150{width:600px}.sm\:w-224{width:900px}.sm\:max-w-\[400px\]{max-width:400px}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:gap-0{gap:0}}@media (min-width:768px){.md\:fixed{position:fixed}.md\:relative{position:relative}.md\:order-1{order:1}.md\:order-2{order:2}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-8{grid-column:span 8/span 8}.md\:col-start-2{grid-column-start:2}.md\:m-\[3\.5px\]{margin:3.5px}.md\:mx-5{margin-left:20px;margin-right:20px}.md\:my-5{margin-bottom:20px;margin-top:20px}.md\:-mr-2{margin-right:-8px}.md\:mb-0{margin-bottom:0}.md\:mb-1{margin-bottom:4px}.md\:mr-1\.5{margin-right:6px}.md\:mt-0{margin-top:0}.md\:\!block{display:block!important}.md\:block{display:block}.md\:\!inline-block{display:inline-block!important}.md\:\!flex{display:flex!important}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:grid{display:grid}.md\:hidden{display:none}.md\:h-0{height:0}.md\:h-3\.5{height:14px}.md\:h-6{height:24px}.md\:h-9{height:36px}.md\:h-\[calc\(100dvh-280px\)\]{height:calc(100dvh - 280px)}.md\:max-h-full{max-height:100%}.md\:min-h-5{min-height:20px}.md\:w-3\.5{width:14px}.md\:w-6{width:24px}.md\:w-80{width:320px}.md\:w-9{width:36px}.md\:w-\[121px\]{width:121px}.md\:w-\[175px\]{width:175px}.md\:w-\[300px\]{width:300px}.md\:w-\[calc\(var\(--radix-select-trigger-width\)\+140px\)\]{width:calc(var(--radix-select-trigger-width) + 140px)}.md\:w-\[min\(432px\2c 100\%\)\]{width:min(432px,100%)}.md\:w-auto{width:auto}.md\:w-fit{width:fit-content}.md\:w-full{width:100%}.md\:min-w-\[300px\]{min-width:300px}.md\:max-w-\[270px\]{max-width:270px}.md\:max-w-\[300px\]{max-width:300px}.md\:cursor-zoom-in{cursor:zoom-in}.md\:cursor-zoom-out{cursor:zoom-out}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:grid-cols-\[160px_1fr\]{grid-template-columns:160px 1fr}.md\:grid-cols-\[172px\2c minmax\(0\2c 760px\)\]{grid-template-columns:172px minmax(0,760px)}.md\:grid-cols-\[1fr_max\(30\%\2c 300px\)\]{grid-template-columns:1fr max(30%,300px)}.md\:grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.md\:grid-cols-\[minmax\(160px\2c 210px\)_1fr\]{grid-template-columns:minmax(160px,210px) 1fr}.md\:grid-cols-\[minmax\(200px\2c 1fr\)_minmax\(0\2c 180px\)_minmax\(0\2c 270px\)\]{grid-template-columns:minmax(200px,1fr) minmax(0,180px) minmax(0,270px)}.md\:grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:flex-nowrap{flex-wrap:nowrap}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}.md\:justify-start{justify-content:flex-start}.md\:justify-end{justify-content:flex-end}.md\:gap-0\.5{gap:2px}.md\:border-r{border-right-width:1px}.md\:\!p-0{padding:0!important}.md\:p-1\.5{padding:6px}.md\:p-5{padding:20px}.md\:\!px-1\.5{padding-left:6px!important;padding-right:6px!important}.md\:px-1{padding-left:4px;padding-right:4px}.md\:px-20{padding-left:80px;padding-right:80px}.md\:px-3{padding-left:12px;padding-right:12px}.md\:px-5{padding-left:20px;padding-right:20px}.md\:px-6{padding-left:24px;padding-right:24px}.md\:px-8{padding-left:32px;padding-right:32px}.md\:py-0{padding-bottom:0;padding-top:0}.md\:py-0\.5{padding-bottom:2px;padding-top:2px}.md\:py-4{padding-bottom:16px;padding-top:16px}.md\:py-7\.5{padding-bottom:30px;padding-top:30px}.md\:py-\[3px\]{padding-bottom:3px;padding-top:3px}.md\:pb-6{padding-bottom:24px}.md\:pl-\[22px\]{padding-left:22px}.md\:pr-\[25px\]{padding-right:25px}.md\:pt-0{padding-top:0}.md\:pt-4{padding-top:16px}.md\:pt-5{padding-top:20px}.md\:pt-\[152px\]{padding-top:152px}.md\:text-3{font-size:12px}.md\:text-text-subtle{color:var(--hmd-tw-text-subtle)}.md\:opacity-100{opacity:1}.md\:hocus\:\!bg-element-bg-hover:focus,.md\:hocus\:\!bg-element-bg-hover:hover{background-color:var(--hmd-tw-element-bg-hover)!important}.group:hover .md\:group-hocus\:visible{visibility:visible}.group:hover .md\:group-hocus\:flex{display:flex}.group:focus .md\:group-hocus\:visible{visibility:visible}.group:focus .md\:group-hocus\:flex{display:flex}}@media (min-width:1024px){.lg\:static{position:static}.lg\:relative{position:relative}.lg\:order-none{order:0}.lg\:mr-1\.5{margin-right:6px}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:w-auto{width:auto}.lg\:w-fit{width:fit-content}.lg\:max-w-full{max-width:100%}.lg\:grid-cols-\[auto_auto_minmax\(0\2c 1fr\)_160px\]{grid-template-columns:auto auto minmax(0,1fr) 160px}.lg\:grid-cols-\[auto_minmax\(30px\2c 176px\)_minmax\(0\2c 276px\)\]{grid-template-columns:auto minmax(30px,176px) minmax(0,276px)}.lg\:grid-cols-\[auto_minmax\(30px\2c 176px\)_minmax\(0\2c auto\)\]{grid-template-columns:auto minmax(30px,176px) minmax(0,auto)}.lg\:grid-cols-\[minmax\(0\2c 176px\)_minmax\(20px\2c 100px\)\]{grid-template-columns:minmax(0,176px) minmax(20px,100px)}.lg\:grid-cols-\[minmax\(20px\2c 100px\)\]{grid-template-columns:minmax(20px,100px)}.lg\:grid-cols-\[minmax\(80px\2c 1fr\)_minmax\(0\2c max-content\)\]{grid-template-columns:minmax(80px,1fr) minmax(0,max-content)}.lg\:grid-cols-\[repeat\(4\2c auto\)_max-content\]{grid-template-columns:repeat(4,auto) max-content}.lg\:flex-row{flex-direction:row}.lg\:flex-col{flex-direction:column}.lg\:items-center{align-items:center}.lg\:justify-start{justify-content:flex-start}.lg\:justify-end{justify-content:flex-end}.lg\:justify-center{justify-content:center}.lg\:gap-0{gap:0}.lg\:gap-1\.5{gap:6px}.lg\:gap-3{gap:12px}.lg\:gap-6{gap:24px}.lg\:p-0{padding:0}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-10{padding-left:40px;padding-right:40px}.lg\:py-0{padding-bottom:0;padding-top:0}.lg\:py-1{padding-bottom:4px;padding-top:4px}.lg\:pl-1\.5{padding-left:6px}.lg\:pr-0{padding-right:0}.lg\:drop-shadow-none{--tw-drop-shadow:drop-shadow(0 0 #0000);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}}@media (min-width:1200px){.xl\:-ml-7{margin-left:-28px}.xl\:grid{display:grid}.xl\:w-\[calc\(100\%\+28px\)\]{width:calc(100% + 28px)}.xl\:max-w-full{max-width:100%}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-\[0_calc\(33\.3\%-8\.4px\)_1fr\]{grid-template-columns:0 calc(33.3% - 8.4px) 1fr}.xl\:grid-cols-\[0_repeat\(2\2c 50\%\)\]{grid-template-columns:0 repeat(2,50%)}.xl\:grid-cols-\[100px_calc\(33\.3\%-41\.7px\)_1fr\]{grid-template-columns:100px calc(33.3% - 41.7px) 1fr}.xl\:grid-cols-\[100px_repeat\(2\2c calc\(50\%-50px\)\)\]{grid-template-columns:100px repeat(2,calc(50% - 50px))}.xl\:grid-cols-\[1fr\]{grid-template-columns:1fr}.xl\:grid-cols-\[calc\(25\%\+50px\)_1fr\]{grid-template-columns:calc(25% + 50px) 1fr}.xl\:grid-cols-\[calc\(25\%-50px\)_1fr\]{grid-template-columns:calc(25% - 50px) 1fr}.xl\:grid-cols-\[calc\(50\%-100px\)_1fr\]{grid-template-columns:calc(50% - 100px) 1fr}.xl\:grid-cols-\[repeat\(2\2c 50\%\)\]{grid-template-columns:repeat(2,50%)}.xl\:gap-8{gap:32px}.xl\:overflow-hidden{overflow:hidden}.xl\:pl-7{padding-left:28px}}@media (min-width:1536px){.\32xl\:gap-10{gap:40px}}.\[\&\.active\>a\]\:\!bg-background-subtle.active>a{background-color:var(--hmd-tw-background-subtle)!important}.\[\&\.active\]\:bg-element-bg-hover.active{background-color:var(--hmd-tw-element-bg-hover)}.\[\&\.focus\]\:\!text-icon-default.focus{color:var(--hmd-tw-icon-default)!important}.\[\&\.modal-header\]\:border-b-border-default.modal-header{border-bottom-color:var(--hmd-tw-border-default)}.\[\&\.modal-header\]\:bg-background-default.modal-header{background-color:var(--hmd-tw-background-default)}.\[\&\.modal-header\]\:bg-background-subtler.modal-header{background-color:var(--hmd-tw-background-subtler)}.\[\&\.modal-title\]\:h-auto.modal-title{height:auto}.\[\&\.modal-title\]\:leading-\[22px\].modal-title{line-height:22px}.\[\&\:not\(\.has-search-content\)\>span\]\:gap-2\.5:not(.has-search-content)>span{gap:10px}.\[\&\:not\(\.has-search-content\)\>span\]\:px-3:not(.has-search-content)>span{padding-left:12px;padding-right:12px}.\[\&\:not\(\.has-search-content\)_input\]\:text-normal:not(.has-search-content) input{font-size:14px}.\[\&\:not\(\.has-search-content\)_input\]\:font-normal:not(.has-search-content) input{font-weight:400}.\[\&\:not\(\.has-search-content\)_input\]\:leading-normal:not(.has-search-content) input{line-height:20px}.\[\&\:not\(\:last-child\)\]\:border-y:not(:last-child){border-bottom-width:1px;border-top-width:1px}.\[\&\:not\(\[data-disabled\]\)\+label\]\:cursor-pointer:not([data-disabled])+label{cursor:pointer}.\[\&\:not\(\[data-image-error\]\)\]\:cursor-zoom-in:not([data-image-error]){cursor:zoom-in}.\[\&\>\*\]\:pointer-events-none>*{pointer-events:none}.\[\&\>\*\]\:whitespace-nowrap>*{white-space:nowrap}.\[\&\>\*\]\:px-2>*{padding-left:8px;padding-right:8px}.\[\&\>\*\]\:px-4>*{padding-left:16px;padding-right:16px}.\[\&\>\*\]\:py-2\.5>*{padding-bottom:10px;padding-top:10px}.\[\&\>\*\]\:py-3>*{padding-bottom:12px;padding-top:12px}.\[\&\>\*\]\:py-4>*{padding-bottom:16px;padding-top:16px}.\[\&\>\*\]\:align-middle>*{vertical-align:middle}.\[\&\>\*\]\:font-semibold>*{font-weight:600}.\[\&\>\.dropdown-menu\]\:\!absolute>.dropdown-menu{position:absolute!important}.\[\&\>\.ph-fill\]\:\!text-inherit>.ph-fill{color:inherit!important}.\[\&\>\.ph\]\:m-0\.5>.ph{margin:2px}.\[\&\>\.ph\]\:text-\[20px\]>.ph{font-size:20px}.\[\&\>\.ph\]\:leading-\[20px\]>.ph{line-height:20px}.\[\&\>\.ph\]\:\!text-inherit>.ph{color:inherit!important}.\[\&\>\.text-danger\]\:\!text-state-danger-text>.text-danger{color:var(--hmd-tw-state-danger-text)!important}.\[\&\>\.ui-profile-overview-card\>\.profile-overview-body_\.content_\.preview\]\:text-text-subtle>.ui-profile-overview-card>.profile-overview-body .content .preview,.\[\&\>\.ui-profile-overview-card\>\.profile-overview-body_\.info_\*\]\:text-text-subtle>.ui-profile-overview-card>.profile-overview-body .info *{color:var(--hmd-tw-text-subtle)}.\[\&\>\.ui-profile-overview-card\>\.profile-overview-body_a\.title\]\:text-h3>.ui-profile-overview-card>.profile-overview-body a.title{font-size:18px}.\[\&\>\.ui-profile-overview-card\>\.profile-overview-body_a\.title\]\:font-bold>.ui-profile-overview-card>.profile-overview-body a.title{font-weight:700}.\[\&\>\.ui-profile-overview-card\>\.profile-overview-body_a\.title\]\:leading-h3>.ui-profile-overview-card>.profile-overview-body a.title{line-height:22px}.\[\&\>\.ui-profile-overview-card\>\.profile-overview-body_a\.title\]\:text-text-default>.ui-profile-overview-card>.profile-overview-body a.title{color:var(--hmd-tw-text-default)}.\[\&\>\.ui-profile-overview-card\]\:m-0>.ui-profile-overview-card{margin:0}.\[\&\>\.ui-profile-overview-card\]\:rounded-none>.ui-profile-overview-card{border-radius:0}.\[\&\>\.ui-profile-overview-card\]\:border-none>.ui-profile-overview-card{border-style:none}.\[\&\>\.ui-profile-overview-card\]\:bg-background-subtler>.ui-profile-overview-card{background-color:var(--hmd-tw-background-subtler)}.\[\&\>\.ui-profile-overview-card\]\:\[overflow-wrap\:anywhere\]>.ui-profile-overview-card{overflow-wrap:anywhere}.\[\&\>a\:focus\]\:text-link-text-hover>a:focus{color:var(--hmd-tw-link-text-hover)}.\[\&\>a\:focus\]\:text-white>a:focus{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.\[\&\>a\:focus\]\:no-underline>a:focus{-webkit-text-decoration-line:none;text-decoration-line:none}.\[\&\>a\:hover\]\:text-link-text-hover>a:hover{color:var(--hmd-tw-link-text-hover)}.\[\&\>a\:hover\]\:text-white>a:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.\[\&\>a\:hover\]\:no-underline>a:hover{-webkit-text-decoration-line:none;text-decoration-line:none}.\[\&\>a\]\:text-link-text-default>a{color:var(--hmd-tw-link-text-default)}.\[\&\>a\]\:text-white>a{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.\[\&\>a\]\:underline>a{-webkit-text-decoration-line:underline;text-decoration-line:underline}.\[\&\>del\]\:\!bg-text-mark-diff-del>del{background-color:var(--hmd-tw-text-mark-diff-del)!important}.\[\&\>del\]\:\!no-underline>del{-webkit-text-decoration-line:none!important;text-decoration-line:none!important}.\[\&\>ins\]\:\!bg-text-mark-diff-ins>ins{background-color:var(--hmd-tw-text-mark-diff-ins)!important}.\[\&\>ins\]\:\!no-underline>ins{-webkit-text-decoration-line:none!important;text-decoration-line:none!important}.\[\&\[data-disabled\]\[data-state\=\"checked\"\]\]\:border-primary-600-60[data-disabled][data-state=checked]{border-color:#453aff99}.\[\&\[data-disabled\]\[data-state\=\"checked\"\]\]\:bg-element-bg-disabled[data-disabled][data-state=checked]{background-color:var(--hmd-tw-element-bg-disabled)}.\[\&\[data-disabled\]\]\:border-element-border-disabled[data-disabled]{border-color:var(--hmd-tw-element-border-disabled)}.\[\&\[data-disabled\]\]\:bg-element-bg-disabled[data-disabled]{background-color:var(--hmd-tw-element-bg-disabled)}.\[\&\[data-state\=\"checked\"\]\]\:border-background-primary-default[data-state=checked]{border-color:var(--hmd-tw-background-primary-default)}.\[\&_\.highlighted-keyword\]\:bg-state-warning-default .highlighted-keyword{background-color:var(--hmd-tw-state-warning-default)}.\[\&_\.highlighted-keyword\]\:text-\[\#000\] .highlighted-keyword{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.\[\&_\.ph-fill\]\:text-\[20px\] .ph-fill{font-size:20px}.\[\&_\.ph-fill\]\:leading-lg .ph-fill{line-height:20px}.\[\&_\.ph\]\:text-\[20px\] .ph{font-size:20px}.\[\&_\.ph\]\:leading-lg .ph{line-height:20px}.\[\&_\.ui-bookmark-button\:hover\>\*\]\:\!text-text-default .ui-bookmark-button:hover>*,.\[\&_\.ui-bookmark-button\:hover\]\:\!text-text-default .ui-bookmark-button:hover{color:var(--hmd-tw-text-default)!important}.\[\&_\.ui-bookmark-button\>\*\]\:\!text-text-subtle .ui-bookmark-button>*,.\[\&_\.ui-bookmark-button\]\:\!text-text-subtle .ui-bookmark-button{color:var(--hmd-tw-text-subtle)!important}.\[\&_\.ui-like-button\:hover\>\*\]\:\!text-text-default .ui-like-button:hover>*,.\[\&_\.ui-like-button\:hover\]\:\!text-text-default .ui-like-button:hover{color:var(--hmd-tw-text-default)!important}.\[\&_\.ui-like-button\>\*\]\:\!text-text-subtle .ui-like-button>*,.\[\&_\.ui-like-button\]\:\!text-text-subtle .ui-like-button{color:var(--hmd-tw-text-subtle)!important}.\[\&_a\:focus\]\:bg-element-bg-hover a:focus{background-color:var(--hmd-tw-element-bg-hover)}.\[\&_a\:focus\]\:text-icon-emphasize a:focus{color:var(--hmd-tw-icon-emphasize)}.\[\&_a\:focus\]\:no-underline a:focus{-webkit-text-decoration-line:none;text-decoration-line:none}.\[\&_a\:hover\]\:bg-element-bg-hover a:hover{background-color:var(--hmd-tw-element-bg-hover)}.\[\&_a\:hover\]\:text-icon-emphasize a:hover{color:var(--hmd-tw-icon-emphasize)}.\[\&_a\:hover\]\:no-underline a:hover{-webkit-text-decoration-line:none;text-decoration-line:none}.\[\&_a\]\:h-7 a{height:28px}.\[\&_a\]\:w-7 a{width:28px}.\[\&_a\]\:min-w-\[28px\] a{min-width:28px}.\[\&_a\]\:cursor-pointer a{cursor:pointer}.\[\&_a\]\:rounded a{border-radius:4px}.\[\&_a\]\:p-1\.5 a{padding:6px}.\[\&_a\]\:text-icon-default a{color:var(--hmd-tw-icon-default)}.\[\&_a\]\:text-link-text-default a{color:var(--hmd-tw-link-text-default)}.\[\&_a\]\:hover\:text-text-subtle:hover a,.\[\&_a\]\:text-text-subtle a{color:var(--hmd-tw-text-subtle)}.\[\&_a\]\:hocus\:text-link-text-hover:hover a{color:var(--hmd-tw-link-text-hover)}.\[\&_a\]\:hocus\:text-text-subtle:hover a{color:var(--hmd-tw-text-subtle)}.\[\&_a\]\:hocus\:text-link-text-hover:focus a{color:var(--hmd-tw-link-text-hover)}.\[\&_a\]\:hocus\:text-text-subtle:focus a{color:var(--hmd-tw-text-subtle)}.\[\&_del\]\:bg-text-mark-diff-del del{background-color:var(--hmd-tw-text-mark-diff-del)}.\[\&_ins\]\:bg-text-mark-diff-ins ins{background-color:var(--hmd-tw-text-mark-diff-ins)}.\[\&_ins\]\:no-underline ins{-webkit-text-decoration-line:none;text-decoration-line:none}.code-toolbar{display:none}.ps-root{-webkit-font-smoothing:antialiased!important;font-family:KaTeX_Main,Times New Roman,Times,serif;font-size:1em;font-weight:100}.ps-root .ps-algorithm{border-top:3px solid #000;margin:.8em 0}.ps-root .ps-algorithm,.ps-root .ps-algorithm.with-caption>.ps-line:first-child{border-bottom:2px solid #000}.ps-root .katex{font-size:1em;text-indent:0}.ps-root .MathJax,.ps-root .MathJax_CHTML{font-size:1em!important;text-indent:0}.ps-root .ps-line{line-height:1.2;margin:0;padding:0}.ps-root .ps-funcname{font-family:KaTeX_Main,Times New Roman,Times,serif;font-style:normal;font-variant:small-caps;font-weight:400;text-transform:none}.ps-root .ps-keyword{font-weight:700}.ps-root .ps-comment,.ps-root .ps-keyword{font-family:KaTeX_Main,Times New Roman,Times,serif;font-style:normal;font-variant:normal;text-transform:none}.ps-root .ps-comment{font-weight:400}.ps-root .ps-linenum{display:inline-block;font-size:.8em;line-height:1em;padding-right:.3em;position:relative;text-align:right;width:1.6em}.ps-root .ps-algorithmic.with-linenum .ps-line.ps-code{text-indent:-1.6em}.ps-root .ps-algorithmic.with-linenum .ps-line.ps-code>span{text-indent:0}.ps-root .ps-algorithmic.with-scopelines div.ps-block{border-left-style:solid;border-left-width:.1em;padding-left:.6em}.ps-root .ps-algorithmic.with-scopelines>div.ps-block{border-left:none}
    </style>
    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
    	<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js" integrity="sha256-3Jy/GbSLrg0o9y5Z5n1uw0qxZECH7C6OQpVBgNFYa0g=" crossorigin="anonymous"></script>
    	<script src="https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js" integrity="sha256-g6iAfvZp+nDQ2TdTR/VVKJf3bGro4ub5fvWSWVRi2NE=" crossorigin="anonymous"></script>
		<script src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.5.9/es5-shim.min.js" integrity="sha256-8E4Is26QH0bD52WoQpcB+R/tcWQtpzlCojrybUd7Mxo=" crossorigin="anonymous"></script>
    <![endif]-->
</head>

<body>
    <div id="doc" class="markdown-body container-fluid comment-inner comment-enabled" data-hard-breaks="true" lang="en-US" style=""><p><strong><span>Document number</span></strong><span>: P3111R8.</span><br>
<strong><span>Date</span></strong><span>: 2025-06-19.</span><br>
<strong><span>Authors</span></strong><span>: Gonzalo Brito Gadeschi, Simon Cooksey, Daniel Lustig.</span><br>
<strong><span>Reply to</span></strong><span>: Gonzalo Brito Gadeschi &lt;gonzalob _at_ </span><a href="http://nvidia.com" target="_blank" rel="noopener"><span>nvidia.com</span></a><span>&gt;.</span><br>
<strong><span>Audience</span></strong><span>: LWG.</span></p><style data-custom-style="">
ins {
    color:green;
    text-decoration:underline;
}
del {
    color:red;
    background-color:yellow;
    text-decoration:line-through;
}
bdi {
    color:blue;
}
.markdown-body {
    max-width: 900px;
    text-align: justify;
}
</style><p><big><span>Table of Contents</span></big></p><p><span class="toc"><ul>
<li><a href="#Atomic-Reduction-Operations" title="Atomic Reduction Operations">Atomic Reduction Operations</a><ul>
<li><a href="#Introduction" title="Introduction">Introduction</a></li>
<li><a href="#Motivation" title="Motivation">Motivation</a><ul>
<li><a href="#Hardware-Exposure" title="Hardware Exposure">Hardware Exposure</a></li>
<li><a href="#Performance" title="Performance">Performance</a></li>
<li><a href="#Functionality" title="Functionality">Functionality</a></li>
</ul>
</li>
<li><a href="#Design" title="Design">Design</a><ul>
<li><a href="#Implementation-impact" title="Implementation impact">Implementation impact</a></li>
<li><a href="#Design-Alternatives" title="Design Alternatives">Design Alternatives</a></li>
<li><a href="#API-Naming" title="API Naming">API Naming</a></li>
<li><a href="#Definition-Naming" title="Definition Naming">Definition Naming</a></li>
<li><a href="#Memory-Ordering" title="Memory Ordering">Memory Ordering</a></li>
<li><a href="#Formalization" title="Formalization">Formalization</a></li>
</ul>
</li>
<li><a href="#Wording" title="Wording">Wording</a><ul>
<li><a href="#Forward-progress" title="Forward progress">Forward progress</a></li>
<li><a href="#Atomic-Modify-Write-Operation-APIs" title="Atomic Modify-Write Operation APIs">Atomic Modify-Write Operation APIs</a></li>
<li><a href="#No-acquire-sequences-support" title="No acquire sequences support">No acquire sequences support</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</span></p><p><strong><span>Changelog</span></strong></p><ul>
<li><strong><span>R8</span></strong><span>:</span>
<ul>
<li><span>Update fp min/max to latest P3008 revision.</span></li>
</ul>
</li>
<li><strong><span>R7</span></strong><span>: CWG saw this in Sofia and with the following changes made in R7 does not need to see it again:</span>
<ul>
<li><span>Remove review notes.</span></li>
<li><span>Change section order to match standard.</span></li>
<li><span>Remove unnecessary wording added by P3008.</span></li>
</ul>
</li>
<li><strong><span>R6</span></strong>
<ul>
<li><span>Fix typo: PPC64LE.</span></li>
<li><span>Add implementation recommendations on PPC64LE.</span></li>
<li><span>Add definition of atomic modify-write operation (previously atomic reduction operation) to wording of </span><a href="https://eel.is/c++draft/atomics.order" target="_blank" rel="noopener"><span>[atomics.order]</span></a><span>.</span></li>
<li><span>Update definition name from "atomic reduction operation" to "atomic modify-write operation".</span></li>
<li><span>Cleanup how the functionality of P3008 is incorporated into the wording (it already was).</span></li>
</ul>
</li>
<li><strong><span>R5: post-Austria</span></strong><span>:</span>
<ul>
<li><span>Import </span><code>constexpr</code><span> atomics update from </span><a href="http://wg21.link/p3309" target="_blank" rel="noopener"><span>P3309</span></a><span>, i.e., new </span><code>store_key</code><span> atomics are </span><code>constexpr</code><span> in the same cases as </span><code>fetch_key</code><span>.</span></li>
<li><span>Conditionally import floating-point atomic min/max from </span><a href="http://wg21.link/p3008" target="_blank" rel="noopener"><span>P3008</span></a><span>.</span></li>
<li><span>Add feature testing macro.</span></li>
<li><span>Move </span><code>compare_store</code><span> into a separate paper: </span><a href="http://wg21.link/p3644" target="_blank" rel="noopener"><span>D3644R0</span></a><span>.</span></li>
<li><span>LEWG </span><strong><span>POLL</span></strong><span>: In P3111 Change the name from </span><code>reduce_*</code><span> to </span><code>store_*</code><span> and </span><code>atomic_reduce_*</code><span> to </span><code>atomic_store_*</code>
<table>
<thead>
<tr>
<th><span>SF</span></th>
<th><span>F</span></th>
<th><span>N</span></th>
<th><span>A</span></th>
<th><span>SA</span></th>
</tr>
</thead>
<tbody>
<tr>
<td><span>6</span></td>
<td><span>8</span></td>
<td><span>0</span></td>
<td><span>0</span></td>
<td><span>0</span></td>
</tr>
</tbody>
</table>
<ul>
<li><span>Attendance: 14 (IP) +  6 ( R)</span><br>
<span>Author’s Position: SF</span><br>
<span>Outcome: Strong consensus in favour</span></li>
</ul>
</li>
<li><span>LEWG </span><strong><span>POLL</span></strong><span>: With the changed names forward P3111R4 to LWG and CWG for C++26</span>
<table>
<thead>
<tr>
<th><span>SF</span></th>
<th><span>F</span></th>
<th><span>N</span></th>
<th><span>A</span></th>
<th><span>SA</span></th>
</tr>
</thead>
<tbody>
<tr>
<td><span>5</span></td>
<td><span>6</span></td>
<td><span>0</span></td>
<td><span>0</span></td>
<td><span>0</span></td>
</tr>
</tbody>
</table>
<ul>
<li><span>Attendance: 14 (IP) +  6 ( R)</span><br>
<span>Author’s Position: SF</span><br>
<span>Outcome: Consensus in favour</span></li>
</ul>
</li>
<li><span>Change the name from </span><code>reduce_*</code><span> to </span><code>store_*</code><span> and </span><code>atomic_reduce_*</code><span> to </span><code>atomic_store_*</code><span> according to LEWG poll above.</span></li>
</ul>
</li>
<li><strong><span>R4: Austria</span></strong><span>:</span>
<ul>
<li><span>EWG saw R3 in Hagenberg. </span><strong><span>POLL</span></strong><span>: P3111R3: Atomic Reduction Operations: Forward to LEWG and CWG for C++26</span>
<table>
<thead>
<tr>
<th><span>SF</span></th>
<th><span>F</span></th>
<th><span>N</span></th>
<th><span>A</span></th>
<th><span>SA</span></th>
</tr>
</thead>
<tbody>
<tr>
<td><span>2</span></td>
<td><span>16</span></td>
<td><span>3</span></td>
<td><span>0</span></td>
<td><span>0</span></td>
</tr>
</tbody>
</table>
</li>
<li><span>Consensus</span></li>
</ul>
</li>
<li><strong><span>R3: pre Austria</span></strong><span>:</span>
<ul>
<li><span>Refactor atomic reduction sequence replacements into tables.</span></li>
<li><span>Provide alternative wording for atomic reduction sequence replacement using "as if" integer operations to provide same valid replacements as for integer reduction operations.</span></li>
<li><span>Fixed FP reduction wording.</span></li>
</ul>
</li>
<li><strong><span>R2: post Wroclaw</span></strong><span>: simplifies reduction sequence wording.</span></li>
<li><strong><span>R1: post St. Louis '24</span></strong>
<ul>
<li><em><span>Overview of changes</span></em><span>: incorporate SG6 and SG1 feedback into the proposal, which resolved all open questions. Restructure exposition about what's being proposed accordingly.</span></li>
<li><span>[SG6 Review]:</span>
<ul>
<li><span>Forward it; does not need to look at it again.</span></li>
<li><span>Agree on "generalized" reductions being the default and not providing version without.</span></li>
<li><span>Do not use </span><code>GENERALIZED_SUM</code><span> to specify non-associative floating-point atomic reduction operations since it does not make sense for two values. Instead, attempt to add a </span><code>std::non_associative_add</code><span> operation that is exempted from the C standard clause in Annex F that makes re-ordering non-conforming. Recommended discussing this with CWG, which I did, and caused us to end up pursuing a different alternative (defining "reduction sequences") which is pursued in R1 instead.</span></li>
</ul>
</li>
<li><span>[SG1 Review]: Add wording for reduction sequences.</span></li>
<li><span>[SG1 Review]: Add </span><code>compare_store</code><span> operation.</span></li>
<li><span>[SG1 Review]: Update to handle </span><code>fenv</code><span> and </span><code>errno</code><span> for floating-point atomics.</span></li>
<li><span>[SG1 Review]: Make "generalized" atomic floating-point reductions the default and do not provide fallback (beyond </span><code>fetch_&lt;op&gt;</code><span>).</span></li>
<li><span>[SG1 Review]: Provide unsequenced support.</span></li>
<li><span>[SG1 Review]: polls taken:</span>
<ol style="padding-left: 2em;">
<li>
<p><span>Reduction operations are not a step, but infinite loops around reductions operations are not UB (practically implementations can assume reductions are finite)</span></p>
<table>
<thead>
<tr>
<th><span>SF</span></th>
<th><span>F</span></th>
<th><span>N</span></th>
<th><span>A</span></th>
<th><span>SA</span></th>
</tr>
</thead>
<tbody>
<tr>
<td><span>3</span></td>
<td><span>9</span></td>
<td><span>1</span></td>
<td><span>0</span></td>
<td><span>0</span></td>
</tr>
</tbody>
</table>
</li>
<li>
<p><span>The single floating point reduction operations should allow "fast math" (allow tree reductions), you can get precise results using fetch_add/sub</span></p>
<table>
<thead>
<tr>
<th><span>SF</span></th>
<th><span>F</span></th>
<th><span>N</span></th>
<th><span>A</span></th>
<th><span>SA</span></th>
</tr>
</thead>
<tbody>
<tr>
<td><span>5</span></td>
<td><span>5</span></td>
<td><span>1</span></td>
<td><span>1</span></td>
<td><span>0</span></td>
</tr>
</tbody>
</table>
</li>
<li>
<p><span>Any objection to approve the design of P3111R0: No objection.</span></p>
</li>
</ol>
</li>
</ul>
</li>
<li><strong><span>R0: initial revision</span></strong><span>.</span></li>
</ul><h1 id="Atomic-Reduction-Operations" data-id="Atomic-Reduction-Operations" style=""><a class="anchor hidden-xs" href="#Atomic-Reduction-Operations" title="Atomic-Reduction-Operations"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>Atomic Reduction Operations</span></h1><p><em><span>Atomic Reduction Operations</span></em><span> are atomic read-modify-write (RMW) operations (like </span><code>fetch_add</code><span>) that do not "fetch" the old value and are not reads for the purpose of building synchronization with acquire fences. This enables implementations to leverage hardware acceleration available in modern CPU and GPU architectures.</span></p><p><span>Furthermore, we propose to allow atomic memory operations that aren't reads in unsequenced execution, and to extend atomic arithmetic reduction operations for floating-point types with operations that assume floating-point arithmetic is associative.</span></p><h2 id="Introduction" data-id="Introduction" style=""><a class="anchor hidden-xs" href="#Introduction" title="Introduction"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>Introduction</span></h2><p><span>Concurrent algorithms performing atomic RMW operations that discard the old fetched value are very common in high-performance computing, e.g., finite-element matrix assembly, data analytics (e.g. building histograms), etc.</span></p><p><span>Consider the following parallel algorithm to build a histogram (</span><a href="https://clang.godbolt.org/z/zscrhEPYj" target="_blank" rel="noopener"><span>full implementation</span></a><span>):</span></p><div class="code-block-wrapper code-block-toolbar-handled" data-infoprefix-length="4"><div class="code-toolbar"><div class="flex flex-row gap-0.5 rounded-lg bg-element-bg-default px-[7px] py-[5px]"><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-edit-from-here-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-map-pin-simple" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><span class="ml-1 border-0 border-l border-solid border-background-subtle pr-1" aria-hidden="true"></span><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-link-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-link" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-clipboard-text" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button></div></div>
        <pre class="click-event-handled"><code class="cpp hljs"><div class="wrapper"><div class="gutter linenumber"><span data-linenumber="1"></span>
<span data-linenumber="2"></span>
<span data-linenumber="3"></span>
<span data-linenumber="4"></span>
<span data-linenumber="5"></span>
<span data-linenumber="6"></span>
<span data-linenumber="7"></span>
<span data-linenumber="8"></span>
<span data-linenumber="9"></span>
<span data-linenumber="10"></span>
<span data-linenumber="11"></span>
<span data-linenumber="12"></span>
<span data-linenumber="13"></span></div><div class="code"><span class="token comment">// Example 0: Histogram.</span>
span<span class="token operator">&lt;</span><span class="token keyword">unsigned</span><span class="token operator">&gt;</span> data<span class="token punctuation">;</span>

array<span class="token operator">&lt;</span>atomic<span class="token operator">&lt;</span><span class="token keyword">unsigned</span><span class="token operator">&gt;</span><span class="token punctuation">,</span> N<span class="token operator">&gt;</span> buckets<span class="token punctuation">;</span>
<span class="token keyword">constexpr</span> T bucket_sz <span class="token operator">=</span> <span class="token class-name">numeric_limits</span><span class="token operator">&lt;</span>T<span class="token operator">&gt;</span><span class="token double-colon punctuation">::</span><span class="token function">max</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">/</span> <span class="token punctuation">(</span>T<span class="token punctuation">)</span>N<span class="token punctuation">;</span>
<span class="token keyword">unsigned</span> nthreads <span class="token operator">=</span> thread<span class="token double-colon punctuation">::</span><span class="token function">hardware_concurrency</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">for_each_n</span><span class="token punctuation">(</span>execution<span class="token double-colon punctuation">::</span>par_unseq<span class="token punctuation">,</span> views<span class="token double-colon punctuation">::</span><span class="token function">iota</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">begin</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> nthreads<span class="token punctuation">,</span> 
 <span class="token punctuation">[</span><span class="token operator">&amp;</span><span class="token punctuation">]</span><span class="token punctuation">(</span><span class="token keyword">int</span> thread<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token keyword">unsigned</span> data_per_thread <span class="token operator">=</span> data<span class="token punctuation">.</span><span class="token function">size</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">/</span> nthreads<span class="token punctuation">;</span>
  T<span class="token operator">*</span> data_thread <span class="token operator">=</span> data<span class="token punctuation">.</span><span class="token function">data</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">+</span> data_per_thread <span class="token operator">*</span> thread<span class="token punctuation">;</span>
  <span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token keyword">auto</span> e <span class="token operator">:</span> <span class="token generic-function"><span class="token function">span</span><span class="token generic class-name"><span class="token operator">&lt;</span>T<span class="token operator">&gt;</span></span></span><span class="token punctuation">(</span>data_thread<span class="token punctuation">,</span> data_per_thread<span class="token punctuation">)</span><span class="token punctuation">)</span> 
    buckets<span class="token punctuation">[</span>e <span class="token operator">/</span> bucket_sz<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">fetch_add</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> memory_order_relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</div></div></code></pre>
      </div><p><span>This program has two main issues:</span></p><ul>
<li><strong><span>Correctness</span></strong><span> (undefined behavior): The program should have used the </span><code>par</code><span> execution policy to avoid undefined behavior since the atomic operation is not:</span>
<ul>
<li><span>Potentially concurrent and therefore exhibits a data-race in unsequenced contexts ([intro.execution]).</span></li>
<li><span>Vectorization-safe </span><a href="https://eel.is/c++draft/algorithms.parallel.defns#5" target="_blank" rel="noopener"><span>[algorithms.parallel.defns#5]</span></a><span> since it is specificed to synchronize with other function invocations.</span></li>
</ul>
</li>
<li><strong><span>Performance</span></strong><span>: Sophisticated compiler analysis required to optimize the above program for scalable hardware architectures with atomic reduction operations.</span></li>
</ul><p><span>Atomic reduction operations address both shortcomings:</span></p><table>
<tbody><tr>
<td><b>Before</b> (<a href="https://clang.godbolt.org/z/xq8efq1WK" target="_blank" rel="noopener">compiler-explorer</a>)</td>
<td><b>After</b></td>
</tr>
<tr>
<td>

      <div class="code-block-wrapper code-block-toolbar-handled" data-infoprefix-length="4"><div class="code-toolbar"><div class="flex flex-row gap-0.5 rounded-lg bg-element-bg-default px-[7px] py-[5px]"><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-edit-from-here-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-map-pin-simple" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><span class="ml-1 border-0 border-l border-solid border-background-subtle pr-1" aria-hidden="true"></span><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-link-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-link" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-clipboard-text" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button></div></div>
        <pre class="click-event-handled"><code class="cpp hljs"><div class="wrapper"><div class="gutter linenumber"><span data-linenumber="1"></span>
<span data-linenumber="2"></span>
<span data-linenumber="3"></span>
<span data-linenumber="4"></span>
<span data-linenumber="5"></span>
<span data-linenumber="6"></span>
<span data-linenumber="7"></span>
<span data-linenumber="8"></span>
<span data-linenumber="9"></span>
<span data-linenumber="10"></span>
<span data-linenumber="11"></span>
<span data-linenumber="12"></span>
<span data-linenumber="13"></span>
<span data-linenumber="14"></span>
<span data-linenumber="15"></span>
<span data-linenumber="16"></span>
<span data-linenumber="17"></span>
<span data-linenumber="18"></span></div><div class="code"><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">&lt;algorithm&gt;</span></span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">&lt;atomic&gt;</span></span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">&lt;execution&gt;</span></span>
<span class="token keyword">using</span> <span class="token keyword">namespace</span> std<span class="token punctuation">;</span>
<span class="token keyword">using</span> execution<span class="token double-colon punctuation">::</span>par_unseq<span class="token punctuation">;</span>

<span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  size_t N <span class="token operator">=</span> <span class="token number">10000</span><span class="token punctuation">;</span>
  vector<span class="token operator">&lt;</span><span class="token keyword">int</span><span class="token operator">&gt;</span> <span class="token function">v</span><span class="token punctuation">(</span>N<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  atomic<span class="token operator">&lt;</span><span class="token keyword">int</span><span class="token operator">&gt;</span> atom <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
  <span class="token function">for_each_n</span><span class="token punctuation">(</span>par_unseq<span class="token punctuation">,</span> 
     v<span class="token punctuation">.</span><span class="token function">begin</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> N<span class="token punctuation">,</span>
    <span class="token punctuation">[</span><span class="token operator">&amp;</span><span class="token punctuation">]</span><span class="token punctuation">(</span><span class="token keyword">auto</span><span class="token operator">&amp;</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>
      <span class="token comment">// UB+SLOW:</span>
      atom<span class="token punctuation">.</span><span class="token function">fetch_add</span><span class="token punctuation">(</span>e<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
  <span class="token keyword">return</span> atom<span class="token punctuation">.</span><span class="token function">load</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</div></div></code></pre>
      </div>
      
</td>
<td>

      <div class="code-block-wrapper code-block-toolbar-handled" data-infoprefix-length="4"><div class="code-toolbar"><div class="flex flex-row gap-0.5 rounded-lg bg-element-bg-default px-[7px] py-[5px]"><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-edit-from-here-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-map-pin-simple" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><span class="ml-1 border-0 border-l border-solid border-background-subtle pr-1" aria-hidden="true"></span><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-link-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-link" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-clipboard-text" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button></div></div>
        <pre class="click-event-handled"><code class="cpp hljs"><div class="wrapper"><div class="gutter linenumber"><span data-linenumber="1"></span>
<span data-linenumber="2"></span>
<span data-linenumber="3"></span>
<span data-linenumber="4"></span>
<span data-linenumber="5"></span>
<span data-linenumber="6"></span>
<span data-linenumber="7"></span>
<span data-linenumber="8"></span>
<span data-linenumber="9"></span>
<span data-linenumber="10"></span>
<span data-linenumber="11"></span>
<span data-linenumber="12"></span>
<span data-linenumber="13"></span>
<span data-linenumber="14"></span>
<span data-linenumber="15"></span>
<span data-linenumber="16"></span>
<span data-linenumber="17"></span>
<span data-linenumber="18"></span></div><div class="code"><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">&lt;algorithm&gt;</span></span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">&lt;atomic&gt;</span></span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string">&lt;execution&gt;</span></span>
<span class="token keyword">using</span> <span class="token keyword">namespace</span> std<span class="token punctuation">;</span>
<span class="token keyword">using</span> execution<span class="token double-colon punctuation">::</span>par_unseq<span class="token punctuation">;</span>

<span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  size_t N <span class="token operator">=</span> <span class="token number">10000</span><span class="token punctuation">;</span>
  vector<span class="token operator">&lt;</span><span class="token keyword">int</span><span class="token operator">&gt;</span> <span class="token function">v</span><span class="token punctuation">(</span>N<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
  atomic<span class="token operator">&lt;</span><span class="token keyword">int</span><span class="token operator">&gt;</span> atom <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
  <span class="token function">for_each_n</span><span class="token punctuation">(</span>par_unseq<span class="token punctuation">,</span> 
     v<span class="token punctuation">.</span><span class="token function">begin</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> N<span class="token punctuation">,</span>
    <span class="token punctuation">[</span><span class="token operator">&amp;</span><span class="token punctuation">]</span><span class="token punctuation">(</span><span class="token keyword">auto</span><span class="token operator">&amp;</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>
      <span class="token comment">// OK+FAST</span>
      atom<span class="token punctuation">.</span><span class="token function">store_add</span><span class="token punctuation">(</span>e<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
  <span class="token keyword">return</span> atom<span class="token punctuation">.</span><span class="token function">load</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>      
</div></div></code></pre>
      </div>
      
</td>
</tr>
</tbody></table><p><span>This new operation can then be used in the Histogram Example (example 0), to replace the </span><code>fetch_add</code><span> with </span><code>store_add</code><span>.</span></p><h2 id="Motivation" data-id="Motivation" style=""><a class="anchor hidden-xs" href="#Motivation" title="Motivation"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>Motivation</span></h2><h3 id="Hardware-Exposure" data-id="Hardware-Exposure" style=""><a class="anchor hidden-xs" href="#Hardware-Exposure" title="Hardware-Exposure"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>Hardware Exposure</span></h3><p><span>The following ISAs provide Atomic Reduction Operation:</span></p><table>
<thead>
<tr>
<th><span>Architecture</span></th>
<th><span>Instructions</span></th>
</tr>
</thead>
<tbody>
<tr>
<td><span>PTX</span></td>
<td><a href="https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#parallel-synchronization-and-communication-instructions-red" target="_blank" rel="noopener"><code>red</code></a><span>.</span></td>
</tr>
<tr>
<td><span>ARM</span></td>
<td><a href="https://developer.arm.com/documentation/ddi0602/2022-06/Base-Instructions/LDADD--LDADDA--LDADDAL--LDADDL--Atomic-add-on-word-or-doubleword-in-memory-?lang=en" target="_blank" rel="noopener"><code>LDADD RZ</code></a><span>, </span><a href="https://developer.arm.com/documentation/ddi0602/2022-06/Base-Instructions/STADD--STADDL--Atomic-add-on-word-or-doubleword-in-memory--without-return--an-alias-of-LDADD--LDADDA--LDADDAL--LDADDL-" target="_blank" rel="noopener"><code>STADD</code></a><span>, </span><a href="https://developer.arm.com/documentation/ddi0602/2022-06/Base-Instructions/SWP--SWPA--SWPAL--SWPL--Swap-word-or-doubleword-in-memory-?lang=en" target="_blank" rel="noopener"><code>SWP RZ</code></a><span>, </span><a href="https://developer.arm.com/documentation/ddi0602/2022-06/Base-Instructions/CAS--CASA--CASAL--CASL--Compare-and-Swap-word-or-doubleword-in-memory-?lang=en" target="_blank" rel="noopener"><code>CAS RZ</code></a><span>.</span></td>
</tr>
<tr>
<td><span>x86-64</span></td>
<td><a href="https://cdrdv2-public.intel.com/671368/architecture-instruction-set-extensions-programming-reference.pdf" target="_blank" rel="noopener"><span>Remote Atomic Operations (RAO)</span></a><span>: AADD, AAND, AOR, AXOR.</span></td>
</tr>
<tr>
<td><span>RISC-V</span></td>
<td><span>None (note: AMOs are always loads and stores).</span></td>
</tr>
<tr>
<td><span>PPC64LE</span></td>
<td><span>None (note: </span><code>stdat</code><span> family of operations are always loads and stores).</span></td>
</tr>
</tbody>
</table><p><span>Some of these instructions lack a destination operand (</span><a href="https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#parallel-synchronization-and-communication-instructions-red" target="_blank" rel="noopener"><code>red</code></a><span>, </span><a href="https://developer.arm.com/documentation/ddi0602/2022-06/Base-Instructions/STADD--STADDL--Atomic-add-on-word-or-doubleword-in-memory--without-return--an-alias-of-LDADD--LDADDA--LDADDAL--LDADDL-" target="_blank" rel="noopener"><code>STADD</code></a><span>, AADD). Others change semantics if the destination register used discards the result (Arm's </span><a href="https://developer.arm.com/documentation/ddi0602/2022-06/Base-Instructions/LDADD--LDADDA--LDADDAL--LDADDL--Atomic-add-on-word-or-doubleword-in-memory-?lang=en" target="_blank" rel="noopener"><code>LDADD RZ</code></a><span>, </span><a href="https://developer.arm.com/documentation/ddi0602/2022-06/Base-Instructions/SWP--SWPA--SWPAL--SWPL--Swap-word-or-doubleword-in-memory-?lang=en" target="_blank" rel="noopener"><code>SWP RZ</code></a><span>, </span><a href="https://developer.arm.com/documentation/ddi0602/2022-06/Base-Instructions/CAS--CASA--CASAL--CASL--Compare-and-Swap-word-or-doubleword-in-memory-?lang=en" target="_blank" rel="noopener"><code>CAS RZ</code></a><span>).</span></p><p><span>All ISAs provide the same sematics: these are not loads from the point-of-view of the Memory Model, and therefore do not participate in acquire sequences, but they do participate in release sequences:</span></p><ul>
<li><span>PTX Specification: </span><code>red</code><span> is "</span><a href="https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#operation-types" target="_blank" rel="noopener"><span>not a read operation</span></a><span>".</span></li>
<li><span>Arm ARM: "</span><a href="https://developer.arm.com/documentation/ddi0487/latest" target="_blank" rel="noopener"><span>where the destination register is WZR or XZR, are not regarded as doing a read for the purpose of a DMB LD barrier</span></a><span>".</span></li>
<li><span>x86-64: </span><a href="https://cdrdv2-public.intel.com/671368/architecture-instruction-set-extensions-programming-reference.pdf" target="_blank" rel="noopener"><span>"since they do not load data from memory into the processor."</span></a></li>
</ul><p><span>These architectures provide both "relaxed" and "release" orderings for the reductions (e.g. </span><code>red.relaxed</code><span>/</span><code>red.release</code><span>, </span><code>STADD</code><span>/</span><code>STADDL</code><span>).</span></p><p><span>The Power ISA </span><code>stdat</code><span> family of instructions are intended to accelerate read-modify-write operations that benefit from being performed at memory. This is different from the intent of C++ atomic reduction operations, which is to avoid unnecessary synchronization caused by the use of read-modify-write operations and acquire fences. C++ implementations for the Power ISA should not use </span><code>stdat</code><span> to implement C++ atomic reduction operations to avoid low performance resulting from using these instructions for use cases they are not intended for. For more information, see </span><a href="https://wiki.raptorcs.com/w/images/d/d3/OPF_PowerISA_v3.1B.pdf" target="_blank" rel="noopener"><span>Power ISA Version 3.1B</span></a><span> Section 4.5 p.1080.</span></p><h3 id="Performance" data-id="Performance" style=""><a class="anchor hidden-xs" href="#Performance" title="Performance"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>Performance</span></h3><p><span>On hardware architectures that implement these as far atomics, the exposed latency of Atomic Reduction Operations may be as low as half that of "</span><code>fetch_&lt;key&gt;</code><span>" operations.</span></p><p><span>Example: on an NVIDIA Hopper H100 GPU, replacing </span><code>atomic.fetch_add</code><span> with </span><code>atomic.store_add</code><span> on the Histogram Example (Example 0) improves throughput by 1.2x.</span></p><p><span>Furthermore, non-associative floating-point atomic operations, like </span><code>fetch_add</code><span>, are required to read the "latest value", which sequentializes their execution. In the following example, the outcome </span><code>x == a + (b + c)</code><span> is not allowed, because either the atomic operation of thread0 happens-before that of thread1, or vice-versa, and floating-point arithmetic is not associative:</span></p><div class="code-block-wrapper code-block-toolbar-handled" data-infoprefix-length="4"><div class="code-toolbar"><div class="flex flex-row gap-0.5 rounded-lg bg-element-bg-default px-[7px] py-[5px]"><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-edit-from-here-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-map-pin-simple" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><span class="ml-1 border-0 border-l border-solid border-background-subtle pr-1" aria-hidden="true"></span><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-link-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-link" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-clipboard-text" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button></div></div>
        <pre class="click-event-handled"><code class="cpp hljs"><div class="wrapper"><div class="gutter linenumber"><span data-linenumber="1"></span>
<span data-linenumber="2"></span>
<span data-linenumber="3"></span>
<span data-linenumber="4"></span></div><div class="code"><span class="token comment">// Litmus test 2:</span>
atomic<span class="token operator">&lt;</span><span class="token keyword">float</span><span class="token operator">&gt;</span> x <span class="token operator">=</span> a<span class="token punctuation">;</span>
<span class="token keyword">void</span> <span class="token function">thread0</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> x<span class="token punctuation">.</span><span class="token function">fetch_add</span><span class="token punctuation">(</span>b<span class="token punctuation">,</span> memory_order_relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
<span class="token keyword">void</span> <span class="token function">thread1</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> x<span class="token punctuation">.</span><span class="token function">fetch_add</span><span class="token punctuation">(</span>c<span class="token punctuation">,</span> memory_order_relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
</div></div></code></pre>
      </div><p><span>Allowing the </span><code>x == a + (b + c)</code><span> outcome enables implementations to perform a tree-reduction, which improves complexity from </span><code>O(N)</code><span> to </span><code>O(log(N))</code><span>, at negligible higher amount of non-determinism which is already inherent to the use of atomic operations:</span></p><div class="code-block-wrapper code-block-toolbar-handled" data-infoprefix-length="4"><div class="code-toolbar"><div class="flex flex-row gap-0.5 rounded-lg bg-element-bg-default px-[7px] py-[5px]"><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-edit-from-here-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-map-pin-simple" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><span class="ml-1 border-0 border-l border-solid border-background-subtle pr-1" aria-hidden="true"></span><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-link-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-link" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-clipboard-text" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button></div></div>
        <pre class="click-event-handled"><code class="cpp hljs"><div class="wrapper"><div class="gutter linenumber"><span data-linenumber="1"></span>
<span data-linenumber="2"></span>
<span data-linenumber="3"></span>
<span data-linenumber="4"></span>
<span data-linenumber="5"></span>
<span data-linenumber="6"></span></div><div class="code"><span class="token comment">// Litmus test 3:</span>
atomic<span class="token operator">&lt;</span><span class="token keyword">float</span><span class="token operator">&gt;</span> x <span class="token operator">=</span> a<span class="token punctuation">;</span>
x<span class="token punctuation">.</span><span class="token function">store_add</span><span class="token punctuation">(</span>b<span class="token punctuation">,</span> memory_order_relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span>
x<span class="token punctuation">.</span><span class="token function">store_add</span><span class="token punctuation">(</span>c<span class="token punctuation">,</span> memory_order_relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Sound to merge these two operations into one:</span>
<span class="token comment">// x.store_add(b + c);</span>
</div></div></code></pre>
      </div><p><span>On GPU architectures, performing an horizontal reduction for then issuing a single atomic operation per thread group, reduces the number of atomic operation issued by up to the size of the thread group.</span></p><h3 id="Functionality" data-id="Functionality" style=""><a class="anchor hidden-xs" href="#Functionality" title="Functionality"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>Functionality</span></h3><p><span>Currently, all atomic memory operations are </span><a href="https://eel.is/c++draft/algorithms.parallel.defns#5" target="_blank" rel="noopener"><span>vectorization-unsafe</span></a><span> and therefore not allowed in element access functions of parallel algorithms when the </span><code>unseq</code><span> or </span><code>par_unseq</code><span> execution policies are used (see </span><a href="https://eel.is/c++draft/algorithms.parallel#exec-5" target="_blank" rel="noopener"><span>[algorithms.parallel.exec.5]</span></a><span> and </span><a href="https://eel.is/c++draft/algorithms.parallel#exec-7" target="_blank" rel="noopener"><span>[algorithms.parallel.exec.7]</span></a><span>). Atomic memory operations that "read" (e.g. </span><code>load</code><span>, </span><code>fetch_&lt;key&gt;</code><span>, </span><code>compare_exchange</code><span>, </span><code>exchange</code><span>, </span><span class="smartypants">…</span><span>) enable building synchronization edges that block, which within </span><code>unseq</code><span>/</span><code>par_unseq</code><span> leads to dead-locks. </span><a href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4070.html" target="_blank" rel="noopener"><span>N4070</span></a><span> solved this by tightening the wording to disallow any synchronization API from being called from within </span><code>unseq</code><span>/</span><code>par_unseq</code><span>.</span></p><p><span>Allowing Atomic Writes and Atomic Reduction Operations in unsequenced execution increases the set of concurrent algorithms that can be implemented in the lowest-common denominator of hardware that C++ supports. In particular, many hardware architectures that can accelerate </span><code>unseq</code><span>/</span><code>par_unseq</code><span> but cannot accelerate </span><code>par</code><span> (e.g. most non-NVIDIA GPUs), provide acceleration for atomic reduction operations.</span></p><p><span>We propose to make lock-free atomic operations that are not reads vectorization safe to enable calling them from unsequenced execution. Atomic operations that read remain vectorization-unsafe and therefore UB:</span></p><h2 id="Design" data-id="Design" style=""><a class="anchor hidden-xs" href="#Design" title="Design"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>Design</span></h2><p><span>For each atomic </span><code>fetch_{OP}</code><span> in the </span><code>atomic&lt;T&gt;</code><span> and </span><code>atomic_ref&lt;T&gt;</code><span> class templates and their specializations, we introduce new </span><code>store_{OP}</code><span> member functions that return </span><code>void</code><span>:</span></p><div class="code-block-wrapper code-block-toolbar-handled" data-infoprefix-length="4"><div class="code-toolbar"><div class="flex flex-row gap-0.5 rounded-lg bg-element-bg-default px-[7px] py-[5px]"><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-edit-from-here-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-map-pin-simple" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><span class="ml-1 border-0 border-l border-solid border-background-subtle pr-1" aria-hidden="true"></span><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-link-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-link" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-clipboard-text" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button></div></div>
        <pre class="click-event-handled"><code class="cpp hljs"><div class="wrapper"><div class="gutter linenumber"><span data-linenumber="1"></span>
<span data-linenumber="2"></span>
<span data-linenumber="3"></span>
<span data-linenumber="4"></span>
<span data-linenumber="5"></span></div><div class="code"><span class="token keyword">template</span> <span class="token operator">&lt;</span><span class="token keyword">class</span> <span class="token class-name">T</span><span class="token operator">&gt;</span>
<span class="token keyword">struct</span> <span class="token class-name">atomic_ref</span> <span class="token punctuation">{</span>
  T    <span class="token function">fetch_add</span> <span class="token punctuation">(</span>T v<span class="token punctuation">,</span> memory_order o<span class="token punctuation">)</span> <span class="token keyword">const</span> <span class="token keyword">noexcept</span><span class="token punctuation">;</span>
  <span class="token keyword">void</span> <span class="token function">store_add</span><span class="token punctuation">(</span>T v<span class="token punctuation">,</span> memory_order o<span class="token punctuation">)</span> <span class="token keyword">const</span> <span class="token keyword">noexcept</span><span class="token punctuation">;</span> 
<span class="token punctuation">}</span><span class="token punctuation">;</span>
</div></div></code></pre>
      </div><p><span>The </span><code>store_{OP}</code><span> APIs are vectorization safe if the atomic </span><code>is_always_lock_free</code><span> is true, i.e., they are allowed in Element Access Functions (</span><a href="https://eel.is/c++draft/algorithms.parallel.defns#def:element_access_functions" target="_blank" rel="noopener"><span>[algorithms.paralle.defns]</span></a><span>) of parallel algorithms:</span></p><div class="code-block-wrapper code-block-toolbar-handled" data-infoprefix-length="3"><div class="code-toolbar"><div class="flex flex-row gap-0.5 rounded-lg bg-element-bg-default px-[7px] py-[5px]"><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-edit-from-here-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-map-pin-simple" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><span class="ml-1 border-0 border-l border-solid border-background-subtle pr-1" aria-hidden="true"></span><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-link-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-link" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-clipboard-text" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button></div></div>
        <pre class="click-event-handled"><code class="cpp hljs"><span class="token function">for_each</span><span class="token punctuation">(</span>par_unseq<span class="token punctuation">,</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token operator">&amp;</span><span class="token punctuation">]</span><span class="token punctuation">(</span><span class="token keyword">auto</span> old<span class="token punctuation">,</span> <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token function">assert</span><span class="token punctuation">(</span>atom<span class="token punctuation">.</span><span class="token function">is_lockfree</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">// Only for lock-free atomics</span>
    atom<span class="token punctuation">.</span><span class="token function">store</span><span class="token punctuation">(</span><span class="token number">42</span><span class="token punctuation">)</span><span class="token punctuation">;</span>            <span class="token comment">// OK: vectorization-safe</span>
    atom<span class="token punctuation">.</span><span class="token function">store_add</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>        <span class="token comment">// OK: vectorization-safe</span>
    atom<span class="token punctuation">.</span><span class="token function">fetch_add</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>         <span class="token comment">// UB: vectorization-unsafe</span>
    atom<span class="token punctuation">.</span><span class="token function">exchange</span><span class="token punctuation">(</span><span class="token number">42</span><span class="token punctuation">)</span><span class="token punctuation">;</span>         <span class="token comment">// UB: vectorization-unsafe</span>
    atom<span class="token punctuation">.</span><span class="token function">compare_exchange_weak</span><span class="token punctuation">(</span>old<span class="token punctuation">,</span> <span class="token number">42</span><span class="token punctuation">)</span><span class="token punctuation">;</span>   <span class="token comment">// UB: vectorization-unsafe</span>
    atom<span class="token punctuation">.</span><span class="token function">compare_exchange_strong</span><span class="token punctuation">(</span>old<span class="token punctuation">,</span> <span class="token number">42</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// UB: vectorization-unsafe</span>
    <span class="token keyword">while</span> <span class="token punctuation">(</span>atom<span class="token punctuation">.</span><span class="token function">load</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">&lt;</span> <span class="token number">42</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  <span class="token comment">// UB: vectorization-unsafe</span>
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
</code></pre>
      </div><p><span>Furthermore, we specify non-associative floating-point atomic reduction operations to enable tree-reduction implementations that improve complexity from </span><code>O(N)</code><span> to </span><code>O(log(N))</code><span> by minimally increasing the non-determinism which is already inherent to atomic operations. This allows producing the </span><code>x == a + (b + c)</code><span> outcome in the following example, which enables the optimization that merges the two </span><code>store_add</code><span> operations into a single one:</span></p><div class="code-block-wrapper code-block-toolbar-handled" data-infoprefix-length="4"><div class="code-toolbar"><div class="flex flex-row gap-0.5 rounded-lg bg-element-bg-default px-[7px] py-[5px]"><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-edit-from-here-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-map-pin-simple" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><span class="ml-1 border-0 border-l border-solid border-background-subtle pr-1" aria-hidden="true"></span><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-link-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-link" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-clipboard-text" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button></div></div>
        <pre class="click-event-handled"><code class="cpp hljs"><div class="wrapper"><div class="gutter linenumber"><span data-linenumber="1"></span>
<span data-linenumber="2"></span>
<span data-linenumber="3"></span>
<span data-linenumber="4"></span>
<span data-linenumber="5"></span></div><div class="code">atomic<span class="token operator">&lt;</span><span class="token keyword">float</span><span class="token operator">&gt;</span> x <span class="token operator">=</span> a<span class="token punctuation">;</span>
x<span class="token punctuation">.</span><span class="token function">store_add</span><span class="token punctuation">(</span>b<span class="token punctuation">,</span> memory_order_relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span>
x<span class="token punctuation">.</span><span class="token function">store_add</span><span class="token punctuation">(</span>c<span class="token punctuation">,</span> memory_order_relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// Sound to merge these two operations into one:</span>
<span class="token comment">// x.store_add(b + c);</span>
</div></div></code></pre>
      </div><p><span>Applications that need the sequential semantics can use </span><code>fetch_add</code><span> instead.</span></p><h3 id="Implementation-impact" data-id="Implementation-impact" style=""><a class="anchor hidden-xs" href="#Implementation-impact" title="Implementation-impact"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>Implementation impact</span></h3><p><span>It is correct to conservatively implement </span><code>store_{OP}</code><span> as a call to </span><code>fetch_{OP}</code><span>. We evaluated the following implementations of unsequenced execution policies, which are not impacted:</span></p><ul>
<li><span>OpenMP </span><a href="https://www.openmp.org/spec-html/5.0/openmpsu42.html" target="_blank" rel="noopener"><span>simd</span></a><span> pragma for </span><code>unseq</code><span> and </span><code>par_unseq</code><span>, since OpenMP supports atomics within </span><code>simd</code><span> regions.</span></li>
<li><a href="https://clang.llvm.org/docs/LanguageExtensions.html#extensions-for-loop-hint-optimizations" target="_blank" rel="noopener"><span>pragma clang loop</span></a><span> is a hint.</span></li>
</ul><h3 id="Design-Alternatives" data-id="Design-Alternatives" style=""><a class="anchor hidden-xs" href="#Design-Alternatives" title="Design-Alternatives"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>Design Alternatives</span></h3><h4 id="Enable-Atomic-Reductions-as-fetch_ltkeygt-optimizations" data-id="Enable-Atomic-Reductions-as-fetch_ltkeygt-optimizations"><a class="anchor hidden-xs" href="#Enable-Atomic-Reductions-as-fetch_ltkeygt-optimizations" title="Enable-Atomic-Reductions-as-fetch_ltkeygt-optimizations"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>Enable Atomic Reductions as </span><code>fetch_&lt;key&gt;</code><span> optimizations</span></h4><p><span>Attempting to improve application performance by implementing compiler-optimizations to leverage Atomic Reduction Operations from </span><code>fetch_&lt;key&gt;</code><span> APIs whose result is unused has become a rite of passage for compiler engineers, e.g., </span><a href="https://gcc.gnu.org/pipermail/gcc-patches/2018-October/509632.html" target="_blank" rel="noopener"><span>GCC#509632</span></a><span>, </span><a href="https://github.com/llvm/llvm-project/issues/68428" target="_blank" rel="noopener"><span>LLVM#68428</span></a><span>, </span><a href="https://github.com/llvm/llvm-project/pull/72747" target="_blank" rel="noopener"><span>LLVM#72747</span></a><span>, </span><span class="smartypants">…</span><span> Unfortunately, "simple" optimization strategies break backward compatibility in the following litmus tests (among others).</span></p><p><strong><span>Litmus Test 0</span></strong><span>: from </span><a href="https://gcc.gnu.org/pipermail/gcc-patches/2018-October/509632.html" target="_blank" rel="noopener"><span>Will Deacon</span></a><span>. Performing the optimization to replace the  introduces the </span><code>y == 2 &amp;&amp; r0 == 1 &amp;&amp; r1 == 0</code><span> outcome:</span></p><div class="code-block-wrapper code-block-toolbar-handled" data-infoprefix-length="4"><div class="code-toolbar"><div class="flex flex-row gap-0.5 rounded-lg bg-element-bg-default px-[7px] py-[5px]"><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-edit-from-here-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-map-pin-simple" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><span class="ml-1 border-0 border-l border-solid border-background-subtle pr-1" aria-hidden="true"></span><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-link-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-link" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-clipboard-text" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button></div></div>
        <pre class="click-event-handled"><code class="cpp hljs"><div class="wrapper"><div class="gutter linenumber"><span data-linenumber="1"></span>
<span data-linenumber="2"></span>
<span data-linenumber="3"></span>
<span data-linenumber="4"></span>
<span data-linenumber="5"></span>
<span data-linenumber="6"></span>
<span data-linenumber="7"></span>
<span data-linenumber="8"></span>
<span data-linenumber="9"></span>
<span data-linenumber="10"></span>
<span data-linenumber="11"></span>
<span data-linenumber="12"></span>
<span data-linenumber="13"></span>
<span data-linenumber="14"></span>
<span data-linenumber="15"></span></div><div class="code"><span class="token keyword">void</span> <span class="token function">thread0</span><span class="token punctuation">(</span>atomic_int<span class="token operator">*</span> y<span class="token punctuation">,</span>atomic_int<span class="token operator">*</span> x<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token function">atomic_store_explicit</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">,</span>memory_order_relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token function">atomic_thread_fence</span><span class="token punctuation">(</span>memory_order_release<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token function">atomic_store_explicit</span><span class="token punctuation">(</span>y<span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">,</span>memory_order_relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>

<span class="token keyword">void</span> <span class="token function">thread1</span><span class="token punctuation">(</span>atomic_int<span class="token operator">*</span> y<span class="token punctuation">,</span>atomic_int<span class="token operator">*</span> x<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token function">atomic_fetch_add_explicit</span><span class="token punctuation">(</span>y<span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">,</span>memory_order_relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token function">atomic_thread_fence</span><span class="token punctuation">(</span>memory_order_acquire<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token keyword">int</span> r0 <span class="token operator">=</span> <span class="token function">atomic_load_explicit</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span>memory_order_relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>

<span class="token keyword">void</span> <span class="token function">thread2</span><span class="token punctuation">(</span>atomic_int<span class="token operator">*</span> y<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token keyword">int</span> r1 <span class="token operator">=</span> <span class="token function">atomic_load_explicit</span><span class="token punctuation">(</span>y<span class="token punctuation">,</span>memory_order_relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</div></div></code></pre>
      </div><p><strong><span>Litmus Test 1</span></strong><span>: from </span><a href="https://github.com/llvm/llvm-project/issues/68428#issue-1930595855" target="_blank" rel="noopener"><span>Luke Geeson</span></a><span>. Performing the optimization of replacing the exchange with a store introduces the </span><code>r0 == 0 &amp;&amp; y == 2</code><span> outcome:</span></p><div class="code-block-wrapper code-block-toolbar-handled" data-infoprefix-length="4"><div class="code-toolbar"><div class="flex flex-row gap-0.5 rounded-lg bg-element-bg-default px-[7px] py-[5px]"><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-edit-from-here-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-map-pin-simple" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><span class="ml-1 border-0 border-l border-solid border-background-subtle pr-1" aria-hidden="true"></span><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-link-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-link" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-clipboard-text" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button></div></div>
        <pre class="click-event-handled"><code class="cpp hljs"><div class="wrapper"><div class="gutter linenumber"><span data-linenumber="1"></span>
<span data-linenumber="2"></span>
<span data-linenumber="3"></span>
<span data-linenumber="4"></span>
<span data-linenumber="5"></span>
<span data-linenumber="6"></span>
<span data-linenumber="7"></span>
<span data-linenumber="8"></span>
<span data-linenumber="9"></span>
<span data-linenumber="10"></span></div><div class="code"><span class="token keyword">void</span> <span class="token function">thread0</span><span class="token punctuation">(</span>atomic_int<span class="token operator">*</span> y<span class="token punctuation">,</span>atomic_int<span class="token operator">*</span> x<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token function">atomic_store_explicit</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">,</span>memory_order_relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token function">atomic_thread_fence</span><span class="token punctuation">(</span>memory_order_release<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token function">atomic_store_explicit</span><span class="token punctuation">(</span>y<span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">,</span>memory_order_relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">void</span> <span class="token function">thread1</span><span class="token punctuation">(</span>atomic_int<span class="token operator">*</span> y<span class="token punctuation">,</span>atomic_int<span class="token operator">*</span> x<span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token function">atomic_exchange_explicit</span><span class="token punctuation">(</span>y<span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">,</span>memory_order_release<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token function">atomic_thread_fence</span><span class="token punctuation">(</span>memory_order_acquire<span class="token punctuation">)</span><span class="token punctuation">;</span>
  <span class="token keyword">int</span> r0 <span class="token operator">=</span> <span class="token function">atomic_load_explicit</span><span class="token punctuation">(</span>x<span class="token punctuation">,</span>memory_order_relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</div></div></code></pre>
      </div><p><span>In some architectures, Atomic Reduction Operations can write to memory pages or memory locations that are not readable, e.g., MMIO registers on NVIDIA GPUs, and need a reliable programming model that does not depend on compiler-optimizations for functionality.</span></p><h3 id="API-Naming" data-id="API-Naming" style=""><a class="anchor hidden-xs" href="#API-Naming" title="API-Naming"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>API Naming</span></h3><p><span>SG1 and LEWG considered the following alternative atomic API names:</span></p><ul>
<li><code>atomic.add</code><span>: breaks for logical operations (e.g. </span><code>atomic.and</code><span>, etc.).</span></li>
<li><code>atomic.reduce_add</code><span>: clearly state what this operation is for (reductions).</span></li>
<li><code>atomic.store_add</code><span>: clearly states that this operation is a "store" (and not a "load").</span>
<ul>
<li><span>In Hagenberg LEWG decided to use this name</span></li>
</ul>
</li>
</ul><p><span>We considered providing separate version of non-associative floating-point atomic reduction operations with and without the support for tree-reductions, e.g., </span><code>atomic.store_add</code><span> (no tree-reduction support) and </span><code>atomic.store_add_generalized</code><span> (tree-reduction support), but decided against it because atomic operations are inherently non-deterministic, this relaxation only minimally impacts that, and </span><code>fetch_add</code><span> already provides (and has to continue to provide) the sequential semantics without this relaxation.</span></p><h3 id="Definition-Naming" data-id="Definition-Naming" style=""><a class="anchor hidden-xs" href="#Definition-Naming" title="Definition-Naming"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>Definition Naming</span></h3><p><span>The standard-internal name of these operations in the wording is under the purview of CWG. While SG1 and EWG proposed "atomic reduction operations", in preparation for CWG review several alternative names were consider (list below), and the name "atomic modify-write operation" was chosen.</span></p><p><span>Alternatives considered:</span></p><ul>
<li><span>atomic reduction operations:</span>
<ul>
<li><span>PRO:</span>
<ul>
<li><span>Some people find this functional connotation clear and approachable.</span></li>
<li><span>Name used by e.g. PTX.</span></li>
</ul>
</li>
<li><span>CON:</span>
<ul>
<li><span>Describes a particular problem distant from actual semantics.</span></li>
<li><span>Interaction with acquire fences not clear (but the </span><code>store_</code><span> in the APIs makes it clear).</span></li>
<li><span>The operation itself does not reduce anything; it's a chain of such operations that reduces values.</span></li>
</ul>
</li>
</ul>
</li>
<li><span>atomic modify-write operations</span>
<ul>
<li><span>PRO: implies lack of acquire-ness since acquire only go on reads.</span></li>
<li><span>CON: anything that does a store seems like it ought to be a "modify-write" operation.</span></li>
</ul>
</li>
<li><span>atomic modify-update operations: similar to atomic modify-write operations.</span></li>
<li><span>"store read-modify-write atomics":</span>
<ul>
<li><span>PRO:</span>
<ul>
<li><span>Clear interaction with acquire.</span></li>
<li><span>Aligns with standard library API names (</span><code>store_&lt;key&gt;</code><span>).</span></li>
</ul>
</li>
</ul>
</li>
<li><span>unordered atomics:</span>
<ul>
<li><span>PRO: hints at tree reductions for </span><code>par_unseq</code><span>, where we simply guarantee no particular order of computation even on the atomic itself (for relaxed atomic operations, we guarantee an order on the atomic, but not with respect to other memory).</span></li>
<li><span>CON: different audiences use unordered to refer to widely different semantics.</span>
<ul>
<li><span>LLVM IR uses the </span><code>unordered</code><span> atomic memory order to implement the semantics of Java non-atomic memory accesses to non-volatile shared memory variables. It is not strong enough for inter-thread synchronization, but gives well-defined semantics for data-races.</span></li>
<li><span>Networking programming models (e.g. SHMEM put/get) use </span><code>unordered</code><span> to refer to memory accesses that are not in program order (e.g. "unsequenced" accesses in C++ speak, i.e., accesses from the same thread that are not sequenced-before each other).</span></li>
</ul>
</li>
</ul>
</li>
</ul><h3 id="Memory-Ordering" data-id="Memory-Ordering" style=""><a class="anchor hidden-xs" href="#Memory-Ordering" title="Memory-Ordering"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>Memory Ordering</span></h3><p><span>We choose to support </span><code>memory_order_relaxed</code><span>, </span><code>memory_order_release</code><span>, and </span><code>memory_order_seq_cst</code><span>.</span></p><p><span>We may need a note stating that replacing the operations in a reduction sequence is only valid as long as the replacement maintains the other ordering properties of the operations as defined in [intro.races]. Examples:</span></p><p><strong><span>Litmus test 2:</span></strong></p><div class="code-block-wrapper code-block-toolbar-handled" data-infoprefix-length="4"><div class="code-toolbar"><div class="flex flex-row gap-0.5 rounded-lg bg-element-bg-default px-[7px] py-[5px]"><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-edit-from-here-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-map-pin-simple" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><span class="ml-1 border-0 border-l border-solid border-background-subtle pr-1" aria-hidden="true"></span><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-link-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-link" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-clipboard-text" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button></div></div>
        <pre class="click-event-handled"><code class="cpp hljs"><div class="wrapper"><div class="gutter linenumber"><span data-linenumber="1"></span>
<span data-linenumber="2"></span>
<span data-linenumber="3"></span>
<span data-linenumber="4"></span>
<span data-linenumber="5"></span>
<span data-linenumber="6"></span>
<span data-linenumber="7"></span>
<span data-linenumber="8"></span>
<span data-linenumber="9"></span>
<span data-linenumber="10"></span></div><div class="code"><span class="token comment">// T0:</span>
M1<span class="token punctuation">.</span><span class="token function">store_add</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span>
M2<span class="token punctuation">.</span><span class="token function">store</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> release<span class="token punctuation">)</span><span class="token punctuation">;</span>
M1<span class="token punctuation">.</span><span class="token function">store_add</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span>
    
<span class="token comment">// T1:</span>
r0 <span class="token operator">=</span> M2<span class="token punctuation">.</span><span class="token function">load</span><span class="token punctuation">(</span>acquire<span class="token punctuation">)</span><span class="token punctuation">;</span>
r1 <span class="token operator">=</span> M1<span class="token punctuation">.</span><span class="token function">load</span><span class="token punctuation">(</span>relaxed<span class="token punctuation">)</span><span class="token punctuation">;</span>

<span class="token comment">// r0 == 0 || r1 &gt;= 1</span>
</div></div></code></pre>
      </div><p><strong><span>Litmus test 3:</span></strong></p><div class="code-block-wrapper code-block-toolbar-handled" data-infoprefix-length="4"><div class="code-toolbar"><div class="flex flex-row gap-0.5 rounded-lg bg-element-bg-default px-[7px] py-[5px]"><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-edit-from-here-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-map-pin-simple" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><span class="ml-1 border-0 border-l border-solid border-background-subtle pr-1" aria-hidden="true"></span><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-link-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-link" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-clipboard-text" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button></div></div>
        <pre class="click-event-handled"><code class="cpp hljs"><div class="wrapper"><div class="gutter linenumber"><span data-linenumber="1"></span>
<span data-linenumber="2"></span>
<span data-linenumber="3"></span>
<span data-linenumber="4"></span>
<span data-linenumber="5"></span>
<span data-linenumber="6"></span>
<span data-linenumber="7"></span>
<span data-linenumber="8"></span>
<span data-linenumber="9"></span>
<span data-linenumber="10"></span></div><div class="code"><span class="token comment">// T0</span>
M1<span class="token punctuation">.</span><span class="token function">store_add</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> seq_cst<span class="token punctuation">)</span><span class="token punctuation">;</span>
M2<span class="token punctuation">.</span><span class="token function">store_add</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> seq_cst<span class="token punctuation">)</span><span class="token punctuation">;</span>
M1<span class="token punctuation">.</span><span class="token function">store_add</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> seq_cst<span class="token punctuation">)</span><span class="token punctuation">;</span>

<span class="token comment">// T1</span>
r0 <span class="token operator">=</span> M2<span class="token punctuation">.</span><span class="token function">load</span><span class="token punctuation">(</span>seq_cst<span class="token punctuation">)</span><span class="token punctuation">;</span>
r1 <span class="token operator">=</span> M1<span class="token punctuation">.</span><span class="token function">load</span><span class="token punctuation">(</span>seq_cst<span class="token punctuation">)</span><span class="token punctuation">;</span>

<span class="token comment">// r0 == 0 || r1 &gt;= 1</span>
</div></div></code></pre>
      </div><p><bdi><strong><span>Unresolved question</span></strong><span>: Are tree reductions only supported for </span><code>memory_order_relaxed</code><span>? No, see litmus tests for release and seq_cst.</span></bdi></p><h3 id="Formalization" data-id="Formalization" style=""><a class="anchor hidden-xs" href="#Formalization" title="Formalization"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>Formalization</span></h3><p><span>Herd already support these for </span><code>STADD</code><span> on Arm, and the NVIDIA Volta Memory Model supports these for </span><code>red</code><span> and </span><code>multimem.red</code><span> on PTX. If we decide to pursue this exposure direction, this proposal would benefit from extending Herd's RC11 with reduction sequences for floating-point.</span></p><h2 id="Wording" data-id="Wording" style=""><a class="anchor hidden-xs" href="#Wording" title="Wording"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>Wording</span></h2><h3 id="Forward-progress" data-id="Forward-progress" style=""><a class="anchor hidden-xs" href="#Forward-progress" title="Forward-progress"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>Forward progress</span></h3><p><span>Modify </span><a href="https://eel.is/c++draft/intro.progress#1" target="_blank" rel="noopener"><span>[intro.progress#1]</span></a><span> as follows:</span></p><blockquote>
<p><span>The implementation may assume that any thread will eventually do one of the following:</span></p>
<ol style="padding-left: 2em;">
<li><span>terminate,</span></li>
<li><span>invoke the function std​::​this_thread​::​yield ([thread.thread.this]),</span></li>
<li><span>make a call to a library I/O function,</span></li>
<li><span>perform an access through a volatile glvalue,</span></li>
<li><span>perform a</span><ins><span>n</span></ins><span> </span><del><span>synchronization operation or an atomic operation</span></del><ins><span>atomic or synchronization operation other than an atomic modify-write operation </span><a href="https://eel.is/c++draft/atomics.order" target="_blank" rel="noopener"><span>[atomics.order]</span></a></ins><span>, or</span></li>
<li><span>continue execution of a trivial infinite loop ([stmt.iter.general]).</span></li>
</ol>
<p><span>[Note 1: This is intended to allow compiler transformations such as removal of empty loops, even when termination cannot be proven. — end note]</span></p>
</blockquote><p><span>Modify </span><a href="https://eel.is/c++draft/intro.progress#3" target="_blank" rel="noopener"><span>[intro.progress#3]</span></a><span> as follows:</span></p><blockquote>
<p><span>During the execution of a thread of execution, each of the following is termed an execution step:</span></p>
<ol style="padding-left: 2em;">
<li><span>termination of the thread of execution,</span></li>
<li><span>performing an access through a volatile glvalue, </span><del><span>or</span></del></li>
<li><span>completion of a call to a library I/O function,</span><del><span>a synchronization operation, or an atomic operation.</span></del><ins><span>or</span></ins></li>
<li><ins><span>completion of an atomic or synchronization operation other than an atomic modify-write operation </span><a href="https://eel.is/c++draft/atomics.order" target="_blank" rel="noopener"><span>[atomics.order]</span></a><span>.</span></ins></li>
</ol>
</blockquote><p><span>Add to </span><a href="https://eel.is/c++draft/algorithms.parallel.defns#5" target="_blank" rel="noopener"><span>[algorithms.parallel.defns]</span></a><span>:</span></p><blockquote>
<p><span>A standard library function is vectorization-unsafe if it is specified to synchronize with another function invocation, or another function invocation is specified to synchronize with it, and if it is not a memory allocation or deallocation function</span><ins><span> or lock-free atomic modify-write operation </span><a href="https://eel.is/c++draft/atomics.order" target="_blank" rel="noopener"><span>[atomics.order]</span></a></ins><span>.</span></p>
<p><span>[Note 2: Implementations must ensure that internal synchronization inside standard library functions does not prevent forward progress when those functions are executed by threads of execution with weakly parallel forward progress guarantees. — end note]</span></p>
<p><span>[Example 2:</span></p>

      <div class="code-block-wrapper code-block-toolbar-handled" data-infoprefix-length="3"><div class="code-toolbar"><div class="flex flex-row gap-0.5 rounded-lg bg-element-bg-default px-[7px] py-[5px]"><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-edit-from-here-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-map-pin-simple" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><span class="ml-1 border-0 border-l border-solid border-background-subtle pr-1" aria-hidden="true"></span><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-link-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-link" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button><button class="rounded text-lg font-normal leading-sm flex bg-transparent text-text-default border border-solid border-transparent hocus:bg-element-bg-hover hocus:text-text-emphasize hover:border-element-bg-hover focus:shadow-[0_0_0_2px_#77777733] focus:border-element-border-hover disabled:bg-transparent disabled:hocus:bg-transparent disabled:hocus:border-transparent disabled:text-element-text-disabled disabled:hocus:text-element-text-disabled p-0.5 ui-code-block-copy-button ui-code-block-toolbar-type-code" data-state="closed"><i class="inline-flex ph ph-clipboard-text" aria-hidden="true" style="width: 20px; height: 20px; font-size: 20px; line-height: 20px;"></i></button></div></div>
        <pre class="click-event-handled"><code class="cpp hljs"><span class="token keyword">int</span> x <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
std<span class="token double-colon punctuation">::</span>mutex m<span class="token punctuation">;</span>
<span class="token keyword">void</span> <span class="token function">f</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
  <span class="token keyword">int</span> a<span class="token punctuation">[</span><span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">}</span><span class="token punctuation">;</span>
  std<span class="token double-colon punctuation">::</span><span class="token function">for_each</span><span class="token punctuation">(</span>std<span class="token double-colon punctuation">::</span>execution<span class="token double-colon punctuation">::</span>par_unseq<span class="token punctuation">,</span> std<span class="token double-colon punctuation">::</span><span class="token function">begin</span><span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token punctuation">,</span> std<span class="token double-colon punctuation">::</span><span class="token function">end</span><span class="token punctuation">(</span>a<span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token operator">&amp;</span><span class="token punctuation">]</span><span class="token punctuation">(</span><span class="token keyword">int</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    std<span class="token double-colon punctuation">::</span>lock_guard<span class="token operator">&lt;</span>mutex<span class="token operator">&gt;</span> <span class="token function">guard</span><span class="token punctuation">(</span>m<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// incorrect: lock_guard constructor calls m.lock()</span>
    <span class="token operator">++</span>x<span class="token punctuation">;</span>
  <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre>
      </div>
      
<p><span>The above program may result in two consecutive calls to m.lock() on the same thread of execution (which may deadlock), because the applications of the function object are not guaranteed to run on different threads of execution. — end example]</span></p>
</blockquote><h3 id="Atomic-Modify-Write-Operation-APIs" data-id="Atomic-Modify-Write-Operation-APIs" style=""><a class="anchor hidden-xs" href="#Atomic-Modify-Write-Operation-APIs" title="Atomic-Modify-Write-Operation-APIs"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>Atomic Modify-Write Operation APIs</span></h3><p><span>Add to </span><a href="https://eel.is/c++draft/atomics.syn" target="_blank" rel="noopener"><span>[atomics.syn]</span></a><span>:</span></p><pre><code>namespace std {
// [atomics.nonmembers], non-member functions
...

<ins>template&lt;class T&gt;</ins>
 <ins>void atomic_store_add(volatile atomic&lt;T&gt;*,                       // freestanding</ins>
                       <ins>typename atomic&lt;T&gt;::difference_type) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>constexpr void atomic_store_add(atomic&lt;T&gt;*,                      // freestanding</ins>
                                 <ins>typename atomic&lt;T&gt;::difference_type) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>void atomic_store_add_explicit(volatile atomic&lt;T&gt;*,              // freestanding</ins>
                                <ins>typename atomic&lt;T&gt;::difference_type,</ins>
                                <ins>memory_order) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>constexpr void atomic_store_add_explicit(atomic&lt;T&gt;*,             // freestanding</ins>
                                          <ins>typename atomic&lt;T&gt;::difference_type,</ins>
                                          <ins>memory_order) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>void atomic_store_sub(volatile atomic&lt;T&gt;*,                       // freestanding</ins>
                       <ins>typename atomic&lt;T&gt;::difference_type) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>constexpr void atomic_store_sub(atomic&lt;T&gt;*,                      // freestanding</ins>
                                 <ins>typename atomic&lt;T&gt;::difference_type) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>void atomic_store_sub_explicit(volatile atomic&lt;T&gt;*,              // freestanding</ins>
                                 <ins>typename atomic&lt;T&gt;::difference_type,</ins>
                                 <ins>memory_order) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>constexpr void atomic_store_sub_explicit(atomic&lt;T&gt;*,             // freestanding</ins>
                                 <ins>typename atomic&lt;T&gt;::difference_type,</ins>
                                 <ins>memory_order) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>void atomic_store_and(volatile atomic&lt;T&gt;*,                       // freestanding</ins>
                       <ins>typename atomic&lt;T&gt;::value_type) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>constexpr void atomic_store_and(atomic&lt;T&gt;*,                      // freestanding</ins>
                                 <ins>typename atomic&lt;T&gt;::value_type) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>void atomic_store_and_explicit(volatile atomic&lt;T&gt;*,              // freestanding</ins>
                                 <ins>typename atomic&lt;T&gt;::value_type,</ins>
                                 <ins>memory_order) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>constexpr void atomic_store_and_explicit(atomic&lt;T&gt;*,             // freestanding</ins>
                                          <ins>typename atomic&lt;T&gt;::value_type,</ins>
                                          <ins>memory_order) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>void atomic_store_or(volatile atomic&lt;T&gt;*,                        // freestanding</ins>
                      <ins>typename atomic&lt;T&gt;::value_type) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>constexpr void atomic_store_or(atomic&lt;T&gt;*,                       // freestanding</ins>
                                <ins>typename atomic&lt;T&gt;::value_type) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>void atomic_store_or_explicit(volatile atomic&lt;T&gt;*, // freestanding</ins>
                               <ins>typename atomic&lt;T&gt;::value_type,</ins>
                               <ins>memory_order) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>constexpr void atomic_store_or_explicit(atomic&lt;T&gt;*,              // freestanding</ins>
                                         <ins>typename atomic&lt;T&gt;::value_type,</ins>
                                         <ins>memory_order) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>void atomic_store_xor(volatile atomic&lt;T&gt;*,                       // freestanding</ins>
                        <ins>typename atomic&lt;T&gt;::value_type) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>constexpr void atomic_store_xor(atomic&lt;T&gt;*,                      // freestanding</ins> 
                        <ins>typename atomic&lt;T&gt;::value_type) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>void atomic_store_xor_explicit(volatile atomic&lt;T&gt;*,              // freestanding</ins>
                                 <ins>typename atomic&lt;T&gt;::value_type,</ins>
                                 <ins>memory_order) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>constexpr void atomic_store_xor_explicit(atomic&lt;T&gt;*,             // freestanding</ins>
                                 <ins>typename atomic&lt;T&gt;::value_type,</ins>
                                 <ins>memory_order) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>void atomic_store_max(volatile atomic&lt;T&gt;*,                       // freestanding</ins>
                        <ins>typename atomic&lt;T&gt;::value_type) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>constexpr void atomic_store_max(atomic&lt;T&gt;*,                      // freestanding</ins>
                                 <ins>typename atomic&lt;T&gt;::value_type) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>void atomic_store_max_explicit(volatile atomic&lt;T&gt;*,              // freestanding</ins>
                                 <ins>typename atomic&lt;T&gt;::value_type,</ins>
                                 <ins>memory_order) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>constexpr void atomic_store_max_explicit(atomic&lt;T&gt;*,             // freestanding</ins>
                                          <ins>typename atomic&lt;T&gt;::value_type,</ins>
                                          <ins>memory_order) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>void atomic_store_min(volatile atomic&lt;T&gt;*,                       // freestanding</ins>
                       <ins>typename atomic&lt;T&gt;::value_type) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>constexpr void atomic_store_min(atomic&lt;T&gt;*,                      // freestanding</ins>
                        <ins>typename atomic&lt;T&gt;::value_type) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>void atomic_store_min_explicit(volatile atomic&lt;T&gt;*,              // freestanding</ins>
                                 <ins>typename atomic&lt;T&gt;::value_type,</ins>
                                 <ins>memory_order) noexcept;</ins>
<ins>template&lt;class T&gt;</ins>
 <ins>constexpr void atomic_store_min_explicit(atomic&lt;T&gt;*,             // freestanding</ins>
                                 <ins>typename atomic&lt;T&gt;::value_type,</ins>
                                 <ins>memory_order) noexcept;</ins>
  ...
}</code></pre><p><span>Add to </span><a href="https://eel.is/c++draft/atomics.ref.int" target="_blank" rel="noopener"><span>[atomics.ref.int]</span></a><span>:</span></p><pre><code>
namespace std {
  template&lt;&gt; struct atomic_ref&lt;integral-type&gt; {
    ...
   public:
    ...
    <ins>constexpr void store_add(value_type,</ins>
                             <ins>memory_order = memory_order::seq_cst) const noexcept;</ins>
    <ins>constexpr void store_sub(value_type</ins>,
                             <ins>memory_order = memory_order::seq_cst) const noexcept;</ins>
    <ins>constexpr void store_and(value_type,</ins>
                             <ins>memory_order = memory_order::seq_cst) const noexcept;</ins>
    <ins>constexpr void store_or(value_type,</ins>
                            <ins>memory_order = memory_order::seq_cst) const noexcept;</ins>
    <ins>constexpr void store_xor(value_type,</ins>
                             <ins>memory_order = memory_order::seq_cst) const noexcept;</ins>
    <ins>constexpr void store_max(value_type,</ins>
                             <ins>memory_order = memory_order::seq_cst) const noexcept;</ins>
    <ins>constexpr void store_min(value_type,</ins>
                             <ins>memory_order = memory_order::seq_cst) const noexcept;</ins>
  
}</code></pre><ul>
<li><bdi><span>Drafting Note: </span><code>key</code><span> in </span><code>store_key</code><span> below needs to be italics</span></bdi></li>
</ul><pre><code><ins>constexpr void store_key(value_type operand,</ins> 
                         <ins>memory_order order = memory_order_seq_cst) const noexcept;</ins></code></pre><ul>
<li><ins><em><span>Preconditions</span></em><span>: </span><code>order</code><span> is </span><code>memory_order_relaxed</code><span>, </span><code>memory_order_release</code><span>, or </span><code>memory_order_seq_cst</code><span>.</span></ins></li>
<li><ins><em><span>Effects</span></em><span>: Atomically replaces the value referenced by </span><code>*ptr</code><span> with the result of the computation applied to the value referenced by </span><code>*ptr</code><span> and the given </span><code>operand</code><span>. Memory is affected according to the value of </span><code>order</code><span>. These operations are atomic modify-write operations (</span><a href="https://eel.is/c++draft/atomics.order" target="_blank" rel="noopener"><span>[atomics.order]</span></a><span>).</span></ins></li>
<li><ins><em><span>Remarks</span></em><span>: Except for </span><code>store_max</code><span> and </span><code>store_min</code><span>, for signed integer types, the result is as if </span><code>*ptr</code><span> and parameters were converted to their corresponding unsigned types, the computation performed on those types, and the result converted back to the signed type.</span></ins><br>
<ins><span>[Note 1: There are no undefined results arising from the computation. — end note]</span></ins><br>
<ins><span>For </span><code>store_max</code><span> and </span><code>store_min</code><span>, the maximum and minimum computation is performed as if by </span><code>max</code><span> and </span><code>min</code><span> algorithms ([alg.min.max]), respectively, with </span><code>*ptr</code><span> and the first parameter as the arguments.</span></ins></li>
</ul><p><span>Add to </span><a href="https://eel.is/c++draft/atomics.ref.float" target="_blank" rel="noopener"><span>[atomics.ref.float]</span></a><span>:</span></p><pre><code>namespace std {
  template&lt;&gt; struct atomic_ref&lt;floating-point-type&gt; {
    ...
  public:
    ... 
    <ins>constexpr void store_add(value_type,</ins>
                             <ins>memory_order = memory_order::seq_cst) const noexcept;</ins>
    <ins>constexpr void store_sub(value_type,</ins>
                             <ins>memory_order = memory_order::seq_cst) const noexcept;</ins>
    <ins>constexpr void store_max(value_type, memory_order = memory_order::seq_cst) const noexcept;</ins>
    <ins>constexpr void store_min(value_type, memory_order = memory_order::seq_cst) const noexcept;</ins>
    <ins>constexpr void store_fmaximum(value_type, memory_order = memory_order::seq_cst) const noexcept;</ins>
    <ins>constexpr void store_fminimum(value_type, memory_order = memory_order::seq_cst) const noexcept;</ins>
    <ins>constexpr void store_fmaximum_num(value_type, memory_order = memory_order::seq_cst) const noexcept;</ins>
    <ins>constexpr void store_fminimum_num(value_type, memory_order = memory_order::seq_cst) const noexcept;</ins>
  };
}</code></pre><blockquote>
<p><span>P3008 modified </span><a href="https://eel.is/c++draft/atomics#ref.float-4" target="_blank" rel="noopener"><span>[atomics.ref.float.4]</span></a><span> as follows:</span><br>
<span>The following operations perform arithmetic computations. The correspondence among key, operator, and computation is specified in Table 153 </span><ins><span>except for the keys </span><code>max</code><span>, </span><code>min</code><span>, </span><code>fmaximum</code><span>, </span><code>fminimum</code><span>, </span><code>fmaximum_num</code><span>, and</span><code>fminimum_num</code><span>, which are specified below</span></ins><span>.</span></p>
</blockquote><ul>
<li><bdi><span>Drafting Note: </span><code>key</code><span> in </span><code>store_key</code><span> below needs to be italics</span></bdi></li>
</ul><pre><code><ins>constexpr void store_key(value_type operand,</ins>
                         <ins>memory_order order = memory_order::seq_cst) const noexcept;</ins></code></pre><ul>
<li><ins><em><span>Preconditions</span></em><span>: </span><code>order</code><span> is </span><code>memory_order_relaxed</code><span>, </span><code>memory_order_release</code><span>, or </span><code>memory_order_seq_cst</code><span>.</span></ins></li>
<li><ins><em><span>Effects</span></em><span>: Atomically replaces the value referenced by </span><code>*ptr</code><span> with the result of the computation applied to the value referenced by </span><code>*ptr</code><span> and the given </span><code>operand</code><span>. Memory is affected according to the value of </span><code>order</code><span>. These operations are atomic modify-write operations (</span><a href="https://eel.is/c++draft/atomics.order" target="_blank" rel="noopener"><span>[atomics.order]</span></a><span>).</span></ins></li>
<li><ins><em><span>Remarks</span></em><span>: If the result is not a representable value for its type ([expr.pre]), the result is unspecified, but the operations otherwise have no undefined behavior. Atomic arithmetic operations on floating-point-type should conform to the </span><code>numeric_limits&lt;floating-point-type&gt;</code><span> traits associated with the floating-point type ([limits.syn]). The floating-point environment ([cfenv]) for atomic arithmetic operations on floating-point-type may be different than the calling thread's floating-point environment. The arithmetic rules of floating-point atomic modify-write operations may be different from operations on floating-point types or atomic floating-point types.</span></ins><br>
<ins><span>[Note: Tree reductions are permitted for atomic modify-write operations. - end note]</span></ins></li>
</ul><ul>
<li><ins><span>Remarks: </span></ins>
<ul>
<li><ins><span>For </span><code>store_fmaximum</code><span> and </span><code>store_fminimum</code><span>, the maximum and minimum computation is performed as if by </span><code>fmaximum</code><span> and </span><code>fminimum</code><span>, respectively, with </span><code>*ptr</code><span> and the first parameter as the arguments.</span></ins></li>
<li><ins><span>For </span><code>store_fmaximum_num</code><span> and </span><code>store_fminimum_num</code><span>, the maximum and minimum computation is performed as if by </span><code>fmaximum_num</code><span> and </span><code>fminimum_num</code><span>, respectively, with </span><code>*ptr</code><span> and the first parameter as the arguments.</span></ins></li>
<li><ins><span>For </span><code>store_max</code><span> and </span><code>store_min</code><span>, the maximum and minimum computation is performed as if by </span><code>fmaximum_num</code><span> and </span><code>fminimum_num</code><span>, respectively, with </span><code>*ptr</code><span> and the first parameter as the arguments, except that:</span>
<ul>
<li><span>If both arguments are NaN, an unspecified NaN value is stored at </span><code>*ptr</code><span>.</span></li>
<li><span>If exactly one argument is a NaN, either the other argument or an unspecified NaN value is stored at </span><code>*ptr</code><span>, it is unspecified which.</span></li>
<li><span>If the arguments are differently signed zeros, which of these values is stored at </span><code>*ptr</code><span> is unspecified.</span></li>
</ul>
</ins></li>
</ul>
</li>
<li><ins><span>Recommended practice: The implementation of </span><code>store_max</code><span> and </span><code>store_min</code><span> should treat negative zero as smaller than positive zero.</span></ins></li>
</ul><p><span>Add to </span><a href="https://eel.is/c++draft/atomics.ref.generic#atomics.ref.pointer" target="_blank" rel="noopener"><span>[atomics.ref.pointer]</span></a><span>:</span></p><pre><code>namespace std {
 template&lt;class T&gt; struct atomic_ref&lt;T*&gt; {
    ...
  public:
    ...
    <ins>constexpr void store_add(difference_type,</ins>
                             <ins>memory_order = memory_order::seq_cst) const noexcept;</ins>
    <ins>constexpr void store_sub(difference_type,</ins> 
                             <ins>memory_order = memory_order::seq_cst) const noexcept;</ins>
    <ins>constexpr void store_max(value_type,</ins>
                             <ins>memory_order = memory_order::seq_cst) const noexcept;</ins>
    <ins>constexpr void store_min(value_type,</ins>
                             <ins>memory_order = memory_order::seq_cst) const noexcept;</ins>
  };
}</code></pre><ul>
<li><bdi><span>Drafting Note: </span><code>key</code><span> in </span><code>store_key</code><span> below and "see above" need to be italics and not codefont.</span></bdi></li>
</ul><pre><code><ins>constexpr void store_key(see above operand,</ins>
                         <ins>memory_order order = memory_order::seq_cst) const noexcept;</ins></code></pre><ul>
<li><ins><em><span>Mandates</span></em><span>: </span><code>T</code><span> is a complete object type.</span></ins></li>
<li><ins><em><span>Preconditions</span></em><span>: </span><code>order</code><span> is </span><code>memory_order_relaxed</code><span>, </span><code>memory_order_release</code><span>, or </span><code>memory_order_seq_cst</code><span>.</span></ins></li>
<li><ins><em><span>Effects</span></em><span>: Atomically replaces the value referenced by </span><code>*ptr</code><span> with the result of the computation applied to the value referenced by </span><code>*ptr</code><span> and the given operand. Memory is affected according to the value of order. These operations are atomic modify-write operations (</span><a href="https://eel.is/c++draft/atomics.order" target="_blank" rel="noopener"><span>[atomics.order]</span></a><span>).</span></ins></li>
<li><ins><em><span>Remarks</span></em><span>: The result may be an undefined address, but the operations otherwise have no undefined behavior.</span><br>
<span>For </span><code>store_max</code><span> and </span><code>store_min</code><span>, the maximum and minimum computation is performed as if by </span><code>max</code><span> and </span><code>min</code><span> algorithms ([alg.min.max]), respectively, with </span><code>*ptr</code><span> and the first parameter as the arguments.</span><br>
<span>[Note 1: If the pointers point to different complete objects (or subobjects thereof), the </span><code>&lt;</code><span> operator does not establish a strict weak ordering (Table 29, [expr.rel]). — end note]</span></ins></li>
</ul><p><span>Add to </span><a href="https://eel.is/c++draft/atomics.types.int" target="_blank" rel="noopener"><span>[atomics.types.int]</span></a><span>:</span></p><ul>
<li><bdi><span>Drafting Note: all </span><code>*-type</code><span> below should be in italic.</span></bdi></li>
</ul><pre><code>namespace std {
  template&lt;&gt; struct atomic&lt;integral-type&gt; {
    ...

    <ins>void store_add(integral-type,</ins>
                    <ins>memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_add(integral-type,</ins>
                             <ins>memory_order = memory_order::seq_cst) noexcept;</ins>
    <ins>void store_sub(integral-type,</ins>
                   <ins>memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_sub(integral-type,</ins>
                             <ins>memory_order = memory_order::seq_cst) noexcept;</ins>
    <ins>void store_and(integral-type,</ins>
                   <ins>memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_and(integral-type,</ins>
                             <ins>memory_order = memory_order::seq_cst) noexcept;</ins>
    <ins>void store_or(integral-type,</ins>
                  <ins>memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_or(integral-type,</ins>
                            <ins>memory_order = memory_order::seq_cst) noexcept;</ins>
    <ins>void store_xor(integral-type,</ins>
                   <ins>memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_xor(integral-type,</ins>
                             <ins>memory_order = memory_order::seq_cst) noexcept;</ins>
    <ins>void store_max(integral-type,</ins>
                   <ins>memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_max(integral-type,</ins>
                             <ins>memory_order = memory_order::seq_cst) noexcept;</ins>
    <ins>void store_min(integral-type,</ins>
                   <ins>memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_min(integral-type,</ins>
                             <ins>memory_order = memory_order::seq_cst) noexcept;</ins>

  };
}</code></pre><pre><code><ins>void store_key(integral-type operand,</ins> 
               <ins>memory_order order = memory_order_seq_cst) volatile noexcept;</ins>
<ins>constexpr void store_key(integral-type operand,</ins> 
                         <ins>memory_order order = memory_order_seq_cst) noexcept;</ins></code></pre><ul>
<li><ins><em><span>Constraints</span></em><span>: For the </span><code>volatile</code><span> overload of this function, </span><code>is_always_lock_free</code><span> is true.</span></ins></li>
<li><ins><em><span>Preconditions</span></em><span>: </span><code>order</code><span> is </span><code>memory_order_relaxed</code><span>, </span><code>memory_order_release</code><span>, or </span><code>memory_order_seq_cst</code><span>.</span></ins></li>
<li><ins><em><span>Effects</span></em><span>: Atomically replaces the value pointed to by </span><code>this</code><span> with the result of the computation applied to the value pointed to by </span><code>this</code><span> and the given operand. Memory is affected according to the value of </span><code>order</code><span>. These operations are atomic modify-write operations (</span><a href="https://eel.is/c++draft/atomics.order" target="_blank" rel="noopener"><span>[atomics.order]</span></a><span>).</span></ins></li>
<li><ins><em><span>Remarks</span></em><span>: Except for </span><code>store_max</code><span> and </span><code>store_min</code><span>, for signed integer types the result is as if the value pointed to by </span><code>this</code><span> and parameters were converted to their corresponding unsigned types, the computation performed on those types, and the result converted back to the signed type.</span><br>
<span>[Note: There are no undefined results arising from the computation. — end note]</span></ins></li>
</ul><p><ins><span>For </span><code>store_max</code><span> and </span><code>store_min</code><span>, the maximum and minimum computation is performed as if by </span><code>max</code><span> and </span><code>min</code><span> algorithms ([alg.min.max]), respectively, with the value pointed to by </span><code>this</code><span> and the first parameter as the arguments.</span></ins></p><p><span>Add to </span><a href="https://eel.is/c++draft/atomics.types.float" target="_blank" rel="noopener"><span>[atomics.types.float]</span></a><span>:</span></p><pre><code>namespace std {
  template&lt;&gt; struct atomic&lt;floating-point-type&gt; {
    ...

    <ins>void store_add(floating-point-type,</ins>
                   <ins>memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_add(floating-point-type,</ins>
                             <ins>memory_order = memory_order::seq_cst) noexcept;</ins>
    <ins>void store_sub(floating-point-type,</ins>
                   <ins>memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_sub(floating-point-type,</ins>
                             <ins>memory_order = memory_order::seq_cst) noexcept;</ins>
    <ins>void store_max(floating-point-type, memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_max(floating-point-type, memory_order = memory_order::seq_cst) noexcept;</ins>
    <ins>void store_min(floating-point-type, memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_min(floating-point-type, memory_order = memory_order::seq_cst) noexcept;</ins> 
    <ins>void store_fmaximum(floating-point-type, memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_fmaximum(floating-point-type, memory_order = memory_order::seq_cst) noexcept;</ins>
    <ins>void store_fminimum(floating-point-type, memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_fminimum(floating-point-type, memory_order = memory_order::seq_cst) noexcept;</ins>
    <ins>void store_fmaximum_num(floating-point-type, memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_fmaximum_num(floating-point-type, memory_order = memory_order::seq_cst) noexcept;</ins>
    <ins>void store_fminimum_num(floating-point-type, memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_fminimum_num(floating-point-type, memory_order = memory_order::seq_cst) noexcept;</ins>
  };
}</code></pre><blockquote>
<p><span>P3008 modified </span><a href="https://eel.is/c++draft/atomics#types.float-4" target="_blank" rel="noopener"><span>[atomics.types.float]</span></a><span> as follows:</span></p>
<p><span>The following operations perform arithmetic addition and subtraction computations. The correspondence among key, operator, and computation is specified in Table 153</span><ins><span> except for the keys </span><code>max</code><span>, </span><code>min</code><span>, </span><code>fmaximum</code><span>, </span><code>fminimum</code><span>, </span><code>fmaximum_num</code><span>, and</span><code>fminimum_num</code><span>, which are specified below</span></ins><span>.</span></p>
</blockquote><pre><code><ins>void store_key(floating-point-type operand,</ins>
               <ins>memory_order order = memory_order::seq_cst) volatile noexcept;</ins>
<ins>constexpr void store_key(floating-point-type operand,</ins>
                         <ins>memory_order order = memory_order::seq_cst) noexcept;</ins></code></pre><ul>
<li><ins><em><span>Constraints</span></em><span>: For the </span><code>volatile</code><span> overload of this function, </span><code>is_always_lock_free</code><span> is true.</span></ins></li>
<li><ins><em><span>Preconditions</span></em><span>: </span><code>order</code><span> is </span><code>memory_order_relaxed</code><span>, </span><code>memory_order_release</code><span>, or </span><code>memory_order_seq_cst</code><span>.</span></ins></li>
<li><ins><em><span>Effects</span></em><span>: Atomically replaces the value pointed to by </span><code>this</code><span> with the result of the computation applied to the value pointed to by </span><code>this</code><span> and the given </span><code>operand</code><span>. Memory is affected according to the value of </span><code>order</code><span>. These operations are atomic modify-write operations (</span><a href="https://eel.is/c++draft/atomics.order" target="_blank" rel="noopener"><span>[atomics.order]</span></a><span>).</span></ins></li>
<li><ins><em><span>Remarks</span></em><span>: If the result is not a representable value for its type ([expr.pre]) the result is unspecified, but the operations otherwise have no undefined behavior. Atomic arithmetic operations on </span><code>floating-point-type</code><span> should conform to the </span><code>numeric_limits&lt;floating-point-type&gt;</code><span> traits associated with the floating-point type ([limits.syn]). The floating-point environment ([cfenv]) for atomic arithmetic operations on </span><code>floating-point-type</code><span> may be different than the calling thread's floating-point environment. The arithmetic rules of floating-point atomic modify-write operations may be different from operations on floating-point types or atomic floating-point types.</span></ins><br>
<ins><span>[Note: Tree reductions are permitted for atomic modify-write operations. - end note]</span></ins></li>
</ul><ul>
<li><ins><span>Remarks: </span></ins>
<ul>
<li><ins><span>For </span><code>store_fmaximum</code><span> and </span><code>store_fminimum</code><span>, the maximum and minimum computation is performed as if by </span><code>fmaximum</code><span> and </span><code>fminimum</code><span>, respectively, with the value pointed to by </span><code>this</code><span> and the first parameter as the arguments.</span></ins></li>
<li><ins><span>For </span><code>store_fmaximum_num</code><span> and </span><code>store_fminimum_num</code><span>, the maximum and minimum computation is performed as if by </span><code>fmaximum_num</code><span> and </span><code>fminimum_num</code><span>, respectively, with the value pointed to by </span><code>this</code><span> and the first parameter as the arguments.</span></ins></li>
<li><ins><span>For </span><code>store_max</code><span> and </span><code>store_min</code><span>, the maximum and minimum computation is performed as if by </span><code>fmaximum_num</code><span> and </span><code>fminimum_num</code><span>, respectively, with the value pointed to by </span><code>this</code><span> and the first parameter as the arguments, except that:</span>
<ul>
<li><span>If both arguments are NaN, an unspecified NaN value replaces the value pointed to by </span><code>this</code><span>.</span></li>
<li><span>If exactly one argument is a NaN, either the other argument or an unspecified NaN value replaces the value pointed to by </span><code>this</code><span>, it is unspecified which.</span></li>
<li><span>If the arguments are differently signed zeros, which of these values replaces the value pointed to by </span><code>this</code><span> is unspecified.</span></li>
</ul>
</ins></li>
</ul>
</li>
<li><ins><span>Recommended practice: The implementation of </span><code>store_max</code><span> and </span><code>store_min</code><span> should treat negative zero as smaller than positive zero.</span></ins></li>
</ul><p><span>Add to </span><a href="https://eel.is/c++draft/atomics.types.pointer" target="_blank" rel="noopener"><span>[atomics.types.pointer]</span></a><span>:</span></p><pre><code>namespace std {
  template&lt;class T&gt; struct atomic&lt;T*&gt; {
    ...
    <ins>void store_add(ptrdiff_t,</ins> 
      <ins>memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_add(ptrdiff_t,</ins> 
      <ins>memory_order = memory_order::seq_cst) noexcept;</ins>
    <ins>void store_sub(ptrdiff_t,</ins> 
      <ins>memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_sub(ptrdiff_t,</ins> 
      <ins>memory_order = memory_order::seq_cst) noexcept;</ins>
    <ins>void store_max(T*,</ins> 
      <ins>memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_max(T*,</ins> 
      <ins>memory_order = memory_order::seq_cst) noexcept;</ins>
    <ins>void store_min(T*,</ins> 
      <ins>memory_order = memory_order::seq_cst) volatile noexcept;</ins>
    <ins>constexpr void store_min(T*,</ins> 
      <ins>memory_order = memory_order::seq_cst) noexcept;</ins>
  };
}</code></pre><p><bdi><span>Drafting note: add the following to the end of the atomics.types.pointer.</span></bdi></p><pre><code><ins>void store_key(see above operand,</ins> 
     <ins>memory_order order = memory_order::seq_cst) volatile noexcept;</ins>
<ins>constexpr void store_key(see above operand,</ins>
     <ins>memory_order order = memory_order::seq_cst) noexcept;</ins></code></pre><ul>
<li><ins><em><span>Constraints</span></em><span>: For the </span><code>volatile</code><span> overload of this function, </span><code>is_always_lock_free</code><span> is true.</span></ins></li>
<li><ins><em><span>Mandates</span></em><span>: </span><code>T</code><span> is a complete object type.</span></ins><br>
<ins><span>[Note 1: Pointer arithmetic on void* or function pointers is ill-formed. — end note]</span></ins></li>
<li><ins><em><span>Effects</span></em><span>: Atomically replaces the value pointed to by this with the result of the computation applied to the value pointed to by </span><code>this</code><span> and the given operand. Memory is affected according to the value of </span><code>order</code><span>. These operations are atomic modify-write operations (</span><a href="https://eel.is/c++draft/atomics.order" target="_blank" rel="noopener"><span>[atomics.order]</span></a><span>).</span></ins></li>
<li><ins><em><span>Remarks</span></em><span>: The result may be an undefined address, but the operations otherwise have no undefined behavior.</span></ins><br>
<ins><span>For </span><code>store_max</code><span> and </span><code>store_min</code><span>, the maximum and minimum computation is performed as if by </span><code>max</code><span> and </span><code>min</code><span> algorithms ([alg.min.max]), respectively, with the value pointed to by </span><code>this</code><span> and the first parameter as the arguments.</span></ins><br>
<ins><span>[Note 2: If the pointers point to different complete objects (or subobjects thereof), the </span><code>&lt;</code><span> operator does not establish a strict weak ordering (Table 29, [expr.rel]). — end note]</span></ins></li>
</ul><h3 id="No-acquire-sequences-support" data-id="No-acquire-sequences-support" style=""><a class="anchor hidden-xs" href="#No-acquire-sequences-support" title="No-acquire-sequences-support"><span class="octicon octicon-link ph ph-link-simple-horizontal"></span></a><span>No acquire sequences support</span></h3><p><span>Modify </span><a href="https://eel.is/c++draft/atomics.fences" target="_blank" rel="noopener"><span>[atomics.fences]</span></a><span> as follows:</span></p><blockquote>
<p><span>33.5.11 Fences[atomics.fences]</span></p>
<ol style="padding-left: 2em;">
<li><span>This subclause introduces synchronization primitives called fences. Fences can have acquire semantics, release semantics, or both. A fence with acquire semantics is called an acquire fence. A fence with release semantics is called a release fence.</span></li>
<li><span>A release fence A synchronizes with an acquire fence B if there exist atomic operations X and Y, </span><ins><span>where Y is not an atomic modify-write operation (</span><a href="https://eel.is/c++draft/atomics.order" target="_blank" rel="noopener"><span>[atomics.order]</span></a><span>), </span></ins><span>both operating on some atomic object M, such that A is sequenced before X, X modifies M, Y is sequenced before B, and Y reads the value written by X or a value written by any side effect in the hypothetical release sequence X would head if it were a release operation.</span></li>
<li><span>A release fence A synchronizes with an atomic operation B that performs an acquire operation on an atomic object M if there exists an atomic operation X such that A is sequenced before X, X modifies M, and B reads the value written by X or a value written by any side effect in the hypothetical release sequence X would head if it were a release operation.</span></li>
<li><span>An atomic operation A that is a release operation on an atomic object M synchronizes with an acquire fence B if there exists some atomic operation X on M such that X is sequenced before B and reads the value written by A or a value written by any side effect in the release sequence headed by A.</span></li>
</ol>
</blockquote><p><span>Add the following to </span><a href="https://eel.is/c++draft/atomics.order" target="_blank" rel="noopener"><span>[atomics.order]</span></a><span> after the </span><a href="https://eel.is/c++draft/atomics.order#10" target="_blank" rel="noopener"><span>definition of read-modify-write operations</span></a><span>:</span></p><blockquote>
<p><ins><span>1. An </span><em><span>atomic modify-write operation</span></em><span> is an atomic read-modify-write operation with weaker synchronization requirements as specified in </span><a href="https://eel.is/c++draft/atomics.fences" target="_blank" rel="noopener"><span>[atomic.fences]</span></a><span>.</span></ins></p>
<p><ins><span>[Note: The intent is for atomic modify-write operations to be implemented using mechanisms that are not ordered, in hardware, by the implementation of acquire fences. No other semantic or hardware property (e.g., that the mechanism is a far atomic operation) is implied. - end note]</span></ins></p>
</blockquote><p><span>Add </span><code>__cpp_lib_atomic_reductions</code><span> version macro to </span><a href="https://eel.is/c++draft/version.syn#2" target="_blank" rel="noopener"><code>&lt;version&gt;</code><span> synopsis [version.syn]</span></a><span>:</span></p><pre><code><ins>#define __cpp_lib_atomic_reductions ______L // freestanding, also in &lt;atomic&gt;</ins>
</code></pre></div>
    <div class="ui-toc dropup unselectable hidden-print" style="display:none;">
        <div class="pull-right dropdown">
            <a id="tocLabel" class="ui-toc-label btn btn-default" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false" title="Table of content">
                <i class="fa fa-bars"></i>
            </a>
            <ul id="ui-toc" class="ui-toc-dropdown dropdown-menu" aria-labelledby="tocLabel">
                <div class="toc"><ul class="nav">
<li><a href="#Atomic-Reduction-Operations" title="Atomic Reduction Operations">Atomic Reduction Operations</a><ul class="nav">
<li><a href="#Introduction" title="Introduction">Introduction</a></li>
<li><a href="#Motivation" title="Motivation">Motivation</a><ul class="nav">
<li><a href="#Hardware-Exposure" title="Hardware Exposure">Hardware Exposure</a></li>
<li><a href="#Performance" title="Performance">Performance</a></li>
<li><a href="#Functionality" title="Functionality">Functionality</a></li>
</ul>
</li>
<li><a href="#Design" title="Design">Design</a><ul class="nav">
<li><a href="#Implementation-impact" title="Implementation impact">Implementation impact</a></li>
<li><a href="#Design-Alternatives" title="Design Alternatives">Design Alternatives</a></li>
<li><a href="#API-Naming" title="API Naming">API Naming</a></li>
<li><a href="#Definition-Naming" title="Definition Naming">Definition Naming</a></li>
<li><a href="#Memory-Ordering" title="Memory Ordering">Memory Ordering</a></li>
<li><a href="#Formalization" title="Formalization">Formalization</a></li>
</ul>
</li>
<li><a href="#Wording" title="Wording">Wording</a><ul class="nav">
<li><a href="#Forward-progress" title="Forward progress">Forward progress</a></li>
<li><a href="#Atomic-Modify-Write-Operation-APIs" title="Atomic Modify-Write Operation APIs">Atomic Modify-Write Operation APIs</a></li>
<li><a href="#No-acquire-sequences-support" title="No acquire sequences support">No acquire sequences support</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div><div class="toc-menu"><a class="expand-toggle" href="#">Expand all</a><a class="back-to-top" href="#">Back to top</a><a class="go-to-bottom" href="#">Go to bottom</a></div>
            </ul>
        </div>
    </div>
    <div id="ui-toc-affix" class="ui-affix-toc ui-toc-dropdown unselectable hidden-print" data-spy="affix" style="top:17px;display:none;"  >
        <div class="toc"><ul class="nav">
<li><a href="#Atomic-Reduction-Operations" title="Atomic Reduction Operations">Atomic Reduction Operations</a><ul class="nav">
<li><a href="#Introduction" title="Introduction">Introduction</a></li>
<li><a href="#Motivation" title="Motivation">Motivation</a><ul class="nav">
<li><a href="#Hardware-Exposure" title="Hardware Exposure">Hardware Exposure</a></li>
<li><a href="#Performance" title="Performance">Performance</a></li>
<li><a href="#Functionality" title="Functionality">Functionality</a></li>
</ul>
</li>
<li><a href="#Design" title="Design">Design</a><ul class="nav">
<li><a href="#Implementation-impact" title="Implementation impact">Implementation impact</a></li>
<li><a href="#Design-Alternatives" title="Design Alternatives">Design Alternatives</a></li>
<li><a href="#API-Naming" title="API Naming">API Naming</a></li>
<li><a href="#Definition-Naming" title="Definition Naming">Definition Naming</a></li>
<li><a href="#Memory-Ordering" title="Memory Ordering">Memory Ordering</a></li>
<li><a href="#Formalization" title="Formalization">Formalization</a></li>
</ul>
</li>
<li><a href="#Wording" title="Wording">Wording</a><ul class="nav">
<li><a href="#Forward-progress" title="Forward progress">Forward progress</a></li>
<li><a href="#Atomic-Modify-Write-Operation-APIs" title="Atomic Modify-Write Operation APIs">Atomic Modify-Write Operation APIs</a></li>
<li><a href="#No-acquire-sequences-support" title="No acquire sequences support">No acquire sequences support</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div><div class="toc-menu"><a class="expand-toggle" href="#">Expand all</a><a class="back-to-top" href="#">Back to top</a><a class="go-to-bottom" href="#">Go to bottom</a></div>
    </div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous" defer></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/gist-embed/2.6.0/gist-embed.min.js" integrity="sha256-KyF2D6xPIJUW5sUDSs93vWyZm+1RzIpKCexxElmxl8g=" crossorigin="anonymous" defer></script>
    <script>
        var markdown = $(".markdown-body");
        //smooth all hash trigger scrolling
        function smoothHashScroll() {
            var hashElements = $("a[href^='#']").toArray();
            for (var i = 0; i < hashElements.length; i++) {
                var element = hashElements[i];
                var $element = $(element);
                var hash = element.hash;
                if (hash) {
                    $element.on('click', function (e) {
                        // store hash
                        var hash = this.hash;
                        if ($(hash).length <= 0) return;
                        // prevent default anchor click behavior
                        e.preventDefault();
                        // animate
                        $('body, html').stop(true, true).animate({
                            scrollTop: $(hash).offset().top
                        }, 100, "linear", function () {
                            // when done, add hash to url
                            // (default click behaviour)
                            window.location.hash = hash;
                        });
                    });
                }
            }
        }

        smoothHashScroll();
        var toc = $('.ui-toc');
        var tocAffix = $('.ui-affix-toc');
        var tocDropdown = $('.ui-toc-dropdown');
        //toc
        tocDropdown.click(function (e) {
            e.stopPropagation();
        });

        var enoughForAffixToc = true;

        function generateScrollspy() {
            $(document.body).scrollspy({
                target: ''
            });
            $(document.body).scrollspy('refresh');
            if (enoughForAffixToc) {
                toc.hide();
                tocAffix.show();
            } else {
                tocAffix.hide();
                toc.show();
            }
            $(document.body).scroll();
        }

        function windowResize() {
            //toc right
            var paddingRight = parseFloat(markdown.css('padding-right'));
            var right = ($(window).width() - (markdown.offset().left + markdown.outerWidth() - paddingRight));
            toc.css('right', right + 'px');
            //affix toc left
            var newbool;
            var rightMargin = (markdown.parent().outerWidth() - markdown.outerWidth()) / 2;
            //for ipad or wider device
            if (rightMargin >= 133) {
                newbool = true;
                var affixLeftMargin = (tocAffix.outerWidth() - tocAffix.width()) / 2;
                var left = markdown.offset().left + markdown.outerWidth() - affixLeftMargin;
                tocAffix.css('left', left + 'px');
            } else {
                newbool = false;
            }
            if (newbool != enoughForAffixToc) {
                enoughForAffixToc = newbool;
                generateScrollspy();
            }
        }
        $(window).resize(function () {
            windowResize();
        });
        $(document).ready(function () {
            windowResize();
            generateScrollspy();
        });

        //remove hash
        function removeHash() {
            window.location.hash = '';
        }

        var backtotop = $('.back-to-top');
        var gotobottom = $('.go-to-bottom');

        backtotop.click(function (e) {
            e.preventDefault();
            e.stopPropagation();
            if (scrollToTop)
                scrollToTop();
            removeHash();
        });
        gotobottom.click(function (e) {
            e.preventDefault();
            e.stopPropagation();
            if (scrollToBottom)
                scrollToBottom();
            removeHash();
        });

        var toggle = $('.expand-toggle');
        var tocExpand = false;

        checkExpandToggle();
        toggle.click(function (e) {
            e.preventDefault();
            e.stopPropagation();
            tocExpand = !tocExpand;
            checkExpandToggle();
        })

        function checkExpandToggle () {
            var toc = $('.ui-toc-dropdown .toc');
            var toggle = $('.expand-toggle');
            if (!tocExpand) {
                toc.removeClass('expand');
                toggle.text('Expand all');
            } else {
                toc.addClass('expand');
                toggle.text('Collapse all');
            }
        }

        function scrollToTop() {
            $('body, html').stop(true, true).animate({
                scrollTop: 0
            }, 100, "linear");
        }

        function scrollToBottom() {
            $('body, html').stop(true, true).animate({
                scrollTop: $(document.body)[0].scrollHeight
            }, 100, "linear");
        }
    </script>
</body>

</html>
